草庐IT

Solidity教程一

全部标签

Solidity-安全的远程购买合约

https://www.365seal.com/y/eMnPOAmZpJ.htmlhttps://solidity-cn.readthedocs.io/zh/develop/solidity-by-example.html#id7value是商品价格。买卖双方在达成交易前,都要向合约质押两倍value的保证金。卖方创建合约constructor时,要将2倍value的以太币交给合约锁定。买房调用合约confirmPurchase,质押自己2倍value的以太币。卖方发货给买方。买方确认收到商品,调用confirmReceived,将value的保证金退还买方,剩余的钱(卖方保证金+商品买款=3

Solidity数据类型

Solidity是一种静态类型语言,这意味着每个变量(状态变量和局部变量)都需要在编译时指定变量的类型。Solidity提供了几种基本类型,并且基本类型可以用来组合出复杂类型。除此之外,类型之间可以在包含运算符号的表达式中进行交互。“​​undefined​​​”或“​​null​​​”值的概念在Solidity中不存在,但是新声明的变量总是有一个默认值,具体的默认值跟类型相关。要处理任何意外的值,应该使用错误处理来恢复整个交易,或者返回一个带有第二个​​bool​​值的元组表示成功。bool/布尔类型布尔值的取值范围为true和false。默认值:​​false​​pragmasolidit

Solidity数据类型

Solidity是一种静态类型语言,这意味着每个变量(状态变量和局部变量)都需要在编译时指定变量的类型。Solidity提供了几种基本类型,并且基本类型可以用来组合出复杂类型。除此之外,类型之间可以在包含运算符号的表达式中进行交互。“​​undefined​​​”或“​​null​​​”值的概念在Solidity中不存在,但是新声明的变量总是有一个默认值,具体的默认值跟类型相关。要处理任何意外的值,应该使用错误处理来恢复整个交易,或者返回一个带有第二个​​bool​​值的元组表示成功。bool/布尔类型布尔值的取值范围为true和false。默认值:​​false​​pragmasolidit

Ubuntu20.04安装区块链项目所需的nodejs、go、truffle、solidity、geth

目录0、最开始需要更新atp库1、安装nodejs2、安装truffle3、安装solidity4、安装go5、安装aptitude:6、安装git7、下载geth0、最开始需要更新atp库命令如下:sudo apt-getupdate需要的时间比较长,但是后续下载不需要再更新(我也不确定,但是我后续更新是完全没用,如果使用apt命令报错,可以再更新一下)1、安装nodejs输入命令:sudoapt-getinstall-ynodejs#查看安装是否成功输入命令:node--version显示如下:luojiu@luojiu-virtual-machine:~$node--versionv12

Solidity地址支付方法Send、Transfer和Call的使用

以上三种转账方式都属于地址的成员属性(membersof address)。参见地址成员类型Transfer如果当前合约的余额不够大或者Ether转账被接收账户拒绝,转账功能将失败。接收方智能合约应定义回退函数,否则转账调用将引发错误。transfer函数在失败时恢复。另外它被硬编码以防止重入攻击(这句话不是很能理解)。示例1://SPDX-License-Identifier:GPL-3.0pragmasolidity>=0.7.0测试  SendSend是和Transfer具有同等功能的低级api。如果执行失败,当前合约不会因为异常而停止,但会返回false。示例2:functionsen

Solidity地址支付方法Send、Transfer和Call的使用

以上三种转账方式都属于地址的成员属性(membersof address)。参见地址成员类型Transfer如果当前合约的余额不够大或者Ether转账被接收账户拒绝,转账功能将失败。接收方智能合约应定义回退函数,否则转账调用将引发错误。transfer函数在失败时恢复。另外它被硬编码以防止重入攻击(这句话不是很能理解)。示例1://SPDX-License-Identifier:GPL-3.0pragmasolidity>=0.7.0测试  SendSend是和Transfer具有同等功能的低级api。如果执行失败,当前合约不会因为异常而停止,但会返回false。示例2:functionsen

以太坊智能合约开发:Solidity语言中变量的存储位置与作用域

在Solidity中,有一些数据类型是引用类型,如:数组(string和bytes是特殊的数组,也是引用类型)结构体(struct)映射(mapping)在Solidity中使用引用类型的时候,必须指定数据的位置。存储位置在合约中声明的变量都有一个存储位置,用于指明变量的值存储在哪里。Solidity提供了三种类型的存储位置:storagememorycalldatastorage链上存储空间。该存储位置用于存储永久数据,只要合约存在数据就一直有效。存储的Gas较高。其中:状态变量的存储方式强制是storage;局部变量的存储方式可以声明成storage、memory或calldata;映射(

Solidity 多重继承 C3算法

 //SPDX-License-Identifier:GPL-3.0pragmasolidity^0.8.10;contractA{eventLog(stringmessage);functionbar()publicvirtual{emitLog("A.barcalled");}}contractBisA{functionbar()publicvirtualoverride{emitLog("B.barcalled");super.bar();}}contractCisA{functionbar()publicvirtualoverride{emitLog("C.barcalled");su

solidity函数签名的实现-solidity实现智能合约教程(8)

文章目录1介绍2主要功能3代码示例4部署测试猛戳订阅学习专栏🍁🍁👉solidity系列合约源码+解析👈🍁🍁1介绍函数选择器:solidity调用函数时,calldata的前4个字节为指定要调用的函数,这4个字节称为函数选择器。以下面的代码为例。它通过地址addr的调用合约的transfer方法。addr.call(abi.encodeWithSignature("transfer(address,uint256)",0xtoaddress,123))abi.encodeWithSignature(…)返回的前4个字节是函数选择器。2主要功能计算要调用的方法的函数选择器3代码示例下面是如何计算函

区块链开发之Solidity编程基础(四)合约事件

事件事件智能合约返回值给用户接口异步的带数据的触发器一种比较便宜的存储事件里的Indexed参数事件事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。用于获取当前发生的事件。事件和日志有三个用途:智能合约返回值给用户接口异步的带数据的触发器一种比较便宜的存储智能合约返回值给用户接口我们可以在dapp的用户界面中监听事件,EVM的日志机制可以反过来“调用”用来监听事件的Javascript回调函数。contractExampleContract{ //一些状态变量 functionfoo(int256value)returns(int256){ //改变状态 returnvalue