首页 > 其他分享 >比特币与以太坊的基本知识简介

比特币与以太坊的基本知识简介

时间:2022-11-05 17:55:46浏览次数:61  
标签:UTXO 以太 基本知识 比特 区块 合约 交易

比特币是由中本聪提出的一种数字货币。

比特币不依靠任何货币机构,是一种去中心化的记账机制,由所有节点共同维护一个账本,用户的比特币信息通过这个账本计算所得。

POW

比特币采用POW(Proof of Work)作为共识机制。

POW,即工作量证明,为了向区块链中添加新区块,矿工必须不断更换区块头中的nonce值,直到区块头的散列值满足前面的若干位都为0。

最先找到该nonce值的矿工将获得创建新区块的资格,然后比特币系统会给该矿工一定的BTC作为奖励,这个奖励就是挖出的比特币。

P2P网络

所有比特币用户组成的点对点,去中心化网络。

地址

比特币地址由公钥的散列值生成,通常人们会为每一次比特币交易创建不同地址,从而确保匿名性。

钱包

使用比特币的客户端称为钱包,可通过钱包生成密钥对(公钥和私钥),公钥用于生成地址,接受比特币,私钥用于创建交易时进行签名。

区块链

比特币区块链就是保存比特币全部交易的公共账簿。

每个区块上记录了若干交易,整个比特币区块链记录了所有地址至今为止的所有交易。

从而对任意一个地址,每个人都能计算出它当前所拥有的比特币数量,以此来验证该地址是否有能力支付相应的比特币。

每个区块的第一条交易为“系统给矿工支付若干BTC”。

传统概念中,区块链的数据应该存储在每一个节点上,但由于个人机的存储容量有限,区块链上的数据存储在一些有能力且有意愿的节点上,其中每个节点都保存了完整的数据。

全节点:保存有整个区块链数据的节点,可参与挖矿,寻找最长链并判断分叉,全节点一直在线。

轻节点:利用Merkle Tree的特性,轻节点只需保存Block Header以及与自己相关的交易细节。轻节点并不一直在线,它只能检测哪一条是最长链,轻节点无法验证大多数交易的合法性,也无法验证区块链网络中新发布区块的正确性。

交易

假设Alice向Bob支付1BTC

  1. Bob创建密钥对(公钥B和私钥b)
  2. Bob根据公钥B生成地址B,并发送给Alice
  3. Alice创建密钥对(公钥A和私钥a)
  4. Alice根据公钥A生成地址A
  5. Alice创建交易:“从地址A向地址B发送1BTC”,并使用私钥a对交易签署数字签名
  6. Alice将交易发送至P2P网络
  7. 不久后,该交易与其他交易一起被合并为一个区块,并添加到区块链中
  8. 添加的区块被P2P网络确认后,该交易就成立了

比特币中使用的数字签名算法为ECDSA,椭圆曲线为secp256k1。

状态

比特币系统的“状态”指所有已经被挖出的且没有花费的比特币,即未花费的交易输出(UTXO)的集合。

每个UTXO都有其面值和所有者,UTXO不可分割。

如 Alice:$50 是由许多不同面值的UTXO组成的。

一个UTXO只能用于一笔交易,如果矿工发现该UTXO之前已经支付过别人,则存在双花的问题,故该交易不能通过矿工的核验。

UTXO的最小面值是1聪,1聪=1∗10−8BTC=0.00000001BTC1聪=1∗10−8BTC=0.00000001BTC。

UTXO的面值不固定,在交易后会创建新的UTXO。

如Alice有一个面值为25BTC的UTXO,要向Bob支付11.7BTC。则创建交易后,Alice支付了一个面值为25BTC的UTXO,Bob收到了一个面值为11.7BTC的UTXO,同时Alice收到了一个面值为13.3BTC的UTXO(找零的钱)。

侧链

侧链协议允许资产在比特币区块链和其他区块链之间互转。

即以比特币区块链作为主链,其他区块链作为侧链,二者通过双向挂钩,实现比特币从主链转移到侧链进行流通。

