从看雪论坛换了一本《智能合约安全分析和审计指南》,看了一些智能合约相关的内容,因为我之前对于区块链的了解仅仅是只知道世界上有一种叫做比特币的东西,所以对于这些概念的理解还是比较困难的 了解一下区块链是什么东西...: https://ethfans.org/posts/wtf-is-the-blockchain 了解一下以太坊以及智能合约等: https://ethfans.org/posts/gentle-introduction-ethereum-new-version-with-more-note...allow-insecure-unlock 参数介绍: --identity 给以太坊节点设置身份--rpc 启动 RPC(Remote Procedure Call,远程过程调用)通信,进行智能合约的部署和调试...同步完成之后只要任意节点开始挖矿,另一节点就会自动同步区块,向任意一个节点发送交易,另一个节点也会收到该交易的信息,书上说的,我这里不会显示 使用 net.peerCount 可以看一下已连接的节点数...Wallet Ethereum Wallet 软件去这里下载: https://github.com/ethereum/mist/releases 我新版打不开,老的版本可以,曲奇云盘: https
概述 上一篇描述了Binance与Ethereum的跨链原子交换技术规范;本节将描述Binance在Ethereum中的跨链院子交换合约。...Binance的跨链原子交换分为两种:ETH跨链原子交换合约、基于Ethereum合约的ERC20跨链原子交换合约。...两份合约实现上几乎一致,唯一的区别在于:ETH作为Ethereum的原生token与基于ERC20的合约token,转账有些不同。 合约代码 以ETH跨链原子交换合约为例....sender: 该笔院子交换的发起者 recipientAddr: 该笔原子交换的接收者 swaps: 合约中存储的原子交换的信息;当指定的原子交换被claim或refund时,会从合约中删除该原子交换的信息...在refund中,将锁定在合约地址中的指定金额返还给发送者,更新原子交换信息的状态 由合约代码可以看出,refund交易任何人都可以发送。
P20 、Solidity Types - 布尔(Booleans) 布尔(Booleans) bool:可能的取值为常量值true和false。 支持的运算符: !
/ethereum sudo add-apt-repository -y ppa:ethereum/ethereum-dev sudo apt-get update sudo apt-get install...-1.zip /home/ethereum/Mist 使用mist链接到私链 "/home/ethereum/Mist/mist" --rpc "/home/ethereum/privatechain/...6、编写智能合约 这里我们部署合约分两种情况: 命令行方式部署 Mist钱包中部署 a、命令行方式部署 终端1编写合约 cd privatechain nano DemeterContract.sol...contractInstance.addTicketToStore("name","content",eth.coinbase) Error: invalid address at web3.js:3930:15 at web3.js:3756:20...将合约复制粘贴过来,并把合约版本改为 0.4.24(我们下载的mist钱包合约编译器的版本就是0.4.24) ? ? 开始部署 ? 等待合约挖矿确认 ?
保证智能合约的安全可靠 首先要注意, 即使智能合约代码中没有任何Bug, 编译器和运行平台本身也可能有Bug. 详见List of Know Bugs of Solidity....但是开发者要意识到, 在区块链上智能合约的所有信息都是公开可见的, 即使是被private修饰的变量(事实上, private变量仅仅是不能被其他智能合约在执行时”直接”访问到而已)....任何从合约A到合约B的转账过程中, 将控制权移交给合约B的行为都有可能造成合约B在转账完成之前再次调用合约A. // bug contain contract Fund { // mapping...但是以太币的转账总是会触发代码的执行, 如果接收方是一个智能合约, 即msg.send是一个智能合约, 那么他将能够在接收过程中再次调用withdraw()函数....比如智能合约A调用了智能合约B, 有一个用户P给智能合约A发Transaction, 调用A调用了B.
P50 、1-Solidity Types - 动态大小字节数组、固定大小字节数组 、string之间的转换关系
P5 、1-会说话的PPT,从开发者角度快速理解区块链 一、什么是区块链?
} } 说明:当字节数组的长度只有2时,如果你通过push往里面添加一个字节,那么它的长度将变为3,当字节数组里面有3个字节,但是你通过length方法将其长度修改为2时,字节数组中最后一个字节将被从字节数组中移除
P28 、1-Solidity Types - 地址(Address) - 初识 以太坊钱钱包地址位数验证 以太坊中的地址的长度为20字节,一字节等于8位,一共160位,所以address其实亦可以用uint160...:从合约发起方向某个地址转入以太币(单位是wei),地址无效或者合约发起方余额不足时,代码将抛出异常并停止转账。...pragma solidity ^0.4.4; contract PayableKeyword{ //从合约发起方 向 0xca35b7d915458ef540ade6068dfe2f44e8fa733c...P34 、7-Solidity Types - 地址(Address) - 通过send方法转账 四、send send:send相对transfer方法较底层,不过使用方法和transfer相同,都是从合约发起方向某个地址转入以太币...pragma solidity ^0.4.4; contract PayableKeyword{ //从合约发起方 向 0xca35b7d915458ef540ade6068dfe2f44e8fa733c
P11 、2-如何通过Solidity实现一个类(合约) solidity在线编辑器:http://remix.ethereum.org/#optimize=false&version=soljson-v0.5.1...+commit.c8a2cb62.js 编写智能合约可以通过atom来进行编写,也可以通过在线编辑器编写 1、编写智能合约SmartContract pragma solidity ^0.4.4; /...== msg.sender){ //析构函数 selfdestruct(_owner); } } } 2、在线编辑器中Compile编译SmartContract智能合约...3、运行该智能合约 ?...备注:不管是属性还是方法,只有是‘public’类型时,才可以通过合约地址进行访问,合约内部的this就是当前合约的地址。
Solidity Types - Solidity 结构体(Structs) P67 、Solidity Types - Solidity 字典/映射(Mappings) P68 、集资(CrowdFunding)智能合约...1-Solidity 元组(Tuples)- 什么是元组,元组能做什么 P71 、2-Solidity 元组(Tuples)的使用 P72 、1-truffle framework初体验 - 如何编写智能合约
变量支持的步长以8递增,支持从uint8到uint256,以及int8到int256。需要注意的是,uint和int默认代表的是uint256和int256.
P7 、1-以太坊(Ethereum)是什么?...P8 、2-什么是智能合约(Smart Contract) 在区块链上运行的程序,通常称为 智能合约(Smart Contract)。所以通常会把写区块链程序改称为写智能合约。 智能合约可以做什么?...Ethereum上的智能合约需要使用solidity语言来编写。...将智能合约部署到区块链的流程 写好solidity代码(.sol)后,需要先将程序代码编译(编译)成EVM(Ethereum Virtual Machine)能读懂的二进制度Contract ByteCode...,才能部署到Ethereum的区块链上执行。
智能合约是一种在区块链上执行的自动化合同,由Solidity编程语言编写。Ethereum是一个开源的区块链平台,支持智能合约的创建和执行。...在这篇博客中,我们将详细介绍如何使用Solidity和Ethereum开发一个简单的智能合约,包括合约的编写、部署和交互。...步骤3:编译智能合约使用以下命令在Truffle项目中编译智能合约:truffle compile编译成功后,将在build/contracts目录下生成合约的ABI(Application Binary...:truffle migrate步骤5:与智能合约交互创建一个简单的JavaScript脚本,通过Web3.js库与已部署的智能合约进行交互。...通过这个简单的例子,你学习了如何使用Solidity和Ethereum开发一个智能合约,并与其进行交互。在实际的智能合约开发中,你可能需要处理更复杂的逻辑和引入更多的安全性考虑。
智能合约中使用的ERC-20标准仅包含6个基本功能,这些功能使令牌成为可靠的功能。代码非常简单,您无需掌握任何计算机科学知识即可理解它。让我们一块一块地完成它。...例如,ERC-20的一个特别糟糕的设计缺陷使得当人们错误地使用他们用于将令牌发送到普通钱包的过程将它们发送到智能合约时,令牌可能丢失。...不幸的是,这已经导致迄今为止损失了价值超过300万美元的ERC-20令牌。 ERC-223通过允许用户将令牌转移到具有相同功能的智能合约和钱包来解决这一设计缺陷。...取而代之的是,ERC-777使用“发送”功能,用于传输以太网本身。 ERC-777的另一个重要卖点是它允许“经批准的运营商”,这意味着人们可以批准智能合约代表他们移动代币。...考虑到它比ERC-20更具可定制性并减少交易摩擦,今天ERC-20上的每一个应用程序都可以从将来转向ERC-777中受益。
一般的Ethereum node也可以连接到PoA chain,正常发起transactions,contracts等。...大纲 1、Parity钱包下载安装 2、设置chain spec 3、设置两个节点 4、设置账号(Account) 5、启动Authority node 6、连接两个节点 7、发送交易 8、分享给其它节点...Parity钱包下载安装:https://www.parity.io/ethereum/ https://github.com/paritytech/parity-ethereum/releases/tag...} } }, "params": { "gasLimitBoundDivisor": "0x0400", "maximumExtraDataSize": "0x20...七、发送交易 在我们这个案例中,我们一个创建了三个账号,一个用户账号,两个POA账号,刚开始的时候我们为用户账号初始化了10000 ETH。如下图所示,账号与账号之间可以相互转账。
特别是以太坊,提供智能合约功能,为可以以分布式,不可变和无可信赖的方式实施的新想法敞开大门。 由于学习曲线非常陡峭,因此在Ethereum智能合约部分开始可能会有点压倒性。...充值可以来自任何人,并且可以是以太或ERC20令牌的形式。让我们让Alice将100个Toptal Tokens发送给Bob的新钱包,如下所示: ?...理解基础知识 什么是智能合约? 智能合约是在Ethereum虚拟机之上执行的计算机代码。智能合约可以发送和接受以太网和数据。合约本质上是不可改变的,除非另有规定。 什么是以太坊虚拟机?...Solidity是一种面向契约的编程语言,主要受JavaScript,C ++和Python的启发,用于编写智能合约。地平线上还有其他语言,比如Vyper。 什么是ERC20令牌?...令牌是实施ERC20标准的智能合约。它们包括获得总供给和平衡等操作以及转移令牌的方法。令牌从未真正离开合同,但只是在内部映射中重新分配给不同持有者的钱包地址。
尽管如此,私人令牌和智能合约不会与公共令牌兼容。有关公共权限和私人权限网络之间的差异的更多信息,请参阅区块链混淆?...以太坊虚拟机可以运行智能合约 与比特币的原始脚本语言相比,可以在Ethereum中部署并作为智能合约运行的代码对开发人员而言更为先进和熟悉。...Whisper是一种加密的消息传递协议,它允许节点以安全的方式直接发送消息给对方,并且也将发送者和接收者从第三方窥探者身上隐藏起来。 这是不依赖中央服务器的通信。...)的帐户 - 这些智能合约由发送ETH的事务激活。...另外还有20%(12亿欧元)用于资助发展和以太坊基金会。
安全应该是区块链现在最棘手的问题,而安全问题中,尤其是智能合约漏洞泛滥成灾,如何避免这些漏洞?或许我们应该了解一下智能合约所遵循的ERC标准。...这篇文章中,她介绍到ERC标准是由以太坊开发人员编写,开发人员在基于这些标准构建智能合约。...由于EIP的接口是开放的,所以开发人员可以基于这些标准之上构建智能合约。其中ERC-20是整个加密社区中最流行的标准,以太坊平台上的所有通证都使用这一标准。...transferFrom(address _from, address _to, uint256 _value):从地址_from发送数量为_value的通证到地址_to,触发Transfer事件。...当通证转移到智能合约时,该合约的一个特殊方法tokenFallback将允许接收合约、拒绝通证或触发进一步的操作。在大多数情况下,tokenFallback方法可以用来代替approve方法。
这使得智能合约可以遵循这些通用的接口标准来构建。 ERC-20是整个加密社区中最为人熟知的标准,在Ethereum平台之上发布的大多数通证(token)都使用它。...因此,如果接收账户是合约账户,那么必须使用approve + transferFrom机制来发送通证。 如果接受账户是外部帐户,则必须通过transfer函数发送通证。...当通证转移到智能合约账户时,该合约的特殊函数tokenFallback() 允许接收方合约拒绝令牌或触发进一步的操作。 大多数情况下,这可以用来代替approve()函数。...://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md ERC165定义以下功能: 1) 如何识别接口; 2) 一个智能合约如何发布它执行的接口...; 3) 如何检测一个智能合约是否执行了ERC-165协议; 4) 如何检测一个智能合约是否执行了一个给定的接口; 7,参考 (1)以太坊官网ERC列表 (2)以太坊官网EIP提出列表 ----
领取专属 10元无门槛券
手把手带您无忧上云