区块链
文章平均质量分 69
培根芝士
相看两厌,不若相忘于江湖
展开
-
Fabric的Raft共识机制
在fabric1.4.1的版本中,提供了基于Raft共识的Raft排序服务。Raft的模型可以容忍奔溃,如果有节点故障掉线可以正常运行。前提是要有大多数存活,也就是要保证1/2以上的节点个数正常运行。Raft共识是“主从模型”,主节点通过动态选举决定,从节点是主节点的复制。Raft排序服务比kafka排序服务易于设置和管理。并且Raft的设计允许不同的组织贡献节点来共同组成排序服务。Raft算法是一种为了管理复制日志的一致性算法。为了提升可理解性,Raft将一致性算法分解成了几个关键模块,例如领导者选举原创 2022-02-28 14:42:10 · 9705 阅读 · 1 评论 -
Pinata上传文件夹
Pinata提供了友好、直观的用户界面和API,方便用户在 IPFS上创建和管理内容。Getting Started - Pinata Docshttps://docs.pinata.cloudPinata提供了上传文件和上传文件夹的APINodejs://imports needed for this functionconst axios = require('axios');const fs = require('fs');const FormData = require原创 2022-04-27 15:03:28 · 3161 阅读 · 0 评论 -
ganache-cli命令行参数
ganache-cli是个人区块链ganache的命令行版本,可以方便开发者快速进行以太坊DApp的开发与测试。Ganache | Overview - Truffle Suitehttps://trufflesuite.com/docs/ganache/启动选项-a 或 –accounts: 指定启动时要创建的测试账户数量。 -e 或 –defaultBalanceEther: 分配给每个测试账户的ether数量,默认值为100。 -b 或r –blockTime: 指定自动挖矿的bloc原创 2022-04-12 19:52:36 · 1097 阅读 · 0 评论 -
Web.3js监听智能合约事件event
合约代码:在前端页面调用合约写入数据时不会立即返回结果,这时需要再调用获取数据的函数,使用起来非常不便,这时event就可以很好解决这样的问题。合约代码:声明event事件:event Deposit(address indexed _from, bytes32 indexed _id, uint _value);触发event事件:emit Deposit(msg.sender, _id, msg.value);pragma solidity >=0.6..原创 2022-03-11 14:30:12 · 4622 阅读 · 1 评论 -
EIP712以太坊签名和验签
EIP712旨在提高链下消息签名对链上的可用性。我们可以看到,因为节省gas以及减少链上交易的原因,采用链下消息签名的需求日益增长。现在已经被签名的消息,展示给用户的是一串难以理解的16进制的字符串,附带一些组成这个消息的项目的上下文。EIP-712: Ethereum typed structured data hashing and signinghttps://eips.ethereum.org/EIPS/eip-712Signing Data | MetaMask DocsDeveloper d原创 2022-02-25 14:07:16 · 12537 阅读 · 2 评论 -
使用docker部署ETH区块链浏览器
拉取docker镜像docker pull julianliu/eth-explorer:latest开启容器,开放8000端口docker run -d -p 8000:8000 julianliu/eth-explorer修改配置文件修改app/app.js 文件;把GETH_HOSTNAME 改成自己的GETH节点IP,GETH_RPCPORT端口改成节点RPC端口;同时修改app/index.html ,查找使用“ajax.googleapis.com”,替换为国内可用的原创 2022-02-18 13:47:25 · 7050 阅读 · 0 评论 -
美图DPOS共识机制ETH节点网络启动和测试
节点网络启动1、简单测试起见,修改maxValidator为最小数consensus/dpos/dpos.gomaxValidatorSize = 32、构建美图以太坊docker镜像cd $GOPATH/src/github.com/meitu/go-ethereumdocker build . -t meitugeth3、建立节点数据目录mkdir meitucd meitumkdir node1mkdir node2mkdir node34、编写doc.原创 2022-02-07 15:14:43 · 975 阅读 · 0 评论 -
部署OpenZeppelin可升级合约
使用OpenZeppelin升级插件部署的合约具备可升级的特性:可以升级以修改其代码,同时保留其地址,状态和余额。 可以迭代地向项目中添加新功能,或修复在线上版本中可能发现的任何错误。配置开发环境创建一个新的npm项目mkdir mycontract && cd mycontractnpm init -y安装并初始化Trufflenpm i --save-dev trufflenpx truffle init安装Truffle升级插件npm i --sa原创 2022-01-29 17:22:58 · 3235 阅读 · 1 评论 -
使用geth创建私有链
安装:官网地址移除节点:geth removedb --datadir node1geth removedb --datadir node2geth removedb --datadir node3创建genesis.json:{ "config": { "chainId": 6666, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x000000000000000000000原创 2022-01-27 16:00:02 · 4284 阅读 · 0 评论 -
在Etherscan上自动验证Truffle智能合约
安装并启用truffle-plugin-verify使用npm或yarn安装truffle插件:npm install -D truffle-plugin-verifyyarn add -D truffle-plugin-verify安装后,将以下内容添加到truffle-config.js文件中,以启用带有Truffle的插件:module.exports = { /* ... rest of truffle-config */ plugins: [ 'truffl原创 2022-01-21 14:11:53 · 3099 阅读 · 0 评论 -
Web3.py使用详解
安装pip install web3使用Web3测试提供商from web3 import Web3, EthereumTesterProviderw3 = Web3(EthereumTesterProvider())本地提供商from web3 import Web3# IPCProvider:w3 = Web3(Web3.IPCProvider('./path/to/geth.ipc'))# HTTPProvider:w3 = Web3(Web3.HTTPPr原创 2022-01-14 19:43:09 · 10821 阅读 · 3 评论 -
ERC20中的委托转账
委托转账原理分析:假设:【A账号】有10000个token代币,【B账号】没有token代币,【C账号】也没有token代币那么:【A账号】委托【B账号】转给【C账号】100个token代币,怎么来实现呢?首先:【A账号】和【B账号】建立一种委托关联,登录【A账户】执行 approve(B, 100) 方法。结果:_allowed[A][B] = 100token然后:登录【B账户】执行 transferFrom(A, C, 100),这里的B就是委托账号发送者,gas从B扣,必须确保t原创 2022-01-14 15:14:21 · 1483 阅读 · 0 评论 -
部署TetherUSDT合约到Rinkeby测试网络
1、从etherscan上找到对应的USDT合约代码https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#codehttps://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code2、去remix在线编译https://remix.ethereum.org/https://remix.ethereum.org/把上面复制的代码粘贴原创 2022-01-11 19:12:17 · 2796 阅读 · 1 评论 -
Solidity合约间相互调用
以调用MetaCoin为例部署MetaCoin合约1、下载MetaCoinmkdir MetaCoincd MetaCointruffle unbox metacoin2、迁移MetaCoin到本地ganache网络truffle migrate --reset3、得到合约的地址4、MetaCoin合约代码pragma solidity >=0.4.25 <0.7.0;import "./ConvertLib.sol";contract Me原创 2022-01-11 16:04:29 · 2944 阅读 · 1 评论 -
Web3.js与智能合约交互
Web3.js教程:web3.js - 以太坊 JavaScript API — web3.js 中文文档 — 登链社区https://learnblockchain.cn/docs/web3.js/index.htmlWeb3js源码:GitHub - ChainSafe/web3.js: Ethereum JavaScript APIhttps://github.com/ChainSafe/web3.js初始化cd web3jTestnpm init下载web3到项目中np原创 2022-01-07 20:52:34 · 2145 阅读 · 0 评论 -
使用openZeppelin搭建ERC1155合约
安装openZeppelinnpm install --save-dev @openzeppelin/contracts创建一个truffle空项目mkdir FishTokencd FishTokentruffle init在contracts目录下创建基于ERC1155的智能合约FishToken.solpragma solidity >=0.6.0 <0.9.0;import "@openzeppelin/contracts/token/ERC1155/E原创 2022-01-06 20:28:18 · 3912 阅读 · 0 评论 -
在OpenSea上发售NFT
1. 打开opensea.io,链接Metamask钱包。2. 在首页,点击创建Collection。3. 添加NFT作品封面Logo、名称及描述,点击创建。4. 点击进入Collection,添加Item。5. 点击添加文件、填写作品名称、详情页、描述和特征,点击创建。需要注意的是,如果之前没有在此平台交易过,可以会支付一笔手续费。6. 截至目前,你的NFT已经在链上创建完毕了,接下来可以点击出售。7. 设定价格。设定价格与下面的竞价拍卖二选一。通常,直接.原创 2022-01-06 18:12:06 · 3693 阅读 · 2 评论 -
Solidity constant view pure关键字的区别
在Solidity中constant、view、pure三个函数修饰词的作用是告诉编译器,函数不改变/不读取状态变量,这样函数执行就可以不消耗gas了(是完全不消耗!)constant view pure区别和联系在Solidity v4.17之前,只有constant,后来有人嫌constant这个词本身代表变量中的常量,不适合用来修饰函数,所以将constant拆成了view和pure。view的作用和constant一模一样,可以读取状态变量但是不能改;pure则更为严格,pure修饰原创 2021-12-31 15:48:55 · 296 阅读 · 0 评论 -
Truffle命令
使用方式truffle [command] [options]命令build构建一个开发中的app版本,创建.build目录。truffle build可选参数--dist: 创建一个可发布的app版本。仅在使用默认构造器时可用。console运行一个控制台,里面包含已初始化,且随时可用的合约对象。truffle console一旦控制台启去吧,你可以使用通过命令行来使用你的合约,就像代码中那样。另外所有Truffle的列在这里的命令都可以在控制台使用。原创 2021-12-31 14:37:08 · 542 阅读 · 0 评论 -
Remix IDE的安装和使用
安装从github上拉取remix-idegit clone https://github.com/ethereum/remix-ide.git使用docker启动docker pull remixproject/remix-ide:latestdocker run -p 8080:80 remixproject/remix-ide:latest访问127.0.0.1:8080即可使用remix原创 2021-12-31 11:28:22 · 1474 阅读 · 0 评论 -
ERC1155和ERC721的区别
简单来说,ERC1155 是 ERC721 的升级版,ERC1155 在 ERC721 的基础上,主要增加或改善了如下功能:同时支持可替换代币(同质化代币)和不可替换代币(非同质化代币); 批量转账: 仅需要一次智能合约调用,就可以转账多种代币资产; 批量查询馀额:一次智能合约调用可以查询多种代币馀额资料; 批量授权:一次智能合约调用可以向指定地址授权多种代币的使用权;用再简单一些的人话来讲,就是一张 ERC1155 智能合约,里面可以同时包含类似 USDT 这种代币,和类似 MekaVerse原创 2021-12-30 20:25:04 · 10962 阅读 · 0 评论 -
Truffle详解
以太坊最受欢迎的开发框架是使用web3.js的Truffle。Truffle使用以太坊虚拟机(EVM)为区块链提供世界一流的开发环境、测试框架和资产管道,旨在让开发人员的生活更轻松。内置智能合约编译、链接、部署和二进制管理。 快速开发的自动化合约测试。 脚本化、可扩展的部署和迁移框架。 用于部署到任意数量的公共和专用网络的网络管理。 使用EthPM和NPM进行软件包管理,使用ERC190标准。 用于直接合约通信的交互式控制台。 支持紧密集成的可配置构建管道。 在Truffle环境中执行原创 2021-12-28 18:05:08 · 2138 阅读 · 0 评论 -
ERC-721详解
ERC-721是非同质化代币(Non-Fungible Token,缩写为NFT)的标准接口。ERC-721在2017年底首先被CryptoKitties游戏所使用,CryptoKitties的火爆让人们意识到了ERC-721的重要价值。ERC-721是非同质化代币,也就意味着每个Token都是不一样的,都有自己的唯一性和独特价值,当然这也就意味着它们是不可分割的,也同时具有了可追踪性。ERC-721代表了对资产的所有权,为物品或记录的代币化提供了可能,开劈了一个巨大的市场,比如现实世界的房屋(房屋是不可移原创 2021-12-27 19:38:51 · 4776 阅读 · 0 评论 -
NFT简介
1、NFT是什么?NFT,英文全称为Non-Fungible Token,意思是非同质化代币,具有不可分割、不可替代、独一无二等特点。NFT是相对于同质化代币而存在的概念。同质化代币,即FT(Fungible Token),是可以互相替代、可任意拆分的token,例如你手中的一个比特币与我手中的一个比特币,本质上没有任何区别,这就是同质化代币,而NFT则是唯一的、不可拆分的,如加密猫、token化的数字门票等。由于其独一无二的特性,NFT提供了一种标记原生数字资产所有权(即存在于数字世界,或发源原创 2021-12-27 19:23:14 · 7032 阅读 · 1 评论 -
IPFS搭建私有网络
共享密钥私有网络所有的节点必须共享同一个密钥。首先我们使用密钥创建工具,创建一个密钥。下载地址:https://github.com/Kubuxu/go-ipfs-swarm-key-gengo get -u http://github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen然后创建密钥:ipfs-swarm-key-gen > ~/.ipfs/swarm.key创建完密钥后放在自己的ipfs默认配置文件夹原创 2021-11-25 12:21:53 · 3126 阅读 · 1 评论 -
如何在IPFS里面上传下载文件
1 下载IPFS软件下载地址:https://dist.ipfs.io/#go-ipfs打开这个地址后网页会根据你的当前操作系统自动为你选择可供下载的版本,这个页面上有很多ipfs相关的软件下载,看清楚下载 go-ipfs, 这是IPFS的go语言版本实现,IPFS目前还有 js版本和 python版本2 安装windows:自己选择一个文件,把软件解压缩进去,然后打开命令行,定位到刚才的文件夹下执行:>ipfs helpUSAGE:ipfs - Global p2p me原创 2021-11-24 19:49:18 · 10242 阅读 · 0 评论 -
分布式文件系统IPFS
1 什么是IPFS星际文件系统(InterPlanetary File System). IPFS 是一个分布式的web, 点到点超媒体协议. 可以让我们的互联网速度更快, 更加安全, 并且更加开放. IPFS协议的目标是取代传统的互联网协议HTTP。2 为什么有IPFS众所周知, 互联网是建立在HTTP协议上的. HTTP协议是个伟大的发明, 让我们的互联网得以快速发展.但是互联网发展到了今天HTTP逐渐出来了不足.HTTP的中心化是低效的, 并且成本很高使用HTTP协议每次需要从中心原创 2021-11-24 19:34:50 · 714 阅读 · 0 评论 -
分布式数字身份
分布式数字身份基本概念和模型国际标准化组织/国际电子技术委员会将“身份”定义为“一组与实体关联的属性”,其中“实体”定义为“操作某个特定域的相关项,具有物理或逻辑形态,包括自然人、组织、设备、SIM卡、护照、网卡、应用软件、服务或网站”。数字身份通常由代表实体的身份标识符及与之关联的属性声明来表示,分布式数字身份包括分布式数字身份标识符和数字身份凭证(声明集合)两部分。分布式数字身份标识符(DID)是由字符串组成的标识符,用来代表一个数字身份,它是一种去中心化可验证的标识符,实体可自主完成 DI原创 2021-11-24 14:28:57 · 6954 阅读 · 0 评论 -
分布式数字身份项目——微软DID
微软 DID是一套基于 Azure云服务的分布式数字身份技术架构和基础功能,让解决方案实施商可方便的在不同区块链上实现分布式数字身份整体解决方案。微软是 DIF联盟的重要成员,以标准的开源技术、协议和参考实现为主要目标。微软 DID的技术架构包括区块链 BAAS服务、注册 DID的 Layer2方法 ION、隐私数据管理模块 Identity Hub,均以 API的形式为开发者提供服务,ION和Identity Hub还提供了开源软件。在未实现的计划中,还包括手机端的身份管理模块。通过区块链 BAA原创 2021-11-24 14:13:01 · 5477 阅读 · 0 评论 -
分散式公钥基础设施DPKI
今天的互联网把在线身份的控制权交给第三方。电子邮件地址、用户名和网站域名是通过DNS、X.509和社交网络借用或“租借”的。这导致了整个互联网范围内严峻的可用性和安全性问题。本文描述了一种可能的替代方法,称为分散式公钥基础设施(DPKI),它将在线身份的控制权返还给他们所属的实体。通过这样做,DPKI解决了许多困扰传统公共密钥基础设施(PKI)的可用性和安全性问题。DPKI在PKI生命周期的每个阶段都有优势。它使得在线身份无许可bootstrapping(自举:程序语言编译器用自身的语言及其特性来编译自己)原创 2021-11-23 10:46:32 · 2568 阅读 · 0 评论 -
去中心化身份管理协议Sidetree
身份(Identity)管理是区块链应用的核心元素。在一个不可信、匿名的分布计算生态中, 要实现去中心化身份管理并不是一件容易的事情。Sidetree是一个基于现有 区块链平台的第二层(L2s)协议,专门用于去中心化身份管理。微软最新开源 的ION项目,就是Sidetree协议基于比特币区块链的一个实现。 本文将分6个部分介绍Sidetree去中心化身份管理协议:DID的核心要素、 Sidetree协议的起源、概述、工作原理、设计约束与实现进展。1、去中心化身份管理的核心要素去中心化身份管理的挑战并原创 2021-11-23 10:38:49 · 320 阅读 · 0 评论