OKCoin

合约币(Counterparty)协议

申屠青春 发布在 币头条,竞争币 43 12249

本文译自Counterparty的Github协议说明文档:https://github.com/PhantomPhreak/Counterparty

译者:申屠青春 深圳大学ATR国防科技重点实验室博士 新浪微博 @我看比特币

注意:本文可随意转发,请留下译者信息,如果觉得本文对你有用,请给译者捐赠,以便翻译更多比特币的核心资料。捐赠地址:1faVxBp2KmST98p3tJjx2MQP98JLLnF2Q

译者前言

比特币在国内已经众所周知,但是技术研究并未有效开展,大部分人处于知道和了解程度,目前比特圈中许多人对比特币能做什么,同样了解不多。一个重要原因是大多数比特币核心资料都是英文,很少有人能静心看完如此繁杂的英文资料。本人博士论文的研究方向是比特币,在研究其英文技术的同时,拟对一些重要资料进行翻译,让更多的圈内人对比特币有更多的理解。

本文涉及Counterparty协议,Counterparty是比特币块链上的寄生应用,目前已经实现了众多技术创新点如燃烧证明、合约、去中心化XCP与BTC交易所、赌约或期货、资产或股份发行、分红等,对于一些想在比特币块链基础上有所创新的创业者来说,具有极高的借鉴意义。

正文

合约币是以合约币协议运行的全套金融工具,合约币协议建立在比特块链基础之上,把比特币块链当成可信的时间戳服务和可信的信息发布证明。

参考实现counterpartyd,源代码:https://github.com/PhantomPhreak/counterpartyd

1交易

每个合约币信息都包括以下特性:

  • 一个源地址
  • 一个目的地址
  • 一定数量的比特币,从源代码发送到目的地址(如果目的地址存在的话)
  • 以比特币计的费用,支付给挖到这个交易的矿工
  • 最多80字节的数据(译者按:现在已经是40字节的),通过嵌入到比特币交易的OP_RETURN操作码输出或多签名输出中(或者这两者共用)。

每个承载着合约币交易的比特币交易有以下可能输出:一个目的地址输出、0字节或更多字节的数据输出、可选的变化输出,在第一个数据输出之前的第一个输出是目的输出,变化输出(在最后的数据输出之后的输出)对合约币来说不重要,所有数据输出必须在直接继承中出现。

多签名数据输出,是1-of-2输出,第一个公钥是发送者的,因而输出的币值可以赎回,存贮第二个公钥的空间可以用来存贮编码的数据,前缀是长度字节,用0来充值后面的无数据区域。

为了方便区分,每个合约币交易的数据区域都以UTF-8格式的‘CNTRPRTY’打头,这个字符串已经足够长,因而很难把合约币的交易和在OP_RETURN区域带有伪随机数的比特币交易搞混。在测试情况下(例如:在任何块链中使用TESTCOIN合约币网络),这个字符串是“XX”。

识别字节串“CNTRPRTY”之后的四个字节说明了目的地址的存在性、比特币交易费用多少和交易的比特币数量(根据合约消息类型不同而不同)。其他的数据根据消息类型有不同的格式,参考源代码。

另外,每个合约币交易必须有一个明确且唯一的源地址,在含有合约币交易的比特币交易中,所有输入都必须一致-在比特币交易中的资金唯一源地址,就是合约币交易的源地址。

合约币交易的源和目的地址,就是比特币地址,任何比特币地址可以收到任何合约币的资产(如果该地址有资产的话,也可以向外发送资产)。

所有信息按照顺序解析,一次一个,忽略区块边界。

订单、赌约,在区块的结尾结束匹配订单和赌约。

2非合约币交易

counterpartyd支持构建两种类型的交易:

  • BTC发送
  • 以BTC发送合约币的资产分红

这两种交易不包含数据区,对于后者,能使用多个“目的”输出。

3资产

除BTC和XCP以外的所有资产有如下特性:

  • Asset name 资产名称
  • Asset ID   资产ID
  • Description 描述
  • Divisiblity 可分性
  • Callability 可赎回
  • Call date  (if callable)赎回日期(如果是可赎回的)
  • Call price (if callable)赎回价格(如果是可赎回的)

