• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > 比原链(Bytom)合约交易构造流程

比原链(Bytom)合约交易构造流程

作者:比原链 字体:[增加 减小] 来源:互联网 时间:2018-11-03

比原链向大家分享了比原链(Bytom)合约交易构造流程,其中包含比原链,Bytom,合约交易等知识点,遇到此问题的同学们可以参考下


equity合约简介


equity是bytom用于表达合约程序而使用的高级语言,主要用于描述bytom链上特定的资产:

·区块链上的所有资产都是锁定在合约program中, 资产值value(即UTXO)一旦被一个合约解锁unlock,仅仅是为了被一个或多个其他合约来进行锁定lock。
·合约保护资产value(即UTXO)的方式是采用执行虚拟机并通过verify指令来验证的交易要花费这个资产value是否达到了我的条件。

合约组成

contract ContractName ( parameters ) locks value { clauses }

·ContractName 合约名,用户自定义
·parameters 合约参数列表,其类型名必须符合合约语言的基本类型
·value 资产值(即UTXO的资产类型和对应的值)标识符,用户可以自定义
·clauses 条款(即函数)列表(一个或多个)

条款(函数)组成

clause ClauseName ( parameters ) { statements }
或
clause ClauseName ( parameters ) requires name : amount of asset { statements }

·ClauseName 条款/函数名,用户自定义
·parameters 条款/函数参数列表
·payments 花费UTXO需要的其他限制条件。例如进行币币交易的时候需要验证交易的另一方能够提供对应的资产值,该限制条件的使用场景主要为不同资产类型的合约交易

语句组成

statements 合约语句(一条或多条),代码语句只能是verify、lock和unlock

·verify语句 模式如verify expression,其中expression的结果必须是bool类型,为true才能继续往下执行
·unlock语句 模式如unlock value,其中value表示对应的资产值
·lock语句 模式如lock value with program,其中value表示对应的资产值,而program必须为Program基本类型
合约的基本类型:(Time类型暂已停用) Amount Asset Boolean Hash Integer Program PublicKey Signature String

内置函数:(涉及时间的内置函数before和after暂已停用,替代方法为验证区块高度的函数below和above)

·abs(n) 返回数值n的绝对值.
·min(x, y) 返回两个数值x和y中最小的一个.
·max(x, y) 返回两个数值x和y中最大的一个.
·size(s) 返回任意类型的字节大小size.
·concat(s1, s2) 返回连接两个字符串s1和s2生成新的字符串.
·concatpush(s1, s2) 将两个字符串类型的虚拟机执行操作码s1和s2连接起来(即将s2拼接在s1的后面),然后将他们push到栈中. 该操作函数主要用于嵌套合约中.
·below(height) 判断当前区块高度是否低于参数height,如果是则返回true,否则返回false.
·above(height) 判断当前区块高度是否高于参数height,如果是则返回true,否则返回false.
·sha3(s) 返回byte类型字符串参数s的SHA3-256的哈希运算结果.
·sha256(s) 返回byte类型字符串参数s的SHA-256的哈希运算结果.
·checkTxSig(key, sig) 根据一个PublicKey和一个Signature验证交易的签名是否正确.
·checkTxMultiSig([key1, key2, ...], [sig1, sig2, ...]) 根据多个PublicKey和多个Signature验证交易的多重签名是否正确。

合约交易构造流程

合约参数构造

合约参数主要涉及两个方面,一个是编译合约contract中的参数,另一个是解锁合约clause中的参数。合约的基本类型已做简单描述,对应编译合约的API接口compile中参数类型只有如下3种:

·boolean - 布尔类型的合约参数,对应的基本类型是Boolean.
·integer - 整数类型的合约参数,对应的基本类型包括:Integer、Amount.
·string - 字符串类型的合约参数,对应的基本类型包括:String、Asset、Hash、Program、PublicKey.

注意事项:

·编译合约API接口compile只需要使用contract中的参数
·解锁合约只需要提供clause中的参数
·Signature类型只能在clause的参数列表中出现,不能出现在编译合约的API中
·所有string类型的字符串都是必须以十六进制字节的string形式出现,否则调用编译合约API的时候会报错

如果合约参数中有Publickey和Signature(配套使用),那么获取这些参数需要调用list-pubkeys接口获取。Signature只能出现在clause中,表示该参数仅仅在解锁合约的时候才会被使用,由于目前对交易的签名必须通过sign-transaction接口才能获取签名结果,所以解锁的时候只需提供签名的参数root_xpub和derivation_path即可,需要注意的是这些参数需要跟验证签名pubkey匹配起来,否则合约也会执行失败。

其中list-pubkeys的参数如下:
String - account_id, 账户ID.
其请求和响应的json格式如下:


// Request
{
? "account_id": "0G1JIR6400A02"
}

// Result
{
? "pubkey_infos": [
? ? {
? ? ? "derivation_path": [
? ? ? ? "010100000000000000",
? ? ? ? "0300000000000000"
? ? ? ],
? ? ? "pubkey": "c37d5531f393bc6a3568628c0c0e17801ea452e75d604deb01403c4b161659a3"
? ? },
? ? {
? ? ? "derivation_path": [

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 比原链(Bytom)合约交易构造流程
  • 比原链 | Equity 语言入门

相关文章

  • 2018-11-03简述Polkadot和区块链互联网
  • 2018-11-03ZB网身份验证器下载及使用教程
  • 2018-11-03一文读懂共识机制
  • 2018-11-03DAG与区块链简介(从零开始学区块链 184)
  • 2018-11-03区块链技术之间的框架与层级
  • 2018-11-03Bitcoin anonymity比特币匿名性引发的犯罪行为
  • 2018-11-03零知识证明(Zero—Knowledge Proof)
  • 2018-11-03股票代币发售(ETO)是什么?
  • 2018-11-03为什么去中心化和分布式存储对一个更好的互联网至关重要?
  • 2018-11-03巨头征战新零售,实体小玩家如何求得生机?

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • 区块链物联网概念项目介绍
    • 不到 50 行的 Python 代码构建最小的区块链
    • 教你用U盘在30分钟内创建一个比特币钱包
    • 区块链简介-什么是联盟链
    • 什么是以太坊私钥储存(Keystore)文件
    • 区块链技术是什么?未来可能用于哪些方面?
    • 图文--一分钟了解比特币&区块链
    • 数字货币挖矿硬件对比
    • 蒲公英(Dandelion)隐私协议是什么
    • 区块链跨链协议的相关定义介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2015-2018 All Rights Reserved. 微课江湖 版权所有