导航:首页 > 以太坊区 > 以太坊详解

以太坊详解

发布时间:2023-05-29 09:37:40

⑴ 5、以太坊名词解析

详解参见: 私钥、公钥、地址
以太坊的密钥与比特币作用相同[相当于你在工商、招商、建设等银行设置的密码]

以太坊将明文 密钥 通过 [混入用户自己设置的密码] 加密算法生成的一种JSON格式的字符串,并以文件格式存储,以达到保存密钥的作用。

一系列的由12、15、18、21等不同数量的单词构成。
作用跟Keystore相同,就是给脑子不好使的同学们用的
'JSON是啥...' '这一长串的括号加数字是什么鬼...' '我输入了密码为什么出来了这些东西... 你们的钱包APP是不是有问题啊 ...'

举个花生:

大白话时间:

所有交易都包含以下组件:

⑵ ethtool原理介绍和解决网卡丢包排查思路

之前记录过处理因为LVS网卡流量负载过高导致软中断发生丢包的问题, RPS和RFS网卡多队列性能调优实践 ,对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路,如果你是想了解点对点的丢包解决思路涉及面可能就比较广,不妨先参考之前的文章 如何使用MTR诊断网络问题 ,对于Linux常用的网卡丢包分析工具自然是ethtool。

2020年06月22日 - 初稿

阅读原文 - https://wsgzao.github.io/post/ethtool/

ethtool - utility for controlling network drivers and hardware

ethtool is the standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. It can be used to:

Most features are dependent on support in the specific driver. See the manual page for full information.

ethtool 用于查看和修改网络设备(尤其是有线以太网设备)的驱动参数和硬件设置。你可以根据需要更改以太网卡的参数,包括自动协商、速度、双工和局域网唤醒等参数。通过对以太网卡的配置,你的计算机可以通过网络有效地进行通信。该工具提供了许多关于接驳到你的 Linux 系统的以太网设备的信息。

接收数据包是一个复杂的过程,涉及很多底层的技术细节,但大致需要以下几个步骤:

NIC 在接收到数据包之后,首先需要将数据同步到内核中,这中间的桥梁是 rx ring buffer 。它是由 NIC 和驱动程序共享的一片区域,事实上, rx ring buffer 存储的并不是实际的 packet 数据,而是一个描述符,这个描述符指向了它真正的存储地址,具体流程如下:

当驱动处理速度跟不上网卡收包速度时,驱动来不及分配缓冲区,NIC 接收到的数据包无法及时写到 sk_buffer ,就会产生堆积,当 NIC 内部缓冲区写满后,就会丢弃部分数据,引起丢包。这部分丢包为 rx_fifo_errors ,在 /proc/net/dev 中体现为 fifo 字段增长,在 ifconfig 中体现为 overruns 指标增长。

这个时候,数据包已经被转移到了 sk_buffer 中。前文提到,这是驱动程序在内存中分配的一片缓冲区,并且是通过 DMA 写入的,这种方式不依赖 CPU 直接将数据写到了内存中,意味着对内核来说,其实并不知道已经有新数据到了内存中。那么如何让内核知道有新数据进来了呢?答案就是中断,通过中断告诉内核有新数据进来了,并需要进行后续处理。

提到中断,就涉及到硬中断和软中断,首先需要简单了解一下它们的区别:

当 NIC 把数据包通过 DMA 复制到内核缓冲区 sk_buffer 后,NIC 立即发起一个硬件中断。CPU 接收后,首先进入上半部分,网卡中断对应的中断处理程序是网卡驱动程序的一部分,之后由它发起软中断,进入下半部分,开始消费 sk_buffer 中的数据,交给内核协议栈处理。

通过中断,能够快速及时地响应网卡数据请求,但如果数据量大,那么会产生大量中断请求,CPU 大部分时间都忙于处理中断,效率很低。为了解决这个问题,现在的内核及驱动都采用一种叫 NAPI(new API)的方式进行数据处理,其原理可以简单理解为 中断 + 轮询,在数据量大时,一次中断后通过轮询接收一定数量包再返回,避免产生多次中断。

(1) RX errors

表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。

(2) RX dropped

表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。

(3) RX overruns

表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做 affinity 而造成的丢包。

(4) RX frame

表示 misaligned 的 frames。

网线上的packet首先被网卡获取,网卡会检查packet的CRC校验,保证完整性,然后将packet头去掉,得到frame。网卡会检查MAC包内的目的MAC地址,如果和本网卡的MAC地址不一样则丢弃(混杂模式除外)。

