以太坊代币与账户交易

以太的单位

以太币的最小单位是Wei。Wei是一个非常小的单位,1Ether= 1018 Wei,和无限可分也差不了多少了。除了基本单位Wei,为了使用方便还有其他的单位,他们的关系如下:

  • Kwei = 103  Wei
  • Mwei = 106  Wei
  • Gwei = 109  Wei
  • Microether = 1012  Wei
  • Milliether = 1015  Wei
  • Ether / SCC = 1018 Wei

我们一般记住wei , Gwei=109wei,Ether = 1018wei即可。

代币交易过程

交易(Transaction)的过程原理

1.交易发起

指定目标地址和交易金额,以及需要的gas price/gas limit等信息,构建一笔交易并生成Transaction实例。创建的交易json字段定义:

根据这个json字段可生成一个Transaction实例:


Transaction 实例结构


txdata             // txdata字段

From            // 缓存数据:发送方地址

Hash             // 缓存数据:交易Hash

Size             // 缓存数据:交易的大小

其中txdata这个数据结构我们需要用来进行数字签名:

2.交易签名

使用账户私钥对交易进行签名。

当前代币所有者先通过Keccak-256算法计算交易数据的hash值,然后结合账户的私钥,通过ECDSA-secp256k1,也就是椭圆曲线数字签名算法生成签名数据(RSV)并将这个签名附加在transaction实例的末尾,制作成交易单。

我们发现,txdata只有接收方的地址(Recipient)而没有发送方的地址,R,S,V的作用就是我们可以使用ECDSA推导获得from:

经过以上交易实例的构造,我们就可以将实例提交到交易池txpool了。

3.提交交易

签名后的交易会先提交到本地SCC链节点,本地节点先对交易签名进行验证后,把transaction实例的这笔交易加入到交易缓冲池txpool中。提交交易的目标是先把交易放入交易池的队列queue中记录在案,然后再从queue中选一部分放入pending中进行处理。如果发现txpool满了,则依据price中的排序,剔除低油价的交易。

4.节点确认

一个或者多个节点对txpool中的交易的信息验证确认。

生成的交易需要被区块链网络中的矿工节点打包到区块,才能写入到区块链中。矿工会有一个待处理的交易列表,其中的交易是按交易的gasPrice进行排序的,交易的gasPrice越高,处理的优先级就越高。如果交易的gasPrice过低,有可能一直得不到矿工的处理,从而被忽略。

矿工节点选择好要打包的交易之后,就开始了PoW(Proof of Work)挖矿过程,最先发现新的区块的矿工能够将交易打包至区块,并且获取到相应的奖励。节点会确认这个区块所包含的交易是否有效,确认没被重复花费且具有效数位签章后,接受该区块,此时区块才正式接上区块链,无法再窜改资料。

5.广播交易

把交易信息广播给其他结点。

新的区块已经产生,所有的节点都需要对区块进行同步,你的交易会随着区块的同步被同步至所有节点上。所有节点一旦接受该区块后,先前没算完的区块会失效,各节点会重新建立一个区块。每个区块的出块时间大约在10s,随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短,随算力减弱而延长。

原文地址:https://www.cnblogs.com/kumata/p/10865420.html

时间: 2024-10-30 06:48:06

以太坊代币与账户交易的相关文章

以太坊代币合约详析

以太坊代币 在以太坊系统中,存在作为基础货币的 Ether(以太),以及同样可以作为货币使用的 Token(代币). 以太坊与其他加密货币的主要不同在于,以太坊不是单纯的货币,而是一个环境/平台.在这个平台上,任何人都可以利用区块链的技术,通过智能合约来构建自己的项目和DAPPS(去中心化应用). 如果把以太坊理解成互联网,DAPPS则是在上面运行的网页.DAPPS是去中心化的,意味着它不属于某个人,而是属于一群人.DAPPS发布的方式通常是采用被称为 ICO 的众筹方式.简单来说,你需要用你的

创建自己的加密货币MNC——以太坊代币(二)

