当前位置:首页 > 资讯 > 区块链新闻 > 正文

Byteball白皮书中文版(五)

发布:中币网   时间:2017-06-11 22:58:00   加入收藏 打赏

翻译:Maxwell 牛仔裤没皮带 将金 rfmpwxbo@qq.comByteball 白皮书中文版(一) 传送门:http://www.bitett.com/portal.php?mod=viewaid=438Byteball 白皮书中文版(二) 传送门:http://www.bitett.com/forum.php?mod ... ,中币网-比特币标志着区块链时代的到来
翻译:Maxwell 牛仔裤没皮带 将金   rfmpwxbo@qq.com
Byteball 白皮书中文版(一) 传送门:http://www.bitett.com/portal.php?mod=view&aid=438Byteball 白皮书中文版(二) 传送门:http://www.bitett.com/forum.php?mod=viewthread&tid=2153&extra=page%3D1Byteball 白皮书中文版(三) 传送门:http://www.bitett.com/forum.php?mod=viewthread&tid=2349&extra=page%3D1Byteball 白皮书中文版(四) 传送门:http://www.bitett.com/forum.php?mod=viewthread&tid=3263&extra=page%3D1



21.1.4. 定义模板      一个定义也可以引用定义模板:["definition template", [ "hash of unit where thetemplate was defined", {param1: "value1",param2: "value2"} ]] 在模型中,参数指定要替换的变量值。模板需要在一个指定的消息模型app=“definition-template”(和往常一样,使用稳定)中保存起来,模型本身是用于处理信息的,在模型中看起来是正常的定义,可能包括引用变量@param1 @param2。定义模型可以使代码被重新使用。在其他模型中也可能被引用。21.1.5. 会签       要求附属定义放在另一个地址:["cosigned by", "ANOTHER ADDRESS IN BASE32"]21.1.6. 查询是否使用了地址       附属定义的其他可能要求:一个地址被看作是至少包含在最后一个球单位中的一个单位的作者:["seen address", "ANOTHERADDRESS IN BASE32"]21.1.7. 数据输入       一个非常有用的条件,可以用来查询预先存储在byteball的数据:["in data feed", [["ADDRESS1", "ADDRESS2", …], "data feed name", "=", "expected value"如果至少有一个消息像“datafeed name”等于“expected value”在地址”ADDRESS1”,“ADDRESS2”..(预测)的数据之间,则该条件为真。数据库是一种看起来像这样消息类型:unit: {         …       messages: [              {              app: "data_feed",              payload_location: "inline",              payload_hash: "hash of payload",              payload: {                           "data feed name": "value",                             "another data feed name": "value2",                                                         }              },              ],}数据字段可以设计包含预测的定义。如果两个或两个以上当事人信任指定实体(预测)提供的真实数据,他们可以建立一个根据不同预测权利发布的数据共享控制地址给当事人。例如,这个地址定义表示二进制选项:["or", [["and", [["address", "ADDRESS 1"],["in data feed", [["EXCHANGE ADDRESS"],"EURUSD", ">", ]],["and", [["address", "ADDRESS 2"],["in data feed", [["TIMESTAMPER ADDRESS"],"datetime", ">", 最初,甲乙双方资金按此定义地址(删除任何信任的要求,他们利用多边签署和发送他们双方签字的合约)。如果通过交换地址交换的欧元/美元汇率超过1.1500,甲方可以收回资金。如果在2016年10月1日以前和以后的任何日期截止时间未超过1.1500,乙方可以从这个地址中转走全部资金。如果满足所有条件,且平衡地址仍然是非空的,甲乙双方可以把钱同时转回,两边花费将像往常一样处理。比较运算符号可以是“=”、“!=”、“>”、“>=”、“><”,和“<=”。该数据库的消息必须像平常一样是最后一个单元球之前送达。为防止任何单个预测突然失效而增加风险的情形出现,必须提供多个数据地址。另外一个例子,一个客户从一个商人买商品,但他不完全相信商人,要求在商人没有发货的情况下,钱自动回到客户手上。客户支付给公共地址的定义为:["or", [["and", [ ["address", "MERCHANT ADDRESS"],["in data feed", [["FEDEX ADDRESS"],"tracking", "=", ]],["and", [["address", "BUYER ADDRESS"],["in data feed", [["TIMESTAMPER ADDRESS"],"datetime", ">", 定义取决于发布跟踪所有成功交付货物数量的FedEx预测。货物交付是商家收到货款的先决条件。如果不在指定日期前交付,客户可以把他的钱取回。   这个例子有点夸张,因为它要求FedEx标记每笔交易。21.1.8. 可信的数据       一个更简单的方式来达到同样的目的,还有一个语法:["in merkle", [["ADDRESS1", "ADDRESS2", …], "data feed name",  "hash of expected value"如果指定预期值的哈希是包含在任何一个从”地址1”、“地址2”…中输入的可信根值,则评估为真。使用这种定义方式,FedEx只会从以前完成发布的所有货物交易中定期发布可信根。为了使用这个地址,商家会提供可信路径,证明指定的值确实是包含在相应的可信树。证明是可信的地址将会发送给使用者。21.1.9. 自我检查一个定义也可以包括单元本身查询。这附属定义['has', {what: 'input'|'output', asset: 'assetID in base64 or "base" for bytes', type: 'transfer'|'issue', own_funds: true, amount_at_least: 123, amount_at_most: 123, amount: 123, address: 'INPUT OR OUTPUT ADDRESS IN BASE32'对于所有可选择的选择程序,如果具有至少一个输入或输出(取决于“什么”的领域)单元,那么确定为真实。类似的情况,“有一个”通过选择程序正确的输入或输出的要求。分散交换可以通过“有”的程序实现。在此之前,我们讨论了通过多边签署实现资产交换。然而,多边签署并不包括任何价格协商机制。假定用户想买1200单位的其他资产,他愿意支付不超过1000bytes。同时,他也不愿意一直在线等待卖家。他宁愿下一个交易指令等到出现匹配的卖家自动成交。他可以通过创建一个限制指令,发送1000个字节到通过以下定义的地址:["or", [["address", "USER ADDRESS"],["and", [["address", "EXCHANGE ADDRESS"],["has", {what: "output", asset: "ID of alternative asset", amount_at_least: 1200, address: "USER ADDRESS"第一种选择,只要用户 喜欢可以选择取回他的bytes,从而取消订单。第二种选择,可选择花费资金交换的权利,提供在同一单元另一个输出指令至少支付1200其他资产到用户地址。交易公开地列在指令上,卖家会发现,构成交易资产单位,在交易过程中多边签署。                你也可以使用“has”条件的抵押贷款。假设借款人持有一些非流动性资产,需要一些bytes(或其他流动资产)。借款人和贷款人可以共同签署一份合约。单位的一部分发送他需要的字节给借款人,该单元的其他部分锁住缺乏流动性的资产进入一个地址,该地址被定义为:["or", [["and", [["address", "LENDER ADDRESS"],["in data feed", [["TIMESTAMPER ADDRESS"],"datetime", ">", ]],["and", [["address", "BORROWER ADDRESS"],["has", {what: "output", asset: "base",amount: 10000, address: "LENDER ADDRESS"]],["and", [["address", "LENDER ADDRESS"],["address", "BORROWER ADDRESS"]第一种选择,如果贷款不能按时偿还,允许贷款人没收抵押品。第二选择,如果贷款人支付10000bytes(约定的贷款金额包括利息)给借款人,允许借款人收回抵押品,第三种选择,如果当事人都同意,当事人可以修改条款。以下要求也可以包含在一个附属定义内:['has equal', {equal_fields: ['address', 'amount'], search_criteria: [{what: 'output', asset: 'asset1', address: 'BASE32'}, {what: 'input', asset: 'asset2', type: 'issue', own_funds: true, address: 'ANOTHERBASE32'}如果有满足至少一对搜索条件的输入或输出(第一组滤波器的第一个元素被搜索;第二个由第二个),则确认为真实的;它们的一些字段相等。类似的情形,“has oneequal”要求恰好有一个这样的条件。另一个附属定义根据一定的标准对目标值比较输入或输出和筛选:['sum', {       filter: {       what: 'input'|'output',        asset: 'asset or base',        type: 'transfer'|'issue',        own_funds: true,        address: 'ADDRESS IN BASE32'}, at_least: 120, at_most: 130, equals: 12321.1.10. 否定   任何不包括“信号”、“散”、“地址”、“连署”,或“可信”的情况都可以否定:["not", ["in data feed", [["NOAAADDRESS"], "wind_speed", ">", "200"]]]既然选择原始数据是合法的(在没有看到新的数据时),通常结合如上所述的负条件,截止时间是一种在特定日期的要求。21.2. 一般要求      定义一个地址必须包含至少一个明确或隐含(如通过一个“地址”)“信号”。为了避免消耗太多的资源进行验证,每个定义的操作总次数限制为100次,包括引用定义中的操作,如“地址”和“定义模板”。这个数字是我们有的byteball的9个任意常数的一个,其他8个是:证人总数:12;允许变动的最大范围:1;一个得到MC认证指标的最大数量:100;一些原始数据为标题的大小:2;每个单位最大信息量:128;每个消息编号最大输入或输出的:128;每个单位最大数:16;货币供应总量:10的15次方。相比之下,比特币至少有17个常数[ 8 ],而以太坊单定义收费就有30个常数[9]。         请注意,上述定义语言是陈述性和完全布尔语句组成,使其更接近传统的法律合同语言。然而,在它的表达项目的权利,语言不接近任何以太坊智能合约语言。事实上,它不是简单的“HELLO WORLD”。这不是我们的目标。byteball定义语言不是简单的设计,而是综合的;相反,它被设计成尽可能多样化的,不仅程序员自己能理解的语言。简单明了的语法允许每个人在没有开发人员的帮助(“律师”对于智能合同的时代)下理解和撰写简单的定义,并使出现错误的几率最小。       22.简介如果用户愿意,可以在byteball存储他们的文件。他们用这样的一个信息: unit: {              messages: [       .       {              app: "profile",              payload_location: "inline",              payload_hash: "hash of payload",              payload: {              name: "Joe Average",              emails: ["joe@example.com", "joe@domain.com"],              twitter: "joe"                      }              },                     ],       }他们透露,自己的数据量和真实性都依赖于用户自己。为了保证任何特别有关用户的信息是真实,系统必须寻找证据来证明。23. 认证认证确认签发认证的用户(认证者)验证用户一些关于签发认证人(主角)的数据。认证是存储像以下这样的信息:unit: {              messages: [               {              app: "attestation",              payload_location: "inline",              payload_hash: "hash of payload",              payload: {              address: "ADDRESS OF THE SUBJECT"              profile: {              name: "Joe Average",              emails: ["joe@example.com"]              }       }       },       ],}信息包含在认证中,不需要与用户自己发布的信息一样。事实上,公布的文件可能根本不存在。虚假广告荐证人的工作类似于现代的证书颁发机构验证对象的真实身份并证明一个特定的公共密钥(或byteball地址)确实属于一个人或组织。我们希望他们在byteball继续相同的活动和那些想证明自己真实世界和byteball联系的真实身份之间收费。目击者和潜在证人可能会希望得到一些证明来增加他们的信任。某些资产类型可能需要与资产交易的证明(见下文)。认证的应用程序是必需的但主题的名字是不重要,可以省略的验证配置文件的名称或其他个人身份信息是可能的。证实文件可能不包括任何关于那个主题的有意义的信息,从而让他向大家除了证人匿名,证人将仍然保持有关主体的记录和揭示它们在某些情况下,如在证人的条款或者如果在法律要求的规定。24. 资产     我们设计了一个数据库,允许任何数据不变的存储各类数据。所有的数据库,最有趣的存储在一个公共数据库是那些具有社会价值,即对一个或两个以上的用户是有价值的数据。其中一类是资产。资产可以归属于任何人,和不变性和事件的全序的性质,我们在byteball建立股权转让长链的有效性非常重要。资产byteball可以发行,转让,交换,和他们的行为类似于本国货币'bytes’。他们可以代表任何有价值,例如,债券,股票,loyalty point,航线时间,商品,其他信用或者加密货币。要定义一个新的资产,定义用户发送这样的消息:unit: {    …    messages: [      …     {           app: "asset",           payload_location: "inline",           payload_hash: "hash of payload",           payload: {                  cap: 1000000,                  is_private: false,                  is_transferrable: true,                  auto_destroy: false,                  fixed_denominations: false,                  issued_by_definer_only: true,                  cosigned_by_definer: false,                  spender_name_attested: true,                  attestors: [                          "2QLYLKHMUG237QG36Z6AWLVH4KQ4MEY6",                          "X5ZHWBYBF4TUYS35HU3ROVDQJC772ZMG"                 }          },          …     ],     …
}Here:             •可发行的上限是最大金额。与预定义的本地货币字节比较,字节上限为10的15次方;•个人的表示如果资产转让私下或公开(见下文)。字节是公开的;•可转让的表示如果资产可以在不通过资产定义的第三方之间转让。如果不可转让的,定义必须是唯一的发件人或每个传输接收机。字节转换;•自动销毁表示如果资产被送到字节定义者时被破坏。字节不自动销毁;•fixed_denominations表示如果资产可以是任何整数量派(任意数量)或只在固定的面值(如1,2,5,10,20,等),这是纸币和硬币的情况下任意数量的字节;•只由定义者发布表示如果资产可以只由定义者颁发。字节,整个货币供应量是在创世记单位出具;•定义者认证表明如果每个转让必须签署通过资产的定义,规定资产是有用的。传输字节不必任何人签署;•花费证明表明如果富豪已被证实为花。如果他碰巧收到资产但尚未证实,为了能使用这些资产,他必须通过一个上市的定义下的证人认证。这个要求对于可调节要资产也是有用的。字节不需要认证;•证人是被资产定义者推荐的一系列证人地址(如果花销证明是真的)。这个名单可以被发送证人资产消息代替证人名单的定义者修改;•教派(未显示在这个例子中,仅用于fixed_denominations资产)列出了所有可以发出的允许denonmination和各面额硬币的总数;•转让条件是一个允许资产转让的条件。定义在语言与地址的定义相同,除了它不能引用任何需要authentifier,如“信号”。默认情况下,除了其他字段定义的外,没有限制.;•问题条件与交易条件一样,除了发行交易。每个信息单位可以有不超过1'资产 '。在资产被定义后,它是通过哈希单位那里定义的(因此每个 信息范围要求1资产单位)。
一个资产的转移看起来像一个字节的转移,不同的是,有一个额外的字段的资产ID:unit: {     …     messages: [     …     {             app: "payment",             payload_location: "inline",             payload_hash: "hash of payload",             payload: {                 asset: "hash of unit where the asset was                 defined",                 inputs: [                     {                         unit: "hash of source unit",                         message_index: 0,                         output_index: 1                     },                     …                  ],                  outputs: [                     {                         address: "BENEFICIARY ADDRESS",                         amount: 12345                     },……任意数量的资产覆盖整个供应必须在单笔交易中发出的。特别是,所有字节都在发生单位发放。如果资产达到上限,这一系列问题序号必须是1。如果是没有达到上限的,一系列不同问题序号编号必须是唯一的。一项资产只定义一次,不能被修改后,只有证人名单可以修改。这个资产代表资产的定义者。如果是发行人的债务,发行人证明或放弃匿名获得债权人的信任这是合理的预期。然而最终用户免费使用或不使用一种资产,资产者可以涉及的资产交易施加任何要求。通过组合不同的资产定义者可以设计出满足各种需求的资产,包括那些受监管的金融机构必须遵循。例如,通过要求每个传递联署签名,金融机构可以有效地否决了所有任何抵触法规或合同规则的款项。会签各支付之前,金融机构(也就是定义者和发行人)将会检查用户确实是它的客户,资金接受者也是一个客户,那个客户已经通过了所有认识你的客户(KYC)程序,使资金不被法院命令冻结,以及进行不断要求的任何其他检查改变法律,法规和内部规则,包括那些被定义后的资产。24.1. 银行发行的资产有被完全符合安全(并保证在所有转账熟悉确定性终结),银行可以发行,将本国货币和银行资产支持的(这是正确的审计和监控的中央银行),此类资产的任何业务的法律性质是与所有其他银行的钱相同,和大家都很熟悉。唯一新奇的是,存款和转账在byteball而不是银行的内部数据库是可追踪的。在byteball数据库跟踪有两个结果:•(不太受欢迎的)所有的操作都是公开的,这是熟悉的比特币和减轻使用多个半匿名地址,其中只有银行知道背后的真实地址的人。另一个保护隐私是私人支付更有效的办法,这个我们以后会讨论;•(一个好的)银行发行的资产可以在对等的方式交换的字节或其他资产,而不必信任任何第三方,如交易所。这里的银行类似于纹波网关。在上面的交换的情况下,交换的一段是从一个用户在一个银行发行的资产的另一个用户支付。如果用户是同一个银行的客户,这个过程很简单。当用户持有的账户在不同的银行,银行可以方便跨行转账给对方。假设用户U1想钱转移到用户U2的情况下,用户U1 的开户银行B1和银行用户U2账户B2。银行B2也在银行B1开立账户。U1转账给银行B2在银行B1开立的账户,同时,B2转账给用户U2.所有这些交易必须自动的。三个参与者(U1,B1,B2)必须因此在单个单位签名,转账者B1的钱从U1到B2,转账者B2的钱转给U2.最终的结果是,U1下降他的平衡在B1,U2增加他的平衡在B2和B2增加了平衡在B1。B1 在B2银行也将在一个相应的帐户,其余额将作为反向支付处理来自用户的用户B1 B2的相互义务(B1生长。在B2和B2 B1)。可以部分取消的银行相互签订交易,将等量的各自的发行人(很方便的把钱自动发送给发行方破坏)。可以通过传统的银行同业支付定期结算是不取消的。触发结算,以积极的净余额的银行将他的平衡至发卡银行,而由于没有启在同一事务中分散转移,这引发了一个传统法定货币支付发行人持有银行。当有许多银行,建立与各同行的银行直接对应关系可能很麻烦。在这种情况下,银行同意中央对手方C(大的会员银行或一个新的机构),只能完全通过中央银行统一结算。从U1 到U2相同的转移将由3个交易:1.U1寄钱到C在B1的帐户;2.C赚钱给B2(或C破坏B2的钱被返回到B2);3.B2转账给U2。将3笔交易都是捆绑成一个单一的单位签字U1,B1(为U1的交易需要担保人),C和B2。24.2. 非金融资产其他应用程序,不必要的金融可以直接用byteball资产。例如,可靠计划可以发布可靠点子作为资产,使用byteball已经存在的基础设施允许人们使用这些可靠的点子交易,包括点对点(如果程序规则允许)。对于可以跟踪byteball追踪资产的程序开发者也是一样的。24.3. 债券企业可以在byteball发行债券。法律结构问题与普通债券一样,唯一不同的是,存款将现在使用的byteball而不是内部数据库追踪债券所有权(类似于银行)。在byteball上使用债券直接交易,没有集中的交换。当银行的钱也在byteball,即时付款交货(在这种情况下,fiat支付)成为可能,没有交易对手风险和没有任何中央机构。对债券和支付的标注是同时方签署相同的单元进行传输。债券,如果足够的流动性,也可以使用第三方作为支付手段。当债券发行时,发行人和投资者将多边签署一个普通单位,将新发行的债券对投资者同时发送从投资者的借款人的信息(或其他资产用于购买债券,如银行发行的背书资产)。赎回时,他们签署的另一个多边单元逆转交换(最有可能的是,在不同的汇率),期间支付赎回债券的价格是票面价值,而价格是卖发行时在其有效期限内必须低于面值反映利息(假设为简单的零息债券)。债券的二手市场的价格低于票面价值,逐渐接近它。经济增长中有很多项目融资、债券发行byteball投资将发行的比赎回的多。当经济放缓,所有债券的总供应减少,因为有较少的项目来融资,因此,如果他们积极使用作为支付手段,债券的总供给自我调节是非常重要的。
如果两家企业在net-30

来源:




来源:中币网  https://www.zhongbi.net/news/blocknews/21739.html
声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。