びんぼっちゃまコインをつくってみました!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
pragma solidity ^0.4.8; contract BinbocchamaCoin { string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; mapping (address => uint256) public balanceOf; event Transfer(address indexed from, address indexed to, uint256 value); function BinbocchamaCoin(uint256 _supply, string _name, string _symbol, uint8 _decimals){ balanceOf[msg.sender] = _supply; name = _name; symbol = _symbol; decimals = _decimals; totalSupply = _supply; } function transfer(address _to, uint256 _value) { if(balanceOf[msg.sender] < _value) throw; if(balanceOf[_to] + _value < balanceOf[_to]) throw; balanceOf[msg.sender] -= _value; balanceOf[_to] += _value; Transfer(msg.sender, _to, _value); } } |
コードの解説
- 1行目の、pragma solidity ^0.4.8;と毎回書いてください(自分のバージョンにしてね)。
- 3-29行目は本体で、この部分が一つのコントラクト。contractは、他の言語だとclassに相当します。
- 4-7行目はメンバ変数で、コインのデータになります。自分のつくるコインにこんなデータをもたせたいなというものをかく。「name symbol decimals totalSupply」の部分は、自由に名前つけてOKですが、アルファベットでたのんます!
- 8行目のmappingは、solidity独特のもので、変数(データ)のことです。ここにエクセルみたいな表が入ってるイメージをしてください。
- 10行目は、イベントの宣言で、ログを出力するときに使います。(ログの出力機能)
- 12-18行目は、コンストラクタといわれるもので、びんぼっちゃまコインがつくられるときに呼ばれる関数。
- 13-17行目は、初期化の処理をやっているよ。
- 19行目は、送金処理をさせるメソッドをつくっています。adress _to, uint256 _value が引数。
- 24-25行目は、送金先を増やし、送金元を減らすように命令しています。
※solidityにおけるmappingとは、連想配列のことです。
※連想配列とは、配列の0番目、1番目、2番目を、いちご、れもん、めろんのように、文字を元に値が設定された配列のことです。
ABOUT ME