Comunion是一种基于区块链的组织形式(DAO)和创业互助网络,为超级个人提供面向数字时代的新的商业基础设施和价值转化机制,致力于让劳动价值像资本一样自由流通、交易和积累。
本系列包括:基本概念与原理、密码学、共识算法、钱包与节点原理、挖矿原理与实现。
ECDSA在区块链中的何处使用?
通过前面的一系列区块链原理和技术,我们应该熟悉如何在区块链系统或比特币和以太坊系统中进行交易。
在交易过程中,有一个非常重要的信息,那就是需要签名。
换言之,一笔交易至少涉及三个方面:付款人、收款人和支付金额。
例如张三支付李四时,张三为付款人,李四为收款人,支付金额假设为5代币。
当张三准备好交易时,需要发送到整个网络。其他人看到交易时,需要核实交易是否由张三发起。在这个环节中,采用了数字签名技术。
如何在事务签名中使用ECDSA?
以特种币为例,具体流程如下图所示。
交易模块分为:交易输入和交易输出。一个事务由多个输入或输出组成。
交易输入代表支付信息,交易输出代表收款信息。当然,会有付款金额。“付款金额”字段显示在事务输出中。
这种类的交易与我们通常理解的交易非常相似。它的资金流动是从交易输入到交易输出,即从付款人到受款人。
图的右边有一个虚线框。框中的脚本sig是脚本签名,属于事务输入。类似地,scriptpubkey属于事务输出。脚本包含一些数据和操作码,以支持脚本语言的运行。
Scriptsig和scriptpubkey在中文中可以直观地解释为:解锁脚本和锁定脚本。
为什么scriptsig也叫unlock script?这是因为scriptsig在前一个连接的事务输出中锁定了一些资金。
如果张三要花费前面的代币,也就是说,要花费一个未使用的事务输出,他需要在另一个事务中构造一个事务输入。在这个事务输入中,将设置签名字段和公钥,以证明张三有资格花费尚未花费的事务输出。
这种情况称为解锁脚本,即打开现有资金使用。
在这个过程中,unlock脚本中有两个字段数据,and(缩写为pubkey)。这两个字段分别表示:签名和公钥。两者都由用户提供,以解决障碍。
锁脚本中还有一些字段和操作码:DUP是**操作码;hash160是哈希操作码;是字段;equivalverify是验证操作码;checksig也是验证操作码。
它的总体含义是:copy-hash-execute fields-verify equality-verify the signature is correct。
在签名验证过程中,将调用ECDSA签名验证算法。
如何使用ECDSA
如果我们知道签名在事务中的具体使用位置,脚本语言scriptsig和scriptpubkey如何执行,以及在执行过程中如何使用ECDSA?
如上图所示,这两种脚本语言将进行堆栈处理,即右侧列出所有字段和操作代码,解锁脚本中有2个,锁定脚本中有5个。
第一步是解锁第一个字段并将其放在堆栈的底部;
第2步,向右移动一个空格,将解锁按钮推到堆栈顶部,然后将其放置在堆栈顶部;
在这种情况下,DUP将被**到堆栈的顶部,而结果将被**到堆栈的顶部;
在第四步中,hash160将**的公钥散列成公钥散列;
步骤5:EqualVerify操作码比较pubkhash和用户的pubkhash。如果它们一致,则删除它们,然后继续执行(这里是对公钥进行身份验证,以指示公钥或地址是否相同);
如果第五步匹配,则继续执行第六步——验证签名。这里我们使用ECDSA,这也是事务中的关键步骤。
如图所示,当执行**一个操作码时,堆栈中有两个字段。
此时,checksig操作码检查签名是否与公钥匹配。如果匹配,则在顶部显示true,如果不匹配,则显示float。
如果返回值为true,则发送方还指示其所有权和使用发送代币的权利。
以上是ECDSA在区块链中的主要应用位置和应用场景。
文章标题:ECDSA的应用
文章链接:https://www.btchangqing.cn/106689.html
更新时间:2020年09月20日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。