手机:15966888888
电话:010-8888999
邮箱:imtoken@mail.com
地址:青岛润科翔电气有限公司
本人从事区块链开发这项活儿, 前后加起来已经满五年了, 每天的工作就是跟Solidity语言打交道, 关系密切得没法说。以太坊的...
24小时咨询热线:4006666888
产品详情
本人从事区块链开发这项活儿, 前后加起来已经满五年了, 每天的工作就是跟Solidity语言打交道, 关系密切得没法说。以太坊的智能合约到底是个什么东西呢, 用大白话讲, 它不过是那一串硬生生写死在区块里面的代码。
这些代码存在那儿之后, 任何人都能够随意调用去运行它, 但是根本没有人有能力把它改掉, 也同样没办法让它停止运行不继续转下去。这么一来看的话, 这种只能看不敢改、想停停不掉的特质, 就变成了部署在整个区块链网络内部的, 所有那些去中心化应用程序所必须依赖的基础骨架结构。
当你把一段智能合约的程序代码发布到以太坊这个网络里面的时候, 那么从发出那个动作的那一刻开始起, 全网所有的节点都会去把这个智能合约给它复制一份出来。在这种情况下呀没有任何一台服务器能够把它单独给关掉。
每当有某个用户想要去调用这个智能合约里面所设计好的函数的话, 那么整个网络里面所有的节点都得把这一段逻辑运算的逻辑重新再跑通一遍。然后最终算出来的那个结果, 就会被给正式地写进到一个区块里面去, 反正谁也别想在后面赖掉账。
编写合约程序时使用的语言是Solidity, 这种语言的语法结构看上去类似于C++编程语言, 但是其实际运行的环境是基于EVM虚拟机, 在这个环境中程序的每一步执行操作都必须消耗名为gas的计算资源。
如果你在某一行代码的编写过程中表现得比较粗糙或者不够严谨, 所引发的gas费用可能会直接翻上好几倍, 因此在该程序正式上线发布之前, 必须反复使用该名为Remix的开发工具来运行并进行模拟测试。
普通的代码出了错, 修改一行就完结了。以太坊的智能合约一旦被部署, 字节码被锁死在区块链上, 改动一个字符都得发布新版合约再迁移用户, 在迁移期间, 数据还得进行手动搬运。
2017年发生的The DAO那件事情, 就是一个充满了鲜血和眼泪的教训。因为在智能合约里面存在的一个重入漏洞, 被人给利用了, 于是就有七千多万美元的资金被直接转走了。

由于区块链上面的记录是不能被修改的, 所以最终只能采取硬分叉的方式来进行救援。所以说在智能合约正式上线之前, 去开展形式化的验证工作以及进行专门的审计, 并不是说为了走过场、摆样子, 而是为了确保能够保住性命, 避免出现严重的损失。
我见过太多了, 好多小团队为了节省那一点审计费用, 选择跳过这个步骤,一旦合约部署上线, 就被用户大量薅羊毛, 整个项目直接就凉凉了, 关于去写智能合约这件事, 慢就是快。
相关推荐
鲁公安备11017697号 Powered:Z-BlogPHP Thems:GebiLaoli