网卡将frame拷贝到网卡内部的FIFO缓冲区,触发硬件中断。(如有ring buffer的网卡,好像frame可以先存在ring buffer里再触发软件中断(下篇文章将详细解释Linux中frame的走向),ring buffer是网卡和驱动程序共享,是设备里的内存,但是对操作系统是可见的,因为看到linux内核源码里网卡驱动程序是使用kcalloc来分配的空间,所以ring buffer一般都有上限,另外这个ring buffer size,表示的应该是能存储的frame的个数,而不是字节大小。另外有些系统的 ethtool 命令 并不能改变ring parameters来设置ring buffer的大小,暂时不知道为什么,可能是驱动不支持。)

网卡驱动程序通过硬中断处理函数,构建sk_buff,把frame从网卡FIFO拷贝到内存skb中,接下来交给内核处理。(支持napi的网卡应该是直接放在ring buffer,不触发硬中断,直接使用软中断,拷贝ring buffer里的数据,直接输送给上层处理,每个网卡在一次软中断处理过程能处理weight个frame)

过程中,网卡芯片对frame进行了MAC过滤,以减小系统负荷。(除了混杂模式)

网卡驱动程序将IP包添加14字节的MAC头,构成frame(暂无CRC)。Frame(暂无CRC)中含有发送端和接收端的MAC地址,由于是驱动程序创建MAC头,所以可以随便输入地址,也可以进行主机伪装。

驱动程序将frame(暂无CRC)拷贝到网卡芯片内部的缓冲区,由网卡处理。

网卡芯片将未完全完成的frame(缺CRC)再次封装为可以发送的packet,也就是添加头部同步信息和CRC校验,然后丢到网线上,就完成一个IP报的发送了,所有接到网线上的网卡都可以看到该packet。

产生中断的每个设备都有一个相应的中断处理程序,是设备驱动程序的一部分。每个网卡都有一个中断处理程序,用于通知网卡该中断已经被接收了,以及把网卡缓冲区的数据包拷贝到内存中。

当网卡接收来自网络的数据包时,需要通知内核数据包到了。网卡立即发出中断。内核通过执行网卡已注册的中断处理函数来做出应答。中断处理程序开始执行,通知硬件,拷贝最新的网络数据包到内存,然后读取网卡更多的数据包。

这些都是重要、紧迫而又与硬件相关的工作。内核通常需要快速的拷贝网络数据包到系统内存,因为网卡上接收网络数据包的缓存大小固定,而且相比系统内存也要小得多。所以上述拷贝动作一旦被延迟,必然造成网卡FIFO缓存溢出 - 进入的数据包占满了网卡的缓存,后续的包只能被丢弃,这也应该就是ifconfig里的overrun的来源。

当网络数据包被拷贝到系统内存后,中断的任务算是完成了,这时它把控制权交还给被系统中断前运行的程序。

网卡的内核缓冲区,是在PC内存中,由内核控制,而网卡会有FIFO缓冲区,或者ring buffer,这应该将两者区分开。FIFO比较小,里面有数据便会尽量将数据存在内核缓冲中。

网卡中的缓冲区既不属于内核空间,也不属于用户空间。它属于硬件缓冲,允许网卡与操作系统之间有个缓冲;

内核缓冲区在内核空间,在内存中,用于内核程序,做为读自或写往硬件的数据缓冲区;

用户缓冲区在用户空间,在内存中,用于用户程序,做为读自或写往硬件的数据缓冲区;

另外,为了加快数据的交互,可以将内核缓冲区映射到用户空间,这样,内核程序和用户程序就可以同时访问这一区间了。

对于有ring buffer的网卡,ring buffer是由驱动与网卡共享的,所以内核可以直接访问ring buffer,一般拷贝frames的副本到自己的内核空间进行处理(deliver到上层协议,之后的一个个skb就是按skb的指针传递方式传递,直到用户获得数据,所以,对于ring buffer网卡,大量拷贝发生在frame从ring buffer传递到内核控制的计算机内存里)。

网卡工作在数据链路层,数据量链路层,会做一些校验,封装成帧。我们可以查看校验是否出错,确定传输是否存在问题。然后从软件层面,是否因为缓冲区太小丢包。

一台机器经常收到丢包的报警,先看看最底层的有没有问题:

(1) 查看工作模式是否正常

(2) 查看检验是否正常

Speed,Duplex,CRC 之类的都没问题,基本可以排除物理层面的干扰。

