web3-区块链的交互性以及编程的角度看待智能合约
跨链交互性
交互性
- 用户在某一区块链生态上拥有的资产和储备
目标:使用户能够把资产和储备移动到另一个区块链生态上
可组合性
- 使在某一区块链的DAPP能调用另一个区块链上的DAPP
如果全世界都在用以太坊就会很容易
但是实际情况是很多区块链生态需要进行交互;一些跨链协议:XCMP,IBC等等
如下图将自己的资产从以太坊上转移到Solana,Bit等等
如何移动资产?建造联邦链桥(跨链桥)
为什么需要外部的校验者?链桥合约不能用于存储用来签名的密钥
如下图所示,校验者的安全系数很差,校验者们会收到很多的攻击被篡改等风险
从编程的角度看待智能合约
数字货币:只是区块链的应用
在程序员的角度来看:就是一个可以持续追踪系统内所有用户的一个账户和账户之间进行结算的一种共识系统。用户可以根据每一个应用程序之间的规则,通过在其之间进行一个数字货币的转换或者是交易,从而与公共共识系统相关的交互。
智能合约:在区块链上运行的使用者定义程序
每一个智能合约就是每一个应用程序
数字货币:只是一种区块链的应用
例:在以太坊上注册域名
下方的函数的意思就是:检查域名是否被别人注册或者使用,然后将域名赋值给domain
合约对象其实是储存在区块链上的,他有一个注册表 registerDomain的函数;如果有一个人想要去注册一个“defi.io”的域名,他就会在合约中去唤醒这个registerDomain函数,并且将字符串中的“defi.io”输入到对应的函数种;然后任何在区块链网络中人人都可以去注册表中查询选择这个“defi.io”的拥有者。
例子:
合约之间的交互
使用者不仅仅会去唤醒合约的对象的一些函数功能;而且合约的代码也会去描述是如何发送合约的信息,如何去唤醒另一个合约的函数功能;常见的方式就是多账号多签名的方式,许多不同的使用者去控制合约对象所拥有的资产;如下图transferToken,每个人都有解开这个合约的权重,比方说有5个人每个人有20%的权重那么就需要2/3的人同意才能解开。
合约编程模型
合约类别: 定义合约的程序代码及存储变量
合约对象: 一个存在于区块链上的类别实例
存储字段: 由合约存储的变量
函数/方式: 可被唤醒来跑既定代码,更新合约状态
**访问控制:**使用“require0”来取消一些未被授权的交易。你也可用它来检视调用这个函数的调用者
组合: 在多个合约之间的交互
总结
本文从区块链交互性和编程角度探讨智能合约技术。跨链交互性方面,分析了资产在不同区块链生态间的转移需求,介绍了跨链协议和联邦链桥方案,并指出校验者机制的安全风险。编程视角下,阐述了智能合约作为区块链上用户定义程序的特点:1)数字货币作为基础应用,实现账户跟踪与结算;2)合约对象存储在链上,包含存储字段和可调用函数;3)支持合约间交互和多签名控制机制;4)包含访问控制和安全验证功能。通过域名注册等实例,展示了智能合约的实际应用场景和工作原理。