自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 Solidity应用:ERC721

ERC-721是一个流行的技术标准,基于ERC-721标准开发的代币合约被统称为"非同质化代币(Non-Fungible Tokens,缩写为NFT)",ERC-721代币相较于ERC-20代币最大的区别就是不可分割性和唯一性,其Token的最小单位为1,且每个Token都是唯一的。ERC-721标准提供了一套规则和准则,允许开发者在以太坊生态系统内以一致和可互操作的方式创建和管理NFT。

2023-09-01 11:50:25 359

原创 Solidity应用:ERC20

ERC20是一套基于以太坊网络的标准代币发行协议。有了ERC20,开发者们得以高效、可靠、低成本地创造专属自己项目的代币,是以太坊网络第一个真正意义上的应用。ERC20实现了代币转账的基本逻辑:账户余额、转账、授权转账、代币总供给、代币信息(可选):名称,代号,小数位数。合约只要继承并实现IERC20的所有接口就代表合约满足了ERC20协议的标准。

2023-08-10 22:41:46 460 2

原创 Solidity应用:验证签名

在以太坊的ECDSA标准中,被签名的消息是一组数据的keccak256哈希,为bytes32类型。我们可以把任何想要签名的内容利用abi.encodePacked()函数打包,然后用keccak256()计算哈希,作为消息。,该字符串实在EIP191提出的。EIP191提倡在消息前加上"\x19Ethereum Signed Message:\n32"字符,并再做一次keccak256哈希,作为以太坊签名消息。然后我们对比恢复出来的地址和小狐狸钱包签名的地址是否一致,即可验证签名是否有效。

2023-08-03 15:03:35 508

原创 Solidity进阶:自毁合约selfdestruct

selfdestruct是solidity内置函数,用来删除合约并将该合约剩余的ETH发送到指定地址。

2023-07-31 17:47:53 503

原创 Solidity进阶:通过合约部署合约

预测地址是通过当前工厂合约的地址+salt+被部署合约的bytecode来计算,这就意味着工厂合约地址不变、salt不变、被部署合约不变的情况下,新合约地址也不会变,所以相同的salt只能使用一次,否则会发生重复部署合约的情况。使用new在工厂合约部署合约,新的合约地址是通过工厂合约的地址和工厂合约对外发出交易的nonce值计算出来的。create2方法是使用工厂合约的地址加盐值去计算新合约的地址,所以新合约的地址在被部署前就可以计算出来。Remix验证:计算的地址与实际部署的地址一致。

2023-07-31 17:01:28 400

原创 Solidity进阶:哈希运算

对比上面两次结果发现虽然参数不一样但encodePacked编码后的结果一样,这样就会产生不一样的参数生成一样的哈希值,而encode不会存在这种情况,所以在hash运算时推荐使用abi.encode。哈希函数(hash function)是一个密码学概念,它可以将任意长度的消息转换为一个固定长度的值,这个值也称作哈希(hash)。在solidity中的哈希值为byte32定长字节类型,使用内部函数Keccak256加密。哈希的应用:获取唯一数据标识,签名运算。

2023-07-31 14:25:20 150

原创 Solidity进阶:库合约

库函数是一种特殊的合约,为了提升solidity代码的复用性和减少gas而存在,使用定义。库合约一般都是一些好用的函数合集。

2023-07-31 10:37:09 82

原创 Solidity进阶:call、delegatecall

前两节介绍了通过合约的源码和接口两种方法调用合约,现在使用call和delegatecall来调用。这两个函数都是低级函数,应谨慎使用。具体来说,任何未知的合约都可能是恶意的,我们在调用一个合约的同时就将控制权交给了它,而合约又可以回调合约,所以要准备好在调用返回时改变相应的状态变量(可参考), 与其他合约交互的常规方法是在合约对象上调用函数(x.f())。

2023-07-28 10:37:56 221 2

