区块链可以保证被写入的内容不被删除,并且内容公开。但是否能保证生成区块链时写入的信息具有正确性和合法性呢?
本期《晓说区块链》,陈晓东先生(维基链首席技术官)将围绕区块链技术是否能对写入信息进行事先排查,以及如何确保合约参与方的执行权限,为大家详细解读。
网友:区块链可以保证被写入的内容不被删除,并且内容公开。但怎样保证在生成区块链时写入的信息的正确性和合法性?比如记录合约信息,但合约本身因违反某些法律(比如合同法)不能生效,可以进行筛选让其不进入区块吗?如果不行,可以进行怎样的改进?又或者在智能合约中,交易主体隐私数据可能被加密,怎样保证合约的参与方都有执行合约的权限和能力?
陈晓东:1) 区块链无法阻止某种信息写入到链上。区块链是一个公开透明的分布式账本,通常只要花费较少的交易费,就可以把一串信息写入到区块链上去。阻止非法信息写入,这并不在区块链的原先设计里面。当然如果写入了某种虚假的信息,由于其公开性,人人可查阅,可验证,就可以判定写入者作恶或者参与作恶了。也就是说,区块链无法阻止信息的写入,但是可以存证,可以为后来者做出警示作用。总体上和区块链有关的各类数据分类如下图,可以看到链外数据区块链无法管控到的。
2)如何确保合约的参与方都有执行的权限,这个完全取决于智能合约是如何编写的。好在智能合约和普通转账交易信息一样,也是公开透明的,大家可以在区块链浏览器上查阅到相应的合约代码。大家可能会说自己看不懂合约逻辑。但是这个世界上只要有一个专业人士可以读懂对应的合约代码,并且把真相公诸于众,那么就可以对合约发布者和运营者产生威慑力量,至少可以让合约发布者无法隐瞒合约的实际功能从而来欺骗合约使用者。
那么如何在代码层确保合约的权限管控呢?首先需要知道合约的激发执行都是倚靠一个个对合约发起的执行交易来触发的。执行交易数据里面至少包含了发起交易者的地址,调用合约具体方法的入口编号和合约方法的参数列表等等。所以合约调用时候,合约代码只要判断对应发起交易者的地址是否具有操作该方法的权限就可以实现权限管控了。当然权限访问控制的信息如果不是简单的owner地址比较或者方法里面的内置硬编码地址的比较,通常会存储在区块链的状态数据库里面,以键值对(Key-Value)的形式存在。这个权限访问列表信息的修改也需要通过发起对合约权限设置方法的调用交易来完成。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。