群内分享
2.HiBlock社区分享-区块链课堂|扒光区块链,以太坊全景介绍及入门学习指北
群内讨论
精通比特币摘要
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{sig}(F{hash}(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将长脚本的交易成本从发送方转移到接收方,接收
群内工作
《磨链入门区块链》共同参与写一些东西,目录大纲完善中,一个长期项目。
招募条件:
1.需要一定的区块链基础。
2.对上述任何一方面有较为深入理解。
3.每周能保证一定的空余时间来折腾。
4.了解github相关
5.人员进行筛选,时间周期比较长。
有意向联系我。
磨链在线课程
对自己擅长方面有一定的沉淀,愿意开设在线课程,会考虑和一些专业培训机构合作,要求有一定的一线经验,实实在在分享课程。有兴趣的联系,有偿工作。
磨链(mochain)社区招募相关人员
编号社区内岗位具体工作内容
1.社区运营组每周有固定时间投入社区的建设,包括活动策划,社区门户的维护,相关分享文档编辑,每天社区分享在各个平台的发布,规划整个社区运行。
2核心活动组织者负责社区相关具体学习小组,线上线下活动,社区和合作社区、合作企业的具体合作。
3社区核心技术组社区核心技术输出,普及区块链是一个方面,具体实实在在做一些事情,包括社区内的具体实践项目
4编辑美工组建设良好的门面,一些宣传的内容的美工,一些文章的编辑。
PS:想加入磨链的,或者具体参与到磨链的建设中的,请加磨链组织者微信(jackyjin09)。并且注明自己的能参与的编号(1.2.3.4),欢迎每一位区块链技术爱好者加入磨链,一块琢磨区块链技术。
关于磨链和相关合作
磨链”---取磨炼之意,旨在普及区块链技术,磨炼技术,更好投身区块链行业。有兴趣一块琢磨区块链技术,联系笔者微信(jackyjin09)。
磨链社区是一个纯粹的技术社区,欢迎相关技术合作,在不违反原则的前提下,积极参与合作。
你可以在这里找到我们:
磨链社区公众号:
1. 磨链社区:http://mochain.info
2. Github : https://github.com/mochain
3. Gitter 聊天: https://gitter.im/mochain
4. 知识星球: https://t.zsxq.com/M3BMVZN
5. 知乎:https://www.zhihu.com/people/mochain
(持续更新中)
合作社区
+
网友评论