原创 Solidity进阶:抽象合约和接口

如果智能合约中未实现合约中的至少一个函数,即某个函数缺少主体{}中的内容,或者合约没有为其所有的基类合约构造函数提供参数时,则必须将合约标记为 abstract。如果我们知道一个合约实现了某接口,我们不需要知道它具体代码实现只需知道它的合约地址,用该接口就可以与它交互。接口基本上仅限于合约 ABI 可以表示的内容,编译接口可以得到合约的ABI,利用。接口类似于抽象合约,但是它们不能实现任何函数。工具也可以将ABI json文件转换为接口sol文件。标记,以便继承它的合约能够重写此函数。

2023-07-25 12:07:13 125

原创 Solidity进阶:调用其他合约

我们可以利用合约的地址和合约代码(或接口)来创建合约的引用:ContractName(_Address),其中ContractName是合约名,_Address是合约地址。然后用合约的引用来调用它的函数:ContractName(_Address).f(),其中f()是要调用的函数。我们先写一个简单的合约TargetContract来调用。

2023-07-23 19:20:33 218

原创 Solidity进阶:发送、接收ETH

call()没有gas限制,可以支持对方合约fallback()或receive()函数实现复杂逻辑。send()的gas限制是2300,足够用于转账,但对方合约的fallback()或receive()函数不能实现太复杂的逻辑。transfer()的gas限制是2300,足够用于转账,但对方合约的fallback()或receive()函数不能实现太复杂的逻辑。Solidity有三种方法向其他合约发送ETH,他们是:transfer(),send()和call(),其中call()是被鼓励的用法。

2023-07-23 00:30:46 311

原创 Solidity从入门到放弃:继承

继承是面向对象编程很重要的组成部分,可以显著减少重复代码。如果把合约看作是对象的话,solidity也是面向对象的编程,也支持继承。: 父合约中的函数,如果希望子合约重写,需要加上virtual关键字。:子合约重写了父合约中的函数,需要加上override关键字。

2023-07-22 18:58:21 72

原创 Solidity从入门到放弃:构造函数、修饰器和事件

事件是EVM的日志功能之上的抽象。事件在合约中可被继承。当他们被调用时,会使参数被存储到交易的日志中,不会存储在状态变量中,体现在区块浏览器交易记录的logs中。indexed标记的变量可以理解为检索事件的索引“键”,每个事件最多可以有三个带有indexed属性的参数,每个 indexed 变量的大小为固定的256比特。modifier的主要使用场景是运行函数前的检查,减少代码冗余。定义,每个合约可以定义一个,只在部署合约的时候自动运行一次。在函数中使用修饰器,如:只有合约部署可以修改owner。

2023-07-20 12:14:25 116

原创 Solidity从入门到放弃:报错控制

error是solidity 0.8版本新加的内容,方便且高效(省gas)地向用户解释操作失败的原因。人们可以在contract之外定义异常。// 自定义错误参数也可省略 error MyError(address caller , uint _i);} }

2023-07-19 15:54:08 102

原创 Solidity从入门到放弃:流程控制与循环

solidity中不支持死循环,支持continue和break中断循环。solidity中的if-else与js中类型,也支持三元运算。

2023-07-18 17:13:34 87

原创 Solidity从入门到放弃:数组、映射、结构体、枚举

1、映射的key只能是solidity默认类型,不能使用结构体,value可以使用结构体2、映射的存储位置必须是storage,因此可以用于合约的状态变量3、如果映射声明为public,那么solidity会自动给你创建一个getter函数,可以通过Key来查询对应的Value4、给映射新增的键值对的语法为_Var[_Key] = _Value,其中_Var是映射变量名,_Key和_Value对应新增的键值对。

2023-07-18 15:48:56 388

原创 Solidity从入门到放弃:函数

