Go Ethereum

以太坊的 Gas 机制

给你一囗甜甜゛ 提交于 2020-12-24 09:01:32
以太坊对智能合约的影响是深刻的,即使不用以太坊,只要做智能合约开发,就避免不了要学一下以太坊。而学习以太坊的第一天就肯定会碰到的概念就是 Gas ,这个就是咱们今天的主角,理解了 Gas 机制也就基本理解的智能合约的工作原理了。文章中首先介绍以太坊的账户和交易,以便介绍清楚智能合约工作的基本上下文,或者说让大家理解 Gas 使用的场景,接下来聊聊 Gas 的工作原理,让大家理解为啥已经有了以太币还要有 Gas ,最后深入到细节聊聊 gasPrice 和 gasLimit 这些交易参数的实际作用。 账户和交易 先进入第一部分,聊聊以太坊账户的分类,以及通过在各个账户间发交易都能完成哪些工作。 以太坊账户其实是分两类的。一类是普通账户,也被称为外部拥有账户,因为账户的拥有者在以太坊系统本身之外,是自然人。普通账户就类似于比特币账户了,两个普通账户之间可以发交易,但是交易的功能就基本局限于转账了。但是以太坊上还能发一种特殊的交易,叫做合约创建交易,这种交易的特点就是只有发送方,没有接受方,同时发送交易的时候也伴随着有代码上传到区块链。这种交易一旦发出,就会在以太坊系统上创建一个新的账户。这就是我们要介绍的第二类账户了,叫做合约账户。合约账户跟普通账户的区别是,合约账户是以太坊系统所拥有的账户,或者说账户的拥有者是机器,而不是自然人。另外,合约账户最大的特点就是内置代码,你肯定能猜到

公链分析报告

大城市里の小女人 提交于 2020-08-06 20:13:38
对于许可链,三种区块链协议已成为首选: Hyperledger Fabric , Enterprise Ethereum 和 R3 Corda 。Fabric和企业以太坊都是任何行业的通用工具,而Corda是为金融行业定制设计的。每个协议选项都有非常不同的沿袭和设计重点,并且这三个协议都已被当今运行于生产质量系统上的严肃的企业和政府广泛采用。 Enterprise Ethereum Fabric Corda 节点许可 基于智能合约的规则,将基于文件的每个节点的规则作为本地替代。 可在节点,通道和联盟级别上配置。 受信任的网络地图服务在每个节点上均辅以基于文件的配置。Corda网络被划分为由单独的证书颁发机构管理的兼容性区域。 身分识别 公钥-分布式,并且在基于以太坊的链之间可互操作。通过证明与PKI耦合。 基于具有本地组织身份的PKI。在共识和许可中始终使用组织身份,而不是个人身份。 基于具有个人和组织身份的PKI。 密码学 secp256k1 可插拔(具有secp256r1和secp384r1内置的ECDSA)。 ed25519 secp256r1 secp256k1 RSA(3072bit)PKCS#1 SPHINCS-256(实验性) 交易共识 定序->执行/验证 执行->定序->验证 执行/验证->定序/公证 应用责任 将签名的事务发送到网络中的一个节点。

[币严区块链]数字货币交易所之以太坊(ETH)钱包对接(一) 以太坊Geth客户端安装

一曲冷凌霜 提交于 2020-05-02 06:26:38
以太坊Geth客户端安装 geth是以太坊的官方客户端,它是一个命令行工具,提供很多命令和选项,可以运行以太坊节点、创建和管理账户、发送交易、挖矿、部署智能合约等。 下面介绍geth的三种安装方法: 直接下载可执行文件 在线安装 从源码编译安装 方法一 直接下载可执行文件 最简单的方法是直接下载可执行文件,以太坊开发团队提供了各个系统的编译好的geth可执行文件,可以去官方下载地址或国内镜像下载适合你系统版本的压缩包,解压缩后直接运行就可以。在命令行中输入 geth help 可查看geth的用法。 注意1:geth是一个命令行工具,需要在命令行中运行geth,windows用户不要直接双击geth.exe。 注意2:如果不加任何参数直接运行 geth ,会自动连接到以太坊公网,此时会开始同步区块,在Linux系统中,区块数据默认存储在~/.ethereum中。 方法二 在线安装 Ubuntu用户可以选择在线安装的方式,在终端中依次执行以下命令即可: 1 $ sudo add-apt-repository -y ppa:ethereum/ ethereum 2 $ sudo apt- get update 3 $ sudo apt- get install ethereum 安装完成后执行 geth help 查看geth的用法。 方法三 从源码编译安装

如何在10分钟内搭建一个以太坊私有链?

