EOS的智能合约是什么?EOS密钥被盗后怎么恢复的方式方法?

EOS 的智能合约是关联在各个合约账户上的。在 EOSIO 系统中,“合约”是沿用了区块链的专业术语,但其含义非常接近于 Linux 操作系统的后台应用,比如节点在启动时会包括四个缺省合约,如 eosio.bios、eosio.token 等。
EOS 的智能合约可以通过两种方式调用,一是用户通过命令调用,二是通过 EOSIO 软件的 send 方法调用。一个账户通过转账等动作触发另一个合约账户中的合约运行之后,这个合约可以通过软件代码调用其他的合约(见图3-11)。

EOS 智能合约现在是用 C++ 语言编写的,文件格式分别为*.hpp/*.cpp,编译后变为 WebAssembly 格式文件 WASM(*.wast)与应用头文件(*.abi)。


EOS 的账户体系还有一个与绝大多数区块链项目不一样的特征,它提供了“密钥被盗后的恢复”。对其他的区块链项目而言,密钥丢失,则一切都丢失了,无法恢复,而 EOS 基于它的用户权限机制提供了恢复功能。
这有很大争议,但可能是需要的。过去,区块链项目假设,你得管理好自己的密钥,没人为你负责。但在现实生活中,当丢掉了银行的密码之后,我们希望在提供相关证明之后,银行能帮忙找回密码,帮我们找回自己的钱。
当然,EOS 提供的恢复功能只有在非常严格的情况下才可以做到:假设你的私钥被黑客盗走了,在这种情况下,你可以用过去 30 天中有效的 owner 权限对应的私钥,和你预先设定的账户恢复合作伙伴(account recovery partner)重置账户的私钥。这样你可能夺回了账户的所有权。
EOS 白皮书讨论说:“这个过程与简单的多重签名机制有极大的不同。通过多重签名的交易,有一个对象会执行并参与每一笔交易。然而,账户恢复合作伙伴仅参与了恢复的过程,并没有权力参与日常的交易。这极大地降低了相关参与者的成本和法律责任。”
按照 BM 之前设计的 Steem 区块链,要保证你的账户中的数字资产不被盗走,还需要其他机制的协同。如果黑客获得你的账户的所有权,可以立刻将你的账户中的数字资产转走,那么,你的数字资产就丢失了,你即便恢复了账户也毫无用处。
在 Steem 区块链中有这样的机制的示例。比如,如果我们把 STEEM 币存入一个储蓄账户(也就是转化所谓的 STEEM Power),那么我们要从中把 STEEM 币取出来,首先要经过一个 7 天的等待期,然后在接下来的 13 周中,每周可以取出 1/13。如果有这样的机制,那么只要在一定的时间内进行了账户恢复,重新获得账户的控制权,我们的数字资产就还没有被全部盗走。