译文出自:登链翻译计划[1] 译者:翻译小组[2] 开始在以太坊上编写智能合约 Solidity[3]是用于开发以太坊智能合约的最受欢迎的语言之一,因此,作为一个想要成为区块链开发人员的人,我决定学习如何使用...Solidity 开发智能合约。...设置开发环境 我们将使用的 IDE 是Remix[4],在浏览器输入Remix URL[5]。完成后,你应该会看到一个类似以下的界面: ? Remix 界面 在左侧,我选择了两个主要组件。...Remix 将为你提供在浏览器中运行的虚拟区块链环境,先使用它来部署合约并与之交互。只需确保在“Deploy and run(部署并运行)”选项卡中选择 Javascript VM 作为环境即可。...单击“Deploy and run transactions(部署并运行交易)”选项卡,然后确保在环境中选择了 JavaScript VM,并在合约区域中选择了合约名称。
uint){ balance += amount; return (msg.sender, balance); } } 工欲善其事必先利其器,下面介绍开发的...IDE以及环境搭建: 可用的 Solidity 集成 Remix 基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件。...Etheratom Atom 编辑器的插件,支持高亮、编译和运行时环境(兼容后端节点和虚拟机)。...不再维护: Mix IDE 基于 Qt 的 IDE,可以设计、调试和测试 Solidity 智能合约。 Ethereum Studio 专门的网页 IDE,也提供一个完整以太坊环境的脚本访问。...Solidity 语法 我个人主要atom配合 Remix开发的,下面介绍一下Remix的使用 ##功能 这里我们使用在线编译器,打开网址 https://remix.ethereum.org/ [2018
address, uint){ balance += amount; return (msg.sender, balance); } } 工欲善其事必先利其器,下面介绍开发的...IDE以及环境搭建: 可用的 Solidity 集成 Remix 基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件。...Etheratom Atom 编辑器的插件,支持高亮、编译和运行时环境(兼容后端节点和虚拟机)。...Ethereum Studio 专门的网页 IDE,也提供一个完整以太坊环境的脚本访问。...4 解析器生成器的 Solidity 语法 我个人主要atom配合 Remix开发的,下面介绍一下Remix的使用 功能 这里我们使用在线编译器,打开网址 https://remix.ethereum.org
开发工具 简单起见,直接使用在线的remix ide,对应的网址为: https://remix.ethereum.org/ 进入之后选择solidity: 20.cnblogs.com/blog.../922893/202201/922893-20220103174900574-1543754754.png) 选择solidity之后可以在左侧的菜单栏选择编译器的版本,开发语言,以及vm等,我这里的选择如下...: 开发与编译 选中左侧菜单栏的文件图标可以展示文件目录,选择contract目录,然后右键---》new file来新建你的智能合约: 选中对应的合约文件之后,点击compile图标,然后进行编译
往期文章 【区块链Solidity】智能合约与Solidity介绍 目录 工具介绍 百度超级链 ---- 工具介绍 目前开发智能合约的IDE,首推还是Remix,而Remix官网,总是由于各种各样的...(网络原因)无法使用,我们可以在本地搭建智能合约开发环境remix-ide,除此之外我们还可以使用国内的百度超级链进行在线编写。 ...创建账户 创建帐户需要消耗Xuper,所以我们需要进行充值 Xuper,2元即可,充值完后 输入我们的安全码 进入到创建的智能合约页面后,我们修改语言为solidity,给一个合约名称
Solidity智能合约开发测试环境搭建 以太坊合约开发工具非常多,但是功能上各有优缺点,因此如何选择搭配一套比较好用的开发和测试环境就非常重要。...我在开发实践中摸索发现了一种方便快捷的开发和测试方法。...如果函数名称为空,我们可以先写个名字用来调试,发布的时候去除这个名称就可以了;同理对private的函数也可以先设置为public来调试 2、 使用testrpc和geth做发布前功能测试 本文在windows开发环境下...,当然其他环境也验证了可以成功 我们需要安装testrpc和geth A、安装testrpc npm install -g ethereumjs-testrpc 运行testrpc后显示版本信息:EthereumJS...ethfiddle.com/ 网站没有给我们生成web3脚本,我们这里使用remix来自动生成脚本 打开http://remix.ethereum.org,新增文件Token.sol,内容如下: pragma solidity
合约 在solidity中的合约可以类比看做java等面向对象语言中的类。合约可以包含状态变量、函数、函数修饰符、事件、错误、结构体、枚举类型等等。...state variables // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.0 <0.9.0; contract SimpleStorage...functions // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.1 <0.9.0; contract SimpleAuction...Function Modifiers // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.22 <0.9.0; contract Purchase...Errors // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4; /// Not enough funds for transfer
开发/调试工具 与常规编程语言不同,Solidity 智能合约的开发往往无法直接通过一个 IDE 或本地环境进行方便的调试,而是需要与一个链上节点进行交互。...Truffle 是一个非常流行的 Javascript 的 Solidity 合约开发框架,提供了完整的开发、测试、调试工具链,可以与本地或远程网络进行交互。 Brownie。...除了开发框架外,更好地进行 Solidity 还需要熟悉一些工具: Remix IDE。...通过 Ethereum 官方提供的基于浏览器的 Remix 开发工具进行调试,Remix 会提供完整的 IDE、编译工具、部署调试的测试节点环境、账户等,可以很方便地进行测试,这是我学习使用时用的最多的工具...核心语法 经过上文,我们对 Solidity 的开发、调试与部署有了一定了解。接下来我们就具体学习一下 Solidity 的核心语法。
solidity任何类型都没有值为undefined或者null的情况。但是任何类型的数据在没有赋值之前,都会有一个该数据类型的对应的default value。...Fixed Point Numbers 固定小数位数的数据在solidity中并不完全支持,这种类型的数字可以被申明,但是不能被赋值或者计算得到。
以太坊的应用被称为去中心化应用(DApp),DApp的开发主要包括两大部分: 智能合约的开发 用户界面的开发 在本文中,我们将介绍智能合约的开发语言solidity。...如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战入门教程 以太坊去中心化电商应用开发实战 Solidity是一种语法类似JavaScript的高级语言...= x; } function get() constant returns (uint retVal) { return storedData; } } 在Solidity...免费电子书 如果你希望深入了解solidity的语言特性,可以下载我们制作的免费pdf电子书:Solidity官方文档中文版。
智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助。...以太坊的应用被称为去中心化应用(DApp),DApp的开发主要包括两大部分: 智能合约的开发 用户界面的开发 在本文中,我们将介绍智能合约的开发语言solidity。...Solidity的官方文档中文版 :https://pan.baidu.com/s/18yp9XjEqAHpiFm2ZSCygHw 5....以太坊DApp开发环境搭建-Ubuntu : https://pan.baidu.com/s/10qL4q-uKooMehv9X2R1qSA 12....以太坊DApp开发环境搭建-windows :https://pan.baidu.com/s/1cyYkhIJIFuI2oyxM9Ut0eA 13.
前言 经过了前几篇对智能合约基础、Web3.py、ethers.js 的学习,我们已经掌握了通过程序与区块链网络直接交互的基础知识,不熟悉的同学可以回顾一下: Solidity 智能合约开发 - 基础...Solidity 智能合约开发 - 玩转 Web3.py Solidity 智能合约开发 - 玩转 ethers.js 但是在真正的复杂业务场景中,我们往往会使用一些进一步封装的框架,如 HardHat...Hardhat 介绍 Hardhat 是一个基于 JavaScript 的智能合约开发环境,可以用于灵活地编译、部署、测试和调试基于 EVM 的智能合约,并且提供了一系列工具链来整合代码与外部工具,还提供了丰富的插件生态...优化代码格式化 VS Code 配置 我本地是通过 VS Code 进行代码开发的,可以通过安装 Solidity + Hardhat 与 Prettier 两个插件来进行代码格式化,可以使用打开 VS...往往我们的合约需要运行在不同的区块链网络上,如本地测试、开发、上线环境等等,Hardhat 也提供了便捷的方式来配置网络环境。
当开发一个依赖随机数生成器的应用时,正确的顺序应当是(1)玩家提交行动计划,(2)生成随机数,(3)玩家支付。...// bad pragma solidity ^0.4.4; // good pragma solidity 0.4.4; (译者注:这当然也会付出兼容性的代价) 小心分母为零 (Solidity...在你决定使用锁之前最好大量阅读相关文献(译者注:这是真的,传统的在多线程环境下对锁的使用一直是个容易犯错的地方)) 有些人可能会发反对使用该术语 竞态,因为以太坊并没有真正意思上实现并行执行。...当收到错误报告时,核心开发人员应该评估bug的严重性 在这个阶段的工作应该在私有仓库进行,并且在Github上的issue板块提出问题 如果这个bug需要被修复,开发人员应该在私有仓库编写测试用例来复现这个...solidity-coverage - Solidity代码覆盖率测试 Solgraph - 生成一个DOT图,显示了Solidity合约的功能控制流程,并highlight了潜在的安全漏洞。
加 +,减 -,乘 *,除 / 运算演示 pragma solidity ^0.4.20; //Author: netkiller //Home: http://...求余 % pragma solidity ^0.4.20; //Author: netkiller //Home: http://www.netkiller.cn...幂运算 pragma solidity ^0.4.20; //Author: netkiller //Home: http://www.netkiller.cn...位移 pragma solidity ^0.4.20; //Author: netkiller //Home: http://www.netkiller.cn...获取字符串长度 在 Solidity 中想获得字符串长度必须转成 bytes 类型然后使用 length 属性获得。
简易版 NFT 合约代码pragma solidity ^0.8.4;import '@openzeppelin/contracts/token/ERC721/ERC721.sol';import '@
前言 在之前的《Solidity 智能合约开发 - 基础》中,我们学习了 Solidity 的基本语法,并且了解了可以通过 Brownie 与 HardHat 等框架进行调试。...而另一篇《Solidity 智能合约开发 - 玩转 Web3.py》中我们也通过 Web3.py 直接与我们本地的 Ganache 节点进行交互了。.../SimpleStorage_sol_SimpleStorage.bin", "utf-8"); 创建 Rinkeby 测试网络环境(Alchemy) 智能合约的调试需要将合约部署到实际的链上,我们选择部署到...创建 Rinkeby 测试账户(MetaMask) MetaMask 完成了 Rinkeby 测试网络环境的创建,我们需要通过 MetaMask 创建账户,获取一些测试 Token,并且将账户私钥记录下来...参考资料 Solidity 智能合约开发 - 基础 Solidity 智能合约开发 - 玩转 Web3.py Solidity, Blockchain, and Smart Contract - Javascript
tuple(hull[i][0]),tuple(hull[(i+1)%length][0]),(0,0,255),3)#绘制凸包 hullArea=cv2.contourArea(hull)#计算凸包面积 Solidity...=float(cntArea)/hullArea#计算Solidity print(Solidity) cv2.imshow("result2",o1) cv2.waitKey() cv2.destroyAllWindows...() 算法:Solidity是轮廓面积与凸包面积之比,作为图像、轮廓及凸包的特征。...Solidity=轮廓面积 / 凸包面积 Solidity=float(cntArea)/hullArea cntArea表示轮廓面积 hullArea表示凸包面积 注意:轮廓就像从黑色背景中找到白色物体
漏洞原理 为了更好地理解漏洞,需要有对 solidity 编程的基本的理解,主要关注下面两个前置知识: solidity 的转账函数 fallback 回调 2.1 前置知识 1-solidity 的转账函数...solidity转账函数有哪些?...ethers.utils.formatEther(await provider.getBalance(reentrance.address))); console.log('---------模拟初始环境完成...0x8464135c8F25Da09e49BC8782676a84730C318bC attack balance:2.0 reentrance balance:100.0 ---------模拟初始环境完成...solidity 版本问题。因为我们使用的是pragma solidity ^0.8.0; ,在这个版本中,如果发生溢出,会导致交易失败,抛出异常。
但是,如果你从来没有见过 Solana 程序,它的语法是非常可怕的,而且文档看起来就像一个开发者的重复性笔记。它没有连贯性,你要到后面的章节才会明白某些部分。...这就是为什么我写“ 给 Solidity 开发者的 Solana 开发之路系列”的原因,我会向你温和地、没有痛苦和挫折地介绍 Solana。...这让我想起了我开始开发 iOS 和第一次遇到 Objective C 的日子。别担心,我们将在之后的文章中更详细地研究这个语法。它将会更有意义,我保证。 将代码与数据分开,使程序的升级变得容易。...在 web2 服务器中作为环境变量?这不太像 web3 的做法。最好是把这个密钥存储在程序本身,使其更像以太坊--一种将存储附加到程序的方式。 程序衍生地址(PDA)解决了这个问题。...作为写给 Solidity 开发者的 Solana 入门指南,本文关于 以太坊的编程模型差异就到此为止了。 ---- 本翻译由 Duet Protocol[7] 赞助支持。
目录 智能合约 Solidity语言简介 Solidity语言特性 ---- 智能合约 智能合约的英文是Smart Contract 最早是尼克丶萨博在1995年就提出了智能合约的概念~就是将法律条文写成可执行代码...以太坊是区块链与智能合约的完美结合,通过编写智能合约可以实现强大的功能,实现去中心化的应用开发。 ...Solidity,就是目前最常用的用来编写智能合约的语言。 Solidity语言简介 Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。...由于Solidity是迄今为止最成熟的以太坊语言,因此它是社区大力鼓励开发人员使用的语言。 ...Solidity语言特性 Solidity文件的后缀名为.sol 是一种“强类型的编程语言”,必须先定义后复制再使用。
领取专属 10元无门槛券
手把手带您无忧上云