Download Geth よりダウンロードしてインストール
実行
毎回unlockは面倒だから,2つのアカウントはpasswordファイルでunlockして起動。passwordファイルは1つづつ改行
geth --unlock 0,1 --password c:\gethdata\pass.txt --mine --minerthreads 1 --identity "sampleNode" --rpc --rpcport 8545 --rpcapi "web3,eth,net,personal" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --datadir "C:\gethdata" --nodiscover --networkid 10 console 2>> C:\gethdata\geth.log
mineとかminerthreadsとか指定しているけど、省略してコンソールで、
>miner.start(1) null >eth.mining true >miner.stop() true
でもよし
personal.newAccount("test1")
eth.accounts
eth.coinbase
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(100,"ether")})
とか
var tx = {from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(100,"ether")} personal.sendTransaction(tx, "passphrase")
passphraseにはfromのパスワード
web3.fromWei(eth.getBalance(eth.accounts[1]),"ether")
personal.unlockAccount(アドレス, "パスワード", "アンロックの時間(秒)") personal.unlockAccount(アドレス)
eth.getTransaction('トランザクションID')
トランザクションが発行されて、マイニングが行われたら、確認できる。それまではnull
eth.getTransactionReceipt('トランザクションID')
eth.getBlock(ブロック番号);
eth.getTransactionFromBlock()
送金処理が完了しブロックに取り込まれると発行
eth.pendingTransactions
eth.hashrate
なんかわかるかも
debug.traceTransaction('アドレス');
こんな感じでfailedの情報が表示されていた。
{ failed: false, gas: 61484,
接続数確認
net.peerCount
ここでは関係ないです。ただのフレームワーク。後で分けます..
bootstrapとsessionはどうでもいいけど、いつもつかっているので。
meteor add twbs:bootstrap meteor add ethereum:web3 meteor add ethereum:accounts meteor add ethereum:blocks meteor add session
meteorのethereum:accounts
1番目のアカウントの名前
EthAccounts.find().fetch()[0].name
1番目のアカウントのアドレス
EthAccounts.find().fetch()[0].address
1番目のアカウントのEtherの残高
EthAccounts.find().fetch()[0].balance
meteorのethereum:blocks
最新のブロック番号
EthBlocks.latest.number
最新ブロックのハッシュ値
EthBlocks.latest.hash
最新ブロックを採掘した採掘者のアドレス
EthBlocks.latest.miner
イーサリアムの開発フレームワークです。まずはインストール
npm install -g truffle
以下のサイトを参考
参考Ethereumアプリの開発フレームワークTruffle入門
参考【イーサリアム】 SolidityとTruffleでペットショップのDappをつくる!
setMsg1とかでtestとかをセットしてやるとエラー。"test"とすると大丈夫
function Hoge() public {
とpublicをつける
throwは使うなということらしい。
if(!owner.send(this.balance)) { throw; }
を
require(owner.send(this.balance));
にする。
require(investors[i].addr.send(investors[i].amount)) i++
はrequireの最後に;が抜けていた...
require(investors[i].addr.send(investors[i].amount)); i++
【Solidity基礎】storageとmemoryを参考にstorageとmemoryの違いを確認しながら、明示的に書けとのことなので、
Investor storage inv = investors[numInvestors++];
function getAdopters() public returns (address[16]) {
でワーニング
function getAdopters() public view returns (address[16]) {
に変更 【Ethereum】【Solidity0.4.16】viewとpure修飾子
これはtruffleでmigrateした時のエラーです。build/contracts/のjsonを消す。
to.transfer(this.balance);
を
to.transfer(address(this).balance);
に修正
sha3をkeccak256に書き換える
function () public { } function () payable public { }
どっちかにしろってこと。
function () public payable {
の場合、
eth.sendTransaction({to:rp.address,from:eth.accounts[0],value:web3.toWei(800,"ether")});
でコントラクトに送ると、実行されている。
function () public {
とすると、実行されない。payableがついている関数はsendTransactionが呼ばれた時に発火するので、そりゃそうか。 eth.sendTransaction({from:rp.address,to:eth.accounts[0],value:web3.toWei(800,"ether")}); これはエラーになる。コントラクトから送金したら駄目で、EOA(Externally Owned Account)からだとOK。なぜだ。
browser-solidity
なんかlocalにコネクトができなくなった...なので、
https://remix.ethereum.org/
からダイレクトに使ってます。
web3.eth.hashrateとかどんなのがあるかみたい時に。
Web3 JavaScript app API for 0.2x.x
if (keccak256("hoge1") == keccak256("hoge2")) {
とする。
if ("hoge1" == "hoge2") {
ではなく、ハッシュ値で比較。
ブロックチェーンの基本的な仕組み
git
[Japanese] Meteorを使ってDappを作ろう
ガスと取引コスト: Gas Limit と Gas Price とは?
技術者向け Ethereum(イーサリアム)の基礎知識
【Solidity基礎】storageとmemory
【Solidity基礎】modifier修飾子について
【Solidity基礎】view、pure関数修飾子
Solidity 言語仕様 コントラクト篇
ganache
Web開発者がスマートコントラクト開発で戸惑いがちなポイント7個
Truffle: Contract.call()が返すのはPromiseなのでハマった
【Solidity基礎】型の種類