创建一个基于以太坊平台的分红币MNC,根据持有的代币数量,进行分红的算法.github地址: https://github.com/lxr1907/MNC 1.使用以太坊根据比例换购token MNC 2.定期根据使用用户资金购买的矿机挖ETH,打入该合约,触发分红方法根据token持有比例分红 3.衰减,由于矿机有折旧衰减损坏的概率,token会随着持有时间而衰减. 代码如下 pragma solidity ^0.4.19; contract owned { address public ow

以太坊代币开发虚拟币钱包交易平台开发

以太坊代币开发虚拟币钱包交易平台开发156-3841-3841 作为一种加密数字货币,比特币价格在过去几年里暴涨,到2017年底时曾达到近两万美元,令许多人感到不可思议. 然而自2018年以来,比特币价格开始下跌,特别是在近期上演"大跳水".11月20日,比特币重挫逾16%,跌破4100美元,为去年10月以来的最低水平.比特币的暴跌,也引发其他加密货币大幅下挫.CoinMarketCap数据显示,目前整个加密货币市场价值已跌至约1500亿美元左右,与今年初时的8500亿美元规模相比严重

虚拟币钱包以太坊代币技术开发

虚拟币钱包以太坊代币技术开发156-3841-3841 然而自2018年以来,比特币价格开始下跌,特别是在近期上演"大跳水".11月20日,比特币重挫逾16%,跌破4100美元,为去年10月以来的最低水平.比特币的暴跌,也引发其他加密货币大幅下挫.CoinMarketCap数据显示,目前整个加密货币市场价值已跌至约1500亿美元左右,与今年初时的8500亿美元规模相比严重缩水.市场的大幅波动,引发人们对"加密货币能否成为可靠保值手段"的质疑. 有业内人士认为,此次比

solidity开发以太坊代币智能合约

智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助. 以太坊的应用被称为去中心化应用(DApp),DApp的开发主要包括两大部分: 智能合约的开发 用户界面的开发 在本文中,我们将介绍智能合约的开发语言solidity. 让我们先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节. contract SimpleStorage { uint storedData; functi

科普贴 | 以太坊代币钱包MyEtherWallet使用教程,一步步教你玩转MEW

MyEtherWallet 是一个以太坊的网页钱包,使用非常简单,打开网页就可以使用,源代码开源,不会在服务器上存储用户的钱包信息如私钥和密码.支持 Ledger Wallet.TREZOR 等硬件钱包,功能极为丰富.是一把我们经常会用到的瑞士军刀! Myetherwallet 支持符合 ERC20 标准的代币(即以太坊系代币). 官网:https://www.myetherwallet.com/ ,一定要认准网址. 创建钱包1. 打开官网,将页面切换为中文,设置一个钱包密码(不少于9位,一定要

Erc20Tokens:以太坊代币数据集

Erc20Tokens数据集包含超过1000种主流的以太坊ERC20代币的描述数据清单和图标,可用于钱包等区块链应用的开发,支持使用Java.Python.Php.NodeJs.C#等各种开发语言查询主流ERC20代币的相关数据.下载链接:ERC20代币数据集. 1.数据集概述 以下是ERC20代币数据集中部分代币的图标示意: Erc20Tokens数据集的的当前版本为1.0.0,主要文件清单参见:http://sc.hubwiz.com/codebag/erc20-tokens-dataset

创建自己的区块链合约java版web3接口——以太坊代币(四)

texas-web3j-solidity项目是一个java版本的,使用web3j包和eth网络交互的小程序. 主要实现了以下功能: 1.发布合约 2.发起转账 3.查询交易 4.调用智能合约方法 texas-web3j-solidity项目在官方例子基础上做了以下几点功能性修改: 1.增加texas合约,用于游戏充值提现等功能 2.以太坊测试网络切换为ropsten,该测试网络更容易获取测试eth,地址为:https://www.ropsten.io/#faucet 3.增加spring-boo

创建自己的区块链游戏SLOT——以太坊代币(三)

一个以太坊合约版本的轮盘游戏,向合约转账ETH,有几率获得3,5,10,100倍奖励 合约地址:0x53DA598E70a1505Ad95cBF17fc5DCA0d2c51174b 捐赠ETH地址:0xdc834D429b3098f0568Af873c2d73b08790BF677 github地址:https://github.com/lxr1907/slot-on-ethereum pragma solidity ^0.4.18; contract LxrContract{ //18 dec