首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在没有abi文件的情况下调用智能合约方法,web3py实现

确定函数调用签名 也就是 0xb45112b2 区块链中合约代码执行,需要指定某个合约地址的某个函数,其中这个执行的函数是使用 Keccak-256(SHA-3)编码后的散列,取散列的前四个字节作为函数签名...官方定义:"签名被定义为没有数据位置说明符的基本原型规范表达式,即具有带括号的参数类型列表的函数名称"。...1,搜索网上的签名数据库:https://www.4byte.directory/signatures/ 搜索结果如下: 说明还没有上传函数的 abi 定义 2,没有函数的 abi 信息,就没办法调用了吗...在使用的时候,address 为合约地址 greeter = w3.eth.contract( address='0xB5816B1C17ce9386019ac42310dB523749F5f2c3...2,自己修改 webpy 的代码,支持签名替换 我开源的代码里面提供了,修改过的,contract.py[4]替换即可使用。github 上有修改说明。

2.4K30

要学的全在这里了

可能是最广泛使用的图书馆和智能合约 与Dappsys类似,更多地集成到Truffle框架中 关于安全审计最佳实践的博客 Advanced Workshop with Assembly Simpler Ethereum...和ZeppelinOS库,可实现智能合约的可升级性 cryptofin-solidity -一系列Solidity库,用于在以太坊上建立安全和高效的智能合约。...Modular Libraries -一组使用以太坊虚拟机在区块链上使用的软件包 DateTime Library - Solidity日期和时间库 Aragon - DAO协议 0x - DEX协议...ERC Token的Chrome扩展以太币钱包 Gnosis multisig wallet -经过审核的多重签名钱包 Mist -浏览并使用以太坊网络上的DApps Exodus -带有Shapeshift...SmartCheck -针对安全漏洞和最佳实践的Solidity源代码的静态分析 MD4 Online Hash Function -使用各种散列算法选项散列输入的工具 iExec SDK -使智能合约能够在链外执行功能或应用程序

