solidity专题

solidity上实现BLS签名机制

原文地址:https://ethereum.stackexchange.com/questions/59293/does-ethereum-support-pairing-operations BLS签名机制说明:http://www.ymcall.com/artinfo/698628886830280666.html   pragma solidity ^0.4.14;/*Exampl

Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作?

文章目录 Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作? Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作? IERC721 nft = IERC721(nftAddress); // 声明IERC721接口合约变量if (nft.getApproved(tokenId) != addre

OnlyOwner在Solidity中是一个修饰符,TypeError:

目录 OnlyOwner在Solidity中是一个修饰符 TypeError: Data location must be "memory" or "calldata" for parameter in function, but none was given. function AddDOm (address dataOwnermAddress, string dataProduct,

Solidity语言简介

Solidity语言简介 @(区块链) 本文笔记自维基。 https://en.wikipedia.org/wiki/Solidity Solidity是面向智能合约的编程语言。也即Solidity发明出来的目的就是为了实现智能合约。但是请注意,智能合约的实现手段不止是Solidity,其他的语言比如Go, JS等同样可以用来实现智能合约。只不过Solidity专门用来做这件事情,是不是就

理解Solidity 中的 tx.origin 和 msg.sender

开发者需要了解在Solidity中tx.origin和msg.sender的区别。这两个全局变量经常被混淆,尽管它们之间有着根本的不同。虽然乍一看它们可能相似,但在交易的上下文中,tx.origin和msg.sender代表不同的地址。在这篇博客文章中,我们将深入探讨这些变量的含义。 什么是tx.origin? 在Solidity中,tx.origin标识交易的原始发送者。它指向发起交易的外部

Solidity之数据类型(1)

以太坊一个非常重要的改变就是智能合约,开发者可以编写适合自己业务场景的智能合约部署到以太坊的公链上。这就好比以太坊公链是底层的基础平台,部署在上面的智能合约就是适应业务场景的DAPP。基于以太坊公链数据不可篡改的特点解决人与人间的信任问题。目前以太坊智能合约的主流编程语言是solidity,下面将介绍solidity语言的数据结构和相关语法。Solidity 是一种静态语言类型,在编译前都要指

以太坊ETH-智能合约开发-solidity源码分析-truffle进阶

0. 背景 上一篇文章我们从合约编写、编译、部署、交互等几个方面介绍了truffle的大致用法。 本篇主要继续深入地介绍truffle的高级用法 + 合约源码分析 1. 将合约部署到测试网Ropsten 1.1 注册infura获取API-KEY infura是基于ETH的chain公共API服务,为开发者提供链上数据查询、交易广播等功能。 1.2 准备助记词 可从Web钱包MetaM

区块链笔记:关于Solidity的具体示例程序

智能合约示例 以太坊上的智能合约是可以非常复杂的,可以实现游戏, 投票系统,众筹系统,包括实现电商等 有些只是能实现,但不一定在正式环境中可以使用, 站在技术角度来看下DApp的合约实现,这里我们看下四则运算智能合约示例 首先运行ganache-cli命令启动,看到创建10个地址,并且监听在8545端口 下面是一个算法的智能合约具体示例 pragma solidity ^0.4.19;c

区块链笔记:Solidity语言之程序示例、程序结构、数据类型、表达式以及控制结构、异常处理

Solidity程序示例 // 指定编译版本pragma solidity ^0.4.21;// 指定contract名字contract MyContract {// 定义合约中的变量uint256 totalQty;enum Colors (WHITE, BLACK, RED, GREEN, PINK)uint[5] eachLine=[1,2,3,4,5];struct StudyIn

solidity(13)

🤖 在 Solidity 中,📣 声明但未赋值的变量会自动初始化为其默认值。在本课程中,我们将介绍常见变量类型的默认值。 🎯 值类型的默认值   - boolean: false ❌   - string: "" 📄   - int: 0️⃣   - uint: 0️⃣   - enum: 枚举中的第一个元素 👆   - address: 0x00000000000000000000

6. Solidity智能合约-Mapping

Mapping是一种键值对的映射关系存储结构。语法是:mapping(_KeyType => _KeyValue) Mapping通常与address结合使用 实例: pragma solidity ^0.4.13; // "0xca35b7d915458ef540ade6068dfe2f44e8fa733c",900 // "0x14723a09acff6d2a60dcdf7aa4af

4. Solidity智能合约enum类型(枚举)

本小节主要讨论enum类型, 1. enum基本结构   先对enum结构有个基本的认识,这个enum主要描述产品是否用过(New,Used)     enum ProductCondition{         New,         Used              } 2. 在struct中使用enum enum通常是用在struct当中,描述struct中的某个状态

3. Solidity智能合约struct类型

本小节讨论Solidity智能合约的struct类型,Struct是Solidity中的自定义类型。使用Solidity的关键struct进行自定义。 结构体内还可以再包含字符串,整型,映射,结构体等复杂类型, 先看以下实例   1. 基本的结构体  struct Product{                uint productId;         uint productV

2. Solidity智能合约-构造函数与析构函数

本小节讨论Solidity的构造函数和析构函数 1. 把以下代码拷贝到 http://remix.ethereum.org/ 其中标记蓝色的部分为构造函数,标记红色的部分为析构函数,与java中的一样, 构造函数主要用于初始化,析构函数主要用于销毁,在构造函数中初始化amount为90 pragma solidity ^0.4.13; contract MyCoin{     uint a

1. Solidity编写智能合约-智能合约整体结构

Solidity是一种语法类似JavaScript的高级语言。它被设计成以编译的方式生成以太坊虚拟机代码。 所谓智能合约是指运行在区块链上的代码 本小节从一个简单的案例讲解智能合约的结构,为了方便期间,我们使用在线编译器 1. 打开在线编辑器  http://remix.ethereum.org/ 2. 将以下代码写入 有过java代码的读者对这段代码应该比较熟悉,这里看不懂也没关系,

solidity入门

Solidity 是以太坊智能合约开发的主要编程语言,支持多种数据类型,其中数组是一种非常常用和灵活的数据结构。在本教程中,我们将深入探讨 Solidity 中数组的各种类型、创建规则以及常见操作。 ### 固定长度数组 固定长度数组在声明时指定了数组的长度,一旦创建后,其大小就不能更改。固定长度数组使用 `T[k]` 格式进行声明,其中 `T` 是元素类型,`k` 是数组长度。 `

Solidity 0.8.10 无法通过更改storage 数组长度改变数组大小

文章目录 Solidity 0.8.10 无法通过更改storage 数组长度改变数组大小场景解决 Solidity 0.8.10 无法通过更改storage 数组长度改变数组大小 场景 在写一个可便利,可以随机索引功能的ArraysList的时候,发现无法通过直接更改全局状态数组变量的长度来完成移除一个元素的操作。这让我十分疑惑,因为solidity的文档中描述的内容为 基

Solidity基础面试题

目录 1、私有、内部、公共和外部函数之间的区别? 2、智能合约大小大约可以有多大? 3、create 和 create2 之间有什么区别? 4、Solidity 0.8.0版本对算术运算有什么重大变化? 5、代理需要哪种特殊的 CALL 才能工作? 6、在区块链上创建随机数的挑战是什么? 7、ERC20中的 transfer 和 transferFrom 之间有什么区别? 8、

solidity(6)

### internal VS external 🤝 🏠 internal - 当使用internal关键字时,这意味着函数仅在合约内部可见。它类似于一家人的私房话,外人无法了解。 - internal函数只能被合约本身或继承自该合约的子合约所调用。 🌍 external - 相较之下,external关键字标明该函数可供外界访问。这就相当于大声向世界宣布,任何人都可以与之对话。 -

solidity(2)

solidity语言变量包括三种: 值类型(value type):布尔型和整形,这类变量在复制时候可直接传递数值。引用类型(reference  type):数组和结构体。这类变量占用内存和储存空间较大,赋值时候直接穿点变量地址。映射类型(mapping type): solidity 储存键值对的数据结构,可理解为哈希表。 1布尔值 true或 false。 //布尔值bool p

Solidity 中 revert(), assert() 和 require() 的使用方法

转载自:https://ethfans.org/posts/when-to-use-revert-assert-and-require-in-solidity Solidity 0.4.10 版本发布了新的 assert() , require() 和 revert() 函数,解决了以前代码中有困惑的地方。特别地,新 assert() 和 require() 代码会“确保”提高合约代码逻辑条理清

Solidity全局变量完全测试

Solidity全局变量完全测试 我们知道,在Solidity中有很多全局变量,例如我们最常用的msg.sender, block.timestamp 等。但是有一些我们平常基本接触不到,例如:type(C).name等。本着凡事最怕认真两字的原则,虽然繁琐,但我们将所有的全局变量全部测试一遍,学习怎么调用和应用在哪些场景,进一步加深理解与记忆。 本文基于Solidity 0.8.9版本

Solidity Uniswap V2 Flash loans

Flash loans是一种非常强大的金融工具,在传统金融中没有类似的工具。它是一种无限制、无抵押的贷款,必须在接受贷款的同一交易中偿还。Uniswap 就是能提供闪电贷款的平台之一。让我们把它们添加到合同中,看看它们是如何工作的。 GitHub - XuHugo/solidityproject: DApp go go go !!!         关于闪电贷款的实现,你需要知

solidity案例详解(七)复杂众筹合约

自己原创智能合约,有作业需求可加下面的图片中的裙 1、在 Remix 中,以 Account1 完成“众筹项目”合约的编译和部署。(显示合约、函数、状态变量、结构体、事件的命名) 2、在 Remix 中,以 Account2 完成“参与众筹”合约的编译和部署。 3、显示合约中的众筹项目数量。 4、Account2 对 Account1 众筹项目进行捐款(操作成功,获得 1个代币) 5、A

Solidity Uniswap V2 router contract Liquidity removal

router合约是一种高级合约,能让用户与 Uniswap 的交互变得更简单。因此,它的函数可以执行多个操作,而 pair 合约中的函数只能执行一个核心操作。除此之外,Router 的函数是通用的--它们可以用于与任何pair进行交互。 GitHub - XuHugo/solidityproject: DApp go go go !!!         因此,我们需要这样一

使用Python搭建以太坊智能合约应用,下载ganache,安装solidity插件

目录 下载ganache 在pycharm中安装solidity插件 安装web3 直接展示下成功界面 下面分步骤说:<