返回介绍

5.李嘉图合约

发布于 2024-12-29 22:37:18 字数 2565 浏览 0 评论 0 收藏 0

这部分是我在 Coinprism 博客上的一篇文章。在撰写本文时,NBitcoin 还没有关于李嘉图合约的代码。

a.什么是李嘉图合约

一般来说,一项资产代表在一定条件下向发行者要求赎回或者兑付的权利 。

  • 公司股份给予获取股息的权利,
  • 债券给予到期兑付本金的权利,息票代表每期获取利息的权利,
  • 投票令牌给予相关实体投票决策的权利(公司,选举)
  • 可能是以上几项的混合:股份同时也是公司领导人选举的投票令牌

这些权利通常在一项合约里面列举出来,并由发行人签名。(如果需要,有一个可信第三方,比如认证机构) 一项李嘉图合约是由发行人加密签名的合约,不可能与资产脱钩。 所以合约不能否认、篡改,并且可以证明就是发行人签名的。. 这种合约可以在发行人和赎回人之间保密,或者公开。 开放资产已经可以支持以上所有事项,除了改变核心协议。下面是如何改变核心协议的内容。

b.开放资产里面的李嘉图合约

这是李嘉图合约的正式定义:

  1. 一项由发行人提供给持有人的合约,
  2. 服务于持有人拥有、发行人管理的有价值权利,
  3. 人工可读(就像是纸质合约),
  4. 程序可读(就像数据库那样可以解析),
  5. 数字签名,
  6. 带有秘钥和服务器信息
  7. 附有唯一的安全识别标志。

资产 ID 由 OpenAsset 按下列方式具体定义: 把 ScriptPubKey 转换成 P2SH 形式:  这里:  对于一个简单的发行人而言,IssuerScript 表示一个典型的 P2PKH,如果发行人需要多个同意意见,它表示多重签名。(举例来说:issuer + notary )

需要注意的是,从比特币 0.10 开始, IssuerScript 是机动灵活的,可以是任何事情。

李嘉图是机动灵活的,并且可以保持私密性。任何持有合约的人都可以通过 ScriptPubKey 哈希值证明,合约是适用于这笔资产的。

在资产定义协议下,这些李嘉图合约在客户钱包面前是可发现和可验证的。

假设我们正在向候选人 A、B、C 发行投票令牌。

增加开放资产标记的内容,加入下列资产定义网址 : u=http://issuer.com/contract

在网页 http://issuer.com/contract 中,创建下列资产定义文件:

现在我们可以定义李嘉图合约了:

这就结束了我们在 OA 中的李嘉图合约实现

c.检查列表

由发行人提供给持有人的合约

合约由发行人管理,不可更改,发行人每次发行一项新资产就签名一次。

服务于持有人拥有、发行人管理的有价值权利

在这个例子中的权利就是候选人 A、B、C 的选举权利,可以在 2015 年 1 月 10 日以前赎回。

人工可读(就像是纸质合约)

人工可读的合约可在 contract_url 看到,但是 JSON 可能已经足够了。

程序可读(就像数据库那样可以解析)

选举的细节在 AssetDefinitionFile 里面,是 JSON 格式的,合约的真实性由 IssuerScript 通过软件验证,哈希值在 ScriptPubKey 里面。

数字签名

当发行人发行资产时,ScriptPubKey 就被签名,并且合约的哈希值以及合约本身也被签名。

带有秘钥和服务器信息

IssuerScript 包含在合约里面

附有唯一的安全识别标志。

AssetId 由 Hash(ScriptPubKey) 定义,并且是唯一、不能更改的。

d.它有什么作用?

没有李嘉图合约,恶意的发行人就很容易更改或者否认资产定义文件。

李嘉图合约保证了不可否认性,让合约不可更改,因此它在赎回人和发行人之间建立起了仲裁机制。

同时,由于资产定义文件不可更改,就可以把它保存在赎回人自己的存储上,避免了恶意发行人断开合约访问。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文