USDC Yield With Cover Built InQuicknode Earn now runs USDC yield with cover for protocol risk built in, underwritten by OpenCover. Six covered vaults on Base.
発表を見るzOS を使った EVM パッケージの作成!
In the last blog, we talked about building upgradable Smart Contacts using ZeppelinOS (zOS). Today, we’ll look at building EVM packages using zOS. Using Zeppelin, we can create an EVM package which can be used by other developers.

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

より複雑なスマートコントラクトアーキテクチャに向けた一歩
In the last blog, we talked about building upgradable Smart Contacts using ZeppelinOS (zOS). Today, we’ll look at building EVM packages using zOS. Using Zeppelin, we can create an EVM package which can be used by other developers. Your EVM package will be deployed on the Ethereum Blockchain and any developer can link your package in their Smart Contracts.
An EVM package is an upgradable dependency for your Smart Contracts. In simple words: it’s an upgradable deployed Smart Contact on Ethereum blockchain which anyone can use as a dependency for their project.
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 package by running:
zos リンク openzeppelin-eth
これにより、以下がインストールされます openzeppelin-eth 契約書を作成し、さらに zos.json 参照されているパッケージを含むファイル。つまり、これから使用するすべてのパッケージについて、このコマンドはそれらの契約に対する参照を zos.json. これらの契約書はまだまとめなければならない。
それでは、プロジェクトに契約を追加しましょう:
zos add SIMPLEToken
** 必ず zos セッションが確立された後、コマンドのいずれかが失敗した場合は、以下のコマンドを使用してセッションを再作成してください:
zos session --network local --from 0x1df62f291b2e969fb0849d99d9ce41e2f137006e --expires 3600
Now, let’s push our changes to our local blockchain:
zos push --deploy-dependencies
その --deploy-dependencies このフラグは、主に、プロジェクトで使用しているEVMパッケージがまだデプロイされていないネットワーク(どのネットワークであっても)を利用する場合に使用されます(openzeppelin-eth in our case). So as we are using local blockchain we will use this flag, but we will only use this flag once… next time we’ll already have 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 provides a new paradigm for Smart Contract development. It paves the way for more complex Smart Contract architecture with the power of upgradability. In the future, you’ll be able to plug & play many Smart Contracts’ functionalities without worrying about each and every detail. It will create rapid growth in Smart Contract development as more developers can use these packages and Solidity libraries, and participate in building more complex systems.
zOSでは、アップグレード可能なSolidityライブラリを構築する方法も提供されており、これについては今後のチュートリアルで解説します。それまでの間、スマートコントラクト開発者の方は、ZeppelinOSプロジェクトをチェックしてみてください。詳細については、同プロジェクトのドキュメントをご覧ください。
プロジェクトについてサポートが必要だったり、ご質問がある場合は、こちらのフォーム、Twitter(Quicknode)、またはDiscordからご連絡ください!
2017年に設立されたQuicknode は、開発者 および企業向けに、機関投資家レベルのブロックチェーン インフラストラクチャを提供しています。99.99%の稼働率と、80以上のチェーンに対応したサポート を備え、チーム は妥協のないオンチェーン アプリケーションの構築とスケーリングを実現します。
最新のエンジニアリングに関する知見、製品の最新情報、Web3のニュースを、メールボックスに直接お届けします。
SOC 2 タイプ II 認証取得・ISO 27001