草庐IT

以太坊合约地址的生成方式

以太坊合约的地址是根据创建者(sender)的地址以及创建者发送过的交易数量(nonce)来计算确定的。sender和nonce进行RLP编码,然后用keccak-256进行hash计算。【1】使用Web3j的Java代码/***以太坊合约地址的生成方式*/privateStringcalculateContractAddress(Stringaddress,longnonce){byte[]addressAsBytes=Numeric.hexStringToByteArray(address);byte[]calculatedAddressAsBytes=Hash.sha3(RlpEncod

fisco bcos 智能合约开发

项目需求2张表:资源表、资源访问记录表,需要资源上链智能合约、访问记录上链智能合约、以及资源所有权转移智能合约。FISCOBCOS提供合约KV存储接口开发模式,可以通过合约创建表,并对创建的表进行增删改查操作。所以,针对2表创建两个智能合约即可实现对表的增删改查操作。资源的所有权转移可以通过对资源表的数据属主的修改实现。1.KVTable合约Solidity合约只需要引入FISCOBCOS官方提供的Table.sol抽象接口合约文件即可。webankblockchain-liquid(以下简称WBC-Liquid)合约在实现合约之前对KVTable的接口进行声明使用即可。Table包含分布式存

区块链基础:编写一个最简单的合约,修改和查询

案例1:存储合约    先看代码://SPDX-License-Identifier:GPL-3.0pragmasolidity>=0.4.16   代码的注解:                //第一行是说明源代码是根据GPL3.0版本授权的。默认情况下,在发布源代码时加入机器可读许可证说明是很重要的。               //第二行是告诉编译器源代码所适用的Solidity版本为>=0.4.16及//这样的说明是为了确保合约不会在新的编译器版本中发生异常的行为。关键字pragma是告知编译器如何处理源代码的通用指令(例如,pragmaonce)。这里就学会写第一个合约了,其实sol

智能合约开发测试部署验证一条龙

前面提到,我最近在看Web3,这不记录下最近看到的好玩的。忘了在哪里看到的一句话,Web3这个东西,刚看时让人摸不到头脑的点在于,你很难知道要用哪些东西去组装,去哪里拿数据。比如都说区块链人人可访问,我要到哪里看到它?毕竟看得见的东西更让人心安。给俺瞧瞧。我到哪里去看区块链上的数据?不给你区块链浏览器这个关键词,大概很难知晓。一个经常会看到的疑问是如何与合约交互,比如,合约里存了一个字符串,我现在要将其展示到页面上,如何搞?这玩意是去中心化的呀,没有一个API地址让你去连呀,于是就迷茫了。。。。。。。。。。。。其实Web3里的很多东西,就是一张纸,没啥,与智能合约交互其实就是要和节点交互,但维

区块链智能合约

合同(Contract)又称契约、协议,是平等主体的自然人、法人、其他组织之间设立、变更、终止民事权利义务关系的协议。本质上讲,合同是当事双方或多方在并没有充足信任的情况下,通过文字的约定和法律的权威,对各自的权利与义务进行的约定。制订合同的目的就在于所签署协议的执行。传统合同的执行要求当事人的参与并消耗相应的时间,当违约发生时,还需要法律、机构等第三方的介入。可以说,人类社会投入了相当大的成本,以保证合同得到当事各方的尊重和执行。尽管如此,合同违约的事情还是屡见不鲜,时代的发展也在某种程度上放大了这个问题,因为随着经济全球化的发展,人们经常要与不了解的,甚至处在不同文化背景和法律体系下的合作

区块链合约安全系列(三):如何认识及预防公链合约中的自毁攻击

id:BSN_2021公众号:BSN研习社作者:红枣科技张雪良背景:由于公链环境下所有的信息都是共享的,智能合约相当于是完全透明化,任何人都可以调用,外加一些利益的驱动,导致引发了很多hacker的攻击。其中selfdestruct攻击也是常见的攻击方式之一。目标:将目标合约瘫痪掉,无法做正常的业务,从而认识以及预防自毁攻击漏洞。对象:适用于用Solidity语言开发的智能合约,例如BSN中的武汉链(基于ETH)和泰安链(基于fiscobcos)上运行的智能合约。前言在进入正题之前,我先带大家从基础知识点开始一点点深入到怎么攻击以及预防。好,废话不多话,先看下selfdestruct的官方解释

Solidity极简入门#21. 调用其他合约

调用已部署合约开发者写智能合约来调用其他合约,这让Ethereum网络上的程序可以复用,从而建立繁荣的生态。很多web3项目依赖于调用其他合约,比如收益农场(yieldfarming)。这一讲,我们介绍如何在已知合约代码(或接口)和地址情况下调用目标合约的函数。目标合约我们先写一个简单的合约OtherContract来调用。contractOtherContract{uint256private_x=0;//状态变量_x//收到eth的事件,记录amount和gaseventLog(uintamount,uintgas);//返回合约ETH余额functiongetBalance()viewp

智能合约安全分析,Vyper 重入锁漏洞全路径分析

智能合约安全分析,Vyper重入锁漏洞全路径分析事件背景7月30日21:10至7月31日06:00链上发生大规模攻击事件,导致多个Curve池的资金损失。漏洞的根源都是由于特定版本的Vyper中出现的重入锁故障。攻击分析通过对链上交易数据初步分析,我们对其攻击的交易进行整理归纳,并对攻击流程进一步的分析,由于攻击涉及多个交易池。pETH/ETH池子被攻击交易:https://etherscan.io/tx/0xa84aa065ce61dbb1eb50ab6ae67fc31a9da50dd2c74eefd561661bfce2f1620cmsETH/ETH池子被攻击交易:https://ethe

区块链之java(六.1) 合约监听

之前写的那一篇呢,好像有点点问题。就是在设定监听的时候,没有编写具体监听的方法。今天带来一篇新的方式的合约监听前面的就不赘述了。合约上的监听是一样的。在java中。根据abi生产的文件,其实在里面是有监听方法的代码如下:publicFlowablestoEventFlowable(EthFilterfilter){returnweb3j.ethLogFlowable(filter).map(newFunction(){@OverridepublicStoEventResponseapply(Loglog){EventValuesWithLogeventValues=extractEventPa

以太坊合约地址计算

1.引言以太坊创建合约的方式有2种:1)由EOA账号直接创建合约2)由其它智能合约创建智能合约2.1)通过CREATE(0xf0)opcode2.2)通过CREATE2(0xf5)opcode//SPDX-License-Identifier:MITpragmasolidity0.8.7;contractOpCreates{functionopCreate(bytesmemorybytecode,uintlength)publicreturns(address){addressaddr;assembly{addr:=create(0,0xa0,length)sstore(0x0,addr)}r