一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。
区块链-以太坊二:
以太坊:
整理些以太坊相关概念。
EIPs:以太坊改进协议,对应bitcoin中的BIPs。
以太坊是作为一个平台,就像一张白纸,开发者可以根据以太坊普遍化的协议,配合核心机制定制各种解决方案。
智能合约:在区块链平台上,配合智能合约,建立一种去信任化价值传递平台。在以往的中心化网络平台上,以购物交易为例,一般通过第三方平台来进行资金的担保,那么在区块链平台上通过智能合约,code来制定各种条款的约定,合约中各项条款置于区块链中,一个去信任低成本环境进行价值传递。
以太坊客户端版本:
在github上以太坊的主页:https://github.com/ethereum各种以太坊的程序代码都可看到,各种语言版本可选择。
go-ethereum:语言:go。地址:https://github.com/ethereum/go-ethereum
cpp-ethereum:语言:c++。地址:https://github.com/ethereum/cpp-ethereum
个人电脑上安装以太坊测试环境,之前的文章有具体实施步骤,一般go-ethereum称为geth,在安装完成后进入geth命令行模式:(以下一些操作都在geth下)
geth –datadir“./” –nodiscover console 2>>geth.log
进入命令行模式,datadir为文件夹位置、nodiscover表示链隐藏、console>>geth.log输出日志。
账户:以太坊账户区别于之前bitcoin,分为外部账户和合约账户。
外部账户:一般情况下就称为账户,账户中有余额,账户理解为以太坊网络中的一个状态,区块链区块更新,达成共识后,每个节点更新自身副本。简而言之,在以太坊中账户更新即为以太坊中状态的一个更新。故账户的概念尤为重要。和其他区块链系统一样,账户都会有一对密钥,即自己个人保存的私钥和公开的公钥,同时公钥衍生地址(公钥的最后20个字节)。私钥和地址都会编码在一个JSON文本文件,这个在申请以太坊系钱包中,会提示保存,保存下来的一个文本文件中即可看到具体内容。
合约账户:功能和数据的集合,存在于以太坊的发布智能合约的地址上。一般包括,账户以太币的余额、关联代码、通过交易或者消息调用的方式出发并到EVM执行。在运行时候,运行具备图灵完备性,只操作特定的存储,可以结合其他合约。简单理解在以太坊上,合约代码都被EVM在每个参与网络的节点行运行,来验证新区块的产生。
eth.accounts:查看账户信息。
账户信息主要包括:
随机数,用于确定每次交易只能处理一次的计数器。
账户余额,当前余额。
账户合约代码。
账户的存储,默认为空。
新建账户:personal.nerwAccount(“账户名”)
查看信息:eth.accounts显示账户公钥地址。
解锁账户:账户新建后是锁定的,需要解锁,personal.unlockAccount(username)。
转移以太:eth.sendTransaction()
挖矿:miner.start().
交易理解为一个账户向另一个账户发送一笔被签名的消息数据包。区块链通过共识机制生成区块,并存储数据。
交易大致包括:
发送者、接收者(一笔交易收发双方)
签名信息,用作证明发送者想接收者发送消息。
转移数量(一般交易的以太币的数量)
用于存储智能合约和调用智能合约的代码的数据域。
Gas上限和gas价格。
一个消息即一笔交易,由合约账户产生,合约在执行代码过程中运行了call或者delegatecall即生成消息,消息引导接收账户运行其代码,使得账户之间产生联系。
在交易中必须要有个gas。即交易费用。以太坊的运行环境是EVM,参与的节点都运行EVM作为区块验证协议的一部分,合约在每个节点重复多次执行,这个也就称为一个漏洞,恶意的无限制的执行。那么设置gas作为代码运行步骤收取的费用,称为交易费,俗称燃料,用于控制这种恶意行为或无意的有缺陷代码。
交易中gas limit和gas price用于设置gas,这个gas一般都是一个预估值。交易费用主要包括:
gasused:交易消耗总的gas数量。每一个EVM中的命令设置相应的gas消耗值,即所有被执行的命令的gas的总和。
gasPrice:交易中单位gas的价格。由于网络关系这个价格浮动,根据区块打包时间预估。
交易费公式=gasUsed*gasPrice。
本文由币乎社区(bihu.com)内容支持计划赞助。
之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:
领取专属 10元无门槛券
私享最新 技术干货