主页 > imtoken国际版下载 > 什么是以太坊(Ethereum)
什么是以太坊(Ethereum)
什么是以太坊(Ethereum)
以太坊(Ethereum)不是一个机构,而是一个可以在区块链上实现智能合约并开源的底层系统。 从以太坊诞生到2017年5月,短短三年半时间,全球已有200多个以太坊应用诞生。 以太坊是一个平台和编程语言,使开发人员能够构建和发布下一代分布式应用程序。 由于硬件集成,以太坊可用于编程、去中心化、保护和交易任何东西:投票、域名、金融交易、众筹、公司治理、合同和大多数协议、知识产权和智能资产。
以太坊的几个基本概念:
以太坊简单来说就是区块链和智能合约的结合,是基于solidity语言实现的。 在以太坊中,智能合约也有一个账户地址。
以太坊虚拟机 (EVM) 是以太坊中智能合约的运行时环境。 它不仅是沙盒化的,而且实际上是完全隔离的以太坊测试链挖矿,在 EVM 内部运行的代码无法接触网络、文件系统或其他进程。 智能合约之间甚至还有有限的调用。
以太坊中有两种类型的账户,它们共享相同的地址空间。 外部账户,由公私密钥对控制。 合约账户,此类账户由账户中存储的代码控制。 外部账户地址由公钥确定,合约账户地址在创建合约时确定。
每个账户都有一个以太币余额(以“Wei”为单位),可以通过向其发送以太币交易来更改。
每笔交易都是一条信息,可用于将余额从一个账户发送到另一个账户。
每笔交易都需要支付一定数量的gas。 gas价格由创建者设定以太坊测试链挖矿,调用合约的发送账户需要交易费=gas价格*gas量。
Go-Ethereum是以太坊基金会官方提供的客户端软件。 它是用 Go 编程语言编写的,简称 Geth
当您启动客户端程序时,它会连接到其他客户端(也称为节点)的网络以下载同步块。 它会不断地与其他节点通信,以保持其副本是最新的。 它还具有挖掘区块并将交易添加到区块链、验证和执行区块交易的能力。 也可以作为服务器,你可以通过RPC访问暴露的API接口。
这是一个命令行工具,允许您连接到正在运行的节点并执行各种操作,例如创建和管理帐户、查询区块链、签署交易并向区块链提交交易等
首先说一下创建以太坊私有链的步骤:
1.操作系统准备linux(centos6.7)
2.golang安装
3.下载以太坊
4.安装以太坊
5.创世区块文件的准备
6. 创世区块初始化
7. 以太坊推出
========================================
1. centos6.5以上操作系统优先
2.使用yum命令安装golang语言
先更新下yum 源:
[root@localhost src]# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
[root@localhost src]# yum install golang
3、下载以太坊源码,演示链接为
[root@localhost src]# wget
[root@localhost src]#解压v1.7.3.zip
[root@localhost src]# cdgo-ethereum-1.7.3/
4.安装以太坊
[root@localhost src]#制作
5.创世区块文件的准备
在go-ethereum-1.7.3/build/bin目录下创建一个init.json的文本文件,内容如下:
{ "config":
{
"chainId": 10,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x02000000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
参数名称 参数说明
混合哈希
与 nonce 一起用于挖掘,从前一个块的一部分生成的哈希。 注意him和nonce的设置需要满足以太坊黄皮书4.3.4。 块头有效性,
随机数
nonce 是用于挖矿的 64 位随机数。 注意它和mixhash的设置需要满足以太坊黄皮书4.3.4的要求。 块头有效性,
困难
设置当前区块的难度。 如果难度太高,CPU挖矿就会很困难。 在这里设置一个较小的难度
分配
用于为账户预先设置账号和Ether数量,因为私链挖矿相对容易,所以我们不需要预先设置一个账户有币,需要的时候可以自己创建。
币库
矿机账号,随便填
时间戳
设置创世块的时间戳
父哈希
上一个区块的哈希值,因为是创世区块,所以这个值为0
额外数据
附加信息,随便填,可以填写你的个人信息
气体限制
该值设置了 GAS 总消耗量的限制,用于限制区块可以包含的交易信息的总和。 由于我们是私链,所以我们填最大值。
6. 创世区块初始化
在go-ethereum-1.7.3/build/bin目录下执行如下命令完成创世块的创建:
[root@localhost bin]# ./geth --datadir "/root/chain" init init.json
注意:上面命令中–datadir后面的/root/chain可以任意指定,不需要提前创建,但必须保证有足够的磁盘空间。 init.json 是我们在上一步中创建的文件。 注意文件名要一致。
7. 以太坊推出
[root@localhost bin]# ./geth --rpc --rpccorsdomain "*" --datadir "/root/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 100000 console
注意:上面命令中–datadir 后的”/root/chain”要跟我们上一步的–datadir 参数一致。
一直到出现Welcome to the Geth JavaScript console! 句话,并自动进入geth的命令行则说明以太坊私有链安装成功了。
至此,我们的私有链就搭建成功了。
8.启动网络时间同步:
Linux的时间分为System Clock(系统时间)和Real Time Clock (硬件时间,简称RTC)。 系统时间:指当前Linux Kernel中的时间。 硬件时间:主板上有电池供电的时间。 查看系统时间的命令: #date 设置系统时间的命令: #date –set(月/日/年 时:分:秒) 例:#date –set “10/11/10 10:15” 查看硬件时间的命令: # hwclock 设置硬件时间的命令: # hwclock –set –date = (月/日/年 时:分:秒) 上述提到的是手动设置时间到一个时间点,可能与当前网络的时间有误差。下面介绍一下与时间服务器上的时间同步的方法 1. 安装ntpdate工具 # yum -y install ntp ntpdate 2. 设置系统时间与网络时间同步 # ntpdate cn.pool.ntp.org 3. 将系统时间写入硬件时间 # hwclock --systohc
参考:
9.查看日志的方法
启动以太坊的时候使用命令:
./geth --rpc --rpccorsdomain "*" --datadir "/root/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 100000 console 2>>eth_output.log
本次启动后,日志记录到文件eth_output.log
查看日志:
tail -f eth_output.log
10.查看账户余额
开始挖矿后通过命令查看账户钱包有多少矿
eth.getBalance(eth.accounts[0])
或 web3.eth.getBalance(eth.accounts["0x6c24c7e7114726a73b217af292681de445e071c7"])
查询以查看格式化的以太币余额
web3.fromWei(eth.getBalance(eth.coinbase), "ether")