以太坊上价值表示与转移简述

in #cnlast month

价值表示与流转概览

1.物理世界的价值表示与转移:

  • 价值表示: 我们的钱(法币)是用银行或者三方可信机构的账本进行表示的,我们的钱就是银行账户上的数字。
  • 价值转移:当交易过程中确认付钱时,它们从我们的银行账户中减去这笔金额,在商店的银行账户中加上相应的金额,从而完成钱的转移。

2.数字世界的价值表示与转移:

信息传递的主要方式是复制
在互联网中不管是基础的TCP/IP协议,还是WWW协议,都是专门为信息传递设计的。数字化的信息复制可以复制出一模一样的副本,复制效率更高,互联网给信息传递带来了巨变。

价值转移的主要方式是记账。从物理世界到数字世界,价值转移的方式都是记账——用账本的记录表示价值(如谁拥有多少钱)。每次有交易发生就会在账本上添加记录——账本记录谁拥有什么,交易触发账本的变化。

在数字世界,信息的易复制、易修改、缺乏唯一性等特征成了处理价值时的麻烦。

  1. 数据复制造成"双花问题":
    表示价值的数据文件可以完美复制到N个人,在数字世界,每个人可以很容易地通过“复制”制造出伪钞,进行花费。
    不能简单地把物理世界中表示价值的纸币、支票等直接平移到数字世界。

  2. 数据容易被篡改:在传统经济生活中,纸币、支票、合同等各种表示价值的纸质凭证都需要一定程度的防篡改措施。如果一个数字信息,不加特别措施,则可以被轻松地改动而难被发现。

  3. 缺乏唯一性:进行价值转移时,我们需要的结果是:一个表示价值的物品是唯一的,给了你我就没有了,这样才可以实现所有权的转移。

区块链会成为数字世界中“价值表示”和“价值转移”的基础性协议

image.png

比特币、以太坊等各种区块链去中心网络也仍是运行在现有互联网硬件网络之上。区块链带来的变化发生在中间的协议层,区块链给互联网带来了进行价值表示和价值转移的新协议。

互联网增加了一组全新的协议——用于价值表示和价值转移的区块链协议。自此,在数字世界中,我们可以在两个人之间直接进行价值转移,无须任何中心化信用中介的介入。如果从互联网应用的角度看,这个变化是信用中介的角色被从各种互联网应用中剥离出来,下沉为互联网更为基础性的功能,即在基础层次上,区块链担任信用中介,协助我们进行价值表示和价值转移。


区块链的价值表示与流转

区块链的系统是一个所谓的“状态机”(state machine),它以可信的方式记录“谁拥有什么”的所有权信息。当一个用户用私钥签名后发起一个转账交易时,他给这个状态机一个刺激,促使它改变全局状态,演进到下一个状态。每个全局状态就是所有人在这一刻的所有权情况,即“谁拥有什么”的信息。区块链网络中的节点按照该网络的共识机制算法(如工作量证明、权益证明、委托权益证明等)来确认这个转账交易是否被接受。

所有权系统内:
所有权的表示 -> 所有权的转移 -> 所有权转移记录 -> 所有权状态变动。

  1. 价值表示功能:分布式账本
    账本功能:账本的主要功能并不是会计核算,而是所有权管理。我们靠账本的记录来决定这一刻谁拥有什么财产的所有权,我们也靠账本记录的变化来将财产的所有权从一个人手中转移到另一个人手中。
    分布式账本,不再仰赖某个中心化机构来管理一个总账本,而由众多参与者以去中心的方式、通过共识机制共同维护一个总账本。

  2. 价值转移:转账交易
    比特币系统这个所有权管理系统是通过地址与私钥来让每个人掌控自己财产的所有权的:
    几乎所有的区块链都沿用这样的设计:由公钥、私钥掌控资产的所有权;由经私钥签名的转账交易进行所有权的转移;每个区块中存储的是经众节点用共识机制算法确认过的交易记录凭证

  3. 价值表示物:代表价值的凭证
    比特币系统等各种区块链网络都是所有权管理系统。那么,在这些系统中,你拿到的表示所有权的凭证是什么?
    区块链所生成的所有权凭证有很多名字:最初它被称为“加密数字货币”,后来又被细分为代币(coin,指一条链的原生资产)与通证(Token,指由链上的智能合约生成的资产)。

