区块链
solidity智能合约 标签描述

Dos攻击 dos攻击也叫做拒绝服务攻击,通过使程序操作无效完成攻击的目的。 下面的一段合约是2016年KotET(“纷争时代”)合约,其遭受了dos攻击。本小节将揭开此合约被攻击的秘密。 源代码 在下面KotET合约代码中,模拟了争夺皇位的功能。只有出价最高的人才能够夺得桂冠。合约中的bid方法正是最核心的竞价合约。只有当msg.value即附带的以太币大于当前最大的出价人,就会首先将从前的最高价格转移给从前的出价人。完成之后,新的价格和资金会替换掉旧的资金。 123456789101112131415 pragmasolidity^0.4.23;contractAuction{&...

  5mjGlyXmoOly   2023年11月02日   28   0   0 solidity智能合约区块链

storage陷阱 下面的合约是一个锁定金额的合约,用户将资金存储在此合约中,只有当过了一段时间时候才能够提取出来。下面的案例是为了说明storage属性预设性带来的陷阱。payIn函数是当用户存储金额时调用的函数。传递的参数似乎解锁的时间。在合约payIn中,HoldRecordnewRecord;其实默认为storage类型,并且,当不为storage变量赋值的时候,变量默认引用的位置是storage空间中的0号位置。这也意味着在当前的案例中,newRecord指针指向了ownerAmount,当对newRecord执行newRecord.amount+=msg.value;实则将ow...

  5mjGlyXmoOly   2023年11月02日   48   0   0 solidity智能合约区块链

回顾 1234567 2016年6月,以太坊最大众筹项目TheDAO被,获得超过350万个以太币,最终导致以太坊分叉为ETH和ETC。2016年拒绝服务:GovernMental's1100ETH2016年KotET(“纷争时代”)合约遭受。2017年Parity钱包,遭受delecatecall注入,销毁了合约。损失513,774.16Ether2017年ANTToken遭受重入漏洞。2017年Simoleon合约被。通过部署合约获得了超过700万的token,从57万账户中脱颖而出,一举成为该合约token的第四大持有者。2018年BEC代币遭到袭击,手法被披露的24小时内,就有...

  5mjGlyXmoOly   2023年11月02日   61   0   0 solidity智能合约区块链

内联汇编 对于普通的solidity智能合约来说,通过solc编译器的优化操作,将源代码转换为以太坊能够识别的二进制文件。但是solc编译器不是万能的,在某些情况下,例如循环操作的时候,并不能达到最佳的执行方式。通过在solidity智能合约中内嵌汇编代码,可以阻止编译器的优化,在某些时候能够到达节约gas的作用。同时,内嵌汇编代码可以增加solidity语言的功能。例如在判断账户地址为合约地址还是外部地址的时候,只能够通过汇编代码来实现。 内联汇编语法 123 assembly{ 内联汇编语句} 将for循环转换变为内联汇编 let指令定义变量。add函数是内联汇编...

  5mjGlyXmoOly   2023年11月02日   37   0   0 solidity智能合约区块链

测试网络 在之前的案例中,大部分都是在remix在线的本地虚拟环境下做的测试。这一小节将在以太坊测试网络中交互合约。除了主网、以太坊有多个测试网络,用于对于智能合约进行测试。那么之间的主要区别在于共识算法以及确认时间。 网络 网络id 共识算法 确认时间 Main 1 POW 15秒左右 Ropsten 3 POW 不到30秒 Ropsten 4 POA仅geth支持 15秒 kovan 42 POA仅parity支持 4秒 remix部署智能合约到测试网络的流程 1、书写智能合约2、solc编译器编译合约为二进制文件与ABI接口文件3、借助于web3j库将...

  5mjGlyXmoOly   2023年11月02日   38   0   0 solidity智能合约区块链

library引入 常常,我们会进行加减乘除的操作,如下的函数就是对两个函数参数进行了四则运算。 123456 functionoperate(uinta,uintb)purereturns(uint,uint,uint,uint){ uintadd=a+b; uintsub=a-b; uintmul=ab; uintdiv=a/b;} library库 上面的函数其实是有问题的,因为它不能够避免出错,例如如果为b传递为0,就会报错。并且没有防止溢出攻击的问题。有很多时候,对于一些基础性的操作,我们可以把他们封装起来,这就是library...

  5mjGlyXmoOly   2023年11月02日   36   0   0 solidity智能合约区块链

相反数 有符号的solidity整数类型如果有N位。那么其值的范围是-2^(N-1)to2^(N-1)-1。这意味着该类型负数的最大值取相反数之后不能够被接收。 相反数陷阱 如下的Negation合约说明了负数在面临取相反数操作时可能遇到的问题。由于对于负数取相反数。实则是取负数的补码操作。因此、当某int类型最大的负数取相反数的时候,会是其本身。如当int8的最大值-128传递到negate8执行取反操作的时候,会返回128。 123456789101112131415 contractNegation{  functionnegate8(int8_i)publ...

  5mjGlyXmoOly   2023年11月02日   30   0   0 solidity智能合约区块链