LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 哈希锁是怎么锁住东西的

哈希锁是怎么锁住东西的

2020-05-08 智慧链技术社区 来源:区块链网络

引言

在WIsdom Chain的2.0白皮书中,有这么一段解释条件支付的内容:

当一笔支付需要满足某个条件时才能被触发,称之为条件支付。“哈希时间锁定”就是一种条件,“哈希高度锁定”也是一种条件。支付对于区块链来说,就是一种事务结构,验证通过并且入块后即表示资产发生了转移……

虽然前些年闪电网络的兴起让大家对于“哈希时间锁”不再陌生,但随着闪电网络热潮的褪去,对哈希锁的相关讨论也随之冷寂了。哈希锁在整个区块链历史中有着重要的地位,从最早的原子交换,到后来的闪电网络,都离不开哈希锁技术的应用。

虽然技术总会更迭,以此淘汰一些落后技术,部分人也开始怀疑“哈希锁是一个过时技术,应当被淘汰”,但目前来看,哈希锁作为一个重要的解锁条件,想要短期内用其他技术替代掉它在经济上是不明智的。既然哈希锁有存在的理由,为何不去了解一下它呢?这篇文章会带你基本了解哈希锁以及其两大重要应用——哈希时间锁与哈希高度锁。

哈希锁的概念

“哈希锁”这个概念最早是在2013年bitcointalk上被提出,当时论坛上讨论了如何实现比特币与其他数字货币的去中心化交换,顺带一提这个讨论的最后成果之一便是有名的“原子交换Atomic Swap”。

哈希锁被提出后,莱特币首先做起了应用,并成功实现了莱特币与比特币的原子交换,变相证明了哈希锁的可行性,后来闪电网络的成功应用也再次证明了哈希锁技术的实用性。了解了基本的情况,也该了解哈希锁的工作原理了。

哈希锁的技术细节并不复杂。首先我们需要敲定一个通用的哈希函数,这里以常用的SHA3-256作为例子,由于哈希函数的种种特性,我们可以认为一个信息经过SHA3-256哈希后,想要获得相同的哈希值就只能属于原信息值才行。

而哈希锁则是通过对特定交易进行哈希锁定,交易方约定一个密钥,将该密钥哈希作为锁定值,锁定某一交易,只有在提供与哈希值相匹配的密钥信息后交易才可解锁,交易方才能取回相应金钱。

换句话说,如果某个交易通过哈希锁进行了锁定,想要取回金钱,除了提交密钥信息以外就只能靠哈希碰撞,后者在目前来看是不可能的,这也是哈希锁被认为是“安全”的原因。

用代码表示可以更简单明了(以下代码经过简化):

Hashlock{

Sender;

Receiver;

Amount;

Hashlock;

Secret;

}

上面的代码表示了一个哈希锁应当具备的基础内容, Sender 代表交易发起者, Receiver 代表交易接收者, Amount 即本次交易的代币数量, Hashlock 代表了密钥的哈希值,用来对该交易上锁, Secret 则是密钥,密钥的哈希值应当等于 Hashlock ,用来对交易进行解锁。

哈希时间锁与哈希高度锁

虽然哈希锁可以用作限制条件锁定某一个交易,但如果解锁方式仅靠密钥的话,如果出现密钥丢失,或者知晓密钥的一方迟迟不愿将密钥告知对方,交易将会被近乎永久地锁定下去。

由于哈希锁在结构上类似智能合约,所以可以通过添加一些子条件来保证哈希锁的灵活性,这种情况下添加时间作为解锁条件的哈希时间锁和添加区块高度作为解锁条件的哈希高度锁便诞生了。

所谓哈希时间锁,就是在哈希锁的基础上附加时间要求,只有在规定时间内才能“解锁”,更进一步解释,只有在规定时间内用密钥解锁才能发送/取回资金,否则超时后密钥将无法解锁资金,一般为了保证资金安全,会设置为超时后资金返回交易发起方手中。

而哈希高度锁则与哈希时间锁类似,在原有哈希锁的基础上,只有在规定的区块高度以内才能对资金进行解锁操作,不然资金将返回到发起方手中。基于时间锁和高度锁,哈希锁能够更加灵活的配置在各种应用之中,例如闪电网络和跨链原子交换就使用了哈希时间锁,确保交易只存在要么发生,要么不发生两种状态。

对于哈希时间锁而言,相较于普通的哈希锁,需要设置单独的解锁时间:

Wisdom Chain中的哈希时间锁参数

以Wisdom Chain中的哈希时间锁事务为例, value 即本次交易的代币金额, hashresult 则是哈希锁需要的哈希值, timestamp 则是锁定时间,锁定时间需要在目前时间之后, transferhash 用来定位锁定的交易, origintext 则与上文的 Secret 一致,是 hashresult 的原输入值。想要解锁在Wisdom Chain中被哈希时间锁定的交易,需要在规定的时间(锁定时间)内提交正确的origintext,否则超时后该交易会自动退回交易发起者手中。

而哈希高度锁则大同小异了,Wisdom Chain中代码差别主要是代表现实时间的 timestamp 参数更改为了代表区块高度的 blockheight ,其余与哈希时间锁是相同的。

Wisdom Chain中的哈希高度锁参数

需要注意的是,哈希高度所中的区块高度并不一定锚定原区块链, 只要有足够的API接口,哈希高度锁也可以铆钉其他区块链区块高度,例如比特币区块或者以太坊区块等。

结语

有了哈希锁以及相应的时间锁和高度锁,以及基于这些技术的跨链原子交换或者闪电网络等都不再是问题。区块链作为一个去中心化的网络,最初代币交易却只能依靠中心化的交易所,以致长期被业外人所诟病,但经过哈希时间锁,去中心化交易所的搭建也不再是问题。

虽然哈希时间锁与哈希高度锁在执行效率上并不如很多更先进的智能合约,但胜在稳定好部署,许多区块链都实现了自身的哈希时间锁,并随之实现了去中心化交易的问题——通过哈希时间锁,交易双方可以敲定逾期时间与密钥,在交易时对其进行锁定,交易完成后再进行解锁。

除了用于原子交换或者去中心化交易所,许多事务合同以及涉及交易双方的钱货也可以使用哈希锁+时间锁的设计。技术的不断发展将淘洗真正有价值的技术,哈希锁以及相应的时间锁或高度锁能应用至今无疑不是其价值的体现。

—-

编译者/作者:智慧链技术社区

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...