Blockchain
Ethereum
solidity
ブロックチェーン

Browser Solidityでスマートコントラクトをデプロイする際ハマったこと

More than 1 year has passed since last update.

Browser Solidityで簡単なスマートコントラクトをやってみたかったら、いろいろハマったので、メモしておきます。

前提

スマートコントラクト内容は特に何もないですが、やりたいのは、スマートコントラクトコンストラクタメソッドでパラメータのアドレスをownerAddressに保持したいだけ。

pragma solidity ^0.4.0;

contract TestTranster {
    address public ownerAddress;

    function TestTranster(address _ownerAddress) public {
        ownerAddress = _ownerAddress;
    }
}

はまったこと

  • Web3 Provider を使いたいが、gethを起動しておいているのに、Not possible to connect to the Web3 provider. Make sure the provider is running and a connection is open (via IPC or RPC).で接続できない
    • 現象 スクリーンショット 2017-11-11 20.21.01.png スクリーンショット 2017-11-11 20.21.08.png
    • 解決方法:gethの起動コマンドに --rpccorsdomain "*"オプションを追加するgeth --networkid "10" --nodiscover --rpc --rpccorsdomain "*" --datadir . console 2>>./err.log
  • コンストラクタメソッドのパラメータはどうやって渡すかは分からない
    • 現象:確かにこの辺に入れれば行けるはずだが、正しいアドレスをコピベして入れてCreateボタンをクリックしたらエラー スクリーンショット 2017-11-11 20.27.18.png
      • creation of browser/ballot.sol:CloudeaClubTranster errored: Error encoding arguments: SyntaxError: Unexpected token x in JSON at position 2
    • 解決方法:入力フィールドの普通にJSONとして解析されるので、文字列ならちゃんとダブルクオーテーションを入れれば上記エラーでなくなりました
  • creation of browser/ballot.sol:CloudeaClubTranster errored: authentication needed: password or unlock
    • 現象:これはまあ、分かると思いますが、操作しているAccountをunlockしておく必要がある
    • 解決方法:geth consoleで、personal.unlockAccount('選択されているアカウントのアドレス', 'そのアカウントのパスワード')実行しておいてから、Createボタンクリックするとできました。
    • もちろん、miner.start()を実行しないと、ブロックチェーンに書き込まられない

以上