以太坊 EIP-4844 简述
简述是由Vitalik Buterin和其他来自以太坊生态系统的程序员共同创建的,它关注的是分片技术。
目的EIP-4844的主要目的是在不牺牲去中心化的情况下,降低网络上的gas费用,特别是对rollup解决方案。Arbitrum和Optimism等rollup解决方案可以将gas费用降低100到1000倍。
EIP-4844 提案是作为以太坊2.0更新完成之前的临时解决方案。该提案解释了一种新方法,以帮助划分交易中所需的信息,如验证规则和交易格式,而无需实际实现任何分片。
这是一个很大的EIP,细分下来,需要用很多篇文章才能讲完整个EIP的细节经及EIP-4844要做的事。
背景每个区块 12 秒的出块时间 TPS 大概为 13~30 笔交易左右,但根据目前已知以太坊的 TPS 最高可以达到每秒 45 笔交易。以太坊做为最主流的区块链,这个TPS就非常拉夸,还要号称世界计算机。
所以想要成为 “世界计算机” 的以太坊每秒最多处理 45 笔交易的性能实在是太弱了。所以以太坊迫切需要扩容来解决性能问题。
以太坊由于智能合约的存在,每个交易的内容各不相同,所以每个区块可以处理多少笔交易( ...
Merkle Tree、Merkle Patricia Tree
前言如果是接触区块链开发相关的话题,Merkle Tree 是一个必需要了解的话题。BTC和ETH都使用这项技术,但是数据结构不同。应用侧重点也不同。
用意Merkle tree
注意这里的虚线,最后的叶子节点是真正挂数据的节点。
Merkle Patricia TreeTODO
以太坊 Merkle Patricia Tree 应用参考链接https://en.wikipedia.org/wiki/Merkle_tree
ethereum-geth常用操作
前言eth已经2.0了,但是1.0除了挖矿之外大部分功能都还是一样的。
geth 能做什么
与eth链交互:console
查看区块链状态
管理账号: personal
发送交易:
挖矿 miner
交互操作: console通过console启动,可以进行一系统的操作。
1.连接eth主网默认连接最新的主网。
--datadir: 数据存放目录,不指定默认:/home/$user/.ethereum
1geth --datadir /data/geth --goerli console
2.连接eth测试网--goerli: 加入 goerli测试网--rpcapi: 开启rpc服务,开启后才可以进行操作
1geth --datadir "/data/geth" --rpc --rpcport 8545 --rpcapi "personal,eth,net,web3,admin" --rpccorsdomain "*" --goerli console
节点管理: admin自己搭建节点,第一步是要能使用,如果不 ...
ethereum原理-RLP编码
简述RLP(Recursive Length Prefix),中文翻译过来叫递归长度前缀编码,它是以太坊序列化所采用的编码方式。RLP主要用于以太坊中数据的网络传输和持久化存储。为什么要说这个东西,因为ETH在构建状态树的时候,使用到了这个编码,有比较强的关联性。
为什么要有RLP这种编码?是为了通用性,使数据成为平台无关性的数据。
递归长度前缀的目的在于,对任意嵌套的二进制数据数组进行编码,而递归长度前缀是用于序列化以太坊执行层中对象的主要编码方法。 递归长度前缀的唯一目的是对结构进行编码;而对特定数据类型(例如字符串、浮点数)进行编码的工作,则留给高阶协议;但正递归长度前缀整数必须以不带前导零的大端序二进制形式表示(从而使整数值零相当于空字节数组)。 带有前导零的反序列化正整数被视为无效。 字符串长度的整数表示也必须以这种方式编码,有效载荷中的整数也是如此。
意思就是说,底层存储的数据要保持一致,如果通过别的工具序列化出来的二进制数据,具有平台相关性,所以索性自己规定一种编码格式,上层使用者,自行解码。
编码RLP主要用于以太坊中数据的网络传输和持久化存储。分四种情况:1.单一 ...
ethereum--Account账户模型
以太坊帐户一个以太坊帐户是一个具有以太币 (ETH) 余额的实体,可以在以太坊上发送交易。 帐户可以由用户控制,也可以作为智能合约部署。
帐户类型以太坊有两种帐户类型:
外部账户 (External Owned Accout, EOA): 私钥的所有者控制
接收、持有和发送 ETH 和 token
合约账户 (Contract Account, CA): 一种由代码控制,部署在网络上的智能合约。
与已部署的智能合约进行交互
外部和合约账户使用相同的数据结构,只是使用的字段不同。
12345678// StateAccount is the Ethereum consensus representation of accounts.// These objects are stored in the main account trie.type StateAccount struct { Nonce uint64 Balance *big.Int Root common.Hash // merkle root of the storage trie ...
ethereum原理--关于keccak256
关于 keccak256看以太坊代码,发现很多地方使用的加密函数是:keccak256,了解了一下做个输出。
Keccak算法(读作为“ket-chak”)是Guido Bertoni, Joan Daemen, Michael Peters, and Giles Van Assche的工作。 SHA-3的候选人在2008年10月提交。Keccak采用了创新的的“海绵引擎”散列消息文本。它是快速的,在英特尔酷睿2处理器下的平均速度为12.5周期每字节。它设计简单,方便硬件实现。Keccak已可以抵御最小的复杂度为2n的攻击,其中N为散列的大小。它具有广泛的安全边际。至目前为止,第三方密码分析已经显示出Keccak没有严重的弱点。尽管如此,Keccak的创建者已经启动Crunchy加密比赛,挑起人们发现和报告成功且可核查的攻击Keccak的兴趣。
Keccak-256被设计为于2007年举行的SHA-3密码哈希函数竞赛的候选者。Keccak是获胜的算法,在2015年被标准化为 FIPS(联邦信息处理标准)。不过NIST接受原始的Keccak256设计后,更改了Padding的格式, ...
以太坊 chainlist
简述Chainlist 是 EVM 网络的列表。 用户可以使用这些信息将他们的钱包和 Web3 中间件提供商连接到适当的Chain ID 和网络 ID,以连接到正确的链。因为每条ETH的链都有自己的ID,不能重复,相当于是一个ID。
查询chainIDchainId不能重,在配置自己的chainID时,先查一下。可以看到ETH自己的chainID是1,BNB是56,polygon 是137,往下拉一堆链。
https://chainlist.org/
https://chainlist.wtf/
官方源码https://github.com/ethereum-lists/chains
ethereum原理-gas说明
前言简单的说就是手续费的一种变体,本质还是转账费用,只能在设计上,功能更复杂,用处更多。即然是手续费,为什么不干脆一次性收取或者设定一个转账比例,不是更简单?这个后面说。
Gas 说明以太坊自称要成为世界计算机,但是这个计算机是烧Gas而不是用电,也不知是汽化天燃气还是液化天燃气。也有可能是以太坊想说,发电要用天燃气,所以Gas代表了消耗。
参数
作用
Gas(也称:GasUsed)
EVM中的每个操作都指定了要消耗的gas量
Gas Price
每个操作的单价,就是说这笔交易,不只一处需要使用到Gas
Gas Limit
本次交易的Gas限额
所以一笔交易的手续费就是:
Transaction Fee = Gas * GasPrice
就是这么简单粗暴。
作用:资源限制手段,以及网络矿工奖励手段。
作为以太坊价格(具有波动性)和矿工对其工作的奖励之间的抽象层。
另一种是抵御拒绝服务攻击。
为了防止网络中的意外或恶意无限循环或其他计算浪费,每个交易的发起者需要设置他们愿意花费在gas上的金额的限制。因此,gas系统阻止攻击者发送垃圾邮件交易,因为他们必须 ...
ETH2.0-Lido业务与质押了解
简述ETH2.0搞的风风火火,我没有32个ETH,不然我也去质押,多少赚点。我很好奇ETH怎么实现质押的,然后稍微看了一下。
Lido 是一个以太坊 2.0 质押服务平台,用户可质押任意数量。Lido 是一个跨多个区块链的流动性质押协议,这个是重点,现在多链生态才是王道,自己玩只会越玩越窄。
ETH的质押是 1:1 的获得质押代币 stETH,获得stETH后,可以参与 DeFi 市场其他服务。
Lido 的 stTokens 在整个以太坊生态系统中被广泛采用:
最重要的流动性场所包括Curve 上的 stETH/ETH 流动性池和Balancer v2 上的 wstETH/ETH MetaStable 池。
stETH在以太坊主网上的AAVE v2 市场上被列为抵押资产。
wstETH在 Maker 上被列为抵押资产。
steCRV(the Curve stETH/ETH LP 代币)被列为 Maker 上的抵押资产。
在 Lido 的 stTokens 之上构建了多种流动性策略,包括yearn、Harvest Finance和Babylon Finance。
Curve 是一个 ...
ethereum-编译geth
前言geth 是将计算机变成一个以太坊节点,连接到以太坊网络的客户端。
对于geth的几个问题:
有了 geth 之后能做什么?
该怎么用?
用了之后能了解到什么?
能做几件事:
成为一个以太坊节点,可以是:全节点、矿工节点、归档节点
可以当在一个gRPC 的查询工具来用
生成账户等操作
一句话总结:geth就代表运行在你电脑上的以太坊程序。
环境准备这里说明只基于对开发环境的基础配置,官方要求的配置更高
最小硬件要求
CPU 2+ cores
4GB RAM
1TB
8 MBit/sec
go安装
go1.16.x 安装
gcc 编译geth
注意需要修改一下go代理:
1go env -w GOPROXY=https://goproxy.cn
安装gcc
1yum install gcc
编译下载源码之后,看一下README.md,使用make geth就行编译,编译一下
123456git clone https://github.com/ethereum/go-ethereum.gitcd go-ethereum# 查看所有分支 git brarnch -ag ...