Why rx_crc_errors incrementing in the receive counter of ethtool -S output?

Check ethtool -S output and find where are the drops and errors.

Check the numbers corresponding to rx_crc_errors .

显示了p1p1 的接口类型,连接模式,速率等等信息,以及当前是否连接了网线(如果是网线Supported ports 就是TP,如果是光纤则显示Fiber),这里例举下3个重要关键词

Supported ports: [ FIBRE ]
Speed: 10000Mb/s
Link detected: yes

ethtool

Counters Troubleshooting for Linux Driver

Why do I see rx_crc_errors in ethtool output?

ping请求错误分析

ifconfig 命令详解

ethtool 命令详解

ethtool 解决网卡丢包严重和网卡原理

⑶ 《以太坊技术详解与实战》pdf下载在线阅读全文,求百度网盘云资源

《以太坊技术详解与实战》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1HmyD7a7cRfM4ICqhAk3PeA

?pwd=vpub 提取码:vpub
简介:本书得到以太坊创始人、首席科学家Vitalik Buterin认可与推荐,是为数不多系统性介绍以太坊的书籍,涵盖架构、核心概念、部署、智能合约实践等,并涵盖多个读者关心的热点主题。

⑷ 【ETH钱包开发03】web3j转账ETH

在之前的文章中,讲解了创建、导出、导入钱包。
【ETH钱包开发01】创建、导出钱包
【ETH钱包开发02】导入钱包

本文主要讲解以太坊转账相关的一些知识。交易分为ETH转账和ERC-20 Token转账,本篇先讲一下ETH转账。

1、解锁账户发起交易。钱包keyStore文件保存在geth节点上,用户发起交易需要解锁账户,适用于中心化的交易所。

2、钱包文件离线签名发起交易。钱包keyStore文件保存在本地,用户使用密码+keystore的方式做离线交易签名来发起交易,适用于dapp,比如钱包。

本文主要讲一下第二种方式,也就是钱包离线签名转账的方式。

交易流程
1、通过keystore加载转账所需的凭证Credentials
2、创建一笔交易RawTransaction
3、使用Credentials对象对交易签名
4、发起交易

注意以下几点:

1、Credentials
这里,我是通过获取私钥的方式来加载 Credentials

还有另外一种方式,通过密码+钱包文件keystore方式来加载 Credentials

2、nonce

nonce是指发起交易的账户下的交易笔数,每一个账户nonce都是从0开始,当nonce为0的交易处理完之后,才会处理nonce为1的交易,并依次加1的交易才会被处理。

可以通过 eth_gettransactioncount 获取nonce

3、gasPrice和gasLimit
交易手续费由gasPrice 和gasLimit来决定,实际花费的交易手续费是 gasUsed * gasPrice 。所有这两个值你可以自定义,也可以使用系统参数获取当前两个值

关于 gas ,你可以参考我之前的一篇文章。
以太坊(ETH)GAS详解

gasPrice和gasLimit影响的是转账的速度,如果gas过低,矿工会最后才打包你的交易。在app中,通常给定一个默认值,并且允许用户自己选择手续费。

如果不需要自定义的话,还有一种方式来获取。获取以太坊网络最新一笔交易的 gasPrice ,转账的话, gasLimit 一般设置为21000就可以了。

Web3j还提供另外一种简单的方式来转账以太币,这种方式的好处是不需要管理nonce,不需要设置gasPrice和gasLimit,会自动获取最新一笔交易的gasPrice,gasLimit 为21000(转账一般设置成这个值就够用了)。

这个问题,我想是很多朋友所关心的吧。但是到目前为止,我还没有看到有讲解这方面的博客。

之前问过一些朋友,他们说可以通过区块号、区块哈希来判断,也可以通过Receipt日志来判断。但是经过我的一番尝试,只有 BlockHash 是可行的,在web3j中根据 blocknumber 和 transactionReceipt 都会报空指针异常。

原因大致是这样的:在发起一笔交易之后,会返回 txHash ,然后我们可以根据这个 txHash 去查询这笔交易相关的信息。但是刚发起交易的时候,由于手续费问题或者以太网络拥堵问题,会导致你的这笔交易还没有被矿工打包进区块,因此一开始是查不到的,通常需要几十秒甚至更长的时间才能获取到结果。我目前的解决方案是轮询的去刷 BlockHash ,一开始的时候 BlockHash 的值为0x00000000000,等到打包成功的时候就不再是0了。

这里我使用的是rxjava的方式去轮询刷的,5s刷新一次。

