主页 > 苹果手机imtoken怎么下载 > 区块链和以太坊
区块链和以太坊
一、以太坊概述
(1)什么是以太坊?
以太坊是一个全新的区块链平台,允许任何人在以太坊平台上构建和使用通过区块链技术运行的去中心化应用程序,简称 Dapps。
以太坊可以转账和存储数据。
以太坊可以执行程序(智能合约)。
以太坊是一条公链,公链上的每个节点都是一台运行以太坊客户端的计算机。每个用户都可以自由加入或离开以太坊网络。并且每个以太坊节点都可以同步所有的账本/区块信息。
(2)以太坊的发展历程
2013 年底,以太坊的发明者 Vitalik Buterin 发布了以太坊的第一版白皮书,并召集了一批认同以太坊概念的开发者启动项目,其中包括项目联合创始人 Gavin Wood 和杰弗里·威尔克。
2014 年 2 月,以太坊社区、代码数量、wiki 内容、商业基础设施和法律策略逐渐完善。上述以太坊爱好者 Gavin Wood 和 Jeffrey Wilcke 开始全职专注于以太坊开发
2014 年 4 月,Gavin Wood 发表了以太坊虚拟机技术规范黄皮书,成为以太坊的技术圣经。根据说明,以太坊客户端支持7种编程语言,包括C++、Go、Python、Java、JavaScript、Haskell、Rust等,软件性能更加优化。
2014 年 7 月 24 日,以太坊开启了为期 42 天的以太坊预售,共筹集到 31,531 个比特币,按当时的币价折合 1843 万美元,是 2019 年第二大众筹项目。那时。预售中使用的比特币地址是 36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2。您可以在比特币区块链浏览器中查看每次转入和转出。最后卖出的以太币数量为 60102216。
2015年5月,团队发布了最后一个测试网络(POC9,之前已经有0~8个测试版本),代号为Olympic,经过两个月的测试以太坊和区块链,团队于2015年7月发布了以太坊官方网络,标准与以太坊区块链正式启动;月底,以太坊开始在多个交易所交易。
以太坊官网:
交易浏览器:
github黄皮书:
二、以太坊基本操作
(1)与以太坊网络交互
以太坊上有开发者和消费者。开发者可以使用 web3.js 库链接到以太坊网络。消费者可以通过 Metamask 等第三方 Dapp 工具与以太坊网络进行交互。
(2)元掩码安装
第 1 步:Metamask 仅支持 Google 或 Firefox 浏览器。首先,打开谷歌浏览器应用商店,在搜索框中输入“metamask”回车,按照提示进行安装。
第二步:安装成功后,浏览器右上角会出现一个小狐狸图标。单击它将打开 Metamask 插件(如下图所示)。
第三步:Metamask第一次打开时,会自动生成12个助记词。我们需要记住这些助记词,以后会经常用到。
第四步:输入账号密码。
(3)以太坊网络环境介绍
以太坊网络分为主网和测试网。测试网络分为专网和公网。
主网:花费真实的以太币。
测试网:
1)私网:需要自己搭建。
2)公共网络:以太坊有四个公共测试网络,三个还在运行。每个网络都有自己的创世区块和名称,按照它开始运行的时间顺序排列:
Morden(已退休):Morden 是以太坊提供的官方测试网络。2016年11月,因为难度炸弹严重影响出块速度,不得不退役。Morden 的共识机制是 PoW。
Ropsten:Ropsten 也是以太坊提供的官方测试网络。是为解决现代难度炸弹问题而重启的区块链。它仍在运行,共识机制是 PoW。
Kovan:为了解决测试网中 PoW 共识机制的问题,以太坊钱包 Parity 的开发团队推出了新的测试网 Kovan。Kovan 使用权威证明共识机制,简称 PoA。缺点:目前 Kovan 仅支持 Parity 钱包客户端。
Rinkeby:Rinkeby 也是以太坊提供的官方测试网络,采用 PoA 共识机制。缺点:测试币难以获得。
(4)以太坊账户类型
外部账户:即普通账户,由私钥控制,无密码。
内部账户:又称合约账户,可以接收ETH,由外部账户控制,合约有代码。
(5)控制账户表格
私钥:一对一,可以在metamask的账户明细中查看。
JSON 文件:一对一,受密码保护,可以导入元掩码。
助记词:一对多,可以在“设置->安全和隐私->显示助记词”中查看。
(6)传输过程
第一步:打开metamask,点击主页发送按钮;
第二步:输入对方的密钥地址和转账金额;
第三步:输入 Gas Limit 和 Gas Price,代表转让方可以支付的交易费用上限。
注意:1)在以太坊网络中,不同的网络可以有相同的账户信息。但是,同一个帐户在不同的网络上可能有不同的金额。2)无法在不同网络之间执行传输操作。
下图显示了每个操作的 Gas 以供参考。
实际上,数据上传就是发起交易的过程。在发起交易之前,链上的数据必须转换成十六进制数据。在可选字段中添加十六进制数,记得在前面添加 0x。
交易数据的结构如下图所示:
(7)比特币 vs 以太坊
阻塞时间
容量
奖
比特币
10分钟
1Mb
每4年腐烂一次
以太坊
15~30s
由气体量决定
目前有3个奖励
三、智能合约
(1)构建智能合约
通俗的讲,一个由代码控制的账户(内部账户)和一个可以处理金钱的合约(程序)就是智能合约。
智能合约的特点:
1)合约由代码逻辑控制,可以触发支付;
2)合约部署后存储在区块链上,不可修改;
以下是一个简单的智能合约代码,用solidity语言编写:
// specify compiler version.
pragma solidity ^0.4.24;
// define smart contract.
contract InBox {
// define a public variable, which type is string.
string public message;
// define a function of InBox, the payable is a key word.
function InBox() payable {
}
function setMessage(string newMessage) public {
message = newMessage;
}
function getMessage() public constant returns(string) {
return message;
}
}
当智能合约部署在以太坊上时,系统会返回一个地址,即合约账户(有金额,代码逻辑)。
同一个合约可以多次部署,每次部署后都会生成一个新的合约账户。
(2)Remix 在线编辑工具
Remix是编译器的官方在线版本。官方地址:
第一步:点击左上角的加号以太坊和区块链,创建一个sol文件。
第二步:编写合约代码。
第三步:编译合约。Remix 编译器已经自动集成了solidity 编译器,所以可以自动编译合约代码。
第四步:选择部署环境。
JavaScript VM:默认初始化5个账户,每个账户100 ETH。
Injected Web3:与 Metamask 紧密集成。
Web3 Provider:链接到您自己本地启动的区块链环境(例如由 truffle、ganache 和 geth 构建的私有链)。
第 5 步:部署合约。
部署合约也是一笔交易,但是不需要填写to字段,data字段就是合约字节码。
第六步:调用合约程序。
发送:所有改变区块链数据状态的操作都称为发送操作,相当于发起一笔交易。特点:花钱,速度慢。
调用:所有读取区块链合约数据的操作都成为调用操作。特点:免费且快速。
(3)Windows 在本地安装 Remixd
首先以管理员身份打开命令窗口,然后按照以下步骤操作:
第一步:安装node.js;
第 2 步:安装构建工具。在开始安装之前,请确保 Net Framework 为 4.6 或更高版本。安装后,npm 会自动执行构建模块,该模块会下载并安装可视化 c++ 构建工具。
命令: npm install --global --production windows-build-tools
第 3 步:安装 node-gyp。node-gyp 是在为 node 编译 c++ 扩展时使用的编译工具。
命令: npm install --global node-gyp
第 4 步:开始安装 remixd。
命令:npm install -g remixd
(4)使用remixd实现离线编辑器
第一步:将本地合约分享到remix浏览器使用。
命令:remixd -s D:\code\remixd_workspace\contract --remix-ide
上述命令是将本地文件同步到官方Remix IDE。
第二步:点击混音页面左上角的按钮,连接到本地目录。如果连接成功,可以在左侧看到localhost节点。