初心者文系主婦がブロックチェーンを学ぶブログ

IT革命のビッグウェーブに乗り遅れた主婦が、ブロックチェーン革命の波にのるべく、ブロックチェーン技術を学ぶブログです。

2018-12-01から1ヶ月間の記事一覧

【CryptZombies】レッスン3チャプター6:ゾンビのクールダウン(ヘルパー関数(structを引数にする))

ゾンビのクールダウンタイマーを実装するために、feedAndMultiplyを次のように編集します。 ①捕食することでゾンビのクールダウンが始まる。 ②ゾンビはクールダウン期間が終わるまで子猫を捕食することはできない。 まずは、ヘルパー関数を定義して、ゾンビ…

【CryptZombies】レッスン3チャプター5:Time Units

時間の単位 Solidityには時間を扱うための固有の単位がいくつか用意されています。 now変数は、現在のunixタイムスタンプ(1970年1月1日から経過した秒数のこと)を返します。unixタイムスタンプは歴史的に32ビットの数値として格納されています。 Solidity…

【CryptZombies】レッスン3チャプター4:ガス(燃料)

ガス:イーサリアムDAppの燃料 Solidityでは、ユーザーが関数を使用するたびに、ガスと呼ばれる通貨を支払うことになっています。 ユーザーはEtherでガスを買い、アプリの関数を実行するのです。 関数を実行するために必要なガスの量は、関数のロジックの複…

【CryptZombies】レッスン3チャプター4:ガス(燃料)

ガス:イーサリアムDAppの燃料 Solidityでは、ユーザーが関数を使用するたびに、ガスと呼ばれる通貨を支払うことになっています。 ユーザーはEtherでガスを買い、アプリの関数を実行するのです。 関数を実行するために必要なガスの量は、関数のロジックの複…

【CryptZombies】レッスン3ャプター3:onlyOwner関数の修飾子

関数修飾子 関数修飾子は一見関数のように見えますが、functionの代わりにmodifierを使います。 また、関数のように直接呼び出すことはできず、代わりに関数定義の最後に修飾子の名前をつけることで、関数の動きを変更します。 /** * @dev Throws if called …

【CryptZombies】レッスン3チャプター2:Ownableコントラクト

チャプター1で作成したコードにはセキュリティホールがあります。 setKittyContractAddressはexternalなので、だれでも呼び出すことができるのです。 つまり、この関数を呼び出した者はクリプトキティーズのコントラクトのアドレスを変更することで、私たち…

【CryptZombies】レッスン3チャプター1:Immutability of Contracts

SolidityはJavaScriptに似ている言語ですが、イーサリアムのDApp(Decentralized Application=分散型アプリケーション)は普通のアプリケーションとはかなり違う点があります。 Immutable まず、コントラクトをイーサリアム上にデプロイ(利用可能な状態)…

【CryptZombies】レッスン2チャプター13:ボーナスKitty Genes(Ifステートメント)

ここでは、猫ゾンビを作ります。 レッスン1で、ゾンビの外見を決めるのに、16桁の数字のうち最初の12桁しか使いませんでした。 余っているうちの最後の2桁を使って特別な特徴を追加します。 とりあえず、猫ゾンビはDNAを末尾を99とします。 コードに…

【CryptZombies】レッスン2チャプター12:複数の返り値の処理

複数の返り値の処理 複数の値を返す例 function multipleReturns() internal returns(uint a, uint b, uint c) { return (1, 2, 3); } function processMultipleReturns() external { // 例として、まずa,b,cという名前のuint関数を宣言 uint a; uint b; uin…

【CryptZombies】レッスン2チャプター11:Interfaceを使用する

Interfaceの使用 チャプター10の例をNumberInterfaceを使って、interfaceを次のように定義します。 contract NumberInterface { function getNum(address _myAddress) public view returns (uint); } これをコントラクト内で使用します。 contract MyContr…

【CryptZombies】レッスン2チャプター10:ゾンビは何を食べるのか?interface(別のコントラクトとのやりとり)

別のコントラクトとのやりとり ブロックチェーン上の他人のコントラクトとやりとりするには、最初にinterfaceを定義します。 例として、以下のコントラクトがブロックチェーン上にあったとします。 contract LuckyNumber { mapping(address => uint) numbers…

【CryptZombies】レッスン2チャプター9:別の関数とビジビリティ(InternalとExternal)

InternalとExternal Solidityにはpublicとprivateの他に、internalとexternalという関数用のビジビリティ(表示/非表示)が用意されています。 internalはprivateと同じですが、このコントラクトから継承したコントラクトにもアクセスできるようになります。…

【CryptZombies】レッスン2チャプター8:ゾンビDNA

平均値 新しいゾンビDNAを計算するためには、元のゾンビのDN単だ:元のゾンビのDNAと捕食された人間のDNAの平均値を出すだけでいい。 function testDnaSplicing() public { uint zombieDna = 2222222222222222; uint targetDna = 4444444444444444; uint new…