Solidity

[solidity语法学习二]基于Remix以太坊的BlindAuction模板代码分析

可紊 提交于 2020-08-18 16:48:06
前言 编译环境: Remix . 代码来源: SolidityDoc . 疑难解决来源: Ethereum gitter . 例子三参考: 例图 . 以太币单位换算: 以太币单位 . 本文主要由三个例子构成。分别是Simple Open Auction 以及延伸版本Blind Auction 、此外还有一个涉及到状态机类型的合同为Safe Remote Purchase。 该例子在基于(一)之上引入了相关语法,接下来我会尽力以自己的理解结合网上的资料进行分析解释,从而帮助我更好地理解相关语法的知识点。 本次例子中引入了msg.value变量以及payable变量,重点在于强调value这个价值。只有当地址中包含payable变量的时候,才能引入value这个功能。因此,我们正常输入函数需要在value中设置相应的以太币,如: 一、Simple Open Auction代码分析 a、初始化相应变量 address payable public beneficiary ; //引入受益人地址 [ 注1 ] uint public auctionEndTime ; //定义拍卖停止时间 address public highestBidder ; //提出最高价格的竞标人地址 uint public highestBid ; //竞标最高价格 mapping ( address = >

在Remix-IDE中部署本地插件

ぃ、小莉子 提交于 2020-08-15 10:27:39
在Remix-IDE中部署本地插件 一、环境准备 remix-ide 是基于Solidity编写的以太坊智能合约开发环境,用于对solidity语言编写的智能合约程序进行编译。关于remix的内容不做具体介绍。为了部署插件,可以进入 在线remix编辑器 (可能需要科学上网)。也可以搭建本地的remix环境,具体方法百度相关教程。 二、插件开发 这里直接给出一个最简单的插件示例。在remix-plugin的 github页面 可以查看详细的插件开发方法。 以官方给出的hello-world示例 ,完成该插件的部署。该插件项目包含一个html文件(index.html),功能是在remix中新建一个hello-world文件,文件内容为Hello world。 完整代码(index.html): <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Hello World Plugin</title> </head> <body> <!-- Remix Plugin inject

基于区块链的供应链金融开源软件分析

大兔子大兔子 提交于 2020-08-15 04:53:52
基于区块链的供应链金融开源软件分析 一、SupplyChainFinancialPlatform 1.版权所属:王明业 2.软件类型:iOSApp 3.软件架构: 分层模式:UI层+应用层+数据层 4.前端设计:UI+Flask 大量代码用于实现UI界面,以Flask为框架实现简单的前端 5.后端设计:Python 实现Loan合约调用的封装,运行服务端,接受外部请求并返回JSON数据 6.链端设计: FISCO BCOS v2.1.0 基于腾讯微众银行开源的FISCO BCOS区块链平台,在Loan.sol合约中实现完整供应链金融平台逻辑 7.用户功能 合约初始化:根据传入的仲裁机构名称,才合约中创建一个仲裁机构实例,并将其中储存的用户地址设为创建本合约的用户地址。 添加公司: 由仲裁机构完成,申请加入的公司需要仲裁机构通过并添加 添加银行:方法同上 银行向受信公司授权信用资产 公司 A 向公司 B 转移 信用资产 银行 给予公司真实资金 受信公司向银行还款 受信公司向银行确认完成 本次事务 查询链上信息 8.分析评价 框架结构不够清晰,尤其是应用层,直接穿插于其他两层实现。 前端实现过于简单,UI界面也过于简陋。 后端调用合约的过程封装起来,运行服务端,将数据储存起来 链段几乎直接使用腾讯微众银行开源的FISCO BCOS区块链平台,框架过大

以太坊合约开发中动态数组的使用【Solidity Assembly】

