jjzjj

Solidity

全部标签

以太坊智能合约开发2-Solidity语法学习

solidity是一个面向对象的静态语言,很多语法与java等语言很像,都有继承,抽象、多态等概念,这里只重点记录Solidity中的特有的内容。ps:以下有什么说的不对的地方欢迎大家指正,共同进步!合约(Contract)​在solidity中,contract就是java等其它语言的对象的概念,称为合约,其中包含状态变量、方法、modifier方法、事件、异常、结构体、枚举。此外,也有抽象合约、库(libraries))、接口(interface)的对象,抽象合约和接口的使用和其它面向对象的语言完全一致。​状态变量其实和java中的成员变量,如果为public方法,会默认为getter方法

Solidity—— call、staticcall和delegatecall用法介绍

在一个智能合约中调用另外一个外部智能合约的函数,我们可以通过接口 interface 的方式进行调用。另外,还有一种比较底层的调用方法,就是使用call、staticcall和delegatecall函数。它们是一种低级、底层的调用方式,具有更大的灵活性。我们将分别进行讲解。一、底层调用call1、函数语法(boolsuccess,bytesmemoryresult)=address(contractAddress).call{value:valueToSend}(data);其中的返回值的含义如下:success:指示调用外部函数是否成功。result:调用的外部函数的返回值。其中的参数的含

Solidity语言详解

Solidity语言学习学习总结文章目录Solidity语言学习学习总结一、合约文件剖析1.1一个合约文件的结构如下:1.2合约的引入import1.3引入状态变量、函数、事件、函数修改器二、Solidity语言类型2.1常量2.2地址类型2.3bool真假值类型2.4整型特性与运算2.5底层位运算2.6固定长度字节数组byte使用byte数组的理由:三、数据存储3.1string内存原理四、以太坊地址本质五、使用钱包转移资金六、智能合约众筹例子6.1、角色说明关于solidity语言我们从三个方面来学习,分别从文件结构数据类型错误处理(独特)我们在学习一门新语言的时候,通常从基础语法到函数,

Solidity 智能合约入门教程

智能合约入门教程前言web3的概念提出已久,许多从事web2开发的小伙伴想入门智能合约的开发,却不知道从哪里下手。今天小编会带着大家从零开发一个基础的智能合约,帮助大家快速入门。1开发工具remix的介绍Remix是一个基于Web的SolidityIDE,提供了一个集成开发环境,用于编写、测试和部署Solidity智能合约。以下是使用Remix的基本步骤:1、remix在线地址网站:https://remix.ethereum.org/(如果想要本地安装包的可以给小编浏览哦);2、打开在线地址后我们可以看到,这样的页面,左测constracts文件夹中已有3个官方提供给我们的智能合约文件。3、

solidity——第四课函数输出

我们将学习solidity函数输出:1.返回多种变量,2.命名式返回,3.利用解构式赋值读取全部和部分返回值一,返回值return和returnssolidity中有两个关键字与函数输出相关,return和returns,他们的区别在于:return用于函数主体中,返回指定的变量。returns加在函数名后面,用于声明返回的变量类型及变量名。//返回多个变量functionreturnMultiple()publicpurereturns(uint256,bool,uint256[3]memory){return(1,true,[uint256(1),2,5]);}上面这串代码,我们声明的函数

基于openzeppelin编写solidity可升级的智能合约

概述        现代软件的设计原则是“敏捷开发,迅速迭代”,功能升级或bug修复是所有软件系统都要面对的问题。甚至可以说软件质量在很大程度上依赖于升级和修补源代码的能力。当然Dapp(去中心化应用)也不例外,尤其Dapp一切都是透明的,这使得任何级别的bug都会被成倍的放大,因此可升级的智能合约成为所有Dapp的必然选择。        本文主要以openzeppelin为基础来阐述构建可升级智能合约的一般流程和注意事项。原理openzeppelin通过在用户与智能合约中间加入一个代理来实现合约的透明升级,用户直接与代理交互,代理将用户的请求转发到实际合约,同时将合约的执行结果响应给用户。

Solidity极简入门#27. ABI编码解码

ABI(ApplicationBinaryInterface,应用二进制接口)是与Ethereum智能合约交互的标准。数据基于他们的类型编码;并且由于编码后不包含类型信息,解码时需要注明它们的类型。Solidity中,ABI编码有4个函数:​​abi.encode​​,​​abi.encodePacked​​,soli,​​abi.encodeWithSelector​​。而ABI解码有1个函数:​​abi.decode​​,用于解码abi.encode的数据。这一讲,我们将学习如何使用这些函数。ABI编码我们将用编码4个变量,他们的类型分别是uint256,address,string,ui

区块链智能合约开发学习

最近正在肝区块链知识学习,入手学习智能合约的开发,由于网上资料实在是太少了,好不容易东拼西凑完成了智能合约的开发、编译、部署、web3js调用(网页页面)和web3j调用(java调用),赶紧趁热把重点提炼出来。先上图,是我最近学习知识点的一个概括总结,此外还包含了关键命令和操作步骤。我智能合约开发的技术选型是Solidity+web3j+Java,工具选型是VSCode+solcjs+web3js+web3j+Ganache开发智能合约的关键步骤:开发语言90.4%用Solidity,7.2%用Vyper其他小众语言可忽略,因此开发智能合约主流选用Solidity,这也是我学习语言合约开发环

基于web3+solidity的众筹项目

基本配置:`node`、`npm`、`yarn`,安装`ganache`,`chrome`,`chrome`安装插件`MetaMask`,主要功能:目的是实现一个简单的众筹平台,允许用户发起筹款项目、捐款、提出使用资金请求以及证明人证明。 部分合约: 1.首先打开ganache软件,进行如下配置,  2.然后通过私钥在metamask内添加两个账户。  3.输入:`trufflecompile`4.输入:`trufflemigrate` 5.合约地址粘贴到contract.js对应的位置  6. 将`./build/contracts/CrowdFunding.json`复制到`./crowd

Solidity基础

我们的学习方式是基于项目的,remix是我们写代码的地方.Remix-EthereumIDE在你的智能合约中你总是要做的第一件事情就是告诉Solidity,你正在使用哪个版本的solidity,并且加上SPDX许可。接下来创建你的contract并为他命名(类似于其他语言的class)第一个程序//SPDX-License-Identifier:MITpragmasolidity^0.8.8;//稳定的版本,^表示比0.8.7更高的版本都适用以下代码,也可以使用>=,,每个合约都有一个地址justlike每个账户都有一个地址。原本中的基本数据是private,可以加上public来查看,删除旧