侧链可以是一个独立的区块链,有自己按需定制的账本、共识机制、交易类型、脚本和合约的支持等。当比特币在侧链流通时,主链上对应的比特币会被锁定,直到比特币从侧链回到主链。

为什么以太币数量有限

比特币是一个通缩模型,BTC的总量是2100万。首先比特币系统会保持大约每10分钟产生一个新区块,四年会产生约21万个区块。而每个区块的奖励每四年减半,从2008年的每个区块50BTC开始,即分别是50、25、12.5、6.25、3.125……将这些数字累加起来,你会发现无限接近于100。

于是

21万*50+21万*25+21万*12.5+……
=21万*(50+25+12.5+6.25……)
=21万*100
=2100万

比特币系统通过调整POW中所需0的位数来保持恒定速率。

2|0以太坊

以太坊拥有图灵完备的以太坊虚拟机,可使任何人都能创建合约和去中心化应用。

智能合约

以计算机程序的方式来缔结和运行各种合约。

智能合约是运行在以太坊虚拟机中的应用,可以接受来自外部的交易请求和事件,通过触发运行提前编写好的代码逻辑,进一步生成新的交易和事件,可进一步调用其他智能合约。

智能合约就是合约账户里的代码,每当合约账户收到一条消息,合约内部的代码就会被激活。

账户

以太坊使用账户来记录系统状态(比特币使用UTXO)。每个账户存储余额信息、智能合约代码和内部数据存储等。以太坊通过在不同账户之间转移数据,来实现更为复杂的逻辑。

以太坊账户分为两种类型:

  1. 合约账户:存储要执行的智能合约代码,只能被外部账户来调用激活。
  2. 外部账户:以太币拥有者账户,对应到某公钥。账户包括nonce、balance、StorageRoot、codeHash等字段,由个人来控制。

当合约被调用时,存储在其中的智能合约会在矿工处的虚拟机中自动执行,并消耗一定的燃料。燃料(Gas)通过外部账户中的以太币进行购买。

交易

以太坊的交易指从一个账户到另一个账户的交易数据,交易数据可以是以太币或合约执行参数。

以太坊采用交易作为合约执行操作的最小单位。

EIP-1559提案实施之前的交易字段(现在被称为Type 1):

to:目标账户地址 value:转移的以太币数量 nonce:确定交易顺序 gasprice:燃料单价(即1Gas是多少Gwei) gaslimit:交易消耗的最大Gas值 signature:签名信息 data: 交易数据

EIP-1559提案将gasprice替换为以下字段(被称为Type 2):

基本费用(Base Fee):在以太坊上发送交易所需的最低Gas价格 最高优先费用(MaxPriority Fee):用户愿意向矿工支付的Gas价格 最高费用(Max Fee):用户愿意支付的最高Gas价格(基本费用+优先费用)

燃料(Gas)

用于控制某次交易执行指令的上限,防止各种无用的计算浪费。每执行一条合约指令会消耗一定的燃料。(可将以太坊比作一台机器,机器运行需要燃料)

当交易还未执行结束,而燃料消耗完时,合约执行终止并回滚状态,不过已经支付的交易费用无法收回。如果交易终止时还有燃料,则剩余燃料将退还给发送者。

以太坊中,每个操作指令都有明文规定的Gas消耗量。交易消耗的Gas是所有操作指令消耗的Gas之和,交易完成时虚拟机将反馈总消耗Gas量,称为gasused。要支付的手续费即为gasused*gasprice。

图片

EIP-1559之前(Type 1),燃料单价越高,越容易被矿工打包到区块中。若燃料单价设置地较低,则可能需要等待很长时间才能被打包。

EIP-1559之后(Type 2),最高优先费用越高,越容易被矿工打包。

消息

一个合约有能力向其他合约发送消息。这里的“消息”是一个虚拟的对象,它不仅不会被序列化,而且只存在于以太坊的执行环境中。一个消息类似于一笔交易,不过消息是由合约产生的。

例如一个正在执行代码的合约,当执行到CALL语句时,就会产生并执行一个消息。合约之间通过消息来相互作用。