资产名称是大写ASCII字符串,当编码成十进制整数时,大于26^3小于或等于256^8。所有资产名称,除了“BTC”和“XCP”,必须至少有4字节长,而且不能以字符“A”开头。这样,某些13字节的资产名称是有效的,但是14字节的就不行。

资产可以是可分割的或者不可分割的,可分割资产可以分成8个十进制的位置。资产可以有描述,可以随时改变。

资产可以是“可赎回的”,可赎回资产在赎回期之后,可以被现在的发行者,以赎回价格(以XCP为单位)强制“赎回”,赎回价格可以设置成该资产首次发行的价格。

可赎回资产可以在赎回日期之后赎回,该赎回日期是在块链中的一个区块中第一次定义的时间。

赎回价格指定为6个十制数的精度,是XCP与该资产的最小单位的比率。

4消息类型

  • Send 发送
  • Order 订单
  • BTCPay BTC支付
  • Issue 发行
  • Broadcast 广播
  • Bet 赌约
  • Dividend 分红
  • Burn 燃烧
  • Cancel 取消
  • Callback 回调

4.1Send发送

发送是指从源地址发送任何合约币资产到目的地址,如果该消息被解析(以交易顺序)时,发送者还没有足够的资产数量,该发送消息只能部分满足。

counterpartyd支持发送比特币,这里不使用任何数据输出。

4.2Order订单

订单是指给定某种资产的特定数量,要得到另外资产的特定数量。“买单”和“卖单”之间没有本质差别。在订单解析时,被给的资产通常马上被签定合约。也就是说,如果有人想用1个XCP换2个BTC,一旦他发布了这个订单,他的XCP帐号马上被减去1个XCP。

当订单在块链中可见时,协议试图去撮合它和另一个以前见过的开放订单。两个被撮合成功的订单称为“订单对”,如果订单对中的任何一个订单包含比特币,那这个订单对会被指定“待处理”状态,直到必要的BTCPay交易发布;如果订单对中的订单没有包含比特币,这个贸易将立即完成,并且以协议自身指定的地址形成新的收支平衡。

所有订单都是定价单:询价指定了一个人想付出和得到的比率,订单会匹配定价以下的最高价格,订单对就是按照这个价格撮合的。这就是说,如果有个开放订单以0.11XCP/每份资产卖出,第二个卖单以0.12XCP/每份资产卖出,第三个卖单以0.145XCP/每份资产卖出,然后有一个新订单要以0.14XCP/每份资产的价格买入,将会先匹配第二个买单,XCP和BTC将会以0.12XCP/ASST的价格成交。

所有订单允许部分执行,这儿的订单并非要么完全成交,要么不成交。在前一个例子中,如果购买比特币的一方想买的数量多于第一个卖单的数量,买单剩余未成交的数量会由后面的现存卖单来满足。在所有的可能的订单对撮合完后,当前的买单被列为开放订单(如果还有数量未被满足的话),如果存在多个价格相同的开放买单,则订单将按照时间顺序撮合。

开放订单被用户发布后,会在一定数量的区块后过期,当订单过期,所有担保的资金会返回订单发布的那一方。

等待比特币支付的订单对将在10个区块后过期,其中的订单会重新发布。

一般地,不会存在虚假交易,因为每一方提供的资产都存贮在合约处,然后,担保比特币是不可能的,因而那些想购买比特币的人会要求只匹配有向比特币矿工支付网络费用的交易。另一方面,当创建订单售出比特币时,用户可以支付任意他愿意支付的费用,部分订单仅支付部分费用。

用比特币支付来关闭那些等待BTCPay消息的订单对。在BTCPay消息的数据区中,存贮着两个HASH串连接而成的字节串,而这两个HASH串则由订单对中的两个订单HASH生成的。

4.3Issue发行

资产可以以发行消息类型发行:用户指定名称和数量,协议计入他相应的地址。资产名称必须是唯一或者以前被相同地址发行过的。当重新发行一个资产,就是说,对已经发行的资产进行增发,发行的资产名称、可分割性和发布地址必须匹配。

对某个已经存在的资产进行增发,这个权利可以转移给别的地址。

资产可以被不可逆地锁定,防止进行增发,保证资产拥有者免受通涨风险。

4.4Broadcast广播

广播消息发布文本或数字信息,并且附带一个时间戳,作为系列广播的一部分,被称为“反馈”。一个反馈和一个地址相联系:从给定地址过来的任何广播,都是该地址的反馈的一部分。一个反馈的时间戳必须单向增加。