青春壹個敷衍的年華 提交于 2020-08-14 03:39:52
我们始终建议在开发Solidity智能合约时尽量不要使用汇编。但在少数情况下可能并没有其他选择,因此还是需要学习一些Solidity汇编开发的知识。在这个教程中,我们将学习如何在Solidity汇编开发中使用动态字节数组。 用自己熟悉的语言学习 以太坊DApp开发 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、使用Remix编辑器 首先,让我们将这个简单的合约粘贴到 remix编辑器 中: pragma solidity ^0.5.10; contract AssemblyArrays { bytes testArray; function getLength() public view returns (uint256) { return testArray.length; } function getElement(uint256 index) public view returns (bytes1) { return testArray[index]; } function pushElement(bytes1 value) public { testArray.push(value); } function updateElement(bytes1 value, uint256

如何使用以太坊的预编译合约?

落花浮王杯 提交于 2020-08-13 06:40:25
以太坊包含了一些用于密码学计算的预编译合约,可以用来实现高级隐私保护功能。在这个教程中我们将了解以太坊提供的预编译合约清单,并通过 bn256ScalarMul 和 bigModExp 这两个实例学习以太坊预编译合约的使用方法。 用自己熟悉的语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、以太坊虚拟机基本概念 在继续下面的教程之前,我们需要对以太坊和Solidity有一些基本的了解。我们关心的重点在于,以太坊有一个分布式的虚拟机即EVM,EVM提供了一组指令可以用于在区块链上执行交易并更新状态。关于EVM的一些基本概念如下: storage:可以永久在链上存储信息 memory:EVM虚拟机的工作内存,用于保存计算过程中的变量内容 uint:uint256类型的别名,可保存256位,完美匹配椭圆曲线坐标的要求 public:用来声明函数位公开可调用 view:用来告诉编译器,所装饰的函数不会修改合约状态 pure:表示所装饰的函数不涉及合约状态的读写 2、以太坊预编译合约清单 以太坊Geth客户端的预编译合约清单看起来像这样: var PrecompiledContractsByzantium = map[common.Address

以太坊智能合约开发框架Truffle

做~自己de王妃 提交于 2020-08-11 21:32:21
前言   部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果。   虽然现在IDE中已经存在了Solidity插件,可以编写智能合约,但是部署智能合约却要另走他路,没办法进行一个快捷的部署与测试。   如果团队管理的区块节点多、合约多,那得哭晕在厕所。   Truffle是一个世界级的智能合约开发框架,专门为智能合约而生。 安装 安装truffle sudo cnpm install -g truffle 查看版本 truffle version 搭建项目 创建项目目录 mkdir dapp cd dapp / 初始化空项目 truffle init 你也可以不创建空项目 而是创建一个带有模板的项目 如下 初始化模板项目 truffle unbox webpack 官方模板列表:https://www.trufflesuite.com/boxes 配置区块节点 truffle-config.js文件中networks代码段 用来配置区块链节点 示例中有这么一段 development: { host: " 127.0.0.1 " , // Localhost (default: none) port: 8545 , // Standard Ethereum port (default: none)

Solidity合约安全漏洞分析教程【Mythril】

Deadly 提交于 2020-08-11 00:29:50
在这个教程中,我们将学习Mythril的安装与使用方法,了解Mythril的工作原理,掌握如何利用Ether Thief和Suicide模块分析合约的安全漏洞,以及如何配置Mythril安全分析的交易数量参数和执行超时参数。 用自己熟悉的语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、安装Mythril安全分析工具 执行如下命令安装Mythril: $ pip install mythril 使用如下命令检查安装是否成功,确保版本不低于0.21.7: $ myth version Mythril version v0.21.15 Mythril最基本的安全分析命令是 myth analyze ,例如: $ myth analyze <Solidity file> $ myth analyze -a <contract address> 没有其他参数的话,myth analyze命令将执行适合大多数情况的通用分析。 2、Mythril工作原理 Mythril通过在一个特制的以太坊虚拟机里运行智能合约字节码来检查合约的安全问题,它使用 符号执行 技术来检查程序可能的状态,分析过程包含以下步骤: 1、获取合约字节码 2、初始化合约账户的状态 3

ETHER/ERC20批量交易PHP开发包

冷暖自知 提交于 2020-08-10 22:43:26
以太坊批量转账PHP开发包支持以太币ERC20代币的批量转账,有效减少交易手续费。官方下载地址: http://sc.hubwiz.com/codebag/eth-batch-transfer/ 。 1、以太坊批量转账PHP开发包简介 以太坊批量转账PHP开发包的主要特性如下: 支持以太币和ERC20代币一对多转账 只需要支付一个交易的手续费 支持使用公共节点(例如Infura)或自己部署节点 以太坊批量转账PHP开发包运行于PHP7.1+环境下,主要类及相互关系如下图所示: 以太坊批量转账PHP开发包的主要代码文件清单见官网: http://sc.hubwiz.com/codebag/eth-batch-transfer/ 2、合约部署 以下部分说明如何使用附带的脚本和PHP程序部署合约。当然你也可以使用 Solidity在线IDE 部署合约。 进入开发包目录,执行如下命令编译合约: ~$ cd ~/ebt ~/ebt$ ./build-contract.sh 执行如下命令部署合约: ~/ebt$ php deploy-contract.php 在~/ebt/contract/build/目录下的合约部署地址文件(后缀.addr)中记录有合约的部署地址。 3、批量转账PHP API初始化 PHP侧提供的BatchTransfer.php包含了BatchTransfer类的实现

以太坊智能合约开发框架Truffle

孤街醉人 提交于 2020-08-09 18:41:34
前言   部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果。   虽然现在IDE中已经存在了Solidity插件,可以编写智能合约,但是部署智能合约却要另走他路,没办法进行一个快捷的部署与测试。   如果团队管理的区块节点多、合约多,那得哭晕在厕所。   Truffle是一个世界级的智能合约开发框架,专门为智能合约而生。 安装 安装truffle sudo cnpm install -g truffle 查看版本 truffle version 搭建项目 创建项目目录 mkdir dapp cd dapp / 初始化空项目 truffle init 你也可以不创建空项目 而是创建一个带有模板的项目 如下 初始化模板项目 truffle unbox webpack 官方模板列表:https://www.trufflesuite.com/boxes 配置区块节点 truffle-config.js文件中networks代码段 用来配置区块链节点 示例中有这么一段 development: { host: " 127.0.0.1 " , // Localhost (default: none) port: 8545 , // Standard Ethereum port (default: none)

[区块链笔记4] truffle部署合约到Ganache

旧时模样 提交于 2020-08-08 12:19:10
文章目录 前言(废话+杂记+感受) 正文前的记录 创建项目 写一个简单的solidity 部署配置文件 truffle编译 部署的最后一步 与合约互动 总结 前言(废话+杂记+感受) 前段时间征集大创,班里两个同学想和我组队,然后我就又拉上一位大佬组起了队。其实到现在也不太清楚大学阶段最后要深入研究那个方向,现在还在各种方向都摸索着,好害怕最后什么都知道一点,但是什么都不精。不太想专门写一篇日志,所以就借着这个周二的早上记录一下叭。言归正传。 用了4天看solidity,第3、4天看的加密僵尸,第6章需要用到javascript、jquery,然后就用了3天去看这个两个语法,顺带着看了看nodejs的相关基础(因为部署的时候需要用到truffle等东西,这些都是和nodejs有一点联系的,比如说truffle就是得用npm来install,但是下载npm最省事的方法就是通过安装node来安装了)。 然后花了1天时间来看truffle的部署,准确的说应该是废了1天,因为这一天啥都没弄明白,只是装好了各种环境而已。 看了一天还是萌萌咚咚,然后想起来CX大佬之前写过一篇关于部署和测试的文章,借鉴了一下。 https://blog.csdn.net/weixin_40788897/article/details/103918598 正文前的记录 加密僵尸那个教程的truffle里好多部署