正常情况下,几十秒内就可以获取到区块信息了。

区块确认数=当前区块高度-交易被打包时的区块高度。

⑸ 《以太坊技术详解与实战》pdf下载在线阅读,求百度网盘云资源

《以太坊技术详解与实战》(闫莺)电子书网盘下载免费在线阅读

资源链接:

链接:https://pan..com/s/1g6YtL-Ws5Ukd6KksLQ_S0g 密码:os8v

书名:以太坊技术详解与实战

作者:闫莺

豆瓣评分:7.7

出版社:机械工业出版社

出版年份:2018-4-3

页数:226

内容简介:

以太坊创始人、首席科学家Vitalik Buterin倾力推荐,工业界与学术界区块链专家联合撰写,权威性和实用性毋庸置疑。本书深入剖析以太坊架构、核心部件、智能合约编写与开发案例等关键技术,并涵盖以太坊数据分析、性能优化、隐私与数据安全等前沿实践与进展。

第1章 介绍区块链背景、基本原理与应用,以对区块链有整体性了解。

第2章 详解以太坊架构与组成,涵盖以太坊架构、核心概念与技术、客户端与域名服务等,是后续学习的基础。

第3章 带领读者部署不同网络类型以太坊区块链,含有多种技巧与脚本样例。

第4章 剖析智能合约与以太坊虚拟机的原理,这两者是以太坊的魅力所在,了解后可以更好地开发智能合约。

第5~6章 手把手教学,给出具体编写、编译、部署智能合约的方法和案例,密集锻炼读者智能合约编程与实践能力。

第7章 剖析以太坊上数字资产定义的原理和方法,包括CryptoKitties养猫游戏基于的ERC 721合约标准,到此读者可以编写以太坊应用了。

第8章 会进一步对如何查看、分析以太坊公有链数据的工具和方法进行介绍。

第9~10章 是前沿技术的探讨,涵盖以太坊性能优化和隐私保护技术。这些技术都在比较初级的阶段,读者可以一边阅读一边思考,提出自己的想法和建议。

作者简介:

闫莺 (博士),微软亚洲研究院主管研究员,区块链领域负责人,微软Coco区块链平台中国负责人。中国软件协会区块链创业学院及区块链专委会专家、中国电子学会区块链专家委员。专注与区块链技术、大数据分析、数据库以及云计算的研究。在区块链领域获得多项国际专利,并在数据库和云计算 领域国际顶级会议和期刊发表论文30余篇。参与翻译《区块链项目开发指南》。

郑凯 (博士),电子科技大学教授,博士生导师,澳大利亚昆士兰大学计算机科学博士。主要研究领域为区块链数据管理,以及时空数据挖掘、不确定数据库、内存数据库、图数据库等。在数据库、数据挖掘等领域的重要会议和期刊发表论文100余篇,被累积引用1500余次。2013年获澳大利亚优秀青年基金,2015年获数据库顶级会议ICDE最佳论文奖。担任数据库领域知名国际会议的程序主席和联合执行主席,国际SCI期刊客座编委,以及数十个国际等级会议的程序委员。

郭众鑫 微软亚洲研究院研发工程师,微软Coco区块链平台核心开发者。专注于区块链技术、大数据分析、分布式系统等方面的研究和开发。

