草庐IT

智能合约入门教程

OpenZeppelin的智能合约代码库是以太坊开发者的宝库,OpenZeppelin代码库包含了经过社区审查的ERC代币标准、安全协议以及很多的辅助工具库,这些代码可以帮助开发者专注业务逻辑的,而无需重新发明轮子。基于OpenZeppelin开发合约,即可以提高代码的安全性,又可以提高开发效率.Contracts-OpenZeppelinDocsDapp脚手架Hardhat入门教程[译]Hardhat入门教程|登链社区|深入浅出区块链技术GitHub-NomicFoundation/hardhat-hackathon-boilerplate

第157篇 合约安全-随机数

智能合约的开发中常常会用到随机数,例如Lottery和现在流行的NFT数字藏品的属性等都需要用到随机数。目前来说常见的随机数获取有两种:使用区块变量生成随机数,使用预言机来生成随机数。使用区块变量生成随机数,常见的区块变量有:block.basefee(uint):当前区块的基本费用block.chainid(uint):当前链idblock.coinbase():当前区块矿工地址addresspayableblock.difficulty(uint):当前区块难度block.gaslimit(uint):当前区块gaslimitblock.number(uint):当前区块号block.ti

MetaMask与Web3中智能合约调用(2)

合约发起交易前准备工作智能合约交易区别于点对点交易,智能合约交易只需付费给矿工费用,也就是gasfee,是支付给矿工的手续费,当我们在以太坊区块链上进行转账时,矿工要把我们的交易打包并放上区块链,才能使交易完成,在这过程中会消耗区块链的运算资源,所以要支付费用这个过程为GasFee=GasLimit(限制)xGasPrice(价格)gaslimit:每一次交易或合约调用都要设置一个gaslimit,如果该次操作所使用的gas数量小于或等于您所设置的gaslimit,则会被执行,但如果gas总消耗量超过gaslimit,所有的操作都会被重置,但费用依旧会被收取。也就是设置较少可能会导致交易失败而

MetaMask与Web3中智能合约调用(2)

合约发起交易前准备工作智能合约交易区别于点对点交易,智能合约交易只需付费给矿工费用,也就是gasfee,是支付给矿工的手续费,当我们在以太坊区块链上进行转账时,矿工要把我们的交易打包并放上区块链,才能使交易完成,在这过程中会消耗区块链的运算资源,所以要支付费用这个过程为GasFee=GasLimit(限制)xGasPrice(价格)gaslimit:每一次交易或合约调用都要设置一个gaslimit,如果该次操作所使用的gas数量小于或等于您所设置的gaslimit,则会被执行,但如果gas总消耗量超过gaslimit,所有的操作都会被重置,但费用依旧会被收取。也就是设置较少可能会导致交易失败而

Fisco-Bcos智能合约开发案例----商品溯源

商品溯源合约概念合约设计合约间的关系1个商品种类----》n个商品,同时还可以创建多个商品种类(工厂合约的作用)编写商品合约pragmasolidity^0.8.7;contractGoods{structTraceData{addressoperator;//操作者uint8status;//0生产者,1运输者,2-超市售卖者,3-消费者uint256timestamp;stringremark;}uint8constantSTATUS_CREATE=0;//定义常量uint256goodsID;uint8currentStatus;//当前商品状态TraceData[]traceDatas

使用hardhat验证智能合约(goeril测试网)

经历使用openzeppelin写了个简单的Erc721合约,成功部署到goerli测试网,但是在验证的时候一直报错:Errorinplugin@nomiclabs/hardhat-etherscan:Failedtosendcontractverificationrequest.EndpointURL:https://api-goerli.etherscan.io/apiReason:ConnectTimeoutErrorNomicLabsHardhatPluginError:Failedtosendcontractverificationrequest.EndpointURL:https:

处理智能合约中的小数

处理智能合约中的小数在密码学中,我们经常使用无符号整数,而不会在浮点值中做太多事情。但是,很明显,我们的许多计算都需要浮点值,例如计算金融合约中的复利或计算圆的面积。因此,如果我们需要在智能合约中实现小数运算,我们需要添加处理小数值但使用整数运算的代码。小数运算的基础我们来看看如何用小数来进行数学运算。例如,一些简单的计算如下:6.1+5.2=11.36.1*5.2=31.726.1-5.2=0.96.1/5.2=1.1731/6.1=0.1639支持小数的一种方法是移动小数点,使其看起来像一个整数。例如,6.546可以是6546,3.134可以是3134。只要我们记住小数点移动了多少位,就可

区块链智能合约编程语言 Solidity

文章目录前言Solidity介绍Solidity文件结构许可声明编译指示数据类型函数事件访问区块元数据简单的智能合约前言上文介绍了区块链生态发展,我们知道以太坊的到来可以使开发人员基于区块链开发DApp,本文介绍Solidity编程语言的使用,然后基于Solidity编写一个简单的智能合约。Solidity介绍Solidity是以太坊开发人员使用的编程语言,用来编写智能合约,运行在以太坊虚拟机(EVM)上。有开发经验的同学上手应该是比较容易的,所有编程语言无非就是变量、分支、函数,变量值之所以称之为变量,是因为它是用来存储临时值,是可变化的;而分支是在检查某个事件是否为真后决定是否执行;Sol

【区块链 | 智能合约】Ethereum源代码(11)- 以太坊核心BlockChain源码分析

前面几节都在分析以太坊的通信协议,怎么广播,怎么同步,怎么下载。这一节讲讲以太坊的核心模块BlockChain,也就是以太坊的区块链。一,BlockChain的初始化Ethereum服务初始化funcinit()的时候会调用core.SetupGenesisBlock来加载创始区块。顾名思义,创始区块就是以太坊区块链中的第一个区块,number值为0。紧接着调用stack,backend:=makeFullNode(ctx)utils.RegisterEthService(stack,&cfg.Eth)backend,err:=eth.New(stack,cfg)eth.blockchain,

区块链智能合约基础

什么是智能合约简单来说,智能合约是一种满足在一定条件时,就执行的程序,例如自动售货机就类似一个智能合约系统。1.向自动售货机投入足够硬币,按下按钮2.售货机供出商品3.售货机回到初始状态智能合约的工作原理智能合约是一段程序(代码和数据的集合),可以部署在支持智能合约的区块链网络(比如以太坊)上运行。智能合约是确定性的“单线程”的程序,确定性的程序在所有节点上运行的结果是一样的,区块链用来确定智能合约运行的顺序,用分布式共识的方法确定最终的数据完全一样,也就是有“可验证性”。简单的理解,智能合约的运行和一笔交易类似,只是“程序化”触发的。智能合约可以通过一笔交易来部署,也可以通过一笔交易来触发,