お客様のUSDCは、昨日のレートで利息が加算されていますQuicknode 、それを自動的に本日のベストMorpho金庫に移します。7つのチェーンで稼働中。
戦略を策定するzOS を使った EVM パッケージの作成!
前回のブログでは、ZeppelinOS(zOS)を使用してアップグレード可能なスマートコントラクトを構築する方法について解説しました。今回は、zOS を使用した EVM パッケージの構築について見ていきます。Zeppelin を使用すれば、他の開発者が利用できる EVM パッケージを作成することができます。

2019年6月13日 — 読了時間5分

より複雑なスマートコントラクトアーキテクチャに向けた一歩
前回のブログでは、ZeppelinOS(zOS)を使用してアップグレード可能なスマートコントラクトを構築する方法について解説しました。今回は、zOS を使用した EVM パッケージの構築について見ていきます。Zeppelin を使用すれば、他の開発者が利用できる EVM パッケージを作成できます。作成した EVM パッケージはEthereum 上にデプロイされ、どの開発者も自身のスマートコントラクト内でそのパッケージをリンクできるようになります。
EVMパッケージとは、スマートコントラクト向けのアップグレード可能な依存関係のことです。簡単に言えば、Ethereum デプロイされた、アップグレード可能なスマートコントラクトであり、誰でも自分のプロジェクトの依存関係として利用することができます。
EVMパッケージのビルドは、前回のチュートリアルで見たアップグレード可能なプロジェクトのビルドと似ています。もしそのチュートリアルをまだご覧になっていない場合は、まずそちらを確認することを強くお勧めします。
このチュートリアルでは、アップグレード可能な基本的なスマートコントラクトを作成し、Ganache を使用してローカルネットワークに公開します。
前回のチュートリアルで、アップグレード可能なスマートコントラクトの構築方法についてはすでに詳しく説明しましたので、その部分は省略し、ローカルネットワーク上に公開する方法について見ていきましょう:
pragma solidity ^ 0.4 .24;
import "zos-lib/contracts/Initializable.sol";
contract Random is Initializable {
uint256 public seed;
function initialize(uint256 mySeed) initializer public {
seed = mySeed;
}
function getRandom(uint256 number) public view returns(uint8) {
return uint8(uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, number, seed))) % 251);
}
}次のようにしてパッケージを追加・プッシュすると、 zos add そして zos push, これで、以下のコマンドを使用してローカルネットワークに公開する準備が整いました:
zos publish --network local
** 本番環境向けのEVMパッケージを作成した場合は、それをNPMに公開することができます。
それでは、すでに公開されているEVMパッケージを自分のプロジェクトでどのように活用できるか見ていきましょう。以下を使用して、ERC721トークンを構築します。 openzeppelin-eth EVMパッケージ。
では、次のように作成してください。 zos プロジェクト(前回のチュートリアルで学んだ通り)を作成し、以下のERC721スマートコントラクトを追加します:
pragma solidity ^0.4.24;
import "openzeppelin-eth/contracts/token/ERC721/ERC721Mintable.sol";
contract SIMPLEToken{
ERC721Mintable private _token;
function setToken(ERC721Mintable token) external {
require(token != address(0));
_token = token;
}
}当社は輸入を行っておりますopenzeppelin-eth ~の代わりに openzeppelin-solidity . 主な違いは、 openzeppelin-solidity これは、デプロイ済みのコントラクトを持たないオープンソースのライブラリであり、 openzeppelin-eth これは、すでにデプロイ済みのコードを含むオープンソースライブラリであり、したがってEVMパッケージです。
それでは、プロジェクトを openzeppelin-eth 以下のコマンドを実行してパッケージをインストールします:
zos リンク openzeppelin-eth
これにより、以下がインストールされます openzeppelin-eth 契約書を作成し、さらに zos.json 参照されているパッケージを含むファイル。つまり、これから使用するすべてのパッケージについて、このコマンドはそれらの契約に対する参照を zos.json. これらの契約書はまだまとめなければならない。
それでは、プロジェクトに契約を追加しましょう:
zos add SIMPLEToken
** 必ず zos セッションが確立された後、コマンドのいずれかが失敗した場合は、以下のコマンドを使用してセッションを再作成してください:
zos session --network local --from 0x1df62f291b2e969fb0849d99d9ce41e2f137006e --expires 3600
それでは、変更内容をローカルブロックチェーンにプッシュしましょう:
zos push --deploy-dependencies
その --deploy-dependencies このフラグは、主に、プロジェクトで使用しているEVMパッケージがまだデプロイされていないネットワーク(どのネットワークであっても)を利用する場合に使用されます(openzeppelin-eth (今回のケースでは)。ローカルブロックチェーンを使用しているため、このフラグを使用しますが、このフラグを使うのは今回限りです…次回はすでに openzeppelin-eth パッケージがローカルにデプロイされました。
SIMPLEToken コントラクトのアップグレード可能なインスタンスを作成してみましょう:
zos create SIMPLEToken
また、 ERC721 EVM パッケージのトークン:
zos create openzeppelin-eth/StandaloneERC721 --init initialize --args SIMPLEToken,BTS,[<address>],[<address>]
<address> これがトークンのミントアドレスおよびポーズアドレスとなります。ローカル開発では、によって作成された10個のアドレスのいずれかを使用できます。 ganache-cli . なお、1つ以上の住所を以下のように追加できることをお忘れなく [<address>] 配列の中で。
それでは、Truffleコンソールを起動して、Smart Contactとやり取りを始めましょう:
npx truffle console --network local
次に、Truffleコンソールを開き、デプロイ済みのアップグレード可能な2つのコントラクトを接続してみましょう:
truffle(local)> SIMPLEToken.at('<my-linked-contract-address>').setToken('<my-erc721-address>')ここでは、次の部分を置き換えてください:
<my-linked-contract-address> 実行中に取得したアドレスを使用して zos create SIMPLEToken
<my-erc721-address> 作成時に取得したアドレスを使用して スタンドアロンERC721 例(上記のコマンドを確認してください)
なお、契約アドレスとトークンアドレスの両方は、 zos.dev-<network_id>.json 設定ファイル。
その他の例や、利用可能なすべてのパッケージの一覧については、こちらをご覧ください。
zOSは、スマートコントラクト開発に新たなパラダイムをもたらします。アップグレード機能の力を活かし、より複雑なスマートコントラクトアーキテクチャの実現への道を開きます。将来的には、細部の一つひとつを気にすることなく、多くのスマートコントラクト機能をプラグアンドプレイで利用できるようになります。これにより、より多くの開発者がこれらのパッケージやSolidityライブラリを活用し、より複雑なシステムの構築に参加できるようになるため、スマートコントラクト開発は急速に成長していくでしょう。
zOSでは、アップグレード可能なSolidityライブラリを構築する方法も提供されており、これについては今後のチュートリアルで解説します。それまでの間、スマートコントラクト開発者の方は、ZeppelinOSプロジェクトをチェックしてみてください。詳細については、同プロジェクトのドキュメントをご覧ください。
プロジェクトについてサポートが必要だったり、ご質問がある場合は、こちらのフォーム、Twitter(Quicknode)、またはDiscordからご連絡ください!
2017年に設立されたQuicknode 、開発者や企業向けにエンタープライズグレードのブロックチェーンインフラストラクチャQuicknode 。99.99%の稼働率と80以上のチェーンへの対応により、各チームは妥協することなくオンチェーンアプリケーションを構築・拡張することができます。
最新のエンジニアリングに関する知見、製品の最新情報、Web3のニュースを、メールボックスに直接お届けします。
SOC 2 タイプ II 認証取得・ISO 27001