⑹ 如何快速辨别网卡ID与物理网卡的对应关系(即eth

如何快速辨别网卡ID与物理网卡的对应关系
一般购买的服务器都有4个网卡,这个时候在安装好服务器后,配置IP的时候就郁闷了
如是一个浪潮8560M2服务器安装Redhat后的网卡显示:
[root@DBSERVER51 ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:58
inet addr:192.168.4.10 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40428 errors:0 dropped:0 overruns:0 frame:0
TX packets:392 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3413500 (3.2 MiB) TX bytes:44521 (43.4 KiB)
Memory:faee0000-faf00000

eth1 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:59
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fae60000-fae80000

eth2 Link encap:Ethernet HWaddr 00:25:90:5A:15:B6
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fafe0000-fb000000

eth3 Link encap:Ethernet HWaddr 00:25:90:5A:15:B7
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:faf60000-faf80000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:660 (660.0 b) TX bytes:660 (660.0 b)
从一个机房搬下来时,忘记标记了。这个时候还是想修改eth0作为通信口。但是一个一个插拔比较麻烦,于是就想能不能有个好办法,毕竟Linux不像Windows那样直观,打开网络连接就可以看到。这个时候就要用到ethtool这样一个命令,命令详解如下:
命令描述:
ethtool 是用于查询及设置网卡参数的命令。
ethX是以太网卡的名称,Linux系统将检测到的第一块以太网卡命名为eth0, 第二块为eth1,…….。
使用概要:
ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等
ethtool –h //显示ethtool的命令帮助(help)
ethtool –i ethX //查询ethX网口的相关信息
ethtool –d ethX //查询ethX网口注册性信息
ethtool –r ethX //重置ethX网口到自适应模式
ethtool –S ethX //查询ethX网口收发包统计
ethtool –s ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] //设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商
ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX
ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]
ethtool [-C] ethX [adaptive-rx on|off] [adaptive-tx on|off] [rx-usecs N] [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N][pkt-rate-low N][rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] [tx-frames-lowN] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] [tx-usecs-high N] [tx-frames-high N] [sample-interval N]
ethtool [-G] ethX [rx N] [rx-mini N] [rx-jumbo N] [tx N]
ethtool [-e] ethX [raw on|off] [offset N] [length N]
ethtool [-E] ethX [magic N] [offset N] [value N]
ethtool [-K] ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]
ethtool [-p] ethX [N]
ethtool [-t] ethX [offline|online]
ethtool [-s] ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
[wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]
标志
-a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off
-A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off
-c display the Coalesce information of the specified ethernet card
-C Change the Coalesce setting of the specified ethernet card
-g Display the rx/tx ring parameter information of the specified ethernet card
-G change the rx/tx ring setting of the specified ethernet card
-i 显示网卡驱动的信息,如驱动的名称、版本等
-d 显示register mp信息, 部分网卡驱动不支持该选项
-e 显示EEPROM mp信息,部分网卡驱动不支持该选项
-E 修改网卡EEPROM byte
-k 显示网卡Offload参数的状态:on 或 off,包括rx-checksumming、tx-checksumming等。
-K 修改网卡Offload参数的状态
-p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。
-r 如果auto-negotiation模块的状态为on,则restarts auto-negotiation
-S 显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
-t 让网卡执行自我检测,有两种模式:offline or online
-s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等

⑺ 以太币的发行

以太币

天天在说的以太币,到底是怎么产生和发行的,这里做个简单介绍。

首先以太坊币是以太坊发行的一种数字货币,这个我想大多数人都清楚。

以太币来源

那么以太币的来源包括以下几部分:

矿前奖励:预付款给与贡献者6000万个以太币

区块的奖励:目前挖出一个区块奖励5个以太币给矿工。

叔块奖励:这个和比特币不同,矿工在挖出一个区块后,但是并不是在主链上,那么这个区块叫做叔区。如果这个叔区块在后续挖矿中作为叔区块被引用了,那么挖出这个区块的矿工获得7/8的区块奖励,也就是4.375个以太币,且另外引用这个区块的矿工获得0.15个以太币,注意,这里的引用最多两个。

比特币的总量是2100万个,那么以太币也不是无限生成的,每年以太币发行1800万。之前笔者文章中有提到过,这个数字货币因为密钥的丢失,所以每年的发行和意外的丢失会达到一个动态的平衡。并不是你看官方数据有多少就真正有多少在流通,这个应该能理解。

以太坊在不久将来会采用casper的机制,这个和目前的GHOST机制不一样。具体的机制还待看。

矿工角度来看

从矿工的角度来看待以太币,那么就分为三块:

挖矿的奖励,这个还是5个以太币。(固定收益)

交易的手续费,之前就有人一直在问万一哪天比特币2100万挖完之后,挖矿如何获得收益,那么交易费就是其中的一项收益,以太坊上交易都会带上交易费用,那么这个也就是矿工的一部分所得。(动态收益)

叔区块收益,上文就提到过的,这个区块如果有叔区块,那么从叔区块中获得1/32个以太币也就是0.15个以太币的收益。且每个区块至多引用两个叔区块,被引用过的区块不能再被引用。(动态收益)

以太币的单位:

基本单位为wei,下表具体是各个比例:

单位维度个数 (wei)

wei1 wei1000

Kwei1e3 wei1000000

Mwei1e6 wei1000000000

Gwei1e9 wei1000000000000

microether1e12 wei10000000000000000

milliether1e15 wei10000000000000000000

ether1e18 wei10000000000000000000000

叔区块奖励

回过头感觉有必要再说下叔区块的奖励: 

