![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
以太坊
文章平均质量分 96
六天天天向上
区块链研发工程师
展开
-
以太坊使用最小Gas克隆合约-合约工厂
在以太坊中,大部分的业务场景对智能合约的要求都是部署一次,但也有些场景,需要根据不同情况动态部署合约,比如在交易所中,为每个用户部署一个充提合约。对于第二种情况,往往需要方便并且低成本去生成和部署合约。类似编程中常见的工厂模式,不需要关系的对象的具体创建逻辑,只需要根据暴露的接口就可以创建出想要的对象。solidity也有类似的工厂,分为普通工厂和克隆工厂。一、普通工厂普通工厂,就是在工厂合约中以new的方式创建一个新合约。我这里以MetaCoin合约示例,合约代码如下所示。pragma soli原创 2020-09-11 17:15:56 · 931 阅读 · 0 评论 -
以太坊交易签名过程源码解析
向以太坊网络发起一笔交易时,需要使用私钥对交易进行签名,那么从原始的请求数据到最终的签名后的数据,这中间的数据流转是怎样的,经过了什么过程,今天从go-ethereum源码入手,解析下数据的转换。一、准备工作我以一个简单合约为例,调用合约的setA方法,参数为123。合约代码如下。pragma solidity >=0.4.22 <0.6.0;contract Test { uint256 internal a; event SetA(address indexed _f原创 2020-07-07 21:38:23 · 3020 阅读 · 1 评论 -
认识下以太坊Clef—独立交易签名器
一、初识以太坊go-ethereum在1.8.4版本中就开始引入了Clef,并在1.9.0版本中进行了较大的升级,其主要目的是以一种更安全、独立的方式替代以太坊节点的账号管理模块。1、Clef是什么官方文档对Clef的描述是:Clef最终目标是代替Geth的节点账号管理,可用来对交易进行签名。Clef可以使DApp不必依赖Geth的帐户管理,当DApp需要对数据(或交易)进行签名时,可以将数据发送给Clef,在经过授权同意后,Clef将把签名返回给DApp。从官网的描述中,并没有看出Clef的原创 2020-06-24 14:12:01 · 1895 阅读 · 0 评论 -
撸一个预言机(Oracle)服务,真香!—下篇
一、文章结构本文将通过上、中、下三篇文章带领大家一步步开发实现一个中心化的Oracle服务,并通过一个抽奖合约演示如何使用我们的Oracle服务。文章内容安排如下:上篇:Oracle简介及合约实现中篇:使用go语言开发Oracle服务下篇:抽奖合约调用Oracle服务示例前两篇文章中,我们实现了Oracle合约,开发了Oracle服务,在这边文章中,我们以一个抽奖合约为例,介绍在抽奖合约中,怎么通过Oracle服务获取一个随机数(中奖数)。二、联调准备首先我们需要搭建测试环境、部署合约、运原创 2020-06-19 15:55:49 · 792 阅读 · 1 评论 -
撸一个预言机(Oracle)服务,真香!—中篇
一、文章结构本文将通过上、中、下三篇文章带领大家一步步开发实现一个中心化的Oracle服务,并通过一个抽奖合约演示如何使用我们的Oracle服务。文章内容安排如下:上篇:Oracle简介及合约实现中篇:使用go语言开发Oracle服务下篇:抽奖合约调用Oracle服务示例在上篇中,我们实现了一个通用的Oracle合约,其主要有一个接收用户请求的Query方法;回调用户合约的Response方法和一个供Oracle后端服务订阅的QueryInfo事件。本篇是中篇,主要使用go语言开发实现Ora原创 2020-06-18 18:39:51 · 868 阅读 · 0 评论 -
撸一个预言机(Oracle)服务,真香!—上篇
一、文章结构本文将通过上、中、下三篇文章带领大家一步步开发实现一个中心化的Oracle服务,并通过一个抽奖合约演示如何使用我们的Oracle服务。文章内容安排如下:上篇:Oracle简介及合约实现中篇:使用go语言开发Oracle服务下篇:抽奖合约调用Oracle服务示例一、Oracle简介Oracle(预言机)是链接链上与链下的桥梁,能够将链下数据推送给链上。正是由于Oracle的存在,使得区块链从封闭走向开放,充满无限可能。如需了解Oracle基础知识,这里推荐阅读孙孝虎的《什么是区块原创 2020-06-17 18:08:09 · 790 阅读 · 0 评论 -
以太坊中GraphQL简介及使用
以太坊在去年升级的go-ethereum(geth)1.9.0大版本,除了性能得到大幅提升之外,引入了GraphQL,一种节点接口查询机制,用以补充JSON-RPC。本文将会介绍GraphQL是什么,Geth为什么要引入GraphQL以及如何使用GraphQL三个方面对以太坊的GraphQL做一个介绍。本文作者:六天一、GraphQL是什么GraphQL官网对GraphQL的介绍是:GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据原创 2020-06-14 11:00:23 · 1177 阅读 · 1 评论 -
以太坊智实现智能合约升级的三种代理模式
本文翻译自Zeppelin于2018年发表的关于《代理模式》文章。所有权归原文作者所有。原文链接:https://blog.openzeppelin.com/proxy-patterns/翻译:六天以太坊的最大优势之一是其公共账本内交易记录的不可篡改性,这些交易包括Token的转移,合约的部署以及合约交易。以太坊网络上的任何节点都可以验证每笔交易的有效性和状态,从而使以太坊成为一个非常强大的去中心化系统。但最大的缺点是,智能合约一旦部署后,则无法更改合约源码。中心化应用程序(例如Facebook.翻译 2020-06-14 10:55:38 · 2751 阅读 · 1 评论 -
在以太坊生成随机数的几种方式(含代码)
一、什么是随机数随机数都是由随机数生成器(Random Number Generator)生成的。随机数分为”真随机数“和”伪随机数“两种。1、 真随机数真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等,这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。 ----百度百科根据百科上的定义可以看到,真随机数是依赖于物理随机数生成器的。使用较多的就是电子元件中的噪音等较为高级、复杂的物理过程来生成。2、伪随机数真正意义上的随机数(原创 2020-06-14 10:53:14 · 1912 阅读 · 0 评论 -
以太坊一种可升级的可信存证智能合约设计与实现
存证作为区块链的一个重要应用场景,在各个公链中都有已落地的应用和服务。本文将介绍在以太坊上的一种可升级的存证合约的设计与实现。一、存证业务模型存证业务的核心是确权,业务逻辑相对比较简单,一般分为存证方和取证方。存证方负责将需要确权的数据进行上链;取证方在需要时可以在区块链上查询到存证内容和该内容的所有者。如果存证的内容本身能够自证真实性(如电子合同,已有相关参与方的签名),这种业务模型是可以满足需求的。但是大多数存证场景的存证内容并不能够自证真实,比如你正在阅读的文章,并不能证明作者就是六天原创 2020-06-10 10:23:52 · 1685 阅读 · 0 评论