使用工具go-package-plantuml分析go项目源码,自动生成uml类图
plantuml工具介绍
plantuml支持将“文本描述的UML类图”转换成图片形式的类图等。
类图使用例子如下
@startuml
慢雾xToken被黑事件分析:两个合约分别遭受“假币”攻击和预言机操控攻击:据慢雾区消息,以太坊 DeFi 项目 xToken 遭受攻击,损失近 2500 万美元,慢雾安全团队第一时间介入分析,结合官方事后发布的事故分析,我们将以通俗易懂的简讯形式分享给大家。
本次被黑的两个模块分别是 xToken 中的 xBNTa 合约和 xSNXa 合约。两个合约分别遭受了“假币”攻击和预言机操控攻击。
一)xBNTa 合约攻击分析
1. xBNTa 合约存在一个 mint 函数,允许用户使用 ETH 兑换 BNT,使用的是 Bancor Netowrk 进行兑换,并根据 Bancor Network 返回的兑换数量进行铸币。
2. 在 mint 函数中存在一个 path 变量,用于在 Bancor Network 中进行 ETH 到 BNT 的兑换,但是 path 这个值是用户传入并可以操控的
3. 攻击者传入一个伪造的 path,使 xBNTa 合约使用攻击者传入的 path 来进行代币兑换,达到使用其他交易对来进行铸币的目的。绕过了合约本身必须使用 ETH/BNT 交易对进行兑换的限制,进而达到任意铸币的目的。
二)xSNXa 合约攻击分析
1. xSNXa 合约存在一个 mint 函数,允许用户使用 ETH 兑换 xSNX,使用的是 Kyber Network 的聚合器进行兑换。
2. 攻击者可以通过闪电贷 Uniswap 中 ETH/SNX 交易对的价格进行操控,扰乱 SNX/ETH 交易对的报价,进而扰乱 Kyber Network 的报价。从而影响 xSNXa 合约的价格获取
3. 攻击者使用操控后的价格进行铸币,从而达到攻击目的。
总结:本次 xToken 项目被攻击充分展现了 DeFi 世界的复杂性,其中针对 xSNXa 的攻击更是闪电贷操控价格的惯用手法。慢雾安全团队建议 DeFi 项目开发团队在进行 DeFi 项目开发的时候要做好参数校验,同时在获取价格的地方需要防止预言机操控攻击,可使用 Uniswap 和 ChainLink 的预言机进行价格获取,并经过专业的安全团队进行审计, 保护财产安全。详情见官网。[2021/5/13 21:57:48]
Class11<|.Class12
分析 | 减半未推动价格上涨或使矿工及矿机商面临困境:12月23日,LongHash发文《比特币的减半如何导致矿难》称,由于人们对比特币减半会推动价格上涨的普遍期待,很多人已投身采矿业,购买挖矿设备挖矿,这已导致比特币算力持续增长。但根据历史记录,比特币价格和减半并无直接明确相关性。而算力持续增长,已使得矿工挖矿成本增加,没有理由相信增加的采矿成本会推高价格。价格由供求关系决定,若需求低,不管开采成本是多少,价格都有可能下降。算力持续上涨,矿工奖励又将减半,矿工面临压力,同时这种压力也会给矿机制造商带来压力。鉴于目前顶级矿商比特大陆、嘉楠耘智等各自面临困境,若减半未能推动价格上涨,对矿工和矿机制造商而言都将带来灾难。[2019/12/25]
Class13-->Class14
分析丨金色盘面:XRP三角震荡区间 等待选择方向:金色盘面综合分析:XRP在三角区间内震荡,成交量持续缩量,等待选择方向。市场情绪偏空,注意风险。[2018/8/10]
@enduml
安装go-package-plantuml
go-package-plantuml项目代码地址
下载和编译项目:
gogetgit.oschina.net/jscode/go-package-plantuml
gobuildgit.oschina.net/jscode/go-package-plantuml
使用go-package-plantuml分析go项目,生成uml类图描述文件
./go-package-plantuml--codedir/appdev/gopath/src/github.com/contiv/netplugin\--gopath/appdev/gopath\--outputfile/tmp/result\--ignoredir/appdev/gopath/src/github.com/contiv/netplugin/vendor
参数说明--codedir要分析的代码目录--gopathGOPATH环境变量目录--outputfile分析结果保存到该文件--ignoredir不需要进行代码分析的目录
使用plantuml生成类图
下载plantuml
提示:如果系统没有安装jdk,需要先安装jdk;yuminstall-yjava
执行下面命令生成图片形式的类图/tmp/uml.png
java-jarplantuml.jar/tmp/text.uml
如果想生成svg格式的文件,使用-tsvg参数。svg格式的文件,使用浏览器打开,可以搜索类名。
java-jarplantuml.jar/tmp/text.uml-tsvg
viapengrk
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。