jjzjj

solid-principles

全部标签

27. solidity ABI编码与解码

27.ABI编码与解码在以太坊中,数据必须编码成字节码才能和智能合约交互。ABI(ApplicationBinaryInterface,应用二进制接口)是与以太坊智能合约交互的标准。数据基于他们的类型编码;并且由于编码后不包含类型信息,解码时需要注明它们的类型。ABI主要有3大使用场景:配合call实现对合约的底层调用在ethers.js实现合约的导入和函数调用对不开源合约进行反编译后,某些函数无法查到函数签名,可通过ABI进行调用这里介绍4个ABI编码函数和1个`ABI解码函数:ABI编码函数:abi.encode、abi.encodePacked、abi.encodeWithSignatu

Solidity 关键词说明(payable transfer event modifier msg external public view pure memory)

一、payable在Solidity中,payable是一个关键字,用于表示函数可以接收以太币(ether)的转账。如果一个函数被声明为payable,那么它就可以接收以太币的转账,而不仅仅是使用以太币作为参数进行函数调用。例如,下面是一个声明了payable关键字的函数:functionbuyToken()publicpayable{//程序逻辑...}在上面的代码中,函数buyToken()会接收以太币的转账,并且转账的数量会作为函数的参数msg.value被传递进来。如果这个函数没有被声明为payable,那么在进行转账时就会出现错误。需要注意的是,在接收以太币的函数中,你需要确保对于接

使用hardhat 部署 solidity智能合约到测试网

概述在刚开始学solidity智能合约的时候,我们大多数都是通过Remix在线编辑器完成合约编辑部署和测试等流程的工作。毫无疑问,remix在调试的时候是十分的方便的。但是随着编写的合约越来越多,仅仅通过remix来部署就会有些吃力了,各种的参数传递,合约之间的部署的先后关系,以及合约文件的管理,都需要能够工程化的处理这些流程。目前以及有一些比较成熟的开发,调试,部署等全流程的框架了,其中用的比较多是truffle和hardhat。hardhat相对truffle更新功能也更完善,使用起来也很方便。下面就记录了我自己使用hardhat的流程以及遇到的一些问题。项目初始化mkdirnewFlod

玩以太坊链上项目的必备技能(修改器 [modifier]-Solidity之旅十五)

修改器(modifier)在讲修改器(modifier)之前,我们使用前面几篇文章所学到的知识来实现一个简单的token类合约。//SPDX-License-Identifier:GPL-3.0pragmasolidity^0.8.0;contractInheritanceModifierExample{mapping(address=>uint)publictokenBalance;//拥有者addressowner;uinttokenPrice=1ether;constructor(){owner=msg.sender;tokenBalance[owner]=100;}functioncr

solidity进阶第五课——Create2

Create2操作码使我们在智能合约部署在以太坊网络之前就能预测合约的地址。Uniswap创建Pair合约用的就是Create2而不是Create。Create是如何计算地址智能合约可以由其他合约和普通账户利用Create操作码创建。在这两种情况下,新合约的地址都以相同的方式计算:创建者的地址(通常为部署的钱包地址或者合约地址)和nonce(该地址发送交易的总数,对于合约账户是创建的合约总数,每创建一个合约nonce+1))的哈希。新地址=hash(创建者地址,nonce)创建者地址不会变,但nonce可能会随时间而改变,因此用Create创建的合约地址不好预测。Create2是如何计算地址C

solidity实现ERC20代币标准

文章目录1、以太坊-维基百科2、IERC203、ERC204、Remix编译部署1、以太坊-维基百科以太坊(Ethereum)是一个去中心化的开源的有智能合约功能的公共区块链平台。以太币(ETH或Ξ)是以太坊的原生加密货币。截至2021年12月,以太币是市值第二高的加密货币,仅次于比特币。以太坊是使用最多的区块链,主要的代币标准有ERC-20、ERC-721、ERC-1155、ERC-223、ERC-677等等,其中ERC-20是最常用的代币标准。2、IERC20IERC20是ERC20标准的接口规范,它定义和规范了一个标准ERC20代币合约应该实现的功能。这里让ERC20合约直接继承自IER

区块链2——Solidity智能合约开发

区块链索引目录一、智能合约基础1、合约的结构和语法智能合约是一种以代码形式编写的自动执行合约,它们运行在区块链上。这些合约定义了在特定条件下发生的事件以及相应的行为。1.1智能合约结构版本声明(VersionDeclaration):智能合约通常以声明版本开始,指定合约应该使用的Solidity编译器版本。例如:pragmasolidity^0.8.0;合约声明(ContractDeclaration):合约声明定义了合约的名称和主体内容。合约是智能合约的基本单位。contractMyContract{//合约内容}状态变量(StateVariables):定义了合约状态的变量,这些变量的值会

Solidity智能合约基础案例——智能银行实现(2023版)

案例业务:智能银行需要实现的核心功能:存钱功能;取钱功能;转账功能;角色:柜员;储户;如何记录每个用户余额:使用mapping关键字将用户地址与用户余额相关联;具体示例代码如下://SPDX-License-Identifier:GPL-3.0pragmasolidity^0.8.7;/*1.3大核心功能;2.bankname;3.账本检测;*/contractbank_demo{stringpublicbankName;//银行名字uint256totalAmount;//银行总存款addresspublicadmin;//柜员mapping(address=>uint256)balance

深入理解Solidity,区块链智能合约开发的全面指南!

深入理解Solidity,区块链智能合约开发的全面指南!引言Solidity是区块链技术中最常用的智能合约编程语言之一。本文将为您全面介绍Solidity语言的各个方面,包括语法、数据类型、控制结构、函数、事件、库等内容。通过学习本文,您将对Solidity有一个深入的了解,并能够编写安全可靠的智能合约。1.Solidity简介1.1Solidity的背景与应用领域Solidity是一种面向合约的高级编程语言,专门设计用于在以太坊平台上编写智能合约。它具有静态类型和C-like语法,可用于实现各种功能,如代币合约、去中心化应用(DApp)以及数字资产的交互。1.2Solidity的特点和优势易

solidity实现ERC1155多代币标准

文章目录1、NFT-维基百科2、IERC1155MetadataURI3、IERC1155Receiver4、IERC11555、ERC11556、NFT11557、开源地址1、NFT-维基百科ERC-1155标准于2018年6月由WitekRadomski、AndrewCooke、PhilippeCastonguay、JamesTherien、EricBinet及RonanSandford提出。此标准可针对单一应用合约,提供同质代币、非同质代币(用ERC-1155建构ERC-721资产)及其他结构类型(例如半同质代币,semi-fungibletokens)的多元组合。相较于ERC-721每