河南漫云科技有限公司
主营产品: 元宇宙系统开发、元宇宙源码、NFT数字藏品软件开发,nft智能合约开发,盲盒系统app开发搭建,nft源码系统,网络技术开发,软件技术开发,软件定制,技术开发,信息技术服务
ARB链智能合约开发运营版丨ARB链智能合约系统开发
发布时间:2024-11-21

    智能合约kaifa语言和虚拟机

    “长安链·ChainMaker”目前已经支持使用Golang、Rust、Solidity、TinyGo、C++进行智能合约kaifa,每种kaifa语言实现的合约由不同的虚拟机执行,在将合约发布到链上时通过RuntimeType来指定虚拟机类型,语言和类型的对应关系如下:

    语言类型系统合约RuntimeType_NATIVE=1RustRuntimeType_WASMER=2C++RuntimeType_WXVM=3TinyGoRuntimeType_GASM=4SolidityRuntimeType_EVM=5GolangRuntimeType_DOCKER_GO=6

    1. 智能合约生命周期

    长安链对智能合约有完善的生命周期管理,Softwaredevelopment:I35case7O98developmentO7I8 包括合约部署、升级、合约可以使用命令行工具安装、调用、查询合约,请参看:【命令行工具】,也可使用SDK进行合约的安装、调用、查询,请参看:【SDK】

    2. 合约和用户地址

    计算方式

    在qukuailian上,通常会有一个地址,作为用户或者合约在链上的唯一标识符。为了保证地址的唯一性,地址一般由哈希计算得到。一般来说,用户的地址根据公钥计算得到,而智能合约的地址由qukuailian自动生成。

    在ChainMaker上,用户地址也是根据用户的公钥计算得到的,但合约地址,可以由链自动生成,也可以根据用户的合约名计算得到。且对于合约来说,ChainMaker支持合约名与合约地址两种方式调用。对于任意类型的合约,包括evm、wasmer、wxvm等等,ChainMaker部署合约时,都会将用户提供的合约名计算为合约地址,并在合约部署成功后将合地址放入contract对象内返回,用户反序列化contract对象就得到该合约的地址。

    对于ChainMaker来说,当前支持以下三种地址类型:

    CHAINMAKER

    此地址格式为20字节数组,但一般会将其转换为可展示的16进制字符串,转换后长度为40字节,例如:ce244336a16f64c5b6b27feae28a5ebd270be8ee。CHAINMAKER对于公钥模式的用户来说,由于计算SKI稍显复杂,现已不推荐使用。

    用户地址——根据用户的SKI(SubjectKeyId)计算keccak256哈希,然后截取哈希值的后20字节,对外展示时,会再转换为十六进制字符串形式;

    合约地址——根据合约名计算keccak256哈希,然后截取哈希值的后20字节,对外展示时,会再转换为十六进制字符串形式。

    ZXL

    此地址类型,为至信链业务专用,不建议对外使用。ZXL的地址为20字节数组,转换为可展示的16进制字符串后,还会加一个字符串”ZX“作为前缀,长度变成了42字节,

    ZXL与CHAINMAKER的主要区别是哈希算法不同,ZXL是sm3,CHAINMAKER是keccak256,另外,对于用户地址来说,计算所用的参数也不同,ZXL为序列化后的公钥,而CHAINMAKER为SKI,除此之外ZXL地址有”ZX前缀“。

    用户地址——对用户的公钥序列化后,计算sm3哈希,然后截取哈希值的前20字节,对外展示时,会再转换为十六进制字符串形式,并添加”ZX“前缀;

    合约地址——根据合约名计算sm3哈希,然后截取哈希值的前20字节,对外展示时,会再转换为十六进制字符串形式,并添加”ZX“前缀。

    ETHEREUM

    此地址格式也是20字节数组,转换为可展示的16进制字符串后,一般会加一个”0x“前缀,长度也变成了42字节,例如:0x7cf146966856b4899b4f25f169d81176d0942050,但”0x“前缀非必须,可加可不加。

    ETHEREUM与CHAINMAKER非常相似,尤其对于合约地址,两者的参数和哈希算法都是相同的。但对于用户地址稍有不同,主要是地址的计算参数,ETHEREUM是序列化后的公钥,而CHAINMAKER为SKI,哈希算法仍然是相同的。

    ETHEREUM地址类型的优点是兼容以太坊地址类型,而且,也是ChainMaker的默认地址类型。

    用户地址——对用户公钥序列化后,计算keccak256哈希,然后截取哈希值的后20字节,对外展示时,会再转换为十六进制字符串形式;

    合约地址——根据合约名计算keccak256哈希,然后截取哈希值的后20字节,对外展示时,会再转换为十六进制字符串形式。


展开全文
拨打电话 微信咨询 发送询价