近年来,业界逐渐把区块链上的各类所有权凭证或价值表示物均称为Token(或中文的“通证”)

以比特币区块链为基础,开发基于它的协议(meta-protocol,又译为元协议、外设协议),以提升性能,使其便于应用,比如钱包、侧链、跨链、支付、交易所等。现在,大量的区块链创新项目是用以太坊作为基础公链而开发的协议,它们通常有在自己生态内使用的通证。它们用通证来协调生态内参与者的行为。

             区块链信用层协议
---------------------------------------
        |       价值的表示     |
        |       价值的转移     |
        |       价值的记录     |
---------------------------------------

以太坊

以太坊的目标是提供一个区块链,内置有成熟的图灵完备的编程语言,用这种语言可以创建合约来编码,实现任意状态转换功能。
image.png

以太坊的最初设计目标是建立一个智能合约和去中心化应用平台。以太坊提供了一个代码运行环境——以太坊虚拟机(Ethereum Virtual Machine,EVM),它支持图灵完备的编程语言(如Solidity)。利用Solidity,我们可以在以太坊上更方便地编写智能合约。

现在热门的区块链项目要么兼容以太坊(众多公链、联盟链支持以太坊虚拟机程序运行环境),要么在很大程度上在结构上与以太坊具有相似性。

以太坊区块链上,逻辑上我们就可以开发去中心化应用(decentralized application,DAPP)了。现在DAPP通常指利用了区块链技术的网站或移动App。


以太坊上的智能合约

image.png

  • 任何人都可以在以太坊区块链上部署智能合约,这些智能合约的代码存在于以太坊的账户中。这类存有代码的账户叫“合约账户”。对应地,由密钥控制的账户可称为“外部账户”

  • 以太坊的智能合约程序在以太坊虚拟机(EVM)中运行。

  • 合约账户不能自己启动运行自己的智能合约,要运行一个智能合约,需要由外部账户对合约账户发起交易,触发其中的智能合约代码的执行。被触发运行的智能合约代码可以调用其他的智能合约。

以太坊为数字资产系统提供了关键部件:智能合约与通证

“智能合约通俗理解为可以按照数字资产所有权交易(转移)的去中心化的规则;通证可以理解为数字资产表示物的规则集合承载体。”


以太坊上的通证标准

Q: 在区块链上,通证可以表示何种价值或资产?如何用通证来表示资产?用通证表示资产后如何形成应用系统?

ERC是Ethereum Request for Comment的缩写,20是编号。征求修正意见书(Request forComment,RFC)是互联网工程任务组(IETF)发布工作备忘录的方式,后来演变为用来记录互联网规范、协议、过程等的标准文件。

ERC20 通证标准(ERC20 Token Standard)是通过以太坊创建通证时的一种规范。按照ERC20的规范可以编写一个智能合约,创建“可互换通证”。它并非强制要求,但遵循这个标准,所创建的通证可以与众多智能合约、交易所、钱包等进行交互,它现在是已被业界普遍接受的事实标准。

ERC20通证标准是一个标准化的智能合约程序,它需要实现的通证方法包括:可选的name、symbol、decimals,必须有的balanceOf、transfer、transferFrom、approve、allowance。它需要实现的事件响应包括transfer、approve。

除了ERC20之外,以太坊受关注的通证标准还有ERC721。ERC20通证是可互换的、同质的,而ERC721的通证是不可互换的、非同质的。ERC20通证可无限分割细分,而ERC721通证的最小单位是1,无法再分割细分。

