版权声明:凡原创系列文章,均笔者的辛勤于中,如转载,请文章顶部注明来源。谢谢配合 https://blog.csdn.net/smilejiasmile/article/details/87633039
以太坊
- Ethereum 的设计理念
- Erhereum 概览
- 基于 Ethereum 的应用
- 智能合约编程初步
- 资料
Ethereum 的设计理念
- Eos 采用 Dpos,以太坊采用 sharding 分片,bitcoin 采用POW , 最后会形成中性化的挖矿的矿池。
- 以太坊还是继承于 bitcoin, 坚持每一个人都可以参加挖矿,故以太坊采用分片的技术,其中,每个节点都可以加入利益分配的环境中,不必选出代理节点,但是每个节点不是全节点,因为对节点要求太高,这就是分片的一个思想。
- Vitalik 认为 bitcoin 中交易就是一个状态转化的过程, APPLY(S,TX) —> S’ or ERROR
以太坊产生的原因
-
区块链的其他应用
- 域名币(namecoin)
- 彩色币(Colored coins)
- 元币 (Metacoins)
- 问题: 是建立独立的网络 还是(vs) 在比特币网络上建立协议
-
Bitcoin 脚本语言的局限
- 缺少图灵完备性 (简单理解,是否有跳转指令,循环)
- 价值盲 (Value-blindness) UTXO 的准确切分
- 缺少状态 (UTXO 就是有消费和非消费)
- 区块链盲 (Blockchain-blindness) 脚本语言,看不见区块链上的一些数据的。
以太坊简介
-
以太坊引入的概念
- 智能合约
- 账户
- 状态与状态转换
- 图灵完备的脚本语言(可以用脚本一样来编写智能合约)与 EVM
-
以太坊里面的账户
- 外部账户(有私钥)发起交易,可以调用合约账户的接口,由合约账户触发一个内部交易,这个内部交易在转给一个合约账户。或者外部账户转账给外部账户。
- 合约账户
-
脚本语言与 EVM
- EVM 不是基于寄存器,而是基于栈的虚拟机,不像 JVM 是基于寄存器的。
- 栈最大有 1024 个元素,每个元素 256 比特(32字节)
- 具备常用的算术,位,逻辑和比较操作,也可以条件和无条件跳转
- 任何计算、存储都需要消耗 Gas
-
EVM 执行时的消费
- Total cost = gasUsed * gasPrice
- gasUsed : 估计消耗的 gas 量
- gasPrice : gas 的价格,由发起交易的用户决定,
- gasLimit : 一次交易中最多可以消耗的 gas 上限
-
以太坊中的价格单位
Gas 是 根据 opCode 运行时长来计算的。
- 状态转换
- 以太坊中 状态转换也跟比特币中有一些不一样。
- 状态转换函数
扫描二维码关注公众号,回复:
5265638 查看本文章
- 以太坊的区块结构
-
交易的构成
- nonce 发出交易的编号,从 0 开始
- gasPrice : gas 价格
- gasLimit : 处理该交易允许最大 gas 消耗值
- to : 交易的目的地,如果为空,则创建智能合约
- value : 要发送的 Ether 数量
- data : 智能合约代码或者调用智能合约函数
- 没有 from : 包含在签名中
-
帕特丽夏树 (通过序列化,形成字符流,进行 key - value 存储)
-
以太坊中的区块确认流程
应用简介
- ERC20 Tokens (规定了 6 个接口,比如某些项目,一般会公开募集,btc 或者 eth 币,相当于集资过程,这就相当于符合 ERC 20 的标准)
- CryptoKitties (ERC721) 在这个协议中,每个Token 都不一样,在加密猫里面,它实现了一个拍卖的过程,整合了 网页钱包。每个 Token 独特的部分都记录在 matadata 里面。https://www.cryptokitties.co/
搭建开发环境
-
Solidity 在线编辑器
-
安装 MetaMask
-
安装 testrpc
-
安装 Truffle (集成开发环境)
-
资料