关于ERC20的转账问题

 最近的 ERC20 的转账的安全问题,直接原因都是代码安全漏洞,由程序员背锅,但大家比较少讨论其深层次的原因,为什么以太坊比较容易出安全问题?

以太坊只是一个记录 dapp 执行结果的区块链,其本身并没有加密货币复式记账所需的 utxo 模型。以太坊自身的以太币也是由 balance 来表示账号余额,用余额的区块链有一个明显的缺陷,很容易遭受重放攻击(交易的请求再发送一次)。以太坊用了 nonce 等 tricky 的做法避免主链货币重放,但对于基于 dapp 的代币,就需要依赖开发者自己来保障其安全逻辑。

采用复试记账的 utxo 则所有的转账需要检查输入来源,如果这个来源已经被使用过一次,则表示这次转账是一个双花尝试,而比特币最主要的架构设计逻辑比如 PoW 以及长链胜出就是用于防止双花攻击。

以太坊智能合约运行的大致流程是,取得写区块的节点运行 dapp 并记录运行结果到新的区块,当这个结果被其他节点验证之后这个新区块就被整个网络认可,验证的方法也是执行一遍这个合约脚本,智能合约的设计约束是 deterministic, 但并无其他机制可保证这个执行的安全性及正确性。即使有 bug,只要 bug 能被其他节点运行出相同结果,记录就会上链,erc20 或 erc721 是一个智能合约接口的约定,方便通用的钱包可以访问这些合约。

从 dao 到 bec, smt 这些问题都是程序员的问题吗?在数字货币的时代,重要的 token 资产本身是需要货币级别的安全程度,以太坊目前的设计更适合游戏积分之类的合约运行结果,我的看法是,重要的 token 资产不适合构建在 erc 20 基础之上。它没有任何货币安全设计的考虑。

再重复一下,重要的 token 资产不适合构建在 erc 20 体系基础之上。
 

猜你喜欢

转载自blog.csdn.net/it_zhangxiang/article/details/82848638