函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量,也可以将一个函数作为参数进行传递,还能在函数调用中返回函数类型变量。函数类型有两类: - 内部(internal) 函数类型 - 外部(external) 函数类型。内部函数只能在当前合约内被调用(更具体来说,在当前代码块内,包括内部库函数和继承的函数中),因为它们不能在当前合约上下文的外部被执行。调用一个内部函数是通过跳转到它的入口标签来实现的,就像在当前合约的内部调用一个函数。:函数返回的变量类型和名称。

2023-07-11 17:24:11 64

原创 Solidity从入门到放弃:类型与变量

是全局范围工作的变量,都是solidity预留关键字。他们可以在函数内不声明直接使用,下面是一些常用的全局变量,完整的列表请看这个。:是仅在函数执行过程中有效的变量,函数退出后,变量无效。局部变量的数据存储在内存里,不上链,gas低。:是数据存储在链上的变量,所有合约内函数都可以访问 ,gas消耗高。算数运算符: +, -, 一元运算 -, +, *, /, %(取余),**(幂)比较运算符(返回布尔值):

2023-06-30 18:08:51 80

原创 Solidity从入门到放弃:第一个Solidity程序 HelloWeb3

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。智能合约是管理以太坊状态里账户行为的程序。Solidity是一种针对Ethereum虚拟机(EVM)设计的语言,在部署合约时,应该尽量使用最新版本,因为新版本会有一些重大的新特性以及bug修复(除特殊情况)。

2023-06-27 16:38:25 209

原创 solidity从入门到放弃:开发环境搭建

是官方推荐的IDE,可在线使用,但是要使用本地工作区需要做一些配置。

2023-06-25 11:11:36 335 2

原创 Hyperledger Fabric2.4 使用二进制文件多机部署

前面我们的区块链网络是使用docker启动,但是生产环境不建议使用docker部署。生产环境应该多服务器部署,这里使用Hyperledger Fabric二进制文件部署了由多台服务器组成的Fabric网络。

2023-05-01 17:05:32 1106

原创 Hyperledger fabric2.4 链码调用与fabric-gateway

前面的文章实现了如何搭建自己的区块链网络,使用命令行或SDK创建通道、安装部署链码。链码调用有两种方式:通道客户端调用和fabric-gateway调用。以官方示例sacc链码为例,需要初始化的链码必须先初始化,代码参考上篇。

2023-04-18 15:27:21 814

原创 Laravel Maatwebsite/Excel 3.1 导出表格

Laravel Maatwebsite/excel 导出excle表格以及多sheet导出

2023-01-07 11:13:36 1062

原创 Hyperledger fabric2.4 fabric-SDK-GO开发

在实际部署时,一般将Fabric SDK作为API到提供者,为上层应用或对外服务提供Fabric区块链网络底层服务。Fabric SDK本质是一个Fabric基础对象,功能的封装集合和客户端框架实现,旨在方便开发人员快速开发出符合产品业务需求的服务模块。获取 Fabric 和 Fabric CA 的客户端 SDK 包,SDK 文档可以在下面使用sdk实现创建通道,加入通道,打包链码,安装链码,升级链码等功能。

2022-09-12 19:46:42 4327 10

原创 Hyperledger fabric2.4 链码编写

fabric智能合约开发示例

2022-08-21 22:52:33 677

原创 Hyperledger fabric2.4 fabric-sdk-go调用错误整理

fabric-sdk-go调用错误整理

2022-07-07 09:37:05 5075 2

原创 Hyperledger fabric2.4 搭建自己的网络

1.1 将fabric-samples/bin目录下的二进制文件复制到/usr/local/bin目录,以便全局使用这些命令1.2 新建文件夹 fixtures,存放我们网络的相关文件1.3 使用cryptogen工具生成crypto-config.yaml文件OrdererOrgs:配置Orderer节点,生产环境应该有多个实例,否则可能会有单点故障问题PeerOrgs:配置节点组织,下面文件配置两个组织:Org1,Template:Count:............

