草庐IT

$solidity

全部标签

Solidity Storage底层管理

1.引言前序博客有:EthereumEVM简介揭秘EVMOpcodes剖析Solidity合约创建EVMbytecodeSolidity底层通过SLOAD和SSTOREopcode来控制EVMstorage。2.何为Storage?Storage为每个合约的持久mapping,具有2256−12^{256}-12256−1个32bytewords。当在合约中设置某状态变量值时,其会存储在指定的slot中,其将持续在EVM中,除非被相同类型的其它值覆盖。3.何时用Storage?何时用Memory?当首次加载某storageslot时,其是cold的,意味着需要2100gas,后续再调用该slo

Solidity Storage底层管理

1.引言前序博客有:EthereumEVM简介揭秘EVMOpcodes剖析Solidity合约创建EVMbytecodeSolidity底层通过SLOAD和SSTOREopcode来控制EVMstorage。2.何为Storage?Storage为每个合约的持久mapping,具有2256−12^{256}-12256−1个32bytewords。当在合约中设置某状态变量值时,其会存储在指定的slot中,其将持续在EVM中,除非被相同类型的其它值覆盖。3.何时用Storage?何时用Memory?当首次加载某storageslot时,其是cold的,意味着需要2100gas,后续再调用该slo

以太坊智能合约开发:Solidity 语言快速入门

在本文中,我们从一个简单的智能合约样例出发,通过对智能合约源文件结构的剖析与介绍,使大家对Solidity语言有一个初步的认识。最后,我们将该智能合约样例在Remix合约编译器中编译、部署,观察其执行结果。开始之前在开始之前,我们先对Solidity有个初步的了解,即Solidity是什么?让我们看一下官方的描述:Solidity是一种面向对象(合约)的,为实现智能合约而创建的高级编程语言;Solidity是一种针对以太坊虚拟机(EVM)设计的语言,它受到了C++、Python和JavaScript的影响;Solidity是一种静态类型语言,支持复杂的用户定义编程,支持库和继承。合约样例下面是

以太坊智能合约开发:Solidity 语言快速入门

在本文中,我们从一个简单的智能合约样例出发,通过对智能合约源文件结构的剖析与介绍,使大家对Solidity语言有一个初步的认识。最后,我们将该智能合约样例在Remix合约编译器中编译、部署,观察其执行结果。开始之前在开始之前,我们先对Solidity有个初步的了解,即Solidity是什么?让我们看一下官方的描述:Solidity是一种面向对象(合约)的,为实现智能合约而创建的高级编程语言;Solidity是一种针对以太坊虚拟机(EVM)设计的语言,它受到了C++、Python和JavaScript的影响;Solidity是一种静态类型语言,支持复杂的用户定义编程,支持库和继承。合约样例下面是

Solidity节省GAS的方法

1、使用struct结构体使用struct结构体会结构存储空间,编译器会自动优化struct的存储。比如uint类型,不管是uint32还是uint256,默认都会使用256存储。两个uint32也占用2个256的存储单元。但如果是在struct内部的两个uint32,则只会占用一个256存储单元。2、对于不需要修改链上内容的函数,加上view关键词。当玩家从外部调用一个view函数,是不需要支付一分gas的。这是因为view函数不会真正改变区块链上的任何数据-它们只是读取。因此用view标记一个函数,意味着告诉web3.js,运行这个函数只需要查询你的本地以太坊节点,而不需要在区块链上创建一

Solidity节省GAS的方法

1、使用struct结构体使用struct结构体会结构存储空间,编译器会自动优化struct的存储。比如uint类型,不管是uint32还是uint256,默认都会使用256存储。两个uint32也占用2个256的存储单元。但如果是在struct内部的两个uint32,则只会占用一个256存储单元。2、对于不需要修改链上内容的函数,加上view关键词。当玩家从外部调用一个view函数,是不需要支付一分gas的。这是因为view函数不会真正改变区块链上的任何数据-它们只是读取。因此用view标记一个函数,意味着告诉web3.js,运行这个函数只需要查询你的本地以太坊节点,而不需要在区块链上创建一

技术:如何在 Solidity 中验证签名消息

技术:如何在Solidity中验证签名消息介绍这是一个使用MetaMask签名消息,然后在链上进行验证的实用教程。这里有一个demo:https://leon-do.github.io/ecrecover/签名SignMessageasyncfunctionsignMessage(){if(!window.ethereum)returnalert("PleaseInstallMetamask");//connectandgetmetamaskaccountconstaccounts=awaitethereum.request({method:"eth_requestAccounts"});//

技术:如何在 Solidity 中验证签名消息

技术:如何在Solidity中验证签名消息介绍这是一个使用MetaMask签名消息,然后在链上进行验证的实用教程。这里有一个demo:https://leon-do.github.io/ecrecover/签名SignMessageasyncfunctionsignMessage(){if(!window.ethereum)returnalert("PleaseInstallMetamask");//connectandgetmetamaskaccountconstaccounts=awaitethereum.request({method:"eth_requestAccounts"});//

solidity实现智能合约教程(4)-ERC1155合约

文章目录1介绍2主要功能3代码示例4部署测试猛戳订阅学习专栏🍁🍁👉solidity系列合约源码+解析👈🍁🍁1介绍ERC-1155是一种以太坊代币标准,由Enjin首席技术官WitekRadomski等人开发,并于2018年6月17日将该标准的第一个版本放置到Ethereum的github库中。其主要可用于游戏行业中道具的生成和处理。该标准的提出对nft在游戏行业的应用起到了极大的提升。在一定程度上融合了ERC-20和ERC-721的功能。其主要用途包括了发行同质化代币和非同质化代币。同质化代币即能像ERC-20一样发布各样的代币类型,但目前为止各钱包和交易所暂未支持ERC-1155标准代币;与

solidity实现智能合约教程(4)-ERC1155合约

文章目录1介绍2主要功能3代码示例4部署测试猛戳订阅学习专栏🍁🍁👉solidity系列合约源码+解析👈🍁🍁1介绍ERC-1155是一种以太坊代币标准,由Enjin首席技术官WitekRadomski等人开发,并于2018年6月17日将该标准的第一个版本放置到Ethereum的github库中。其主要可用于游戏行业中道具的生成和处理。该标准的提出对nft在游戏行业的应用起到了极大的提升。在一定程度上融合了ERC-20和ERC-721的功能。其主要用途包括了发行同质化代币和非同质化代币。同质化代币即能像ERC-20一样发布各样的代币类型,但目前为止各钱包和交易所暂未支持ERC-1155标准代币;与