草庐IT

钻石合约

全部标签

Java sdk使用加载账户私钥调用合约

Javasdk使用加载账户私钥调用合约1.智能合约案例1.2智能合约的流程1.2智能合约详细代码实现了一个简单的商店功能。它定义了三个结构体:用户、商家和商品,以及对应的映射关系。它提供了一些方法用于注册用户和商家,创建商品,更新用户余额,购买商品等等。它还包括一些修饰符,用于限制只有用户或商家可以调用特定的方法。用户购买商品主要涉及到的是,检测当前用户是否有用户的权限,商家生产出售商品检测当前的用户是否有商家的权限。主要的三个结构体UserMerchantCommodity三个结构体分别是用户、商家、商品。具体业务关系如下:用户注册和商家注册该合约允许用户和商家进行注册,分别在userMap

Java sdk使用加载账户私钥调用合约

Javasdk使用加载账户私钥调用合约1.智能合约案例1.2智能合约的流程1.2智能合约详细代码实现了一个简单的商店功能。它定义了三个结构体:用户、商家和商品,以及对应的映射关系。它提供了一些方法用于注册用户和商家,创建商品,更新用户余额,购买商品等等。它还包括一些修饰符,用于限制只有用户或商家可以调用特定的方法。用户购买商品主要涉及到的是,检测当前用户是否有用户的权限,商家生产出售商品检测当前的用户是否有商家的权限。主要的三个结构体UserMerchantCommodity三个结构体分别是用户、商家、商品。具体业务关系如下:用户注册和商家注册该合约允许用户和商家进行注册,分别在userMap

ethers js监听合约事件

监听合约事件contract.on在ethersjs中,合约对象有一个contract.on的监听方法,让我们持续监听合约的事件:contract.on("eventName",function)contract.on有两个参数,一个是要监听的事件名称"eventName",需要包含在合约abi中;另一个是我们在事件发生时调用的函数。contract.once合约对象有一个contract.once的监听方法,让我们只监听一次合约释放事件,它的参数与contract.on一样:contract.once("eventName",function)监听pancakeswapPairCreated

Web3 处理智能合约部署到本地区块链,并在本地进行测试

上文Web3在Truffle项目中编写出自己的第一个solidity智能合约我们演示了在Truffle环境下写一个智能合约并编译的功能编译出的文件夹中的这个JSON就非常重要了我们就可以通过它这个ABI链接到需要的智能合约程序上去但这也仅仅是编译完了我们的智能合约还没有部署到我们的区块链上然后我们在根目录下的migrations目录下创建一个1_contract.js注意这里的文件一定要以数字开头就我们在这个目录创建文件时就1什么什么2什么什么3什么什么以此类推不然我们在部署时就会报错因为如果你不遵循它的规范它找不到它只认识以数字开头的我们编写1_contract.js代码如下constCon

Solidity智能合约安全指南:预防已知攻击的关键.

文章目录系列文章目录前言一、攻击类型二、攻击类型分析1.简叙2.代码分享3.预防措施总结前言在进行Solidity智能合约开发时,确保合约的安全性是至关重要的。虽然编写一个简单的合约可能相对容易,但要确保它能够抵御各种已知和未知的攻击却是一项艰巨的任务。为了有效预防攻击,首先我们需要了解已知的一些常见攻击类型,只有了解清楚这些攻击,才能更好地保护合约的安全性本文将为您汇总一些Solidity中已知的攻击类型,并提供一些预防这些攻击的关键措施(以下就是个人整理的一些已知攻击)一、攻击类型:重入算术溢出意外之财delegatecall默认的可见性随机错觉外部智能合约引用短地址/参数攻击未检查的返回

生态工具箱 | 虚拟机测试工具WasmFuzzer,智能合约安全防火墙

长安链生态工具箱  丰富实用的区块链生态工具不仅可以让开发者部署、开发过程更加得心应手,还可以从能力上扩展区块链应用边界。长安链正在构建强大的生态工具箱以增强在其在各类场景下的应用能力,如智能合约漏洞检测、抗量子多方安全计算、链迁移、密文检索等等长安链虚拟机测试工具WasmFuzzer智能合约的安全不仅仅是合约代码安全,来自节点的合约代码将被部署在智能合约虚拟机中,虚拟机负责为区块链上每个节点中的合约代码提供沙箱式的执行环境。虚拟机可能存在有逃逸漏洞、逻辑漏洞、堆栈溢出漏洞、资源滥用漏洞等安全隐患,容易受到外部攻击。为消除虚拟机的安全隐患,社区针对长安链智能合约虚拟机的特点采用全新Wasm字节

调用合约方法创建子合约后获取子合约地址

在通过调用合约的方法创建合约后,不能直接得到子合约地址。不便于单元测试。如下方法可解决:合约://SPDX-License-Identifier:GPL-3.0pragmasolidity^0.8.13;contractA{//子合约stringpublicname;}contractB{//父合约eventNEWA(addressaddr);//定义事件addressprivateaa;//用来验证functioncreateA()publicreturns(A){//创建A合约Aa=newA();aa=address(a);emitNEWA(address(a));//发送事件return

智能合约入门教程

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,所有的操作都会被重置,但费用依旧会被收取。也就是设置较少可能会导致交易失败而