专栏首页企鹅号快讯虾说区块链-48-《精通比特币》笔记三

虾说区块链-48-《精通比特币》笔记三

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

区块链-《精通比特币》笔记三:

电子书阅读《精通比特币》第二版地址:

http://book.8btc.com/books/6/masterbitcoin2cn/_book/ch06.html

bitcoin脚本语言基于堆栈的语言:使用堆栈数据结构。

堆栈:一种数据结构,允许push、pop,push在堆栈顶添加一个项目,pop在堆栈顶删除一个项目,堆栈操作对象为堆栈最顶端的项目,理解为后进先出(last-in-first-out)。

脚本语言执行顺序:从左至右执行每个项目。操作码(operators)从堆栈中推送或者弹出一个项目,处理后,将结果推送到堆栈上。

条件操作码:conditional operators对一个条件进行评估,产生一个boolean结果。

脚本操作:op_add一个简单的加法操作,数字相加后结果推送到堆栈,op_equal验算操作结果。在验证bitcoin资金所有权的时候,验证解锁脚本和锁定脚本之间的bool值。举例:3 op_add 5 op_equal 那么2是一个正确答案,2 3 op_add 5 op_equal.脚本验证比例中子要复杂。

解锁脚本和锁定脚本的执行:现在bitcoin版本中,堆栈先执行解锁脚本,执行正常复制主堆栈,再执行锁定脚本,解锁脚本中执行的数据复制到堆栈中执行锁定脚本,结果生产一个bool值,满足条件则执行完成。理解交易上,对一个UTXO的有效授权。

P2PKH:pay-to-public-key-hash,在bitcoin网络中交易花费是P2PKH脚本锁定的输出,输入包括一个锁定脚本、将输入锁定为一个hash值,理解为bitcoin的地址,那么P2PKH脚本锁定的输出可以提供一个公钥和其对应私钥创建的数字签名来解锁。

解锁脚本和锁定脚本匹配:在交易中,执行组合验证脚本后bool值为true,说明公钥hash值和私钥匹配。

数字签名:bitcoin中使用ECDSA算法,bitcoin中数字签名三种用法:其阿明证明私钥资金所有者,授权证明不可否认,签名证明交易(保证不能被任何人修改)。

数字签名的工作模式:数字签名本质上是一种数学方案:一部分使用私钥在交易创建时创建签名,另一部分允许任何人来验证签名算法、公钥、给定的消息。数字签名通过ECDSA算法来实现,((Sig=F(F(m),dA))).dA签名私钥、m交易、F~hash~散列函数、F-sig~签名算法、Sig结果签名。

F~sig~:Sig=(R,S)通过计算R.S值,称为序列号的字节流。

签名序列化:DER:序列化格式包含9个元素:DER序列的开始、序列的长度、一个整数值、整数长度、R值、接下来的一个整数、整数的长度、S值、后缀值。

签名验证:验证一个签名必须要有签名的R,S值、序列化交易、公钥。理解为:只有生成改公钥的私钥所有者,才允许在交易上产生该签名。

签名hash类型:SIGHASH,在bitcoin中签名意味找承诺,sighash附加到签名的单个字节,每一个签名都有一个sighash标志。三个sighash标志:all、none、single。Sighash标志在签名和验证期间是在建立交易的副本和删除其中的某些字段,然后交易序列化,sighash标志添加到序列化交易的结尾,结果再hash,得到签名消息。交易的不同部分被删除,得到的hash值取决数据的不同子集,在hash前,sighash作为最为一部分,签名对其也进行签署,故无法更改。

ECDSA:签名算法想生成一对临时私钥公钥,涉及签名私钥和交易hash变换后,临时密钥用于计算R、S值。S=k-1(Hash(m)+dA*R)mod p。k临时私钥、R临时公钥x坐标、dA签名私钥、m交易数据、p椭圆曲线顺序。验证是签名生成函数的倒数,使用R\S值和公钥来计算一个P:P=s-1*Hash(m)G+s-1*R*Qa。R/S签名值、Qa公钥、m签署的交易数据、G椭圆曲线发生器点。计算点P的坐标等于R,则签名有效。(椭圆曲线算法可参考区块链解读-椭圆曲线算法)