区块链的实质性功能是所有权管理系统,遵循ERC20标准的同质化通证表示的是可互换的所有权权益,而ERC721表示的不可互换的所有权权益

通证的用途是,在数字世界中,在区块链上表示价值。要把其他象限的价值映射到链上、用通证来表示,主要有两个路径:

  1. 把原本在互联网上通过中心化机构的数据库表示的价值和价值转移,切换到去中心化的区块链上来。比如常见的有:网络零售的支付、社交网络的积分、游戏里的道具等。

  2. 把实体中的资产映射到链上,通过区块链进行流通。比如常见的有:把线下的民宿、供应链金融、资产证券化(ABS)中的资产用通证进行表示。


以太坊的核心组成

  • 账户

以太坊是有账户的,每个用户都可以开设账户,账户余额是我们拥有的以太币,用户还可以用账户持有遵循ERC20标准、ERC721标准的通证。
对应Dapp使用者用户来说,开设的账户是以太坊的两种账户中的外部账户;而当程序员部署一个智能合约时则会创建合约账户。
image.png

两种账户的地址形式是一致的,都是以“0x”为前缀的40位十六进制字符串,可以把它们统称为“账户地址”或“以太坊地址”。

合约账户包含创建通证标准规范,例如ERC20的通证方法,通证响应事件具体的实现代码。

  • 交易(2大类型)

外部账户签名发起的交易会触发以太坊变化到新的状态。以太坊的所有状态变化,都是由外部账户发起的交易触发的。

  1. 转账交易: 将以太币从一个账户转到另一个账户。
  2. 智能合约交易:外部账户调用合约账户的函数,触发智能合约的代码运行。

交易通用数据结构:

·nonce:与发起这个交易的外部账户相关的一个序列编号。
·gas price:交易的发起方愿支付的燃料费价格。
·gas limit:交易的发起方愿意为交易支付的最大的燃料数量。
·recepient:交易的目标地址,可以是另一个外部账户,也可以是合约账户。
·value:这一交易发送的以太币数量。
·data:附在交易中的数据,当我们调用一个智能合约的函数时,调用数据被组合成相应的格式放入这个字段。
·v、r、s:由交易的发起方提供的椭圆曲线签名的三个部分。

在交易数据中并没有交易发起方的账户地址,这是因为,从签名可以很方便地反推出交易发起方的账户地址。

  • 燃料费(交易费)

发起一个交易时,我们要为这个交易所触发的所有操作支付燃料费。是由每一个调用智能合约的用户根据自己的使用量支付。

当我们调用智能合约中所有的会改变账本状态的所谓可写函数时,我们要支付燃料费。特别地,我向一个智能合约(A)发起交易,然后这个智能合约去调用下一个智能合约(B),它再去调用智能合约(C),我需要为这一系列运算支付燃料费。

在以太坊系统内,以太币的主要角色就是用于支付交易的燃料费。

交易的燃料费是这样计算的:在跑完从甲地到乙地的路程后,以太坊会最终计算这个过程中所消耗的燃料费,这就是我们支付的费用。
燃料费(gas fee)=燃料价格(gas price)×燃料使用量(gas)

燃料使用量与你所进行的计算的复杂度有关,以太坊虚拟机的各种计算均有对应的燃料使用量标准。

每个交易的燃料价格是用户自己设定的:用户在发起交易时要设置燃料价格,你设的价格较高交易会快速被确认、完成,价格较低则需要较长的时间

应用开发者往往要用各种技巧来降低智能合约的复杂度,减少调用所消耗的燃料数量,否则的话,高昂的成本将会阻碍用户使用。

一些应用开发者也开始考虑,在扩展以太坊性能的所谓二层协议(Layer-2 protocol)或其他燃料费较低的以太坊兼容公链上部署自己的应用,以应对以太坊高昂的燃料费。

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.033
BTC 63009.69
ETH 3029.00
USDT 1.00
SBD 3.75