http://www.7klian.com

如安在Solidity中导入外部智能合约和库

许多假设的常识在任那里所都没有获得很好的表明。譬喻将外部合约和库导入到智能合约中。

Truffle
· migrations/是我们的迁移逻辑地址。在这里,我们可以描写陈设
智能合约的正确陈设它们时所需的步调。
安装完所有内容后,导航到您首选的事情空间并建设一个新目次,该目次将存放我们的Truffle项目,然后初始化一个Truffle项目:
一旦你对付利用Solidity布满信心,您就会但愿在桌面IDE的当地情况中举办开拓。将代码放在项目目次中,在当地运行,答允快速开拓,并答允利用版本节制和开放源代码。
确保您安装了最新的文本编辑器。我正在利用VS Code。
利用节点软件包揽理器(npm)通过运行以下呼吁安装Truffle:
Truffle在Node.js上运行,假如尚未安装,请转到其网站并凭据安装说明举办操纵。
在存储库根目次中,运行:
在此条约中编写新成果时,我们可以在public,private,internal或external修饰符之后添加onlyOwner修饰符,以声明该成果仅应由所有者运行。
function noRestrictions() public { … }
这就是Truffle Suite的来历。
npm install -g truffle
图2显示了完成所有这些之后的框架智能合约。
这是一个简朴的示例:
· truffle-config.js包括有关Truffle框架的网络,编译器,文件位置和其他自界说设置的信息,以相识我们所处的位置。
在node_modules中,npm下载了OpenZeppelin/contracts存储库,个中包括OpenZeppelin必需提供的所有合约和库。
truffle compile
cont
在合约/文件夹中,建设一个新的Solidity文件,,该文件将导入Ownable合约。我将其定名为TestContract.sol。
您大概很确切地知道智能合约的浸染而且您的对付智能合约的利用也很是驾轻就熟,可是实际导入它的语义是一个障碍。
import “openzeppelin-solidity/contracts/access/Ownable.sol”;
// This function is restricted only to the owner. Anyone else
本文先容了如何将外部智能合约或库导入到智能合约中。
我们将利用Ownable合约,该合约从项目根目次位于@openzeppelin-solidity/contracts/access/Ownable.sol中。
truffle init

首先要声明Solidity编译器版本,我们利用的是0.6.0;那么我们需要利用找到的路径导入Ownable合约;最后我们需要声明合约,而且合约应来自Ownable。
· test/是我们为智能合约编写的处所,以确保它们按预期运行。
OpenZeppelin是智能合约的黄金尺度可重用存储库。在此项目中,我们将安装智能合约repo作为依赖项,然后导入Ownable合约,这样我们就可以限制对某些函数的会见。
Node

· contract/是存储Solidity智能合约代码的位置。Truffle知道在这里寻找编译和迁移到的.sol文件。
它将所有代码生存在一个处所,而不需要太多设置,并且得到根基事情的进修曲线很是浅。
下次建设包括智能合约的新项目时,请从Truffle开始。让我们开始做吧…
// This function has no restrictions on who can call it
您举办智能合约开拓的第一步很大概是利用Remix在线IDE。这是一款很是精彩的编译东西,可让你快速地会见Solidity编译器,因此您可以更快上手进修该语言。
在早段时间,我记得复制和粘贴库代码到我的.sol文件中作为一个精采的办理要领。
function restrictedFunction() public onlyOwner { … }
假如一切顺利,您可以开始将智能合约迁移到当地域块链,编写测试并陈设到民众测试网!

为确保智能合约在添加新的受限成果后可以或许编译,请运行:
npm install @openzeppelin/contracts –save
mkdir my-project
cd my-project/
// who tries to call it will result in a reverted transaction

在文本编辑器中打开新的项目目次。您的文件夹布局应该如图1所示。应该有三个子目次:contract/、migrations/和test/;以及一个文件:truffle-设置js.

完成后,您应该会在根目次中看到一个名为node_modules的新文件夹。
文本编辑器
pragma solidity ^0.6.0;
你大概以前见过或利用过雷同的模式。初始化智能合约后,msg.sender地点将存储在指示合约所有者的状态变量中。利用自界说修饰符_onlyOwner,某些成果通过要求msg.sender便是所有者来限制会见。
从Remix开始
安装和导入

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读