多重签名:n个公钥记录在脚本中、并且需要至少m个提供签名才能解锁资金,称为m-n方案,n是密钥总数,m是验证所需签名的数量。锁定脚本格式:M

N CHECKMULTISIG,举例: 2

3 CHECKMULTISIG。

P2SH:pay-to-script-hash简化复杂脚本的交易。脚本中一班包含长公钥,最终交易脚本会比最初交易脚本长达数倍。简化监本,一笔交易支付UTXO,解锁支付脚本,必须含有和hash相匹配的脚本,P2SH向该hash匹配脚本支付,但输出支付时,脚本在后续呈现。锁定脚本由hash运算后20字节的散列值取代,叫赎回脚本。

P2SH地址:基于Base58编码含有20字节的hash的脚本。

P2SH优点:交易输出过程中,有简短电子指纹取代,交易代码变短。脚本编译为地址,支付指令的发出者和只负责的bitcoin钱包简化执行P2SH。P2SH将构建脚本重担转移给接收方。P2SH将长脚本数据存储的负担重输出方转移至输入方。P2SH将长脚本数据存储重担从支付时转移至未来。P2SH将长脚本的交易成本从发送方转移到接收方,接收方在使用该资金时候必须有赎回脚本。

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

之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:

本文来自企鹅号 - 投河自尽的虾媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 沙特机器人获得公民身份?强人工智能时代还早呢!

    这是秦朔朋友圈的第1672篇原创首发文章 2017年10月25日,在沙特首都利雅得的“未来投资倡议”大会上,来自香港的Hanson Robotics公司出品的女...

    企鹅号小编
  • 人工智能会带来人类末日吗?AI如何偷师学艺才能变成真正的人?

    人类一思考,上帝就发笑。 人工智能一思考,人类还笑得出来吗? 关于人工智能是否会带来“人类末日”的争论由来已久。科技圈一直以来都分为“末日派”和“务实派”两个对...

    企鹅号小编
  • 徐志宏:人工智能技术背后的“立场”

    【编者按】 “如果计算机发展的成果仅仅是能力层面的问题,那我们似乎无需如此恐慌,因为这将还是一个社会的或政治的问题。”2017年12月12日,复旦大学哲学学院副...

    企鹅号小编
  • 人工智能是不可怕,但你也得会用啊!

    随着人工智能与机器人技术的发展,几乎所有的行业都开始采用人工智能来取代人类劳动力。 如同圈地运动和农业机械化把劳动力赶出土地的过程一样,眼下这场人工智能革命也正...

    AI科技大本营
  • 什么是机器学习和人工智能以及它们之间的差异

    机器学习和人工智能的区别:“好的,谷歌!有什么事吗?你能演奏我最喜欢的曲目或者预订一辆从宫殿路到MG路的出租车吗?”

    程序你好
  • 人工智能、机器学习、深度学习的区别在哪?|编译

    编者:T 客汇 杨丽 张苏月 关键词:人工智能,机器学习,深度学习 网址:www.tikehui.com 有人说,人工智能(Artificial Intell...

    人称T客
  • Linux下创建可执行bin安装文件

    1、简化操作。一般的软件安装过程,如果想要精简步骤,我们一般会将需要在命令行中输入的命令写成一个脚本,同时将安装介质准备好。我们将脚本和安装介质上传到生产环境,...

    大江小浪
  • Confluence 6 大致的用户规模示例

    针对非集群 Confluence 实例,下面是一些硬件配置。上面的内存数量不区分服务器使用的内存还是 JVM 使用的内存,表格中的空白,表示的是没有这方面的数据...

    HoneyMoose
  • AI技术说:人工智能相关概念与发展简史

    作为近几年的一大热词,人工智能一直是科技圈不可忽视的一大风口。随着智能硬件的迭代,智能家居产品逐步走进千家万户,语音识别、图像识别等AI相关技术也经历了阶梯式发...

    个推君
  • 一篇文章讲清楚人工智能、机器学习和深度学习的区别与联系

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 人工智能的浪潮正在席卷全球,诸多词汇...

    昱良

扫码关注云+社区

领取腾讯云代金券