草庐IT

Solidity

全部标签

玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一)

前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

Solidity教程一

合约的基础内容版本制定合约内容一个合约的模板如下所示pragmasolidity^0.4.19;contractHelloWorld{}状态变量和整数状态变量是被永久地保存在合约中。也就是说它们被写入以太币区块链中.想象成写入一个数据库。contractExample{//这个无符号整数将会永久的被保存在区块链中uintmyUnsignedInteger=100;}无符号整数:uintuint无符号数据类型,指其值不能是负数,对于有符号的整数存在名为int的数据类型。数学运算加法:x+y减法:x-y,乘法:x*y除法:x/y取模/求余:x%y乘方:x**y结构体结构体允许使用更为复杂的数据结构

Solidity,智能合约的学习(1)

Solidity概述Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)上,Solidity是面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态内的账户行为的程序。BitPen认为,作为Web3的链上玩家,那么能够看懂Solidity代码将会是一项必备的技能,因为大多区块链项目都是在GitHub开源,如果你能看懂甚至编写Solidity代码,那么你在链上项目游玩的技能将大大提升,可以避免很多恶意合约以及有漏洞的Rug项目。开发工具:RemixRemix网址:remix.ethereum.org​​​​​​​Remix作为以太坊官方推荐的智能合约开发IDE,

Solidity合约内创建合约以及引用其他合约的总结

本文总结了在以太坊智能合约中使用Solidity在合约内创建合约以及引用其他合约的方法,包括了如何使用mochai进行测试的方法。在这之前先明白一个比较:Contract{}相当于面向对象语言的类当部署后获得到address后,address相当于对象,address0x.......本身就类似指针地址然后我们讨论下Solidity代码中对合约类,合约对象的操作。Solidity首先区分下三种写法:import'ContractB.sol';ConractBB=newConractB(arg1,arg2...);ContractBB=ContractB(Baddress);functionse

solidity:智能合约结构介绍

合约结构介绍1.SPDX版权声明bytecodemetadata介绍2.pragmasolidity版本限制3.contract关键字4.import导入声明5.interface:接口6.library:库合约合约结构介绍1.SPDX版权声明第1行//SPDX-License-Identifier:MIT就是合约的版权声明。其中SPDX-License-Identifier(SPDX许可标示)是标注当前的智能合约采用什么样的对外开放标准,该标准规定了别人是否拥有商业开发,学习使用等权利。代码中使用的MIT规定了其他人随便用该代码,但出问题不负责。MIT详细解释;SPDX许可标示的注释在文件的

以太坊Solidity迁移Flow Cadence指南8-ERC721/NFT迁移

序言本小节是本系列短文的核心章节,主要介绍如何将solidity标准的ERC721合约迁移到flow cadence,大家前面也学了这么多了,就看这一节了!!!什么?前面几节都没看到。本来2022.5月就要写完的,结果5月笔者一直足不出户在家办公,主要在研究如下内容: 图 1用做菜的思路迁移代码笔者发现,有一种叫做“预制菜”的东西,不用开荒种地,不用掌握油盐酱醋配比,锅里一放,简单炒炒就是等级厨师的作品了。。。嗯,solidity ---->cadence迁移是否也能采用“预制菜”模式呢?给你想要的!填写你的以太坊ERC721合约地址,然后你就能得到:1Solidity ERC721合约对应的

javascript - 获取另一个合约部署的合约的地址

我正在尝试从另一个工厂合约部署合约,然后返回新创建合约的地址。然而,它返回的地址是交易哈希而不是合约地址。我相信这是因为返回地址时合约尚未开采。当我使用web3deploy部署契约(Contract)时,它似乎要等到契约(Contract)部署完毕才能输出地址。工厂契约(Contract):contractFactory{mapping(uint256=>Contract)deployedContracts;uint256numContracts;functionFactory(){numContracts=0;}functioncreateContract(uint32name)re

第142篇 合约安全-重入锁

本篇介绍最常见的一种智能合约攻击-重入攻击,它曾导致以太坊分叉为ETH和ETC(以太经典),并介绍如何避免它。1.重入攻击重入攻击是智能合约中最常见的一种攻击,攻击者通过合约漏洞(例如fallback函数)循环调用合约,将合约中资产转走或铸造大量代币。著名的重入攻击事件:2016年,TheDAO合约被重入攻击,黑客盗走了合约中的3,600,000枚 ETH,并导致以太坊分叉为 ETH 链和 ETC(以太经典)链。距离TheDAO被重入攻击已经6年了,但每年还是会有几次因重入漏洞而损失千万美元的项目,因此理解这个漏洞非常重要。0xAA 抢bank的故事为了让大家更好理解,这里讲一个"黑客0xAA

智能合约学习笔记一 、——{Solidity语言详解——(1—2)小练习}

1.要求:1.根据提示,在指定位置写出编译版本,要求使用^符号,版本要求在0.6.0及以上。2.根据提示,在指定位置写出所定义的合约名称。3.为了查看程序的效果,我们使用在线Solidity开发工具RemixIDE编译和运行Solidity程序。中文在线版:在浏览器打开下方链接: Remix-中文版-智谷星图。第1步–在文件浏览器选项卡下,新建一个Firstapp.sol文件,把我们补充完整的代码直接复制过来。第2步–在SOLIDITY编译器选项卡下,选择0.6.5的那个编译器版本并单击 编译Firstapp.sol 按钮,开始编译。编译成功后会根据本地客户端和版本内容弹出提示,可以不用处理。

javascript - web3 websocket连接阻止节点进程退出

我有一个创建web3websocket连接的节点js进程,如下所示:web3=newWeb3('ws://localhost:7545')当进程完成时(我向它发送一个SIGTERM),它不会退出,而是永远挂起,没有控制台输出。我在SIGINT和SIGTERM上注册了一个监听器,以观察进程在process._getActiveRequests()和process._getActiveHandles()上有哪些处理,我看到了这个:Socket{connecting:false,_hadError:false,_handle:TCP{reading:true,owner:[Circular]