赌注以数字形式在反馈中下注,这个数值可以是货币的价格,或者可以是对未来事件的离散可能输出的一部分描述。例如:有人可能以文本这么描述:“US QE on 2014-01-01: dec=1, const=2, inc=3”,并且宣布结果“US QE on 2014-01-01: decrease!”和数值1,更为复杂的赌约可以以非块链的方式发布。

发布内容为文本字符串“LOCK”(大小写不敏感)的单个广播可以锁定反馈,阻止它成为以后的广播源地址,同时也阻止它成为任意新赌约的主题。(如果反馈被锁定,如果还有开放的或未解决的赌约与之相关,那些赌约或赌约对会无损害地过期)

广播-1的数值会被赌约结算所忽略。

反馈以发布它的地址来识别。

4.5Bets赌约

目前有两种赌约,第一种是打赌一个特定反馈会等于(或者不等于)一个特定的数值-目标值-在最后期限。第二种是一个合同,所不同的是有一个特定结算日期。简单的等于/不等于赌约,和牛/熊差价合约都把各自的赌注放到撮合成功的担保契约中,当他们依据的反馈通过的最后期限,赌约就解决了。事实上差价合约可能是被强行结算的,当反馈值变化剧烈时,保证金耗尽被强行平仓。

差价合约可以用杠杆操作,它们的杠杆水平是5040等于一个单位,以整数保存。5040的杠杆水平意味着保证金杠杆应该是1:1,10080的水平意味着反馈每增加一点,牛/熊合同的数值要增加(减少)2点。

差价合约没有目标值,等于/不等于赌约不能用杠杆。然而,为了让两个赌注能被撮合,他们的杠杆水平、时间期限和目标值都必须相同,否则,他们会以订单的形式撮合,除了赌约的赔率与订单价格是反相关的(赔率=保证金/庄家保证金)的情况,如果有可能,每个赌约都会以尽可能地高的赔率撮合到开放赌约。

目标值必须非负,赌约对(合约)不受-1的广播值所影响。

赌约的最后期限不能晚于他们指定反馈的最后一个广播的时间戳。

赌约的过期与订单相同,例如:过了特定的区块数量后。赌约对在2016个区块后,当看见一个区块的时间戳在赌约的最后期限之后过期,

赌约费用是初始保证费用的比例,这部分并非赌约收入。

  • 因为区块时间的存在,以及交易在块链中被订单化这种非确定性方式,所有合同必须非增量解决,但是涉及的资金必须马上放入担保契约,而且必须有解决日期。否则,有人看到价格下跌了,把要被扣除的资金隐藏起来。
  • 反馈费用

4.6Dividends分红

分红支付是以一定比例为基准,支付一定数量的XCP给每一位特定资产的拥有者。以分红收入为目的的资产可以是可分割的或不可分割的。任何资产的分红支付可以来源于任意地址。

4.7Burn燃烧

Counterparty的货币”XCP”,在一段特定时间内使用燃烧消息类型把比特币“燃烧”成矿工费用,以完成XCP的初始化。每个比特币获得的XCP数量,可以通过以下公式计算:

 

