- 博客(25)
- 问答 (2)
- 收藏
- 关注
转载 zk-SNARKs 在 Solidity 中的使用以及一些概念的解释
关于 zk-SNARKs 的简短描述为,我们需要在 zk 电路中编写一段代码,这段代码的输入是一些公开的数据,输出是一些私有的数据。zk-SNARKs 的验证算法可以验证这段代码的输出是否正确,但是验证算法不会泄露任何私有数据。而 Solidity 合约的主要目的是验证 zk-SNARKs 的验证算法的结果,如果验证算法的结果正确,那么合约会执行一些操作。也就是说,在 EVM 上,只是进行了结果的验证,并没有进行一些复杂的计算,这些计算都是在 zk 电路中进行的。
2023-09-28 16:21:48 422
原创 Solidity进阶必知问题
这些是 Solidity 汇编中的一些常用操作和函数,但需要注意的是,使用汇编需要对 EVM 有一定的了解,以及对底层操作的风险和影响有清晰的认识。存储中的数据是持久化的,意味着它们将一直保存在区块链上,即使合约的代码被更新。以上只是一些常见的安全漏洞和问题,在开发智能合约时,最好遵循最佳实践和安全指南,并考虑使用已经经过审查和测试的库来避免这些问题。合约中的存储布局会根据变量的声明顺序决定槽位的分配。这样的设计可以有效地利用存储槽位,避免了不必要的嵌套,并将相似的数据存储在数组和映射中。
2023-08-30 17:34:36 274
原创 golang进阶必知问题
总之,GMP 模型是 Go 语言并发编程的核心,通过轻量级的 Goroutines 和通信机制 Channels,以及调度器的协调管理,使得并发编程在 Go 中变得更加简单和高效。在 Go 语言中,"本地队列"和"全局队列"通常指的是调度器(Scheduler)中的工作队列,用于管理待执行的 Goroutine。这可以在短时间内减少锁的竞争,提高性能。使用普通的 map 数据结构时,如果需要在多个 Goroutine 中进行并发访问,通常需要使用 mutex 来保护 map 的读写操作,以避免并发问题。
2023-08-26 16:32:46 405
原创 智能合约模拟调用的具体应用:在golang中查询uniswap v3智能合约上某代币的价格
合约的方法如果是public view的,那么通过golang代码可以直接调用,步骤大致为:1、使用合约的ABI生成.go文件接口2、使用以太坊节点链接初始化以太坊客户端;3、以以太坊客户端和uniswap合约地址为参数,实例化uniswap合约4、直接调用uniswap的“查询价格”的方法,传入代币地址和数量等参数,获取价格。
2023-03-16 17:55:26 2298 5
原创 go和java的使用心得(一)
缘起:知道这个Option是在filecoin-lotus项目代码中,当时感觉不太好懂,但不影响对大局的理解,后来有时间了去深入研究了一下。从代码中可以看到,option模式的作用主要是在实例化对象的时候,可以更灵活的传参,可以以任意的顺序传任意部分字段的参数,比如有八个参数,我可以只传0或1或2或……8个参数,且顺序可以是乱序的。很多项目的源码中都有用到option模式,理解他的作用和用法对于阅读项目源码有好处。
2023-03-03 17:41:12 133
原创 Solidity随笔
"内置函数"的更严谨的说法应该是“全局变量”abi.encodeWithSelector是将4字节函数选择器和参数进行编码。参考:Solidity极简入门: 29. 函数选择器Selector4字节函数选择器就是把函数签名(函数名+参数名)编码为4个字节的字节码可用于选择调用的函数参考:简书-Solidity Call函数这里的token.call是底层的合约调用方法,不建议用。推荐的方法是通过接口实例化后调用。
2023-02-15 13:59:04 942
原创 利用fastJSON存list入redis,从redis取出Object后转成原list
把list存入redis,会自动转为String;从redis取出的value类型是Object。怎么把Object转化为原list的类型?
2022-08-03 18:35:12 1410
原创 rust基础
本篇文章是[《Rust程序设计语言》](https://kaisery.github.io/trpl-zh-cn/title-page.html)第一~六章笔记
2022-01-07 17:15:39 1087
原创 gorm插入自增主键,查询到是0值问题的解决
问题描述:插入表格中的数据,uid字段设置为自增主键,实例化对象时uid可任意赋值,到表中一定是自动自增+1的值,但查询到的uid一直是0.问题解决:写了两个结构体,分别用于插入和查询,插入的结构体字段后面有主键自增标签,查询的结构体后面没有该标签。代码如下:type Catcoin struct { Uid int Addr string InvCode int InvCount int Puid int Puids string Ct
2021-08-03 13:42:28 4809 3
原创 go语言字符串转大整数
i := new(big.Int)i.SetString("123456789123456789123456789", 8) // 第一个参数传字符串,第二个是进制,8就是8进制fmt.Println(i)
2021-07-30 16:50:36 778
原创 go语言Lotus项目开发实战(Lotus设计、命令行、节点API、源码,urfave/cli、jaeger、mux路由……)
go语言项目开发实战一、命令行urfave/cli二、Jaeger一、命令行urfave/cli打开goland把下面的代码复制到testCli.go文件中,运行go mod init和go mod tidy拉取依赖。package mainimport ( "fmt" "github.com/urfave/cli" "log" "os")func main() { //实例化一个命令行程序 oApp := cli.NewApp() //程序名称 oApp.Name = "G
2021-05-10 13:00:09 7271 2
原创 后端学Linux
后端学Linux前言一、需要掌握的常识1、什么是Shell和Bash2、Linux目录结构3、提示符的含义4、命令加载的顺序5、用户和权限管理6、常用配置文件7、防火墙二、常用命令1、常用的Linux内部命令和Linux自带应用程序命令2、常用的第三方应用程序命令三、工作场景1、SSH远程连接到服务器2、切换用户为root3、如何多窗口显示4、安装项目依赖5、配置环境变量6、测试网速7、抢饭技术前言后端工程师,而非专业的运维工程师,学习Linux不需要掌握非常深的内容,看这篇就够了。一、需要掌握的常识
2021-05-10 09:05:31 709
原创 go语言实战(goModules/API/gorm/gin)
go语言实战一、GoModules项目管理二、go持久层框架gorm一、GoModules项目管理新建一个项目,如果想把它交给GoModules管理,需要在项目目录下运行命令行并输入:go mod initgo语言依赖管理:go.mod文件,go mod相关命令。golang自动下载所有依赖(包括goland怎么设置)golang自动下载所有依赖最好用的一个命令go get -d -v ./… (下载全部依赖,经测试好用。)二、go持久层框架gorm简介:gorm是中国的gol
2021-04-26 10:14:29 953 1
原创 go语言并发编程与原理
go语言并发编程与原理一、前置知识1、计算机硬件架构2、操作系统二、具体操作与现象1、并发编程关键字2、简单示例与结果3、三、并发原理图解一、前置知识1、计算机硬件架构2、操作系统二、具体操作与现象1、并发编程关键字2、简单示例与结果3、三、并发原理图解...
2021-04-18 12:26:00 271
原创 go语言基础进阶
go语言进阶前言一、import与init二、defer关键字三、匿名函数与闭包四、数组、切片详解五、map六、空接口的妙用七、GoModules项目管理前言一个好的学习者,一定要建立自己的节奏,看别人的教程,别人的视频,是别人的知识体系,不是自己的,最好的学习方式是:提出问题,自己主动寻找解答。在提出问题之前,可能连如何提问都不知道,这时可以先看别人的视频,但看懂不是最重要的,速通一遍,知道视频的体系,哪个视频讲了什么知识点,很重要。这样才能在主动寻找解答的时候迅速定位答案。一、import与in
2021-04-14 16:53:15 747
原创 go语言指针速通
go语言指针速通1、go语言指针概述2、go语言指针入门3、函数中的指针4、复杂类型对象如何取地址?5、指针与面向对象6、项目中的指针示例1、go语言指针概述go语言指针,其实就是Java中引用类型(区别于基本类型)的底层原理,涉及到内存结构,Java中的内存有堆栈方法区,而go语言中因为逃逸分析的存在,所以值类型和引用类型存放于堆栈是不一定的,编译器会自动优化,有利于减少垃圾产生,减少GC,同时减少程序员的负担。2、go语言指针入门理解go语言指针,只需要记住两个符号:*和&。&
2021-04-06 15:00:15 208
原创 HashMap底层红黑树与MySQL索引
HashMap底层红黑树与MySQL索引什么是时间复杂度?如何计算时间复杂度?常见的查找算法有哪些?哈希索引B+树红黑树二叉搜索树HashMap底层JDK中常见的集合容器包括哪些?List Set Map在概念上的差别?HashMap数据结构什么是时间复杂度?如何计算时间复杂度?常见的查找算法有哪些?遍历:暴力 for二分:能做二分查找必须是有序的哈希:最高效。JDK1.8里面HashMap:链表+红黑树索引:搜索引擎bfs&dfs:图论里面的遍历平衡树B+树B-Tree红黑树
2021-03-13 09:46:42 213
原创 JVM调优实战
JVM调优实例垃圾回收核心思想JVM调优案例垃圾回收核心思想公理:当一个对象不再被引用时则可以被回收。判断一个对象是否被引用的算法:1、引用计数法;2、可达性分析;引用计数法无法解决循环引用问题,所以目前主流垃圾回收器不采用。可达性分析需要先找到gc roots ,一般存在栈和方法区中。JDK1.2之后,对引用的概念进行了扩充:强软弱虚强引用永远不被回收,软引用在内存溢出时被回收,弱引用是在发生垃圾回收时都会被回收,虚引用是在被回收时发出一个通知。垃圾收集算法分类(从低级到高级):标记-清
2021-03-07 11:58:17 116
原创 对Java多线程、线程池以及在spring中的具体实现的一些浅见
对Java多线程、线程池以及在spring中的具体实现的一些浅见一、理解多线程及并发问题需要的前置知识★什么是线程,与进程的区别是什么★JVM内存结构JVM内存结构可分为三大块:运行时数据区可分为五部分:上述各部分的作用分别为:★什么是线程安全,什么是并发问题二、线程的具体实现★多线程的基本使用线程的生命周期:五种状态--线程的创建方法★线程池的概念及在spring中的实现三、深入理解spring框架中的多线程与bean的关系一、理解多线程及并发问题需要的前置知识★什么是线程,与进程的区别是什么一个操
2021-03-06 21:12:06 254
原创 区块链快速入门
2020年技术总结——区块链区块链基础大纲哈希算法椭圆曲线加密CAP BASE区块链数据结构共识协议区块链进阶大纲如何使用JAVA开发一款比特币(或其他币种的)钱包?区块链基础大纲学习区块链,要解决的问题:哈希算法非对称加密算法,例如RSA,ECC椭圆曲线加密数据结构 例如mercle tree分布式架构,分布式架构中经典的CAP理论。分布式账本。P2P网络通信比特币的一个区块中,包含了什么信息?一个区块是怎样产生,怎样加到链上的?P2P系统的共识算法有哪些?比特币采用的Pow算法是怎
2021-01-16 17:17:11 3371 4
原创 non-resolvable parent POM for项目,'parent.relativePath' points at no local POM问题的解决方法
把maven项目pom文件中2.2.6.RELEASE改成2.2.5.RELEASE即可。
2020-03-29 13:53:11 3047
空空如也
go仓库中有依赖,代码中报missing
2021-03-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人