- 博客(34)
- 收藏
- 关注
原创 零知识证明深度揭秘:从洞穴故事到zk-SNARKs的数学与工程全解析!
零知识证明(ZKP)是一种强大的密码学技术,使得一方能够向另一方证明某个陈述是真实的,而无需透露任何额外的信息。本文通过“洞穴与密码”的经典故事,形象地阐释了零知识证明的基本思想。随后,介绍了零知识证明的主要类型,包括zk-SNARKs、zk-STARKs和PLONK,重点解析了zk-SNARKs的核心原理和实现流程。文章详细讲解了椭圆曲线密码学(ECC)与双线性映射在zk-SNARKs中的关键作用,涵盖了电路生成、可信设置、R1CS构造、witness计算、证明生成与验证等技术细节。最后,探讨了零知识证明
2025-05-27 17:06:20
169
原创 别让对手抄答案!一文读懂 Commit-Reveal 原理与实战
在区块链世界中,智能合约的公开性带来了前所未有的透明与信任,但同时也埋下了策略泄露、抢跑攻击、MEV等隐患。本文将聚焦一种经典解决方案——Commit-Reveal机制,用通俗语言剖析其原理与流程,结合Solidity实战演示完整实现过程,并对其在投票、竞拍、博弈等场景中的应用进行深入解析。助你从原理到实战,全面掌握这项保障链上公平性的核心技术!
2025-05-21 21:34:38
154
原创 Gas优化利器:Merkle 树如何助力链上数据效率革命
本文深入介绍了 Merkle 树在区块链中的应用原理与实战操作,展示其如何通过结构化哈希验证机制,大幅提升链上数据验证效率并节省 Gas 成本。内容涵盖 Merkle 树构建原理、Mermaid 可视化图示、JavaScript 脚本离线生成与验证流程、Solidity 合约中的验证逻辑,以及空投和白名单等典型应用场景,是一篇兼具理论与实践的技术指南。
2025-05-20 23:01:52
330
4
原创 读懂区块背后的秘密:一文搞懂智能合约扫链原理与实战
本文系统讲解如何使用 Java 扫描智能合约事件,从本地 Hardhat 链到连接 Sepolia 测试网,逐步演示合约部署、事件监听及交易解析流程。通过 Web3j 实现对合约事件的实时捕捉,帮助开发者快速掌握扫链技术,应用于 DApp 后台、链上监控与数据分析场景。读懂区块背后的秘密,从这一篇实战开始。
2025-05-18 23:06:49
105
原创 智能合约调用全景实战:前端 JS 与后端 Java 两种方式全面解析
本篇博客将通过实战案例,带你深入掌握如何调用以太坊智能合约,全面解析前端 JS 与后端 Java 两种主流调用方式。在实际开发中,我们遇到了诸如合约部署、参数编码、Gas 设置、签名授权等一系列问题,本文将逐一拆解这些常见“坑”及对应解决方案。同时,附带完整的前后端示例代码,助你快速上手,少走弯路。
2025-05-17 07:35:04
307
原创 深入浅出 IPFS 在 DApps 和 NFT 中的应用:以 Pinata 实战为例
本文介绍了在 DApp 和 NFT 开发中使用 IPFS 存储去中心化资源的实现方法。通过在浏览器中启动 IPFS 节点,我们可以上传和下载文件,但浏览器环境中的节点无法保证文件的永久保存。为了解决这个问题,文章介绍了使用第三方服务(如 Pinata)进行文件的永久 Pin 操作,确保文件长久可用。通过完整的代码示例,展示了如何使用 JWT 上传文件和 JSON 数据。读者可以学习如何将 IPFS 集成到 DApp 和 NFT 项目中,确保资源的稳定存储与访问。
2025-05-14 22:30:21
323
原创 零Gas授权实战:用线下签名玩转智能合约 Permit 机制
本文深入探讨了如何使用智能合约中的 Permit 机制 实现零 Gas 授权,并结合 线下签名 进行演示。我们介绍了 Meta Transaction 和 Gasless Wallet 的原理,阐明了如何通过这种技术在不支付 Gas 费用的情况下,授权某个地址进行代币操作。通过示例代码,讲解了如何通过 ethers.js 和 Hardhat 环境生成、验证和执行一个线下签名授权过程。
2025-05-13 19:42:18
191
原创 智能合约之ERC20合约和ERC721合约
本文对ERC20和ERC721合约的代码实现做了详细的拆解,从本文中读者可以非常清晰的了解到ERC20和ERC721合约提供了哪些接口和方法,实现了哪些功能,适合在哪些业务场景中使用。
2025-05-11 11:26:15
259
原创 智能合约之质押奖励
本文主要讲解了质押奖励的业务场景,连续质押奖励和离散质押奖励两种不同的奖励实现方式,代码实现的关键逻辑,以及两种质押奖励的优缺点对比。
2025-05-11 08:41:17
169
原创 智能合约合约升级的几种实现方式
本文主要讲解了合约升级的业务场景,可升级合约实现遇到的问题及解决方案,openzeppelin开源框架提供的三种可升级合约的使用,以及hardhat中可升级合约的部署和升级方式
2025-05-09 00:03:24
1048
原创 分支合并自动化脚本
闲来无事,写了个自动化合并分支的脚本,可以实现各个分支的代码自动合并,有冲突的代码文件会自动展示出来,手动修改冲突后会自动提交和推送远程分支。
2023-04-09 07:49:35
616
原创 记一次本地项目启动异常打成jar包启动正常问题跟踪和解决
在项目开发过程中,遇到了一个问题,项目打包后使用start.sh脚本启动没有问题,但是在本地运行main方法启动不了。
2023-03-24 11:17:28
285
原创 冒泡排序可视化
背景闲来无事,写了一个可在控制台可视化显示的冒泡排序过程的小程序,废话不多说,直接上代码代码import java.util.Random;public class Main7 { public static void main(String[] args) { int[] arr = generateArr(10, 10); for (int to = arr.length - 1; to > 0; to--) { prin
2021-06-13 16:20:29
690
2
原创 Jstat/Jps执行时报进程不存在问题解决
背景在项目上线后,我们通常都需要查看jvm的运行状况,但是使用jps或者jstat命令的时候有时候会发现报进程编号找不到的问题,如下:问题解决经过在网上一番查找,jps或者jstat等jdk自带的命令会使用到/tmp/hsperfdata_系统用户名/{系统用户名}/系统用户名/{java进程号}这个文件,但是进入到/tmp/hsperfdata_${系统用户名}目录下发现这个进程文件不存在,那么这个进程文件为什么没有生成呢?继续查找原因,发现tomcat启动的时候是使用systemctl命令启动
2021-05-21 10:18:08
994
原创 记一次虚拟机内存泄漏问题跟踪及解决
在最近的一次线上部署项目中,发现有一个部署的tomcat内存一直在增长,第一感觉就是内存泄漏了,然后各种查看虚拟机的运行状态,终于将问题解决了,下面记录一下我解决的方法和步骤java及tomcat版本使用jstat命令查看虚拟机内存的运行状况从图上我们发现,eden区一直在稳定的增长,增长到100M的时候就会发生YGC,S0,S0中的对象就行复制拷贝,YGC之后M中的值也在变化,说明有对象保存在常量池中。使用jmap查看哪个对象占用空间最多jmap -histo [进程ID] >
2021-05-21 10:14:40
445
原创 Apollo与Springboot集成
背景在项目开发中,我们经常会遇到这么一种问题,就是开发、测试、线上环境连接的数据库、redis等参数配置都是不一样的,当我们在开发环境把项目开发完成之后,就需要将代码放到测试或者线上环境,由于不同环境的参数是不一样的,我们还得将配置文件修改一遍,这样很麻烦,现在出现一个可以动态配置不同环境参数变量的工具,apollo,可以很方便的就解决了我们遇到的难题。Apollo是由携程框架部门研发的分布式配置中心,能够集中化管理不同环境、不同集群的配置,配置修改后能实时的推送到应用端,并且具备规范的权限、流程治理等
2021-05-20 15:24:55
278
原创 高性能队列--Disruptor
背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列。基于Disruptor开发的系统单线程可以支撑每秒600万的订单。那么,这种高性能的内存队列是如何实现的呢?JAVA内置的队列下面是CPU与缓存的示意图,查询效率是L1>L2>L3>主存下面是CPU访问不通层级缓存数据的时间概念缓存行概念cache是由多个cache line组成的,每个cache line 通常是64个字节,并且它有效地引用内存中的一块地址。cpu每次从主存中拉取数据时,都会将相邻的
2021-05-20 13:43:48
415
1
原创 canal源码解读
什么是canalcanal是一个开源中间件,由阿里集团开发,主要原理是伪装成MySQL slave,接收MySQL master的binlog日志,最终来实现跨MySQL数据库或者MySQL数据库与非MySQL数据库之间的数据的准实时同步功能。canal支持的源端 MySQL 版本: 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.xcanal架构图参考资料:https://github.com/alibaba/canal...
2021-05-20 13:43:38
1523
原创 高阶架构 -- 数据同步之ABA问题
背景由于数据库的like %xxx% 对大文本检索效率很差,所以在实际开发过程中,遇到文本检索的应用场景,我们会考虑使用ElasticSearch这种专业的全文搜索和分析引擎来替换掉传统的数据库检索。使用ElasticSearch进行全文检索,数据从哪来?对,从数据库来,这样就涉及到了数据库与ES之间的数据同步的功能。数据同步方案那么,数据同步应该如何实现呢?传统的实现数据库到ES的数据同步实现方案有以下几种。第一种方案:数据双写顾名思义,就是写入数据库的同时,也写入到ES索引。但是这样会出现数
2021-05-20 13:43:28
772
1
原创 请求合并框架 -- HystrixCollapser
背景远程调用最常见的问题:通信消耗与连接数占用高并发场景下,因通信次数的增加,总的通信时间将会变得不那么理想因为对依赖服务的资源占用有限,将出现排队等待与响应延迟的问题Hystrix提供了HystrixCollapser来实现请求的合并,以减少通信消耗和线程数的占用HystrixCollapser 实现了在 HystrixCommand 之前放置一个合并处理器:将处于一个很短时间窗(默认10毫秒)内对同一依赖服务的多个请求进行整合并以批量方式发起请求的功能(服务提供方也需要提供相应的批量实
2021-05-20 13:43:15
519
1
原创 Kafka技术总结
控制台调用创建topic/usr/local/kafka/kafka_2.11-2.2.0/bin/kafka-topics.sh --bootstrap-server kafka:9092 --create --topic topic01 --partitions 2 --replication-factor 1创建控制台消费者/usr/local/kafka/kafka_2.11-2.2.0/bin/kafka-console-consumer.sh --bootstrap-server ka
2021-05-20 13:43:02
234
原创 Docker技术总结
Docker描述docker是开源的应用程序引擎,基于go语言开发容器是完全使用沙箱机制,容器开销极低docker就是容器化技术的代名词docker也具备一定虚拟化职能安装docker下载docker下载地址:https://docs.docker.com/engine/install/安装yum-utils安装包yum install -y yum-utils安装数据存储驱动包 yum install -y device-mapper-persistent-data lvm2
2021-05-20 13:42:51
178
原创 ES文档新增冲突问题
问题公司现在使用的ES版本是5.5,发现在生成索引文档的时候,会有新增文档冲突问题。比如同一个索引文档中的数据来自两个后台服务,当服务A查询到索引中没有文档1,同一时间服务B也查询到索引中没有文档1,于是两个服务都使用index的方式新增索引文档,导致最后的结果是:文档中要么保存着服务A中的所有字段数据,丢失了服务B中的所有字段数据;要么文档中保存着服务B中的所有字段数据,丢失了服务A中的字段数据。这种情况就导致了数据丢失的问题。解决方案使用版本控制,在插入的时候传入一个版本号为1的值,如果文档已
2021-05-20 13:42:34
1115
原创 快速统计HBase表行数
背景对于其它数据库而言,统计一张表的行数是最基本的操作,但是对于HBase这种列式存储的数据库而言,使用不同方式统计表的行数效率差别巨大,本文将提供两种java客户端代码统计HBase表行数的方法方案一:scan + filter引入jar包<dependency> <groupId>com.aliyun.hbase</groupId> <artifactId>alihbase-client</artifactId>
2021-05-20 13:42:15
521
原创 Mysql安装
背景本次安装是在centos7上安装mysql-5.7.29下载安装包下载mysql 5.7wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar解压安装包解压安装包并安装tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar安装新版mysql前,需将系统自带的mariadb-lib卸载(mariadb-libs-5.5.6
2020-12-25 10:31:28
122
原创 zookeeper安装
背景本次安装是在centos7上安装zookeeper3.6.2下载下载安装包,下载地址: https://zookeeper.apache.org/releases.html创建安装目录创建安装目录 mkdir /usr/local/zookeeper解压压缩包解压压缩文件到指定目录:tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /usr/local/zookeeper/创建配置文件进入目录:/usr/local/zookeeper/apa
2020-12-25 10:21:28
118
原创 Kafka安装
背景本博客描述的是在centos7上安装kafka_2.11_2.2.0安装java安装java8以上,配置好环境变量修改主机名vi /etc/hostnamereboot修改/etc/hosts将主机名和ip追加上Ping一下主机名,看能否ping通关闭防火墙systemctl status firewalld.servicesystemctl stop firewalld.servicesystemctl disable firewalld.service安装zookeepe
2020-12-25 10:06:50
184
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人