叔区块顾名思义是区块的父区块的兄弟区块。那么区块链只有一条主链,故叔区块不在主链上,导致叔区块的原因,由于是网络的延迟没有同步,那么一个叔区块如果引用在有效的主链上,挖出叔区块的矿工获得4.375个以太币(区块奖励的7/8)。上文说到叔区块的引用获得奖励,那么这个奖励对挖到叔区块的矿工也是有一个间隔层数的关系。具体如下:

间隔的层数获取的比例以太币

17/84.375

26/83.75

35/83.125

44/82.5

53/81.875

62/81.25

参考:《以太坊技术详解与实战》

⑻ 【以太坊易错概念】nonce, 公私钥和地址,BASE64/BASE58,

以太坊里的nonce有两种意思,一个是proof of work nonce,一个是account nonce。

在智能合约里,nonce的值代表的是该合约创建的合约数量。只有当一个合约创建另一个合约的时候才会增加nonce的值。但是当一个合约调用另一个合约中的method时 nonce的值是不变的。
在以太坊中nonce的值可以这样来获取(其实也就是属于一个账户的交易数量):

但是这个方法只能获取交易once的值。目前是没有内置方法来访问contract中的nonce值的

通过椭圆曲线算法生成钥匙对(公钥和私钥),以太坊采用的是secp256k1曲线,
公钥采用uncompressed模式,生成的私钥为长度32字节的16进制字串,公钥为长度64的公钥字串。公钥04开头。
把公钥去掉04,剩下的进行keccak-256的哈希,得到长度64字节的16进制字串,丢掉前面24个,拿后40个,再加上"0x",即为以太坊地址。

整个过程可以归纳为:

2)有些网关或系统只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,而且base64特别适合在http,mime协议下快速传输数据。Base64使用【字母azAZ数字09和+/】这64个字符编码。原理是将3个字节转换成4个字节(3 X 8) = 24 = (4 X 6)
当剩下的字符数量不足3个字节时,则应使用0进行填充,相应的,输出字符则使用'='占位,因此编码后输出的文本末尾可能会出现1至2个'='。

1)Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。

Base58Check是一种常用在比特币中的Base58编码格式,增加了错误校验码来检查数据在转录中出现的错误。 校验码长4个字节,添加到需要编码的数据之后。校验码是从需要编码的数据的哈希值中得到的,所以可以用来检测并避免转录和输入中产生的错误。使用 Base58check编码格式时,编码软件会计算原始数据的校验码并和结果数据中自带的校验码进行对比。二者不匹配则表明有错误产生,那么这个 Base58Check格式的数据就是无效的。例如,一个错误比特币地址就不会被钱包认为是有效的地址,否则这种错误会造成资金的丢失。

为了使用Base58Check编码格式对数据(数字)进行编码,首先我们要对数据添加一个称作“版本字节”的前缀,这个前缀用来明确需要编码的数 据的类型。例如,比特币地址的前缀是0(十六进制是0x00),而对私钥编码时前缀是128(十六进制是0x80)。 表4-1会列出一些常见版本的前缀。

接下来,我们计算“双哈希”校验码,意味着要对之前的结果(前缀和数据)运行两次SHA256哈希算法:

checksum = SHA256(SHA256(prefix+data))
在产生的长32个字节的哈希值(两次哈希运算)中,我们只取前4个字节。这4个字节就作为校验码。校验码会添加到数据之后。

结果由三部分组成:前缀、数据和校验码。这个结果采用之前描述的Base58字母表编码。下图描述了Base58Check编码的过程。

相同:

1) 哈希算法、Merkle树、公钥密码算法
https://blog.csdn.net/s_lisheng/article/details/77937202?from=singlemessage

2)全新的 SHA-3 加密标准 —— Keccak
https://blog.csdn.net/renq_654321/article/details/79797428

3)在线加密算法
http://tools.jb51.net/password/hash_md5_sha

4)比特币地址生成算法详解
https://www.cnblogs.com/zhaoweiwei/p/address.html

5)Base58Check编码实现示例
https://blog.csdn.net/QQ604666459/article/details/82419527

6) 比特币交易中的签名与验证
https://www.jianshu.com/p/a21b7d72532f

⑼ Tendermint详解

摘要

您熟知并喜爱的区块链有一个相当严格的结构。作为一名开发人员,在这种情况下您有两种选择:在受限的环境中构建应用程序,或者进行代码分叉并创建自己的链。然而,创建自己的链并非易事——您还需要启动网络并决定所使用的共识机制。

Tendermint是用来启动区块链的开源软件,让您可以用任何语言编写应用程序。更厉害的是,它可以与其他区块链进行通信。


