浅学区块链(1)基础概念

智能合约:

智能合约:以太坊是区块链和智能合约的完美结合,通过编写智能合约实现强大的功能,实现去中心化应用开发,以太坊程序能自动执行及无法被干预。

代码结构:


solidity,编写智能合约的语言
智能合约允许没有第三方情况下的可信交易,这些交易可追踪且不可逆转。
超级账本Hyperledger,EOS等区块链平台的程序也成为智能合约。
solidity 智能合约高级语言,运行在Ethereum虚拟机上。
静态的支持继承类库以及复杂自定义类型等特性的高级语言。
后缀.sol
是一种强类型编程语言,必须先定义后赋值使用。
开发工具Remix
在线地址:https:remix.ethereum.org

开发流程:

智能合约源代码,通过solidity编译器编译成字节码,bytecode,并声明接口ABI,部署到网络,分布式app,dapp通过web3.js调用接口
执行结果后,vm是需要消耗的操作
call不用消费的操作

EVM:

EVM 沙箱封装,完全隔离的运行环境,运行在EVM内部的代码不能接触网络文件系统或其他进程。智能合约和其他智能合约也只能进行有限的交互。

账户:

以太坊中有两类账户:外部账户账户的信息 EAO,和合约账户contract address ;
外部账户

  • 有以太币余额 ,可发送交易(转币或者出发合约代码)
  • 由用户私钥控制,没有关联代码

合约账户 :

  • 对应的以太币余额
  • 有关联代码
  • 可通过交易或来自其他合约的调用消息来触发代码执行
  • 执行代码时可以操作自己的存储空间,也可以调用其他合约

以太坊中账户不用申请,是用户根据需要在钱包中生成的。转账行为是由一个账户发起,把财产转移到另一个账户的过程。
以太坊中两种账户,共用EVM同一个地址空间;
无论账户是否存储代码,这两类账户对EVM来说处理方式是完全一样的
每个账户在EVM中都有一个键值对形式的持久化存储。
(key 和value长度都是256位,称为存储空间)

交易

交易:签名的数据包,可以包含二进制数据负载(Payload)和以太币(ther),由外部账户发送到另一个账户的消息,可以外部账户,可以是合约账户.

签名的数据包,由外部账户发送到另一个账户,就是一笔交易。
消息调用:合约可以通过消息调用的方式来调用其他合约或者发送以太币到非合约账户。


一经创建,每笔交易都收取一定数量的gas,目的是限制执行交易所需要的工作量和为交易支付手续费。EVM执行交易时,gas将按特定规则逐渐耗尽。
gas price是交易发送者设置的一个值,发送者账户需要预付的手续费=gas price* gas 。如果交易执行后还有剩余,gas将园路返还。

交易的流程:

第一步:交易的生成

当前所有者利用私钥对前一次交易和下一位所有者签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。一笔新交易产生时,会先被广播到区块链网络中的其它参与节点。

第二步:交易的传播

当前所有者将交易单广播至全网,每个节点会将数笔未验证的交易Hash值收集到区块中,每个区块可以包含数百笔或上千笔交易。最快完成POW的节点,会将自己的区块传播给其他节点。

第三步:工作量证明

每个节点通过相当于解一道数学题的工作量证明机制,从而获得创建新区块的权力,并争取得到数字货币的奖励。各节点进行工作量证明的计算来决定谁可以验证交易,由最快算出结果的节点来验证交易,这就是取得共识的做法。

第四步:全节点验证

当一个节点找到截时,它就向全网广播该区块记录的所有盖时间戳的交易,并由全网其他节点核对,其他节点会确认这个区块所包含的交易是否有效,确认没被重复花费且具有效数位签章后,接受该区块,此时区块才正式接上区块链,无法再窜改资料

第五步:区块链记录

全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块。所有节点一旦接受该区块后,先前没算完POW工作的区块会失效,各节点会重新建立一个区块,继续下一回POW计算工作。每个区块的创建时间大约在10分钟,随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短,随算力减弱而延长。

猜你喜欢

转载自blog.csdn.net/Xu_programmer/article/details/124460324
今日推荐