2022-07-02 20:10:19 2458 9

原创 Hyperledger fabric2.4:搭建测试网络

Hyperledger fabric2.4:搭建测试网络

2022-06-22 15:02:50 727

原创 Ubuntu 安装Kafka

1、下载二进制安装包下载地址:http://kafka.apache.org/downloadswget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.0/kafka_2.12-2.8.0.tgz2、解压安装包tar -zxvf kafka_2.12-2.8.0.tgz3、启动zookeepercd kafka_2.12-2.8.0/bin/启动zookeeper./zookeeper-server-start.sh ../

2021-08-20 18:24:01 368

原创 GO语言开发之etcd入门

etcd简介etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。etcd具有以下特点:完全复制:集群中的每个节点都可以使用完整的存档高可用性:Etcd可用于避免硬件的单点故障或网络问题一致性:每次读取都会返回跨多主机的最新写入简单:包括一个定义良好、面向用户的API(gRPC)安全:实现了带有可选的客户端证书身份验证的自动化TLS快速:每秒10000次写入的基准速度可靠:使用Raft算法实现了强一致、高可用的服务存储目录

2021-07-02 23:36:12 1043

原创 GO语言并发执行多个Cron任务

1.程序流程2.使用依赖包1). os/exec执行命令 基本用法: // 创建命令 Command("sh", "-c", cmd) // 执行命令并捕获执行结果 CombinedOutput() // 直接执行,不捕获执行结果 Run()2).“github.com/gorhill/cronexpr” 创建Cron表达式 基本用法: Parse():解析与校验cron表达式 Next():根据当前时间,计算下次调度时间完整代码:package mainimpor

2021-06-27 17:40:50 1329

原创 RabbitMQ:Simple 简单模式

simple模式:简单模式,RabbitMQ最常用的模式,只有一个生产者和消费者,没有Exchange和RoutingKey的参与,只需指定QueueName即可。完整代码:package RabbitMQTestimport ( "fmt" "github.com/streadway/amqp")const MQURL = "amqp://guest:guest@127.0.0.1:5672/"// 创建RabbitMQ链接func NewRabbitMQClent() (conn

2021-06-10 15:27:15 213

原创 RabbitMQ安装以及常用命令(一)

系统:MacOS安装命令:brew install rabbitmq启停rabbitmq:brew services start/stop rabbitmqrabbitmq默认端口:15672启动服务后访问 http://localhost:15672/查看管理页面默认账号密码:guest guestrabbitmq-plugins list查看插件rabbitmq-plugins enable/disbale xxx 启用/停用插件...

2021-06-08 23:05:43 278 2

转载 Lotus源码分析--代码目录结构

Filecoin官方已决定在即将到来的12月11号测试网上线时,使用Lotus作为实现系统进行测试。Lotus作为一个优秀的Filecoin实现,目前也已得到了官方和广大测试矿工的足够重视,正在紧锣密鼓地为测试网上线做着准备,每天都会有大量的更新和Bug修复。所以理解Lotus的实现对于理解整个Filcoin项目有着重要的意义。 本文作为源码分析的第一篇,会带领大家了解一下Lotus目前的目录结构,以期大家对Lotus项目有个直观的认识,为后续的深入理解源码打下不错的基础。ap...

2021-01-26 10:14:46 1757 1

原创 FILECOIN lotus 安装部署

系统环境系统:ubuntu安装基础环境:sudo apt install mesa-opencl-icd ocl-icd-opencl-dev gcc git bzr jq pkg-config curl clang build-essential hwloc libhwloc-dev wget -y && sudo apt upgrade -y安装rustup执行命令:curl --proto ‘=https’ --tlsv1.2 -sSf https://sh.rustup.rs

2021-01-25 19:11:16 1353

jQuery新浪微博头像裁切预览代码

jQuery新浪微博头像裁切预览代码,支持IE,火狐,360,谷歌

2015-07-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除