XCP_EARNED = BTC_BURNED * (1000 * (1 + .5 * ((END_BLOCK – CURRENT_BLOCK) / (END_BLOCK – START_BLOCK))

 

END_BLOCK是燃烧阶段结束时的区块(block #283810),START_BLOCK是燃烧阶段开始时的区块(block #278310),燃烧得越早,价格越好,在1000-1500 XCP/BTC。

燃烧消息有存贮在OP_RETURN输出中的精准字符串‘ProofOfBurn’作为识别。

  • 新数据-更少燃烧

4.8Cancel取消

待完成

当等待BTCpay消息时,不能取消订单对(如果买入BTC,不公平;如果卖出,不必要)

4.9Callback回调

待完成

评论:43

您需要登录后才可以回复 登录|注册
    Author Image
    宋欢平 956 天前

    94e8c604541e671491d01495a3e21031c6645a054f9323867667a7e7544a3307
    赞助0.02btc
    谢谢

    +1
    +1
    我要点评
    marcusyh
    marcusyh 977 天前

    //@宋欢平: 比特币这个世界,我最关注的还是@我看比特币 @比特币咕噜 @独行巨蟹 @睡空空 @P2PBUCKS @朗豫-fred 这样的技术流,@长铗 @Ryan_XxOo 这样的幻想流,@风一般的男纸 这样的法律专家,@BigChubbyCat @胡翌霖 这样的博才能人。//@新闻理科生:一篇专业性文字顶一万篇记者稿件

    +1
    +1
    我要点评
    巴比特资讯
    巴比特资讯 980 天前

    推荐巴比特专栏作家申屠博士@我看比特币 又一篇技术翻译文稿,前五篇翻译稿见巴比特申屠专栏 http://t.cn/8sinwSD

    +1
    +1
    我要点评
    巴比特资讯
    巴比特资讯 980 天前

    推荐巴比特专栏作家申屠博士@我看比特币 又一篇技术翻译文稿,前五篇翻译稿见巴比特申屠专栏

    +1
    +1
    我要点评

    //@弱不禁风慢声细语:转发微博

    +1
    +1
    我要点评
    宋欢平
    宋欢平 981 天前

    回复@悠悠水底魚:不错。

    +1
    +1
    我要点评

    转发微博

    +1
    +1
    我要点评
    悠悠水底魚
    悠悠水底魚 981 天前

    已全部关注

    +1
    +1
    我要点评

    合约协议我早就翻译过了(http://t.cn/8FoGyH5),不过好久没更新了,终于看到有人更新了,太好了。

    +1
    +1
    我要点评

    合约协议我早就翻译过了(),不过好久没更新了,终于看到有人更新了,太好了。

    +1
    +1
    我要点评
    币投
    币投 981 天前

    《合约币Counterparty协议》翻译稿 http://t.cn/8siIdcD

    +1
    +1
    我要点评
    GAMEHQ
    GAMEHQ 981 天前

    这个比计算出来的币更绿色 比pos骗钱币更有保证

    +1
    +1
    我要点评
    币投
    币投 981 天前

    转发微博

    +1
    +1
    我要点评
    青春小宇世界
    青春小宇世界 981 天前

    什么情况?微博中毒了?

    +1
    +1
    我要点评
    bitbuyer
    bitbuyer 981 天前

    //@新闻理科生:一篇专业性文字顶一万篇记者稿件,智商啊//@万事达币_Mastercoin: 转发微博

    +1
    +1
    我要点评
    用户3796952403
    用户3796952403 981 天前

    //@新闻理科生:一篇专业性文字顶一万篇记者稿件,智商啊//@万事达币_Mastercoin: 转发微博

    +1
    +1
    我要点评
    朗豫-fred
    朗豫-fred 981 天前

    技术改变一切\@宋欢平: 记者报道多是小道消息或者意淫。比特币这个世界,我最关注的还是@我看比特币 @比特币咕噜 @独行巨蟹 @睡空空 @P2PBUCKS @朗豫-fred 这样的技术流,@长铗 @Ryan_XxOo 这样的幻想流,@风一般的男纸 这样的法律专家,@BigChubbyCat

    +1
    +1
    我要点评
    币合币拓
    币合币拓 981 天前

    //@宋欢平: 记者报道多是小道消息或者意淫。我最关注的还是@我看比特币 @比特币咕噜 @独行巨蟹 @睡空空 @P2PBUCKS @朗豫-fred 这样的技术流,@长铗 @Ryan_XxOo 这样的幻想流,@风一般的男纸 这样的法律专家,@BigChubbyCat @胡翌霖 这样的博才能人。//@新闻理科生:一篇专业性文字顶一万篇记者稿件

    +1
    +1
    我要点评
    带着问题思考
    带着问题思考 981 天前

    转!//@宋欢平:记者报道多是小道消息或者意淫。比特币这个世界,我最关注的还是@我看比特币 @比特币咕噜 @独行巨蟹 @睡空空 @P2PBUCKS @朗豫-fred 这样的技术流,@长铗 @Ryan_XxOo 这样的幻想流,@风一般的男纸 这样的法律专家,@BigChubbyCat @胡翌霖 这样的博才能人。

    +1
    +1
    我要点评
    宋欢平
    宋欢平 981 天前

    记者报道多是小道消息或者意淫。比特币这个世界,我最关注的还是@我看比特币 @比特币咕噜 @独行巨蟹 @睡空空 @P2PBUCKS @朗豫-fred 这样的技术流,@长铗 @Ryan_XxOo 这样的幻想流,@风一般的男纸 这样的法律专家,@BigChubbyCat @胡翌霖 这样的博才能人。//@新闻理科生:一篇专业性文字顶一万篇记者稿件

    +1
    +1
    我要点评
    Jenjdeffrd
    Jenjdeffrd 981 天前

    //@Ryan_XxOo:转发微博

    +1
    +1
    我要点评
    新闻理科生
    新闻理科生 981 天前

    一篇专业性文字顶一万篇记者稿件,智商啊//@万事达币_Mastercoin: 转发微博

    +1
    +1
    我要点评
    亡命之徒GJL
    亡命之徒GJL 981 天前

    回复@7colorLiuyue:2000

    +1
    +1
    我要点评
    魔力大熊
    魔力大熊 981 天前

    回复@BTS熊:是啊熊熊

    +1
    +1
    我要点评
    BTS熊
    BTS熊 981 天前

    小白们就是需要你啊,不然都看不到中文资料[good][good][good] //@Magicalbear:巴比特的申屠老师又一篇技术文稿,当大家都把注意力放在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评
    BTS熊
    BTS熊 981 天前

    小白们就是需要你啊,不然都看不到中文资料[good][good][good]

    +1
    +1
    我要点评

    //@比特币导航BitTOP100:转发微博

    +1
    +1
    我要点评

    //@Magicalbear: 巴比特的申屠老师又一篇技术文稿,当大家都把注意力放在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评
    Btctime
    Btctime 981 天前

    [good]默默给申屠博士点个赞。//@Magicalbear: 巴比特的申屠老师又一篇技术文稿,当大家都把注意力放在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评
    魔力大熊
    魔力大熊 981 天前

    巴比特的申屠老师又一篇技术文稿,当大家都把注意力放在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评

    //@比特币导航BitTOP100: 转发微博

    +1
    +1
    我要点评
    万方中
    万方中 981 天前

    回复@Magicalbear:[good]牛,我慢慢学习

    +1
    +1
    我要点评
    就爱BIT
    就爱BIT 981 天前

    没心思看文章,先转吧//@Magicalbear: 巴比特的申屠老师又一篇技术文稿,当大家都把把注意力当在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评
    如果你死得早
    如果你死得早 981 天前

    戴上口罩我就是你的颜控!

    +1
    +1
    我要点评
    魔力大熊
    魔力大熊 981 天前

    回复@keating_wang:在巴比特都有

    +1
    +1
    我要点评
    魔力大熊
    魔力大熊 981 天前

    回复@万方中:申屠闲暇时会在巴比特写写专栏

    +1
    +1
    我要点评
    公子usmat
    公子usmat 981 天前

    胸前挂的是什么?[握手]

    +1
    +1
    我要点评
    万方中
    万方中 981 天前

    申屠兄加盟巴比特了?

    +1
    +1
    我要点评
    网络币使者
    网络币使者 981 天前

    //@Magicalbear: 巴比特的申屠老师又一篇技术文稿,当大家都把把注意力当在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评
    Mr_Vers
    Mr_Vers 981 天前

    //@Magicalbear: 巴比特的申屠老师又一篇技术文稿,当大家都把把注意力当在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评
    魔力大熊
    魔力大熊 981 天前

    巴比特的申屠老师又一篇技术文稿,当大家都把把注意力当在揣摩央妈的另外一只靴子何时落地时,从业者早已不关注行情,全身心投入到对比特币的技术研究上去了,何谓真的bitcoiner?大概是要首先达到这种物我相忘的境界罢。

    +1
    +1
    我要点评
    DQQ喜欢灰原哀
    DQQ喜欢灰原哀 981 天前

    从来没有吃过呢

    +1
    +1
    我要点评
    我看比特币
    我看比特币 981 天前

    比特币核心技术的第六个翻译稿来了-《合约币Counterparty协议》,http://t.cn/8siIdcD,Counterparty是比特币块链上的寄生应用,目前已经实现了燃烧证明、合约、去中心化XCP与BTC交易所、赌约或期货、资产和股份发行、分红等创新功能,对于比特币块链的创业者来说,具有极高的借鉴意义。

    +1
    +1
    我要点评