杰哥的技术杂货铺
区块链技术分享
展开
-
以太坊ERC20接口使用
文章目录一、获取ETH指定代币的余额1.1 请求参数详情及解释1.2 请求响应详情及解释1.3 命令行请求实例二、ETH代币转账2.1 请求参数详情及解释2.2 请求响应详情及解释2.3 命令行请求实例三、ETH交易哈希查询3.1 请求参数详情及解释3.2 请求响应详情及解释3.3 命令行请求实例四、ETH检查智能合约交易4.1 请求参数详情及解释4.2 请求响应详情及解释4.3 命令行请求实例五、eth_call以及eth_sendTransaction区别5.1 eth_call以及eth_sendTr原创 2022-05-09 19:15:17 · 29 阅读 · 0 评论 -
从零开发区块链应用(十六)--ETH转账处理
文章目录一、ETH转账二、完整代码一、ETH转账在本章节中,你将学习如何将ETH从一个帐户转移到另一个帐户。如果你已熟悉以太坊,那么你就知道如何交易包括你打算转账的以太币数量量,燃气限额,燃气价格,一个随机数(nonce),接收地址以及可选择性的添加的数据。 在广告发送到网络之前,必须使用发送方的私钥对该交易进行签名。假设你已经连接了客户端,下一步就是加载你的私钥。在本课程中,你将学习如何将ETH从一个帐户转移到另一个帐户。如果你已熟悉以太坊,那么你就知道如何交易包括你打算转账的以太币数量量,燃气限额原创 2022-01-30 22:43:36 · 32 阅读 · 0 评论 -
从零开发区块链应用(十五)--以太坊交易匹配查询
文章目录一、获取区块内交易1.1 获取最新区块中的交易详情1.2 获取指定区块中的交易详情二、 获取匹配交易回执主要信息三、获取区块内交易数量一、获取区块内交易1.1 获取最新区块中的交易详情获取最新区块,放到变量num中num, err := rc.Client.GetLatestBlockNumber()获取区块的区块信息,放到变量res中res, err := rc.Client.GetBlockByNumber(num, true)if err != nil { logger.Er原创 2022-01-29 23:00:04 · 1619 阅读 · 0 评论 -
从零开发区块链应用(十四)--以太坊交易哈希查询
文章目录一、查询以太坊交易1.1 获取以太坊交易信息1.2 获取以太坊交易回执信息二、以太坊交易确认数2.1 使用rpc获取以太坊交易确认数2.2 使用golang获取以太坊交易确认数一、查询以太坊交易当上述事件在合约中调用后,我们通过其交易hash获取交易信息。从以太坊得到一条交易信息的方式有两种:eth_getTransactionByHash: :返回指定交易对应的交易信息eth_getTransactionReceipt :返回指定交易对应的收据信息1.1 获取以太坊交易信息Ge原创 2022-01-28 22:03:41 · 4945 阅读 · 0 评论 -
从零开发区块链应用(十三)--以太坊区块查询
文章目录一、查询区块信息1.1 根据区块高度获取区块信息1.2 根据区块哈希获取区块信息1.3 完整代码二、最新区块查询2.1 获取最新区块高度2.2 获取最新区块信息正如我们所见,您可以有两种方式查询区块信息。一、查询区块信息1.1 根据区块高度获取区块信息调用客户端的BlockByNumber方法来获得完整区块。您可以读取该区块的所有内容和元数据,例如,区块号,区块时间戳,区块摘要,区块难度以及交易列表等等。// GetBlockByNumber 根据区块高度获取区块信息,isFullTx 全原创 2022-01-27 22:06:43 · 2861 阅读 · 0 评论 -
从零开发区块链应用(十二)--以太坊余额查询
文章目录一、账户状态stateTrie1.2 查询余额代码思路1.3 余额查询流程二、获取账户余额2.1 代码解析2.2 完整代码三、获取账户代币余额一、账户状态stateTrieBlock.Header.Root 就是stateRoot,是一棵PMT树,存储了所有账户的当前最新的状态信息,比如账户余额。a path is always: sha3(ethereumAddress) and a value is always: rlp(ethereumAccount)Root是一个hash值,通过R原创 2022-01-26 23:19:32 · 1258 阅读 · 0 评论 -
从零开发区块链应用(十一)--以太坊地址生成
文章目录一、生成以太坊地址私钥1.1 生成以太坊地址私钥函数代码1.2 pbkdf2.Key() 生成秘钥函数1.3 HMAC 生成摘要算法二、根据私钥创建公私钥2.1 根据私钥创建公私钥函数代码2.2 PrivKeyFromBytes 创建私钥、公钥对三、根据公钥转地址3.1 主函数代码3.2 子函数代码一、生成以太坊地址私钥1.1 生成以太坊地址私钥函数代码创建常量const ( BitcoinSeed = "Bitcoin seed" Mnemonic = "search cri原创 2022-01-25 21:44:18 · 593 阅读 · 0 评论 -
从零开发区块链应用(十)--golang协程使用
文章目录一、什么是并发1.1 并发定义1.2 并发的好处二、什么是协程2.1 协程定义2.2 协程的优点三、golang协程实践一、什么是并发1.1 并发定义为了更有意思的解释这个概念,我借用知乎上的一个回答:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你原创 2022-01-24 21:21:07 · 1195 阅读 · 0 评论 -
从零开发区块链应用(九)--区块链结构体创建
文章目录一、json生成结构体的方法1.1 使用在线工具生成结构体1.2 使用type from json ... 方法1.3 sql语句转换为结构体二、区块链相关接口创建2.1 区块信息结构体创建2.2 交易结构体创建2.3 节点rpc请求结构体一、json生成结构体的方法1.1 使用在线工具生成结构体在线工具地址https://mholt.github.io/json-to-go/这个在线工具使用起来非常简单,只需要将JSON数据粘贴在左边,就会在右边自动成生成对应的结构体定义:使用数原创 2022-01-23 21:16:50 · 922 阅读 · 0 评论 -
从零开发区块链应用(八)--结构体初识
文章目录一、结构体定义二、初始化结构体三、结构体的访问四、结构体指针五、结构体可见性六、结构体标签七、结构体嵌套八、结构体方法九、结构体特性Go语言中提供了对struct的支持,struct,中文翻译称为结构体,与数组一样,属于复合类型,并非引用类型。Go语言的struct,与C语言中的struct或其他面向对象编程语言中的类(class)类似,可以定义字段(属性)和方法,但也有很不同的地方,需要深入学习,才能区分他们之间的区别。一、结构体定义Go语言中数组可以存储同一类型的数据,但在结构体中我们可原创 2022-01-22 21:28:46 · 253 阅读 · 0 评论 -
从零开发区块链应用(七)--gin框架参数获取
文章目录一、获取query参数二、获取form表单参数三、获取JSON参数四、获取path参数五、参数绑定一、获取query参数query指的是URL ? 后面携带的参数,例如user/info?username=张三&password=123。获取请求的query参数的方法如下:当使用DefaultQuery时,如果没有获取到浏览器输入的username,则返回设置defaultValueusername := ctx.DefaultQuery("username", "杰哥的技术杂货原创 2022-01-21 22:07:22 · 525 阅读 · 0 评论 -
从零开发区块链应用(六)--gin框架使用
文章目录一、Gin 框架介绍二、Gin安装三、Gin使用3.1 设置gin模式3.2 创建新路由3.3 创建多路由分组3.4 创建路由3.5 编写接口执行函数3.6 启动服务四、gin框架获取参数4.1 获取query参数4.2 获取form表单参数4.3 获取JSON参数参考文档:Gin框架介绍及使用:https://www.tianyuan.fun/posts/golang/go-use-of-gin-framework.html一、Gin 框架介绍Gin 是一个用 Go 语言编写的 web原创 2022-01-20 23:09:02 · 659 阅读 · 0 评论 -
从零开发区块链应用(五)--golang网络请求
文章目录一、http请求简介二、初始化客户端三、golang发起GET请求3.1 GET请求方法3.2 基本的GET请求3.3 带参数的GET请求四、golang发起POST请求4.1 POST请求方法4.2 不带参数的POST请求4.3 不带参数的POST请求一、http请求简介理解HTTP构建的网络应用只要关注两个端–客户端(client)和服务端(server),两个端的交互来自client的request,以及server端的response。所谓的http服务器,主要在于如何接受client的原创 2022-01-19 22:13:10 · 630 阅读 · 0 评论 -
从零开发区块链应用(四)--自定义业务错误信息
文章目录一、如何自定义错误信息1.1 为什么要自定义自己的错误信息1.2 错误码设计二、 实际开发错误处理2.1 代码实现2.2 错误码实战一、如何自定义错误信息1.1 为什么要自定义自己的错误信息在实际开发中引入错误码有如下好处:可以非常方便地定位问题和定位代码行(看到错误码知道什么意思,通过错误码可以定位到错误码所在行);如果API对外开放,有错误码将会更专业;错误码包含一定的信息,通过错误码可以判断出错误级别、错误模块和具体错误信息;在实际业务开发中,一个条错误信息需要包原创 2022-01-18 22:04:15 · 551 阅读 · 0 评论 -
从零开发区块链应用(二)--mysql安装及数据库表的安装创建
文章目录一、mysql在liunx环境安装1.1 下载mysql数据库镜像1.2 创建mysql挂载目录1.3 编写mysql配置文件1.4 启动mysql数据库容器二、mysql库表创建2.1 mysql数据库创建2.2 mysql数据表创建三、mysql常用数据类型3.1 数据类型介绍3.2 整数类型3.2.1 MySQL中的整数型数据类型:3.2.2 有符号与无符号3.2.3 类型的大小、取值范围与数据长度3.2.4 tinyint、int、decimal 应用场景3.3 日期/时间类型3.4 字原创 2022-01-18 21:59:45 · 869 阅读 · 0 评论 -
从零开发区块链应用(三)--mysql初始化及gorm框架使用
文章目录一、mysql初始化1.1 导入依赖包1.2 连接数据库1.3 设置连接数1.4 测试数据库是否可以连接成功二、gorm框架使用2.1 gorm库安装2.2 数据库连接2.3 表数据插入2.4 表数据查询2.5 表数据更新2.6 表数据删除一、mysql初始化1.1 导入依赖包import ( "database/sql" _ "github.com/go-sql-driver/mysql" "github.com/moba/moba/config" "github.com/moba/原创 2022-01-18 22:02:38 · 741 阅读 · 0 评论 -
从零开发区块链应用(一)--golang配置文件管理工具viper
[toc]参考文件:https://github.com/spf13/viper一、viper简介viper是一个go 开发工具,主要是用于处理各种格式的配置文件,简化程序配置的读取问题,所以viper 是一个配置解决方案,它拥有丰富的特性:支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件;可以设置监听配置文件的修改,修改时自动加载新的配置;从环境变量、命令行选项和io.Reader中读取配置;从远程配置系统中读取和监听修改,如原创 2022-01-18 21:57:37 · 8309 阅读 · 0 评论