[Contract] truffle-flattener 合并 Solidity 文件的依赖到一个文件

通过llama.cpp与羊驼聊天的网页界面- 详解 Serge 的启动使用

 

使用

$ npm install truffle-flattener -g

$ truffle-flattener <solidity-files> > output.sol

 

为什么不是 Solidity Flattener

truffle-flattener 与 truffle 结合紧密,利用到它的依赖项解析逻辑。

 

限制

如果使用 truffle migrate 部署,它与 truffle-flattener 合并后的文件不一样,在 ethersan 上面 contract verify 是通不过的。

这种情况可以使用 Solidity Flattener 通过 Remix 来部署( 复制使用 cat output.sol | pbcopy )。当然我们通过 truffle-flattener 也可以合并整个合约 通过 Remix 部署。

注意,truffle-flattener 对别名导入不支持(如:import {symbol1 as alias, symbol2} from "filename";)。

 

优势

我们在开发阶段就可以使用这个工具了,方便我们在一个文件中查看依赖的所有合约方法的实现及使用方式。

比如使用 OpenZeppelin 库文件:

// xxx.sol
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";

在一个空文件中引入库文件,然后 `truffle-flattener xxx.sol > ERC20Full.sol` 我们就可以得到包含所有依赖项的单个文件。

后面我们就可以通过 import "ERC20Full.sol" 直接使用了。

 

Refer:Solidity的使用难度怎么样

Link:https://www.cnblogs.com/farwish/p/12531556.html

posted on   ercom  阅读(1966)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

统计

点击右上角即可分享
微信分享提示