创建加密货币或区块链网络需要投入大量工作,远远不止于初始化数据库。它需要在安全性、去中心化和可扩展性之间为激励和权衡取得微妙的平衡。

有些团队已经 探索 了一系列不同的方法,来构建最强大的区块链生态系统,这也在情理之中了。在这篇文章中,我们将详细了解其中一种方法:Tendermint。


如果您对区块链有所了解,就会感觉Tendermint的大部分内容都似曾相识。在深入研究之前,我们首先回顾一些关键概念。


Tendermint是一种 区块链堆栈 。比特币和以太坊等同样也是区块链堆栈。请记住,这并非只关乎区块链数据库本身,还关乎节点的对等网络、它们如何相互作用,以及您通过交易和智能合约可以做到的事情。其目标是在即便不信任其他任何人的情况下,让所有人都统一一种 状态 (比如数据库的快照)。

在很大程度上,如今的主要区块链已经想出了达成这一点的“秘籍”。然而,它们通常依赖于 一体化架构 :这是一个软件工程概念,意味着组件相互连接且相互依赖。您不能从中取走一部分,然后插入到别的架构中。

如果您想保证灵活性,一体化架构并非理想的选择。在相反类型的模型(具有 模块化架构 )中,您可以在不必担心破坏任何架构的情况下调整单个组件。对于一体化架构,您在升级单个组件时必须确保每个组件保持兼容。

现在,我们理解了其中的差别,可以继续来了解Tendermint协议。


您可能已经知道,比特币最大的创新之处在于它解决了所谓的 拜占庭将军问题 。在这里我们不会详细讨论这个问题(如果您感兴趣,请参阅我们关于拜占庭容错的文章)。您只需要知道,它详细说明了参与者必须在分布式环境中进行通信的场景。

这些参与者不知道其他人是否在撒谎,也不知道他们之间发送的消息是否被篡改。即便存在这些问题,如果参与者可以针对一组事实达成一致,则系统会被认为存在 拜占庭容错 。

显然,在去中心化的环境中,正确把握这一点至关重要。不具有拜占庭容错的加密货币并不能真正发挥作用——您需要某种中心化组织进行协调,这就与目的背道而驰。如果很多数字货币一样,比特币通过使用工作量证明(PoW)共识算法来解决这个问题。


我们已经了解一体化/模块化架构之间的区别,也知道去中心化加密货币网络需要具有拜占庭容错能力。接下来我们谈谈我们通常在区块链中看到的三层架构: 应用 层、 共识 层和 网络 层。

共识层和网络层是让网络节点相互通信并尽量就一组事实达成一致的地方。应用层则可让您自行进行操作——好比以太坊的去中心化应用程序和智能合约或者比特币中的自定义交易。

然而,Tendermint是公司的名称(由最初撰写白皮书的开发人员Jae Kwon创立),而Tendermint Core是这家公司正在开发的实际软件。更具体地说,这款软件有两个主要组件:核心共识引擎(Tendermint core)和应用程序接口(ABCI)。

Tendermint Core是一个能够实现容错的系统。本质上,它是一台大型分布式计算机,可在同一时间向每个人显示相同的状态。只要至少三分之二的参与者是诚实的,一切就会顺利进行。但几乎每个区块链都是这样的,难道不是吗?它究竟有什么特别之处?

首先,Tendermint Core使用的共识机制是权益证明(PoS)。每个周期从一组验证者中选择一个随机节点。随后,该节点必须提出下一个区块(在所谓的 循环 系统上进行)。如果其他验证者对它满意,就会添加新的区块,并更新链。结果可以即时确定——与比特币或以太坊不同,它不需要等待确认来确保您的交易有效。

别着急,它还有其他特色!Tendermint Core采用模块化架构,应用层与共识层和网络层分离。简而言之,这意味着您可以将自己的应用程序层插入到堆栈中,而无需担心繁杂的激励机制或共识算法。

这对终端用户来说并不值得大惊小怪。但对于开发人员来说,能够利用现有框架就意味着他们可以直接构建应用程序,而无需建立整个网络。来自区块链的数据可以通过管道传输到集成层,让开发人员可以用任何语言编写软件。

神奇的事情发生在所谓的应用程序区块链界面(或简称ABCI)上。您可以把它想象成树莓派电脑上的GPIO引脚。您可将各种第三方组件连接到这些引脚,从LED到精心设计的植物洒水系统。ABCI以类似的方式定义了区块链以及在区块链上运行的应用程序之间的边界。


