打字猴:1.70387936e+09
1703879360
1703879361
1703879362 还可以安装特定版本的包:
1703879363
1703879364
1703879365
1703879366
1703879367 就像NPM一样,ethpm版本遵循语义版本。项目还可以定义一个ethpm.json文件,它对于npm包来说类似于package.json。为了安装ethpm.json文件中列出的所有相关内容,运行如下代码:
1703879368
1703879369
1703879370
1703879371
1703879372 ethpm.json文件的示例如下:
1703879373
1703879374
1703879375
1703879376
1703879377
1703879378 为truffle创建和发布npm包的过程与创建任何其他npm包相同。学习如何创建和发布ethpm包,请访问http://truffleframework.com/docs/getting_started/packages-ethpm#publishing-your-own-package。无论是否把包当作npm包或者ethpm包发布,都需要运行truffle networks—clean命令。运行该命令时,它会删除所有那些只匹配配置文件中*通配符的网络ID的artifact。之所以这样做,是因为这些地址对于其他也使用这个包的项目来说是非法的,这些网络很有可能是私有的,因为它们只用于开发目的。除非你知道自己在做什么,否则不要忽略这个命令。它不能删除任何以常数形式出现的私有网络artifact,所以需要手动删除。
1703879379
1703879380 3.在合约中使用包的合约
1703879381
1703879382 为了在合约中使用包的合约,可以简单使用Solidity的导入语句。如果import路径不明确或者完全相关,它就告诉truffle从一个有特定名字的包中寻找一个文件。看看这个example-truffle-library的例子(https://github.com/ConsenSys/example-truffle-library):
1703879383
1703879384
1703879385
1703879386
1703879387 由于路径的开头不是“./”,truffle知道要在项目node_modules或者installed_contracts目录中寻找example-truffle-library文件夹,以提供所要求的合约的路径。
1703879388
1703879389 4.在JavaScript代码中使用包的artifact
1703879390
1703879391 如果在JavaScript代码中与一个包的artifact进行交互,仅需要包的.json文件,然后使用truffle-contract把它们转为可用抽象:
1703879392
1703879393
1703879394
1703879395
1703879396 5.在Solidity中访问已经部署package合约的地址
1703879397
1703879398 有时,用户可能希望合约与包之前部署的合约进行交互。由于部署的地址位于包的.json文件中,Solidity代码不能直接读取文件内容。因此,要让Solidity代码访问.json文件中的地址,应通过在Solidity代码中定义函数设置相关合约地址,在部署合约之后,使用JavaScript调用那些函数设置相关合约地址。
1703879399
1703879400 所以,可以这样定义合约代码:
1703879401
1703879402
1703879403
1703879404
1703879405
1703879406
1703879407
1703879408 移植应该看起来像这样:
1703879409
[ 上一页 ]  [ :1.70387936e+09 ]  [ 下一页 ]