×

Cardano SL中的地址

96
Lilymoana
2017.12.06 11:10 字数 1350

本文由币乎社区(bihu.com)内容支持计划赞助。

为了发送和接收价值,几乎所有的加密货币都使用了地址。Cardano SL支持了3种地址类型:

  • 公钥地址
  • 脚本地址
  • 赎回地址

公钥地址在其他的加密货币中就像一个正常的地址一样。它是一个经过哈希的公钥。

脚本地址被用在一个所谓的P2SH交易中。它自主的运作,而且有点像银行里面的存款:你可以向它汇款,但是为了可以兑换这笔钱你必须要满足一些特定的条件,条件由与地址相关的脚本来决定。地址本身包含着序列化脚本的哈希值。

赎回地址是ADA赎回的一种特殊地址类型。

不仅如此,Cardano SL还支持Unknown的地址类型。这种类型可以允许我们在未来使用自定义的地址类型

地址看起来像什么?

地址是base58编码的字节串,例如:

Ae2tdPwUPEZKmwoy3AU3cXb5Chnasj6mvVNxV1H11997q3VW5ihbSfQwGpm

编码

base58就是比特币中使用的编码。它使用58个符号的字母表来编码数据,这也是它名字的由来。下面就是我们使用的字母表:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

它跳过了非字母数字字符和在打印(0, O, I, l)时看起来模棱两可的字母;因此它适用于手动输入数据的人类用户,从一些可视化的源代码复制地址,并且允许通过双击来简单的拷贝和粘贴,不过双击通常会选择整个字符串。

公钥地址

就像在 Cardano SL的清算层 中提到的那样,在用户界面你看到的钱包就是代表在这个特定的钱包中你拥有可以花费这笔钱的私钥。但是这样的花费是如何被网络验证的以及你如何接收到别人支付给你的钱?答案就是跟控制你钱包里面价值的的私钥一起会产生一个公钥,"公"是公共的意思,这个“公”的部分也就是指可以被任何人知道,因此叫做“公钥”。

一个公钥的地址包含了公钥的哈希值。

公钥在你创建一个交易或其他辅助用途的时候用来验证你的身份。

P2SH

P2SH的思想就是为花费金钱制定复杂的规则提供很大的灵活性。与发送一笔交易到公钥地址上相反,我们创建一个验证脚本,该脚本使用赎回脚本当参数。为了赎回里面的资金,我们传递一个赎回脚本给验证脚本,然后开始计算。如果计算结果为success,那么金钱就会被汇到指定的赎回者那里,否则的话什么都不会发生。

引用一下比特币 WiKi 里面的话:

使用 P2SH,你可以将比特币打给一个用多种不常见的方法保护着的地址,而不用知道该地址安全设置的任何详细信息。接收者可能需要多个人的签名来花费这些比特币,或者可能需要一个密码来花费这些比特币,也或者需要一个非常独特的要求才能花费这些比特币。

赎回地址

赎回地址就是P2PKH。这样的地址包含了赎回公钥的哈希值。并且这个钥匙是 Ed25519 公钥。

其他地址类型

在未来,我们可能会使用升级的系统来引入其他地址类型。请阅读 查看更多 了解关于以无破坏性的方式的来扩展系统的相关信息。

地址结构

地址包含了3个部分:

  • 地址根
  • 地址属性
  • 地址类型

我们可以把地址想象成类似于JSON的结构,例如:

Address {
    addrRoot = AbstractHash e63175c654dfd93a9290342a067158dc0f57a1108ddbd8cace3839bd,
    addrAttributes = Attributes {
        data: AddrAttributes {
            aaPkDerivationPath = Nothing,
            aaStakeDistribution = BootstrapEraDistr
        } 
    },
    addrType = ATPubKey
}

addrRoot是由addrTypeaddrSpendingDataaddrAttributes组成数组的BLAKE2b-224哈希值。

addrSpendingData是一个与地址绑定的特殊值,在花费该地址上的 coins 时必须要被揭露。例如,对于公钥来说,这个值就包含着公钥。这样的话,在不知道公钥的时候是不可能改变地址属性的,因为如果属性改变了,整个地址就变成无效的了。

addrAttributes包含了每个地址重要的属性:衍生的路径和权益的分配。

想要了解更多关于衍生路径请阅读 Cardano SL的HD钱包

想要了解更多关于权益分配请阅读 Cardano SL中的交易

addrType的值与上面提到的地址类型相对应。在上面的例子中它是一个公钥地址。

长度

地址的长度可能是不同的,地址长度与地址类型和附加数据相关。

例如,这个地址:

Ae2tdPwUPEZKmwoy3AU3cXb5Chnasj6mvVNxV1H11997q3VW5ihbSfQwGpm

和这个地址:

4swhHtxKapQbj3TZEipgtp7NQzcRWDYqCxXYoPQWjGyHmhxS1w1TjUEszCQT1sQucGwmPQMYdv1FYs3d51KgoubviPBf

都是公钥地址。

翻译作者: 许莉
原文地址: ADDRESSES IN CARDANO SL

Cardano
Web note ad 1