二次信任 提交于 2020-04-21 05:55:57
阅读本文前,你应该对以太坊语言有所了解,如果你还不了解,建议你先看以太坊是什么。 go-ethereum客户端安装 Go-ethereum客户端通常被称为Geth,它是个命令行界面,执行在Go上实现的完整以太坊节点。Geth得益于Go语言的多平台特性,支持在多个平台上使用(比如Windows、Linux、Mac)。Geth是以太坊协议的具体落地实现,通过Geth,你可以实现以太坊的各种功能,如账户的新建编辑删除,开启挖矿,ether币的转移,智能合约的部署和执行等等。所以,我们选择geth工具来进行开发。由于本人是mac,所以优先使用mac进行开发啦。mac中geth安装如下: brew tap ethereum/ethereum brew install ethereum 检查是否安装成功 geth --help 如果输出一些帮助提示命令,则说明安装成功。其他平台可参考Geth 安装 搭建私有链 以太坊支持自定义创世区块,要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的配置文件中。首先将下面的内容保存到一个json文件中,例如genesis.json。 json文件内容如下: { "config": { "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 },

基于Mac环境搭建以太坊私有区块链进行挖矿模拟

半城伤御伤魂 提交于 2020-04-20 18:56:37
第一步:相关软件的安装 go-ethereum客户端安装 Go-ethereum客户端通常被称为Geth,它是个命令行界面,执行在Go上实现的完整以太坊节点。Geth得益于Go语言的多平台特性,支持在多个平台上使用(比如Windows、Linux、Mac)。Geth是以太坊协议的具体落地实现,通过Geth,你可以实现以太坊的各种功能,如账户的新建编辑删除,开启挖矿,ether币的转移,智能合约的部署和执行等等。 Geth可以使用下面三种JSON RPC协议进行连接: 内部进程通信(IPC) :内部通讯,通常用于一台电脑内。 远程程序调用(RCP) :跨计算机的通讯。通常使用TCP和HTTP协议。 WS(Web sockets) :使用sockets连接Geth。 chain ID含义: chain ID:1 主网公链 chain ID:2 Morden网络(仅对部分人开放) chain ID:3 Ropsten网络 chain ID:4 Rinkeby网络 chain ID 大于4的是私有网络 使用Geth --testnet连接到Ropsten网络,Geth --rinkeby连接到Rinkeby网络。 安装命令如下: brew tap ethereum/ethereum brew install ethereum 我的显示界面 检查是否安装成功,输入如下的命令 geth -

Centos7环境下编译安装go-ethereum

走远了吗. 提交于 2020-03-11 11:25:43
下载golang安装包(注意和源码包的区别,源码包不含有bin目录) wget -c https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gz 解压生成/usr/local/go($GOROOT)目录 tar -C /usr/local -xzfgo1.13.4.linux-amd64.tar.gz 创建gopath($GOPATH)目录 mkdir -p /usr/local/gopath 编辑go env相关环境变量 vim /etc/profile export GOROOT=/usr/local/go exportGOPATH=/usr/local/gopath exportPATH=$PATH:$GOROOT/bin:$GOPATH/bin source /etc/profile go version go env 手动下载依赖包,处理GFW屏蔽问题 对于常用的涉及golang.org/x/foobar的依赖包, 手动下载对应的github.com/golang/foobar到$GOPATH/src/golang.org/x目录下: git clonehttps://github.com/golang/net.git $GOPATH/src/golang.org/x/net git clonehttps:/

python在以太坊开发中节点和网络如何选择?

给你一囗甜甜゛ 提交于 2019-11-28 15:34:43
以太坊节点 为什么我需要连接到一个节点? 以太坊协议定义了一种方法,用于人们通过网络与智能合约相互作用。为了获得关于合约、账户余额和新交易状态等最新的信息,协议需要与网络上的节点进行连接。这些节点不断地共享最新的数据。 Web3.Py是用于连接这些节点的Python库。它不在内部运行它自己的节点。 如何选择使用哪个节点? 由于以太坊的特点,这在很大程度上由个人的偏好来决定,但它会对安全性和可用性有重大影响。此外,节点软件正在快速发展,所以请需要对当前可选项进行研究。我们不推荐任何特定的节点,但列出一些流行的选项和一些基本细节。 最关键的决定之一是使用本地节点还是托管节点。来看看本地VS托管节点的简单含义: 本地节点:本地节点由你自己启动并控制。它的安全和你的环境安全性一样,在于你自身。当你在机器上运行 geth 或 parity 时,你就是在运行本地节点。 托管节点:托管节点由其他人控制。当连接到 Infura 时,连接到托管节点。 本地节点比托管节点有更好的安全性。恶意托管节点可以给你提供不正确的信息,用IP地址记录你发送的交易,或者只是脱机运行。不正确的信息会引起各种各样的问题,甚至包括资产流失。 另一方面,在本地节点上,你的机器正在逐个验证网络上的所有交易,并提供最新状态。不幸的是,这意味着使用大量的磁盘空间,有时显著的带宽和计算。另外