1.9K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    以太坊 Solidity 合约 call 函数簇滥用导致的安全风险

    Solidity 编写的智能合约可被编译成为字节码在以太坊虚拟机上运行。Solidity 中的合约与面向对象编程语言中的类(Class)非常类似,在一个合约中同样可以声明:状态变量、函数、事件等。...原理 在智能合约的开发过程中,合约的相互调用是经常发生的。开发者为了实现某些功能会调用另一个合约的函数。比如下面的例子,调用一个合约 A 的 test() 函数,这是一个正常安全的调用。...在 ATN 项目中使用到了 ERC223 和 ds-auth 库,两个库在单独使用的情况下没有问题,同时使用时就会出现安全问题,以下是存在安全问题的代码片段。...2.大量代币使用不安全代码 对于第二种利用模型,在目前公开的智能合约中,仍有不少合约使用这种不安全的代码,为了实现通知接收方以完成后续的操作,加入了一个高度自由的回调函数方法。...在对这类智能合约的审计过程中,发现目前大量的代币合约不会使用到合约本身的地址作为存储单元,也就是说 合约地址所对应的代币量为 0 (balances[address(this)] == 0)。

    84920

    以太坊开发工具及资源大全

    dApp[131] - 使用 ABI 在唯一的 URL 上立即创建 dApp。...可能是使用最广泛的代码库和智能合约 与 Dappsys 类似,更多集成到 Truffle 框架中 博客: 关于安全审核最佳实践[141] Assembly 高级研讨课[142] 简单以太坊 Multisig...[204] -以太坊智能合约的安全扫描器 SmartCheck[205] -静态智能合约安全分析器 Ethersplay[206] -EVM 反汇编器(python) Manticore[207] -智能合约和二进制文件上的符号执行工具...Chainlyt[220] -使用已解码的交易数据探索智能合约,查看如何使用合约并通过特定的函数调用搜索交易 BlockScout[221] -用于检查和分析基于 EVM 的区块链的工具。...[285] -以太坊上的 zkSNARKS 的工具箱 AZTEC 协议[286] -以太坊网络上的隐私交易,在以太坊主网上实时实现 Nightfall[287] -将任何 ERC-20/ERC-721

    2.5K10

    如何审计一个智能合约

    目前有哪些种类的智能合约攻击手段 这个章节讨论一些值得注意的已知攻击,通过下面的步骤你也可以在审计过程中找到相应的攻击方式。 条件竞争是一种在常规系统里面由于事件发生的顺序没有按照预期而导致的问题。...在智能合约中条件竞争可能发生在调用外部智能合约而导致调用流程被恶意的控制。 Reentrancy(重入)攻击是由于一些方法在没有完成之前就被重新单独的调用而导致的一种条件竞争。...在这种情况下,应该使用行为驱动开发(BDD)实践,它类似于开发的智能合约的功能测试,但是更关注安全性而不是功能性。...另一个工具是Etherscrape,在这里用于在使用send()时对重入性bug进行实时Ethereum合约的侦听。...您还可以建议使用bug bounty和持续性渗透测试,这是在合约发布之前发现其他bug或问题的有效方法,并提供Ethereum赏金的模式。

    1.1K40

    什么是智能合约?

    正如Ethereum网站所说,“以太坊是一个运行智能合约的分布式平台”。这些智能合约运行在“以太坊虚拟机”上,这是一个由所有运行以太网节点的设备组成的分布式计算网络。...如果您使用的是构建在以太坊之上的应用程序,组成应用程序的代码(智能合约代码)和个人数据(智能合约的状态)将存储在区块链中。每当您使用应用程序并更改数据时,所有以太坊节点都会更新智能合约的状态。...例如,想象一下在以太坊之上建立一个类似Kickstarter的众筹服务。有人可以建立一个以太坊智能合约,将资金汇集到别人身上。...CryptoKitties使用智能合约 ? 在以太坊网络上使用智能合约构建的最知名的应用之一是CryptoKitties,它自称是“世界上第一款基于区块链技术构建的游戏”。...从本质上讲,CryptoKitties是存储在以太坊区块链中的一种数字“可收集”形式。 CryptoKitties提供了在Ethereum网络上存储和交换数字项目的能力的良好演示。

    1.4K20

    长文 | 深度解析Solidity让老司机翻车的17个坑及超详细避坑指南,建议先马后看(附送独家资源)

    因此,如果用户可以更改库合约,那么,他们原则上可以让用户在不知情的情况下运行任意的代码。 因此,开发者要杜绝使用这样的加密合约,因为在区块链上可以看到智能合约的输入参数。...这样,在部署时就可以创建引用合约的一个实例,而部署者也无法在不修改智能合约的情况下,用其他任何方式替换Rot13encryption合约。 另一个方法是,对已知的外部合约地址,进行硬编码。...这一问题存在于在没有检查响应的情况下使用send()函数的地方。...在智能合约中使用此变量进行身份验证会使合约很容易受到类似网络钓鱼的攻击。 坑点分析 授权用户使用tx.origin变量的合约通常容易受到网络钓鱼攻击,这种攻击可以欺骗用户在漏洞合约上执行授权操作。...因此,tx.origin会等于owner,这样,在Phishable合约第11行上的require将会顺利执行。 避坑技巧 通过上文可以看出,在智能合约中,不应该使用tx.origin作为授权。

    1.2K21

    从零构建以太坊(Ethereum)智能合约到项目实战——学习笔记3

    以太币(Ether)的实际用途 在电脑上执行的一般的代码,写出来可能会有循环不断执行(死循环)的情况,搬到区块链上亦然。那么以太坊怎么解决这个问题呢?以太坊开发者想到的办法是让执行的代码变得有价。...部署合约到区块链上时,需要附加一定数量的燃料。当燃料消耗完而程序还没执行完,就会出现 Out of Gas(燃料耗尽)错误。智能合约透过这样的方式来避免死循环等情况。 智能合约能做什么事? ...P8 、2-什么是智能合约(Smart Contract) 在区块链上运行的程序,通常称为 智能合约(Smart Contract)。所以通常会把写区块链程序改称为写智能合约。 智能合约可以做什么?...Ethereum上的智能合约需要使用solidity语言来编写。...后续呼叫智能合约的时候,使用者可以使用部署合约的钱包地址(所有者账户),或依据编写的智能合约条件,让其他钱包地址也能呼叫这个只能合约。

    2K63

    什么是智能合约?

    正如Ethereum网站所说,“以太坊是一个运行智能合约的分布式平台”。这些智能合约运行在“以太坊虚拟机”上,这是一个由所有运行以太网节点的设备组成的分布式计算网络。...如果您使用的是构建在以太坊之上的应用程序,组成应用程序的代码(智能合约代码)和个人数据(智能合约的状态)将存储在区块链中。每当您使用应用程序并更改数据时,所有以太坊节点都会更新智能合约的状态。...例如,想象一下在以太坊之上建立一个类似Kickstarter的众筹服务。有人可以建立一个以太坊智能合约,将资金汇集到别人身上。...CryptoKitties使用智能合约 [CryptoKitties 智能合约] 在以太坊网络上使用智能合约构建的最知名的应用之一是CryptoKitties,它自称是“世界上第一款基于区块链技术构建的游戏...从本质上讲,CryptoKitties是存储在以太坊区块链中的一种数字“可收集”形式。 CryptoKitties提供了在Ethereum网络上存储和交换数字项目的能力的良好演示。

    1.1K40

    深度解析Solidity的17个坑及超详细避坑指南

    因此,如果用户可以更改库合约,那么,他们原则上可以让用户在不知情的情况下运行任意的代码。 因此,开发者要杜绝使用这样的加密合约,因为在区块链上可以看到智能合约的输入参数。...在上面的例子中,构造函数可以写成: image 这样,在部署时就可以创建引用合约的一个实例,而部署者也无法在不修改智能合约的情况下,用其他任何方式替换Rot13encryption合约。...这一问题存在于在没有检查响应的情况下使用send()函数的地方。...在智能合约中使用此变量进行身份验证会使合约很容易受到类似网络钓鱼的攻击。 坑点分析 授权用户使用tx.origin变量的合约通常容易受到网络钓鱼攻击,这种攻击可以欺骗用户在漏洞合约上执行授权操作。...因此,tx.origin会等于owner,这样,在Phishable合约第11行上的require将会顺利执行。 避坑技巧 通过上文可以看出,在智能合约中,不应该使用tx.origin作为授权。

    3.6K20

    Parity多重签名函数库自杀漏洞

    但是仍然有缺陷,因为函数库没有正确初始化,被利用方式如下: ① 所有的 Parity Multisig wallets 都使用单一的函数库: https://etherscan.io/address/0x863df6bfa4469f3ead0be8f9f2aae51c91a907b4...#code 但是,这个函数库合约没有正确地初始化。...一种是智能合约不该有自杀的函数,这样即便黑客获得了权限也无法把合约移除。...一种是有新的建议及改善时,要及时更新线上的合约或是找寻线上合约可能的漏洞,因为在这问题发生前,就有网友提议在合约部署时要自动呼叫 initWallet(pr) 加強合约的安全。...不成功的情况: ? 不成功,原因是因为安装的testrpc为6.0.3,改用6.0.1可以解决。可以 npm list --depth 0 查看安装的包的情况。

    88320

    第三课 以太坊术语说明及开发者资源列表

    geth是真正的以太坊环境。 Solidity语言 一种高级语言,以太坊编写智能合约最流行的编程语言。在Remix IDE中编写,然后编译成在EVM上可运行的字节码。...Remix 以太坊官方推荐的智能合约开发IDE,适合新手,可以在浏览器中快速部署测试智能合约。...当Solidity合约编译好并且发送到网络上之后,你可以使用以太坊的web3.js JavaScript API来调用它,构建能与之交互的web应用。...外部账户的地址是由公钥决定的,合约账户的地址是在创建改合约时确定的(这个地址由合约创建者的地址和该地址发出过的交易数量计算得到,地址发出过的交易数量也被称作"nonce") 合约账户存储了代码,外部账户则没有... - Java 版的 Web3 Web3.py - Python 版的 Web3 钱包 Gnosis multisig wallet - 多重签名钱包 imToken - 广为使用的闭源钱包 WallETH

    74320

    以太坊 Solidity 合约 call 函数簇滥用导致的安全风险

    Solidity 编写的智能合约可被编译成为字节码在以太坊虚拟机上运行。Solidity 中的合约与面向对象编程语言中的类(Class)非常类似,在一个合约中同样可以声明:状态变量、函数、事件等。...原理 在智能合约的开发过程中,合约的相互调用是经常发生的。开发者为了实现某些功能会调用另一个合约的函数。比如下面的例子,调用一个合约 A 的 test() 函数,这是一个正常安全的调用。...在 ATN 项目中使用到了 ERC223 和 ds-auth 库,两个库在单独使用的情况下没有问题,同时使用时就会出现安全问题,以下是存在安全问题的代码片段。...2.大量代币使用不安全代码 对于第二种利用模型,在目前公开的智能合约中,仍有不少合约使用这种不安全的代码,为了实现通知接收方以完成后续的操作,加入了一个高度自由的回调函数方法。...在对这类智能合约的审计过程中,发现目前大量的代币合约不会使用到合约本身的地址作为存储单元,也就是说 合约地址所对应的代币量为 0 (balances[address(this)] == 0)。

    97130

    以太坊智能合约开发第二篇:理解以太坊相关概念

    它允许任何人在平台中通过智能合约技术开发、部署和使用去中心化应用。 > 有没有感到和ios、Android平台有点类似?...它用于智能合约的开发,并能编译成以太坊虚拟机字节码,部署到以太坊底层区块链网络上。 EVM EVM即以太坊虚拟机,全称是Ethereum Virtual Machine。...合约编译 以太坊虚拟机上运行的是合约的字节码。这就需要我们在部署之前先对合约进行编译。 > 推荐使用solc编译器。 以太坊客户端(节点) 一个以太坊客户端就是一个以太坊节点。...智能合约的部署会把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址就是为合约账户 合约账户存储了代码,外部账户则没有。...应用中,我们可以使用Solidity来编写和区块链交互的智能合约,合约编写好后之后,我们通过一个有余额的账户将合约部署到以太坊节点上,并运行合约(使用Truffle框架可以更好的帮助我们做这些事情)。

    1.3K60

    区块链开发实战:如何从零打造一个去中心化应用

    存储图像 理论上,我们可以将任何东西存储在区块链中,包括图像。 但实际而言,图像需要很多存储空间,而且我们没有办法在我们的智能合约中存储多个“表格”(数据阵列)。...如何操作智能合约 智能合约与API非常相似。它有几个公共函数,可以被在区块链网络上注册过的任何人调用。但与API不同的是,智能合约不能调用外部Web API(区块链是封闭的生态系统)。...所以我们不得不改变我们的solidity代码来首先调用写入函数,然后调用只读函数来获得结果。 我们还发现了一些事件,可以在智能合约中发生情况时进行通知。智能合约负责触发事件。...为此,我们必须: 在服务器上运行以太坊节点 将整个区块链下载到此服务器 在节点上使用一些以太币解锁一个帐户 部署我们的应用程序并将其链接到节点 通过节点将我们的智能合约注册到区块链中 确保你的区块链节点服务器有充足的存储空间...如果你将数据存储在智能合约中,是没有内置的方式可以在交易后显示此数据当前状态的。这意味着你需要构建自己的可视化工具来排除错误。

    2.3K60

    以太坊主网部署终极指南

    发出以太币交易 to: ETH 的接收地址 data: 空(这里不涉及智能合约) 部署智能合约 to:空(我们还没有智能合约的地址,因为我们只是在刚才创建它) data:智能合约的字节码(编译智能合约的结果...如果你有多个合约需要部署,而这些合约又相互依赖,或者你需要在部署后调用任何合约上的功能,这就特别有用。 请查看迁移链接这里[18],了解如何使用它们的完整文档。...在部署之后,我们将所有权转移到一个已经部署好的 multisig 合约上。 将 Truffle 用于主网的弊端 ?...部署后的考虑因素 在部署到主网之后,你应该在 Etherscan 和 Sourcify 上验证合约的源代码。...验证成功后,用户可以在 Etherscan 上获得更多的信息,可以直接在 Etherscan 上与之交互,或者在 Remix 等支持工具从 Sourcify 上获取代码。

    2K20

    Solidity 安全:已知攻击方法和常见防御模式综合列表

    首先是(在可能的情况下)在将 Ether 发送给外部合约时使用内置的 transfer() 函数。转账功能只发送 2300 gas 不足以使目的地址/合约调用另一份合约(即重入发送合约)。...你能看出这份合约中的错误吗? 缺陷出现在 transfer() 功能中。行[13]上的 require 语句可以使用下溢来绕过。考虑一个没有余额的用户。...不管智能合约中规定的规则如何,有一个量,特别容易诱导开发人员将其当作明显的“不变量”来使用,但它在事实上是可以由外部用户来操纵的,那便是合约中存储的 Ether 数量。...因此,如果用户可以更改合约库,原则上可以让用户在不知不觉中运行任意代码。 注意:不要使用这些加密合约,因为智能合约的输入参数在区块链上可见。...,并且部署者无法在不修改智能合约的情况下用其他任何东西替换 Rot13Encryption 合约。

    1.4K30

    实例分析+ 实践步骤,手把手教你编写以太坊、EOS智能合约!

    因此,可以在智能合约平台上进行编写,具体的逻辑步骤如下。 第一步,启动一个区块链节点。 第二步,使用编程语言编译智能合约,然后将源代码编译获得二进制代码。...使用者可通过 Mist 发送指令,调用相应交易合约,让以太坊虚拟机(EVM)在区块链上执行交易合约。...在以太坊上编程时的注意事项 完成准备工作后,就可以着手编写属于自己的智能合约。在编写过程中, 还有一些地方需要注意。...通过这五步,一个简单的智能合约就建立起来了。注意,这个智能合约在转换汇率的时候用的是整型,这是一种理想状态,程序可以在 Remix 上完成调试。 所有代码组合起来如下。...(1)方法 用于调试智能合约的主要方法是 Caveman调试法,我们使用打印的方法来 监控一个变量并检查合约的流程。在智能合约中打印信息可以通过打印 API(C 和 C++)来完成。

    1.1K21

    以太坊合约审计 CheckList 之“以太坊智能合约编码安全问题”影响分析报告

    (1) 算数溢出 在Solidity智能合约代码中,在余额的检查中如果直接使用了加减乘除没做额外的判断时,就会存在算术溢出隐患 contract MyToken { mapping (address...2018年6月26日,知道创宇区块链安全研究团队在Seebug Paper上公开了《以太坊 Solidity 合约 call 函数簇滥用导致的安全风险》。...More than You Imagine:Replay Attacks on Ethereum Smart Contracts》 在攻击中提出了智能合约中比较特殊的委托概念。...在资产管理体系中,常有委托管理的情况,委托人将资产给受托人管理,委托人支付一定的费用给受托人。这个业务场景在智能合约中也比较普遍。...在我们使用HaoTian对全网的公开合约进行扫描和监控时,我们发现文章中提到的几个问题涉及到的合约较少。

    69730

    【经济学人】区块链“智能合约”?人类的判断仍然好过代码

    这种“智能合约”在区块链(比特币的核心技术)的拥护者中非常流行。“智能合约”就是一种计算机程序,当一个预先编好的条件被触发时,能自动执行相应的合约条款。...区块链能确保同一个比特币不会被使用两次,但是它的潜力要远大于此。区块链还允许用户“烤入”(bake in)信息,包括“智能合约”需要的精确指令。 事实证明,比特币的区块链用于执行商业规则还是不够理想。...Ethereum的程序员们凭借这一项应用继续不断前行,4月份时,他们创立了一个风投基金。该基金叫做DAO,没有风险投资人。...它是由许多用户共同控制的,因此他们都必须持有该合约相同的副本,但是目前还没有办法解决这件事。因此,哪一份合约副本应该获取数据?...在智能合约上钻入最深的就有初创企业Symbiont,它打造了一个“智能保险”的交易平台,可进行联合贷款和巨灾保险交换。 有缺陷的人 VS 错误的代码 如果智能合约行得通,商业自动化将达到何种程度?

    69190
    领券