前提・実現したいこと
Ruby on Rails と Solidity でEthereumの送金システムを作成しています。
solファイルをコンパイルしようとするとエラーが出てしまいます。
発生している問題・エラーメッセージ
Errno::ENOENT in TopController#index No such file or directory - solc --bin --abi --optimize 'C:/Users/tenni/rails-eth/contracts/HelloWorld.sol'
該当のソースコード
ruby
1# app/controllers/top_controller 2class TopController < ApplicationController 3 ETHEREUM_TOKEN_PATH = "#{Dir.pwd}/contracts/HelloWorld.sol" 4 GANACHE_URL = 'HTTP://127.0.0.1:7545' 5 6 def index 7 @client = Ethereum::HttpClient.new(GANACHE_URL) 8 @contract = Ethereum::Contract.create(file: ETHEREUM_TOKEN_PATH, client: @client) 9 @contract.deploy_and_wait('Hello, World!') 10 end 11end
solidity
1# contracts/HelloWorld.sol 2pragma solidity ^0.4.24; 3contract HelloWorld { 4 string public greeting; 5 address public owner; 6 7 function HelloWorld(string _greeting) { 8 greeting = _greeting; 9 owner = msg.sender; 10 } 11 12 function greet() constant public returns (string) { 13 return greeting; 14 } 15 16 function getBalance() constant public returns (uint balance) { 17 return owner.balance; 18 } 19 20 function getAddress() constant public returns (address) { 21 return owner; 22 } 23}
試したこと
ターミナルでsolcをインストールしました。
$ npm install -g solc
コンパイルしてみましたが、上のエラーメッセージがでてしまいます。
$ solcjs HelloWorld.sol --abi --bin --optimize
補足情報(FW/ツールのバージョンなど)
windows 10
Ruby 2.4.6p354
Ruby on Rails 5.2.3
VScodeを使用
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。