消息内容包括:

  • 消息的发送者(隐含)
  • 消息的接收者
  • 以太币数量
  • 一个可选的数据字段
  • gaslimit值

以太坊虚拟机

以太坊虚拟机是智能合约的运行环境。

同一个智能合约往往需要在多个以太坊虚拟机(多个节点)中同时运行多份,以确保整个区块链数据的一致性和高度容错性。

以太币

以太币是以太坊网络中的货币。以太币主要用于购买Gas支付给矿工。以太币可通过挖矿获得,也可以通过他人转账或直接在交易市场购买。

以太币的最小单位是wei,1ether(以太币)=1018wei1ether(以太币)=1018wei

挖矿

目前以太坊的共识机制与比特币相同,仍然是POW,不过以太坊使用的工作量证明算法是Ethash(比特币使用SHA256)。

Ethash在执行时需要消耗大量内存,这意味着很难制造出专门针对Ethash的芯片(比特币目前有ASIC作为专业的挖矿芯片)。

以太坊计划将POW变更为POS(权益证明),届时将不再需要矿工。

以太坊在实施EIP-1559提案后,由于每次交易都会焚毁基本费(Base Fee),所以以太币可能会成为一个通缩模型。

标签:UTXO,以太,基本知识,比特,区块,合约,交易
From: https://www.cnblogs.com/ok888/p/16860727.html

相关文章

  • 虚拟货币——比特币行情价格分析
    最近挖以太币的朋友们在关注以太坊行情时,一定会发现以太币的价格对比之前上涨了不少。肯定有部分朋友想了解这次上涨的原因,我们特地为此查询了一番。因为比特币相当于虚拟......
  • 数据结构基本知识
    数据结构主要研究非数值计算问题数据结构是带“结构”的数据元素的集合算法+数据结构=程序 数据:是客观事物的符号表示,是所有能输入计算机中并被计算机程序处理的符号......
  • Web3.0 - 比特币
    比特币是区块链技术的一个典型应用。央行发行的数字货币,由银行提供验证、背书。比特币是一个去中心化的数字货币。去中心化的数字货币,需要解决的问题是:谁发行货币怎么......
  • 以太坊调用工具类
    packageeasyJava.controller;importcom.alibaba.fastjson.JSON;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databi......
  • 面向对象基本知识了解
    今日内容详细面向对象核心思路前戏之人狗大战编写代码简单的实现人打狗狗咬人的小游戏(剧情需要)"""推导步骤1:代码定义出人和狗"""person1={ 'name':'jason', ......
  • Mac新手必看Mac入门基本知识图文教程
    你已经是Mac的用户了吗?还是准备入手的新手呢?赶快看看“Mac入门基本知识”吧!macbook系统基础内容简介Mac入门基本知识1、主界面结构图基本知识介绍(如图所示)2、Ma......
  • 14年前,比特币白皮书诞生!是中本聪对全球经济危机的回应?
    14年前,化名中本聪(Satoshi)向密码学家的邮件列表发送了一份长达9页的论文,概述了一种名为比特币(bitcoin)的“点对点电子现金系统”,这便是轰动全球的比特币白皮书。在比特币白皮......
  • 【lwip】07-链路层收发以太网数据帧源码分析
    目录前言7.1链路层概述7.2MAC地址的基本概念7.3以太网帧结构7.4以太网帧结构7.5以太网帧报文数据结构7.6发送以太网数据帧7.7接收以太网数据帧7.8虚拟局域网VLAN源......
  • 堆排序的基本知识
    堆的性质分为大根堆和小根堆,性质为结点的左右孩子大于或小于根节点(1)堆是一颗完全二叉树;(2)小(大)顶堆中的每一个节点都不小于(不大于)它的父节点;(3)堆的插入、删除......
  • 以太网卡、IB网卡的详细介绍以及区别分析
    网卡(NIC)全称为网络接口控制器,也被称为网络适配器或网络接口卡,多用于计算机和服务器上,可通过网络连接线(双绞线、光纤线缆等),与交换机、存储设备、服务器、工作站等设备进行互......