学习web3的第三天-感受ether的心跳

学习web3的第三天 前两天主要学习了solidity的语言语法,以及合约的知识,并且部署到一个测试环境。 今天呢,我们来操作线上的环境:),哈哈哈,不是真正的写,仅仅读取一些线上的交易消息,感受下ether的律动。 预备 1 申请一个infura的账号 直接官网申请即可,他是一个web2的服务,提供的api服务,把ether的信息转换成一个api和消息投递出来。你也可以本地启动一个ether的node,来接入node也可以。 infura 主要作用:提供一个proxy,把ether的信息转换成一个api和消息投递出来。 这里需要注册一个账户,并且拿到一个project-id,有足够的的免费额度,供你使用 2 打开etherscan,来进行一个信息的比对和查询,确保后续测试正常 etherscan 3 打开vscode,准备写代码 do by yourself 读ether和监听ether的交易消息 1 先来读取一个ether的最高交易区块 // 获取最高交易区块,使用infura的api client, err := rpc.Dial("https://mainnet.infura.io/v3/<YOUR-PROJECT-ID>") if err != nil { log.Fatalf("Could not connect to Infura: %v", err) } var lastBlock Block err = client.Call(&lastBlock, "eth_getBlockByNumber", "latest", true) if err != nil { fmt.Println("Cannot get the latest block:", err) return } // 获取最高区块的高度 fmt.Printf("Latest block: %v\n", lastBlock.Number) 2 监听NewBlock事件 // 获取最高交易区块,使用infura的websocket ws, err := ethclient.
Read more →

学习web3的第二天

学习web3的第二天 今天就学习下写以太坊合约,并且部署到以太坊网络上,再创建一个读合约的go版本的api server。 使用到的技术如下 go ethereum solidity ganache-cli 预备:软件安装 1 安装golang brew install golang 2 安装ethereum follow official site geth 主要作用,提供一些命令行,如 apigen ,生成合约的go代码 3 安装solidity follow official site soliditylang 主要作用,提供solidity 的命令行,如 solc 4 安装ganache-cli brew install ganache-cli 主要作用,提供一个本地的节点,用来测试合约的功能 写合约主要源代码-solidity 代码 1 写合约的solidity代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; contract MySmartContract { function Hello() public view returns (string memory) { return "Hello World"; } function Greet(string memory str) public view returns (string memory) { return str; } } 解释:首先是一个无参数的方法,Hello,一个是有参数的方法,Greet。
Read more →

学习web3的第一天

学习web3的第一天 闲着无事,虽然自己对web3热情满满,但实际并没有去参与,仅仅是买点币作为一个对行业的贡献。 前几天看到一个twitter话题,说一周学会web3开发,来吧,说干就干,开始学习。 此篇文章仅做记录使用,记录自己的收获和学习过程。 学习过程 1 打开google docs,看了下描述 一周学会 Web 3 开发 - 建议收集 从中发觉到几个网站,开始进行遍历和递归查找。 solidity极简入门 web3-from-zero 2 先遍历solidity极简入门 看了solidity的变量、函数、类等概念,在remix操作一番,结束,结果发现了一个uint256,这个感觉是从go中来的,翻看起来go-ethereum的代码,发现了一个uint256类型。 发现新的点 uint256 uint256 go-ethereum go-ethereum 3 uint256 类型 一看这个就是大数,go中最大是uint64, 256的话,就是四个uint64,是一个slice。打开uint256的github,一看才100多个star,这个是一个经典的类型,可以看出实际没有人关心这个类型,只关心它的操作。没有业务上的意义,不好展开。 github首页重点讲了他和标准库的对比,就是比标准库的bigint 强悍多少多少。自己没跑过benchmark,怀着好奇,用github的codespace打开一个实例,然后跑了下benchmark,哇,比bigint快好多。 4 go-ethereum 的依赖库分析 本来是去找下uint256在go-ethereum中的依赖和使用的,意外打开了go.mod,所以顺藤摸瓜的看了看go-ethereum的依赖库,发现了很多有名的go library。 首先是依赖的云服务,可以看出是aws和azure,cloudflare 具体要看怎么用的 azure-storage-blob-go azure-storage-blob-go aws-sdk-go aws-sdk-go cloudflare-go cloudflare-go docker docker 数据结构,用到了lru hashicorp/golang-lru golang-lru fastcache fastcache golang-set golang-set mmap mmap stack go-stack uint256 uint256 bloomfilter bloomfilter 数据传输 protobuf protobuf websocket websocket id生成器 google/uuid uuid 数据库
Read more →