solidity专题

以太坊区块链 Solidity solc是什么

Solidity与Java类似。代码写好后,都需要通过编译器将代码转换成二进制。 在Java中,编译器是Javac,对于Solidity,是solc。 生成后的二进制代码,会放到虚拟机里执行。 Java代码在Java虚拟机(JVM)中执行,在Solidity中,是一个区块链上的虚拟机EVM。

FISCO BCOS 控制台 console solidity合约编译工具 生成abi bin java文件

下载控制台 https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/console/console_of_java_sdk.html   # 若控制台版本小于v2.8.0,脚本sol2java.sh的使用方法如下:$ bash sol2java.sh -h# Compile Solidity Tool./s

solidity一些内置的常用函数和关键字(含智能合约简单代码示例)

solidity一些内置的常用函数和关键字: 1. msg.sender 描述: msg.sender 是全局变量,代表当前调用者的地址,即谁发起了当前的合约调用。 **功能:**用于识别调用者的身份,通常用于权限控制。 示例: contract MyContract {address public owner;constructor() {owner = msg.sender; //

【Solidity】支付

以太比的单位 wei、gwei、finney 和 ether 是以太币(Ether)的不同单位。 wei 是以太币的最小单位,1 ether = 10^18 wei;这是 Solidity 中的默认单位 uint public oneWei = 1 wei; gwei 是 wei 的 10^9 倍,1 ether = 10^9 gwei;常用于表示交易费用 (gas price) ui

【solidity 学习】错误处理机制汇总

最近发现了一个很好的学习 web3 知识的平台 hackquest,也是一个社区,不仅可以学习 web3 知识,并且经常组织一些线上线下的活动鼓励大家稳步学习。 hackquest 网址 最近我在 solidity ,其中关于错误处理机制有三种:revert、require、assert、error、try\catch。他们的用法类似,容易产生混淆,这里记录一下他们的使用场景以及区别,以便容易

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() 代码会“确保”提高合约代码逻辑条理清