Coinを読み解いてsolidityの勉強します。solidityのコードに目を通すので、かなり初歩的なところから調べる感じです。仕様は以下の通りです。この辺は、いくつか他のコードも読んでみないとわからないところですが、固定レートってあまり他にはなさそうです。最初に発行者(オーナー)が全発行トークンを保有する。ethと固定レートでトークンを全量無期限に販売する。(発行日以前の日時からのリクエストは弾くよう制御する)適切に権限設定されたトークンを購入者に送付し、購入者はウォレット内にそれを保持できる。購入者はオーナーから権限が委譲されているので、保有しているトークンを第三者に送付できる。オーバーフロー攻撃への対策を施す。コインの概要は以下の通り。(2017年9月22日現在)コードすごく丁寧にコメントが書かれているので、もしかするとすぐ読めるかもしれないですね。"./SafeMath.sol";おおよそ振ったコメントの通りのコーディングですが、ライブラリとしてOpenZeppelin製のセキュリティフレームワークのひとつ、SafeMathをインポートしています。ような演算子を使わず、SafeMathのメソッドで行なっています。オーバーフロー攻撃(かなり大きい容量のデータを送りつけてくる攻撃)や負の値が送られてきたときにエラーを投げるように設計されています。{...}contract内にコントラクトのコードを書くのがsolidityの決まりです。//uint256変数にはSafeMathを適用する。//uint256変数にはSafeMathを適用する。インポートしたSafeMathをuint256に適用するにはusingを使えばいいんですね。Coin";string型でpublicとして宣言しています。constantなので、ここで定義した定数は変更できないようですね。確かにsymbolとかnameとかは修正しないでしょう。owner;_totalSupplyと_currentSupplyはconstantになっていないです。//流通のため、オーナーから払い出したトークンの取り扱いをユーザーに許可する。//流通のため、オーナーから払い出したトークンの取り扱いをユーザーに許可する。owner);_;}mappingでbalancesとallowedを定義して、modifierを定義しています。modifierはメソッドみたいなもので、function実行時の権限に使います。requireでownerがsenderでなかった時はconstractを中止しています。require関数はconsitionがfalseを返した場合、そこでcontractの実行を停止し、contractの状態を実行前に戻して残りのガスをcallerに返却します。assertと違い、requireでは使った分のガスだけが消費されます。opcodeに変換されます。bodyなので、senderがownerの時はそのまま実行します。4);_;}もう一つmodifierです。支払い上限を設定します。assertはcontract実行前まで状況を戻します。assert関数はconditionがfalseを返した場合、そこでcontractの実行を停止し、contractの状態を実行前に戻して残りのすべてのガスを消費します。assertをコンパイルするとopcode=0xfeになり、evm上では0xfeは未定義のopcodeなので動作が停止されます。payable{createTokens(msg.sender);}contractは一つだけ無名関数を作ることができます。実行するfunction名の指定がなかったときや、データが何もない時に実行されます。何もデータがなくてもEtherの情報だけあれば実行してくれるので、payableにしておくのがよさそう。_totalSupply;}クラス生成時に実行されるメソッド。functionを使っています。payableはfucntion実行時にetherも受け取ることができます。functionは上記のようになっています。めそコインでは以下のように使われています。functionの引数aがmag.valueのことだからです。variableです。定数として値が入っています。_totalSupply;}コメントのままです。balances[_owner];}コメントのままです。true;}senderにtransferするだけの残金があるか、transferの金額が0よりも大きいか確認してから、Transferを呼び出します。返り値は、boolean。発行者(オーナー)がめそコインを送付するときの関数。true;}発行者(オーナー)ではない人がめそコインを送付するときの関数。allowed[_owner][_spender];}コメントのまま。_value);Eventがcallされるとトランザクションにログを残すことができます。Chain特有ですね。コメントをキャンセルメールアドレスが公開されることはありません。