应用程序接口和共识机制的分离为分布式应用程序提供了更大的灵活性,可以将任何编程语言合并到它们的业务逻辑当中。

您只需要看看Ethermint这个具体示例就可以知道它的用处:Ethermint采用了以太坊代码库,删除了工作量证明机制,并将以太坊虚拟机建立在Tendermint之上。

这使得一些有趣的操作成为可能。首先,以太坊开发人员可轻松将他们的智能合约移植到新引擎上,或者使用Solidity语言编写新的合约。除了提供以太坊功能之外,Ethermint还可作为以太坊权益证明,让我们一睹Casper在以太坊2.0中实现的样子。


“区块链互联网”的承诺吸引了许多人使用Tendermint协议。互操作性是加密货币领域期待已久的一个补充,因为它意味着数百个单独的区块链将变得交叉兼容。

目前,Cosmos SDK已投入大量工作,Cosmos SDK是一个开源框架,让任何人都能创建特定于应用程序的公共或私有区块链。随后,这些区块链可以通过所谓的Cosmos Hub接入更广泛的Cosmos网络,并在那里与其他区块链进行交流。

很多热门的项目已经使用Cosmos SDK来构建,比如BSC、KAVA、Band Protocol、Terra和IRISnet。

作为一个区块链引擎,Tendermint已经引起了加密货币领域众多利益相关者的注意,包括开发人员和终端用户。

⑽ 12个NFT重点热词详解

12个NFT重点热词解析

NFT定义:即非同质化代币,NFT是映射笑裤特定资产的非同质化通证,本质上是基于以太坊的智能合约。

特点:

标记特定资产的所有权

真实性与唯一性

锚定非同质化资产价值

FT定义:即同质化代币。

特点:

能够替换

统一性

可接近无穷拆分

区块链定义:是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、防篡改、防抵赖的技术体系。

特点:

去中心化

开放性、安全性

独立性、匿名性

智能合约定义:指以信息化方式传播、验证或执行合同的计算机协议。

特点:

没有第三方可以进行可信交易

交易可追踪且不可逆转

目的:

提供优于传统合约的安全方法

减少合约相关交易成本

哈希算法:哈希算法可以将一个数据转换为一个标志,这个标志和判升祥源数据的每一个字节都有十分紧密的关系。

ETH:即以太币,被视为比特币2.0版,采用与比特币不同的区块链技术以太坊。

元宇宙:元宇宙是一套吸纳了信息革命、互联网革命、人工智能革命,以及 VR、AR、MR,特别是游戏引警在内的虚拟现实技术革命的成果,向人掘搏类展现出构建与传统物理世界平行的全息数字世界的全新理念与体系。

DeFi:即去中心化金融,是指在可编程的公有区块链网络上搭建的,以加密货币价值错定、借贷、互换等类金融活动为功能目标,由一系列智能合约和应用程序,共同构成的区块链应用项目。

DApp:即分布式应用或去中心化,应用指底层区块链平台衍生的各种分布式应用程序,一般是开源和去中心化。

Flow链

定义:是一个快速,去中心化且对开,发人员友好的区块链。

目的:为下一代应用程序、游戏以及数字资产提供动力。

Gas费:Gas是用于测量在以太坊区块链上执行特定操作所需工作量的单位,Gas费是以太坊首创的一个概念。说白了就是过路费,发起一笔交易,执行一段程序,就需要掏钱。

IPFS

定义:IPFS是一个分布式的web,点到点超媒体协议。

目的:打造一个更加开放、快速、安全的互联网。

阅读全文

与以太坊详解相关的资料

热点内容
比特币量化最准APP 浏览:193
映泰tb250btc8卡设置 浏览:238
什么叫算力平方姓名啊 浏览:519
算力蜂送的算力能挖多少 浏览:102
经历比特币牛熊 浏览:513
哪款服务器适合挖比特币 浏览:668
比特币需要内存吗 浏览:925
赢家比特币交易网 浏览:901
比特币病毒提示信息 浏览:172
比特币涨万倍 浏览:979
比特币交易网手机充值卡 浏览:590
类似BTC的片 浏览:927
比特币与以太坊哪个好 浏览:114
东方财富如何搜索比特币 浏览:958
什么影响比特币涨跌 浏览:542
谈谈区块链08 浏览:102
帮买虚拟货币还给钱 浏览:250
介绍以太坊源码的书 浏览:616
btc仓库密码忘记了 浏览:504
比特魔方怎么购币 浏览:390