磨链社区-分享整理
群内分享
区块链协议新方向-图灵奖得主Macali开发Algorand
干货:使用Hyperledger Caliper来测试区块链性能
干货:安装Solidity编译器-Solidity官方文档-2--HiBlock社区
构建区块链时的技术选型
群内讨论
1.关于程序员转行区块链
做区块链,您需要:了解非对称加密;理解一下拜占庭问题(几个协议理解难度相对于Paxos简直差了几个数量级);看明白比特币及以太坊原理非必须的会使用Solidity写Smart Contract。说三句会挨骂的话:人工智能做的好,转去做区块链只需要3天;区块链做的好去转身搞人工智能,可能需要几年(毕竟很多人高等数学学了四年也没学明白)。后端开发工程师,转去做区块链只需要1周。
2.区块链应用场景
磨链(mochain)计划各学习小组动态
计划具体内容(负责人)进度
2.以太坊入门到精通tower上新建计划14个小模块开始解读
(盖盖)
3.25出第一版整理内容
3.以太坊项目实践磨链社区-以太坊实战在线课程
(虞双齐)
每周六在线课程、目前已出2期
5.bitcoinbitcoin自问自答-深入挖掘bitcoin疑问
(陈烨)3.25前整理计划
6.超级账本整理安排在线课程和内容分享
(南瓜地、宣章炯)
3月底前整理计划课程
7.IPFS磨链社区官网-已更新两期分享内容
(陈德君)
持续进行中
9.区块基础tower上新建计划、gitbook上定期分享整理内容(金明杰)持续进行中
10.区块链相关政策解读与商业应用跟踪磨链社区官网-在每日分享更新相关内容(种法辉)持续进行中
以太坊入门到精通计划出品-《以太坊账户模型与比特币UTXO模型对比》
余额的显示原理
在比特币系统中没有账户的概念,所以也就没有账户余额的概念,但是却有UTXO的概念。比特币钱包里面显示的余额,实际上是你所有地址的UTXO的集合。
以太坊系统中是有外部账户和合约账户的概念的,每个地址对应一个以太坊的账户,而余额就是账户状态的一部分。
比特币的UTXO模型
UTXO(Unspent Transaction Output)未花费交易输出。
UTXO是不可拆分的,也就是说使用过之后一定有新的UTXO产生,可以把UTXO类比成支票。
举例:
1:
你有一张20元的支票,想买一个价值10元的苹果,商家会收到10元,你会收到找零的10元。也就是说你将20元拆成了两个10元,一份为找零之后的10元,一份为支付给商家的10元。
2:
你又用找零之后的10元支票买了一个价值5元的沙拉酱,支付给商家5元,你收到找零5元。
总结:
例子1就是一笔交易,20元为交易的输入,找零的10元与支付给商家的10元是交易的输出。也就是这两个10元就是UTXO。
例子2也是一笔交易,找零的10元作为交易的输入,找零的5元与支付给商家的5元是交易的输出。
一笔交易的输入一定是之前某笔交易的输出。
以太坊账户模型
以太坊中两种类型的账户:
外部账户(Externally Owned Accounts 或EOA):被私钥控制,没有与合约代码相关联,有余额。
合约账户:被合约代码控制,同样有余额。能被外部账户调用来激活,也可以通过另外一个合约账户来激活。
当合约账户被调用时,存储其中的智能合约会在矿工处的虚拟机中自动执行,并消耗一定的燃料。燃料通过外部账户中的以太币进行购买。
每个账户都有一个与之关联的状态(state)和一个20字节的地址(address)。在以太坊中一个地址是160位的标识符,用来识别账户的。
(私钥生成公钥,公钥的最后20个字节就是账户的地址。这里需要注意一下,以太坊网络没有对地址是否有效进行判断,所以在转账的时候,一定要注意地址是否正确)
每个账户都维护自己的“状态”,所有账户的状态代表的都是以太坊网络的“状态”。
以太坊账户的状态
以太坊的账户状态由四个部分组成
nonce:外部账户代表交易次数。合约账户,nonce代表创建的合约序号。
balance: 此地址拥有Wei的数量。1Ether=10^18Wei(Wei是以太坊代币的一个单位)
storageRoot: Merkle Patricia树的根节点Hash值,Merkle树会将此账户存储内容的Hash值进行编码,默认是空值。
codeHash:账户EVM(以太坊虚拟机)代码的hash值。合约账户就是代码的Hash值。外部账户就是空字符串的Hash值
比特币的UTXO模型与以太坊的账户模型优缺点分析
UTXO优点
私密性强:每一笔交易的找零可以重新指定一个新的地址。
并行交易:一个交易发送者发送两笔独立的交易时,他们可以小心地花费独立的 UTXO ,因此这些交易也可以用任意次序来处理。
不可分割性:UTXO是不能分割的,交易之后原有的UTXO就会消失,并产生新的UTXO。
可追溯性:支持历史追溯。
账户模型优点
快速获取余额:比特币需要将指定地址所拥有的所有UTXO中的未花费交易总值整合。
存储空间小:输入输出只有一个。
相对于UTXO模型比较容易实现智能合约。
易用性高:易于理解和编程。
容易查询状态的变更。
二者对比
特性以太坊UTXO
状态查询直接查询需要追溯历史
安全性需要处理好重放攻击较好
存储空间较小较大
可追溯性不支持支持
易用性易用较难理解
并行交易不支持支持
实现智能合约较容易较难
总结
单纯的比较两种模型的优缺点有点片面,还是需要根据项目要求来选择合适的模型,毕竟两者的定位不同。比特币致力于实现点对点的电子现金系统,而以太坊想要实现图灵完备的智能合约平台。
(如果有理解错了的地方,希望大家指正,共同学习)
作者:张来玉-磨链社区
参考:
区块链原理设计与应用
https://segmentfault.com/p/1210000013473348
磨链(mochain)学习小组清单
计划具体内容
1.白皮书、黄皮书解读(并入2)以太坊、超级账本等相关白皮书黄皮书解读,分享自己理解,整理讨论输出
2.以太坊入门到精通深入以太坊运行原理、对相关模块定位到源码解读。
3.以太坊项目实践包括环境搭建,开发环境搭建,及相关实践开发
4.以太坊课程设计,相关以太坊内容整理以太坊课程、包括智能合约基础、编写、开发。
5.bitcoinbitcoin相关内容,比特币自问自答
6.超级账本超级账本相关内容。具体待细化
7.IPFS相关内容IPFS filecoin相关内容
8.DAGDAG,字节雪球相关内容
9.区块链基础知识包括密码学、算法、共识机制、P2P网络等相关内容
10.区块链相关政策解读与商业应用跟踪区块链相关政策解读与商业应用跟踪内容,包括最新新闻信息分析分享
11.挖矿相关挖矿原理、挖矿相关内容
12.EOS相关EOS相关内容
13.区块链技术文档翻译区块链技术文档翻译,以太坊,solidity,truffle,超级账本等相关文档
PS:想加入学习小组,请加磨链组织者微信(jackyjin09)。欢迎每一位区块链技术爱好者加入磨链,一块琢磨区块链技术
关于磨链
“磨链”---取磨炼之意,旨在普及区块链技术,磨炼技术,更好投身区块链行业。有兴趣一块琢磨区块链技术,联系笔者微信(jackyjin09)。
你可以在这里找到我们:
磨链社区公众号:
磨链社区:http://mochain.info
Github : https://github.com/mochain
Gitter 聊天: https://gitter.im/mochain
知识星球: https://t.zsxq.com/M3BMVZN
知乎:https://www.zhihu.com/people/mochain
(持续更新中)