以太坊系列
文章平均质量分 72
整理以太坊系列的文章,建立知识体系
搬砖魁首
区块链从入门到宁静
展开
-
区块链知识系列 - 系统学习EVM(三)-预编译合约
预编译合约是 EVM 中用于提供更复杂库函数(通常用于加密、散列等复杂操作)的一种折衷方法,这些函数不适合编写操作码。它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。预编译合约是在使用节点客户端代码实现的,因为它们不需要 EVM,所以运行速度很快。由于 EVM 是一个基于堆栈的虚拟机,它根据交易所要执行的操作指令内容来计算 gas 消耗,如果计算非常复杂,在 EVM 中执行相关操作指令就会非常低效,而且会消耗大量的 gas。在 EVM 中执行这些操作是非常复杂和不现实的。原创 2023-02-10 00:05:07 · 650 阅读 · 1 评论 -
区块链知识系列 - 系统学习EVM(二)-存储与安全
特点EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数。不支持浮点数缺乏标准库支持,例如字符串拼接、切割、查找等等都需要开发者自己实现给合约打补丁或是部分升级合约代码在EVM中是完全不可能的存储Codecode 部署合约时储存 data 字段也就是合约内容的空间,即专门存储智能合约的二进制源码的空间StorageStorage 是一个可以读写修改的持久存储的空间,也是每个合约持久化存储数据的地方。Storage 是一个巨大的 map,一共 22562^{256}22原创 2023-01-30 19:18:03 · 3508 阅读 · 5 评论 -
区块链知识系列 - 系统学习EVM(一)-架构与执行流程
EVM有一个基于栈的架构,在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”(这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中所需要的局部变量等数据,而不是指下文中所提到的“内存”数据;下文中的“内存”是一个与栈共同存在的、独立的临时存储空间。以太坊虚拟机(EVM)的架构和执行上下文。原创 2023-01-17 13:51:21 · 3558 阅读 · 1 评论 -
以太坊系列 - geth前后端分离的启动
geth前后端分离的启动原创 2022-12-06 00:04:34 · 1206 阅读 · 1 评论 -
以太坊系列 - geth常用命令
启动开第一个geth --datadir "目录" --keystore "目录" console--datadir 指定以太坊数据和密钥目录,在开启私有链时需要指定私有链目录,默认为公有链目录--keystore 指定keystore文件(账户密钥文件)目录,默认值在datadir目录下在开启一个geth客户端的情况下,如果想要再开一个geth客户端,可以使用geth attach命令。#attach到其他geth客户端./geth attach ipc:/root/.ethere原创 2021-11-15 11:09:29 · 2043 阅读 · 1 评论 -
以太坊系列 - Web3.js
Web3.jsweb3.js是一组用来和本地或远程以太坊节点进行交互的js库,它可以使用HTTP或IPC建立与以太坊节点旳连接。底层实现上,它通过RPC 调用与本地或远程节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。Installationnpm install web3Usage// In Node.jsconst Web3 = require('web3');let web3 = new Web3('ws://localhost:8546');console.原创 2021-08-30 15:32:02 · 2073 阅读 · 2 评论 -
体验篇 - 部署以太坊私有链 (PoA)
本地部署一套以太坊私链,使用适用于联盟链的PoA共识如果用默认的PoW共识,请看这篇: 体验篇 - 部署以太坊私链 (PoW)#!/bin/bash# Clear node1 & node2echo "Clear node1 & node2."rm -rf node1/gethrm -rf node2/gethrm -rf node1/eth_output.logrm -rf node2/eth_output.logrm -rf bootnode_output.log原创 2021-07-19 11:15:45 · 2775 阅读 · 3 评论 -
体验篇 - 部署以太坊私链 (PoW)
本地部署一套以太坊私链,先用默认的PoW共识#!/bin/bash# Clear node1 & node2echo "Clear node1 & node2 & node3."rm -rf node1/gethrm -rf node2/gethrm -rf node3/gethrm -rf node1/eth_output.logrm -rf node2/eth_output.logrm -rf node3/eth_output.logrm -rf bootn原创 2021-06-29 11:14:51 · 657 阅读 · 2 评论 -
以太坊系列 - 智能合约开发与调试
本文默认智能合约所需要的相关环境Geth、Truffle、Solidity、Ganache等都是完备的!主要介绍:Remix IDE环境如何与指定的链进行连接;编译 部署与调试智能合约使用 zeppelin-solidity1.安装 Remix IDE npm install remix-ide -g网络资料相关内容都没有作特别强调,故在此特别说明一下:开发调试过程中,使用本地的环境相对而言,可以更加方便直观的与本地代码进行关联安装好remix-ide后,可以在任意路径下运行命原创 2021-05-05 13:05:40 · 1974 阅读 · 11 评论 -
以太坊系列 - DApp开发三剑客
搭建以太坊私链, 部署智能合约常用的三个工具:Truffle,Ganache 和 remix-ide。TruffleTruffle 是最流行的开发框架,能够在本地编译、部署智能合约,使命是让开发更容易。Truffle的源代码地址 https://github.com/trufflesuite/truffle(1)安装 Truffle 4.0 依赖环境:NodeJS 5.0+Windows,Linux,或Mac OS X安装很简单:npm install -g truffle#原创 2021-04-21 14:16:52 · 802 阅读 · 4 评论 -
以太坊系列 - Solidity智能合约学习笔记
(1)账户地址创建账号,无需上链,其实地址在链上非真实存在的,转账的接收方地址可以是任一符合规则的地址码,也能转账成功,只是没有人有与之匹配的私钥来操作此账户geth节点重启,上链的数据还是保存着的(2)合约内常用变量msg.sender 就是当前调用方法的用户地址this 指的是当前合约的地址address 支持各种算数运算符tx.origin 交易的发送者(3)函数的可见性 public external internal privatepublic :函数默认声明为pu原创 2021-02-19 14:12:24 · 1285 阅读 · 4 评论 -
以太坊系列 - 以太坊的测试网
测试网简介目前Ethereum存在三个测试网,分别是Ropsten(PoW算法,支持Parity和Geth),Kovan(PoA算法,Parity专用)和Rinkeby(Clique PoA共识算法,Geth专用)。RopstenPoWSupported by geth and parityBest reproduces the current production environmentChaindata size 15 GB - Apr 2018KovanPoA (Immune t原创 2021-01-06 09:43:46 · 1999 阅读 · 6 评论 -
以太坊系列 - 以太坊创建Token
部署合约有多种方式geth 编译代码 —部署合约用ethereum wallet钱包部署合约最简单直观的部署合约方式: MetaMask和Remix Solidity (以下采用这种方法)原创 2020-06-30 13:36:00 · 1347 阅读 · 0 评论 -
以太坊系列 - Solidity智能合约 - 特殊变量与函数
Solidity自身携带的特殊变量以及函数:block.blockhash(uint blockNumber) returns (bytes32): 返回参数区块编号的hash值。(范围仅限于最近256块,还不包含当然块)block.coinbase (address): 当前区块矿工地址block.difficulty (uint): 当前区块难度block.gaslimit (uint): 当前区块的gaslimitblock.number (uint): 当前区块编号block.times原创 2020-06-01 09:26:59 · 1059 阅读 · 1 评论 -
公链分析报告(8)--Quorum - 企业级以太坊
Quorum是以太坊代码库的一个为金融领域提供的以企业为中心的私有区块链。原创 2020-04-27 01:01:24 · 1262 阅读 · 0 评论 -
以太坊系列 - Solidity智能合约 - 设计模式与升级方法
设计模式合约分为两类控制器合约数据合约控制器合约控制器合约通过访问数据合约获得数据,并对数据做逻辑处理,然后写回数据合约。它专注于对数据的逻辑处理和对外提供服务。根据处理逻辑的不同,常见的有命名空间控制器合约、代理控制器合约、业务控制器合约、工厂控制器合约等。一般情况下,控制器合约不需要存储任何数据,它完全依赖外部的输入来决定对数据合约的访问。特殊情况下,控制器合约可以存储某个固定的...原创 2020-03-16 22:46:35 · 1118 阅读 · 1 评论 -
以太坊系列 - Solidity智能合约 - 变量与函数
solidity原创 2020-03-09 22:42:16 · 675 阅读 · 1 评论 -
以太坊系列 - Solidity智能合约 - 多重签名
# 以太坊 多重签名以太坊根据自身平台特点采用智能合约实现多重签名功能,一般在钱包合约中实现该功能。原创 2020-02-24 21:14:27 · 3019 阅读 · 1 评论 -
Token系列 - 分析ERC1400(2)--解读怎么用于STO证券币
分片key: 该键(bytes32 _tranche)可以同链上或链下的元数据相关联,能将一些证券的属性附加到余额分片上.比如通过该key,到链上其它合约中找到这笔余额的解冻期,或者类似基金T+n的赎回期附加数据: 随交易发送可以附带在event中的描述数据(bytes _data,bytes _operatorData),可用于传用户的签名数据,甚至契约增发(mint/issue...原创 2019-03-15 17:39:29 · 726 阅读 · 0 评论 -
Token系列 - 分析ERC1400(1)--STO证券币智能合约标准
ERC1400 – 证券型Token该Token提案主打监管功能,目的是方便用户以合法合规方式在以太坊网络发行证券标准说明ERC1410 (等同ERC1411)将 ERC20/ERC777 中不存在解释属性的余额,附加额外的信息,从而划分成不同的部分,就可以做一些操作上的限制。而 ERC1400 (等同ERC1411)是对 ERC1410 标准的继承和改进。无论是 ERC20 还是 ...原创 2019-03-10 09:25:51 · 1440 阅读 · 0 评论 -
以太坊系列 - Solidity减少gas消耗与字节码大小的小技巧
Solidity保存gas和减少字节码大小的小提示和技巧原创 2019-02-17 15:06:03 · 3329 阅读 · 4 评论 -
区块链知识系列 - BTC和ETH的区别
区块信息原创 2020-02-18 23:11:49 · 2347 阅读 · 1 评论 -
联盟链系列 - 适用于联盟链的PoA共识
Clique PoA技术原理Geth的PoA实现1.Ethereum的PoAEthereum存在两个PoA测试网,分别是Kovan(PoA算法,Parity专用,Rust 语言)和Rinkeby(Clique PoA共识算法,Geth专用(版本号>=1.6),Go语言)KovanPoA (Immune to spam attacks)Supported by parity on...原创 2019-02-17 15:35:07 · 3189 阅读 · 0 评论 -
以太坊系列 - 源码分析 - 共识
以太坊共识的源码分析讲述一个新区块被挖掘出的过程1.挖矿对于一个新区块被挖掘出的过程,代码实现上基本分为两个环节:一是组装出一个新区块,这个区块的数据基本完整,包括成员Header的部分属性,和叔区块组uncles[],以及交易列表txs,并且所有交易已经执行完毕,所有收据(Receipt)也已收集完毕,这部分主要由worker完成;二是填补该区块剩余的成员属性,比如H...原创 2019-05-30 21:50:17 · 1730 阅读 · 0 评论 -
以太坊系列 - 数据存储(2) -- StateDB机制与MPT树
Ethereum 选用的是LevelDB, 属于非关系型数据库,存储单元是[k,v]键值对有关LevelDB的介绍,请看我的另一篇文章-- Geth持久化(1) 采用的是单机数据库–LevelDBGeth的文件目录chaindata,lightchaindata,nodes目录进入chaindata,区块链最后的本地存储都是以ldb文件(db sst table 持久化文件,新版本...原创 2019-03-02 00:12:56 · 1360 阅读 · 0 评论 -
以太坊系列 - 数据存储(1) -- 使用LevelDB持久化存储
LevelDBLevelDB是google开源的KV(key-value,存储的数据都是kv的形式)单机数据库,官方版本是C++,比特币使用的是c++版本:https://github.com/google/leveldb以太坊使用的是go语言版本:https://github.com/syndtr/goleveldbgo安装leveldbgo get github.com/syn...原创 2019-02-24 23:58:47 · 1407 阅读 · 0 评论 -
以太坊2.0系列 - 4个阶段
以太坊在设计之初就决定采用PoS共识,但由于当时PoS共识并不成熟,以太坊前期采用成熟的PoW,之后转到PoS。为此,以太坊设定了4个阶段:前沿、家园、大都会、宁静,目前我们处于大都会阶段,宁静也就是我们今天谈论的以太坊2.0。原创 2019-07-24 15:02:44 · 1945 阅读 · 0 评论 -
以太坊2.0系列 - 项目介绍
最近在学习EOS之余,也关注以太坊2.0的动向,遂开了这一个新的系列以太坊2.0概述为了解决以太坊的共识和扩展性问题,Vitalik Buterin(以太坊创始人)与研究团队试图在目前运行的PoW链上覆盖基于PoS的终结系统,同时也要实现状态分片,以扩展以太坊区块链。在2018年3月份的台北标志性研究会议之后,以太坊研究团队提议将Casper PoS与分片合并为一项名为Ethereum...原创 2019-07-04 11:22:52 · 2780 阅读 · 0 评论 -
以太坊2.0系列 - 以太坊的扩容思考
以太坊的扩容思考Vitalik表示,可扩展性是包括以太坊在内的区块链需要解决的重大问题。以太坊在解决可扩展性问题上有两个方案,首先是layer 1方案,旨在改进区块链的设计以提高其运行效率。分片(Sharding)是以太坊的layer 1扩容选择。分片会将区块链分成多个部分,每个部分都只需要网络中的一部分计算机来进行交易验证。至于由谁来验证哪些区块,系统会随机进行选择。由于每次只需要进行部分交...原创 2019-09-29 14:21:21 · 1121 阅读 · 0 评论 -
以太坊系列 - 以太坊硬分叉和升级足迹
以太坊系列 - 以太坊硬分叉和升级足迹Olympic | 2015 年 5 月 9 日以太坊区块链于 2015 年7 月正式公开上线。而在这之前的临门一脚是 Olympic——第 9 个也是最后一个开放的测试网,用以进行概念验证(PoC),让开发者预先探索以太坊区块链发布后的运行情况。Vitalik 宣布将发放共计 25000 枚 ETH 来奖励对网络进行压力测试的开发者们。测试要求很明确:尝...原创 2019-11-04 16:11:58 · 1557 阅读 · 2 评论 -
以太坊系列 - 君士坦丁堡升级(2)
以太坊君士坦丁堡及彼得斯堡硬分叉据ambcrypto报道,以太坊硬分叉协调员和Parity Technologies的发布经理AfriSchoedon在Reddit上表示,君士坦丁堡硬分叉预计将于2月25日UTC时间11:54:02启动。这次升级将与此前提出的不同,因为将在同一个区块上进行两个分叉,第一个是初始分叉君士坦丁堡,第二个是彼得斯堡(Petersburg)分叉。据此前报道,以太坊改进...原创 2019-03-02 00:46:21 · 406 阅读 · 0 评论 -
以太坊系列 - 君士坦丁堡升级(1)
以太坊君士坦丁堡升级 进入到2.0此次硬分叉(升级)概况分叉时间硬叉块高度:7,080,000预计时间:2019年1月17日 12:00~14:00。分叉后矿工仍采用Pow共识算法挖矿收益由3ETH减少到2ETH,即ETH产出会减少供应总量将从20,300 ETH/天减少到13,400 ETH/天,从每年740万ETH减少到490万ETH通货膨胀率将从7.7%...原创 2019-02-10 10:22:32 · 1048 阅读 · 0 评论