【使用go开发区块链】之获取链上数据(02)

上一篇文章,我们完成了基础环境的搭建,并通过viper完成了配置文件的读取,本章,我们将要完成使用gorm连接数据库,并插入一条数据

(番外篇)Michael.W基于Foundry精读Openzeppelin第22期——内联汇编staticcall

内联汇编中,Instruction "staticcall"的功能及使用方法与Instruction "call"类似。唯一不同的是在"staticcall"的过程中不允许发生storage的修改。

【使用go开发区块链】之获取链上数据(01)

在我们实际开发项目中,很多时候都需要从链上获取区块数据,将数据加工处理后存入到数据库中,本章开始,我们来学习一下如何从链上获取数据(主动拉取)并存储到数据库中

Solidity 开发教程 - Solidity 开发基础系列

Solidity 开发基础: 使用Remix、数据类型(整型、地址、合约、数组、结构体、映射)介绍;函数修改器、事件、错误处理、库的使用。

  • DeCert.me
  • 发布于 2023-08-08
  • 阅读 ( 862 )
  • ( 20 )

Michael.W基于Foundry精读Openzeppelin第21期——ERC165.sol

ERC165合约是IERC165的标准实现。ERC165提供了本合约是否实现了IERC165接口的查询。如果需要额外支持其他interface,可在目标合约内重写supportsInterface(bytes4)方法。

Michael.W基于Foundry精读Openzeppelin第20期——EnumerableMap.sol

EnumerableMap库提供了Bytes32ToBytes32Map、UintToUintMap、UintToAddressMap、AddressToUintMap和Bytes32ToUintMap五种可迭代的map。每种map都提供了增添/更新键值及查询等操作且所有操作的时间复杂度为O(1)。

深入理解 Solidity 错误 #4 - try/catch

Solidity 的try/catch 语法和常见的语言中的表现不一样,try { } 块中的代码错误是无法被catch 的,这一点要小心要非常小心。

  • Tiny熊
  • 发布于 2023-08-04
  • 阅读 ( 1436 )

Vyper 被黑的时间线和反思

由于合约的不可变性, 项目会隐性依赖多年前编写的代码, 我们在修复 bug 时,就更需要注意它的潜在影响。

  • aisiji
  • 发布于 2023-08-04
  • 阅读 ( 920 )
  • ( 5 )

Michael.W基于Foundry精读Openzeppelin第19期——EnumerableSet.sol

EnumerableSet库提供了Bytes32Set、AddressSet和UintSet三种类型的set,分别适用于bytes32、address和uint256类型的元素。 每种set都提供了对应的增添元素、删除元素、查询当前set中元素个数等操作。几乎所有操作的时间复杂度均为O(1)。

深入理解 Solidity 错误 #3 - 错误处理

在深入理解 Solidity 错误"的第三篇, 探索处理错误,本文将揭晓这问问题的答案:asset 错误会消耗所有 gas 吗? require 提不提供错误字符有什么样的不同?外部调用的错误如何影响当前上下文?如何处理底层调用调用产生的错误?

  • Tiny熊
  • 发布于 2023-08-03
  • 阅读 ( 1651 )

深入理解 Solidity 错误 #2 - 运行时错误

在运行时错误是最常遇到的情况,你知道 ErrorPanic 的细微差别吗? 发生 Panic 错误真的会消耗所有的 gas 么,本文揭晓答案。

  • Tiny熊
  • 发布于 2023-08-02
  • 阅读 ( 1384 )

Michael.W基于Foundry精读Openzeppelin第18期——DoubleEndedQueue.sol

DoubleEndedQueue库提供了双向队列的数据结构及对应操作库函数,提供了队头或队尾插入及弹出元素值等逻辑功能。本库采用优化过的storage存储且所有操作的时间复杂度都是O(1)。特别要注意的是库中的clear操作仅仅将队头和队尾指针清零,而之前队列中的元素值依然留存在storage中

【使用go开发区块链】之智能合约交互(03)

本章我们就来学习一下如何使用abigen生成合约go文件并进行调用

深入了解 Solidity 错误 #1 - 编译器错误

深入了解 Solidity 错误第二篇, 了解编译器错误。

  • Tiny熊
  • 发布于 2023-08-01
  • 阅读 ( 1735 )

为什么是 Move 之编程语言的生态构建

Move 是最有潜力构建出像 Solidity 这样的生态系统,甚至超越 Solidity 的智能合约编程语言

Michael.W基于Foundry精读Openzeppelin第17期——BitMaps.sol

BitMaps库开发了一种存储更紧凑且高效的mapping(uint256=>bool)。传统的mapping(uint256=>bool)中一个slot只能存储一个键值对的bool值信息,而改用了BitMaps.BitMap数据结构后,一个slot理论上最多可以存256个键值对的bool值信息。

Michael.W基于Foundry精读Openzeppelin第16期——SignedSafeMath.sol

SignedSafeMath库就是直接对solidity内置的int256类型的加减乘除运算的函数封装。

Michael.W基于Foundry精读Openzeppelin第15期——SignedMath.sol

SignedMath库提供了solidity中尚未内置的标准有符号数的数学运算方法。

Michael.W基于Foundry精读Openzeppelin第14期——SafeMath.sol

SafeMath库是对solidity中uint256的加、减、乘、除和取模运算的一层封装。由于solidity 0.8之前的uint256运算是不做溢出检查,许多基于0.8版本之前的项目都会使用该库。0.8版本之后solidity编译器内置了整形数溢出检查,所以SafeMath库也不再被广泛使用。

【使用go开发区块链】之智能合约交互(02)

让我们一起学习一下如何使用abi的方式进行智能合约的调用