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

Solidity 智能合约开发 - Hardhat 框架使用

我们在开发过程中,牵扯到很多隐私信息,如私钥等,我们希望将其存储在 .env 文件或直接设置在终端中,比如我们 RINKEBY_PRIVATE_TOKEN,这样我们就可以在部署脚本中使用 process.env.RINKEBY_PRIVATE_TOKEN...启动网络 我们可以直接运行脚本来启动一个 Hardhat 自带网络,但该网络仅仅存活于脚本运行期间,想要启动一个本地可持续网络,需要运行 yarn hardhat node 命令: 执行完成后,就生成了测试网络与测试账户...因为可能我们合约已经在 Etherscan 上验证过,所以我们做了一个 try...catch... 错误处理,如果验证过,则会抛出一个错误,并且输出一个提示信息,而不影响我们部署流程。...合约测试 对于智能合约来说,其大多数操作都需要部署上链,与资产交互,消耗 gas,且一旦有安全隐患造成严重后果。因此,我们需要对智能合约进行详细测试。...总结 以上就是我对 Hardhat 框架基础配置与使用,它是一个很强大开发框架,我后续还将会继续深入了解它更多特性与使用技巧,如果有兴趣,可以继续关注,希望对大家有所帮助。

1.4K20

使用Google App Script和Google Sheet自动生成数据仪表盘

虽然已经有企业级产品来帮助我们收集和可视化这种类型数据,但是你也可以选择只使用Google App Script和Google Sheet来生成自动化仪表盘。...步骤2:创建Google App Script从API拉取数据 Google App Script 是一门基于JavaScript语言,你可以用它来对Google Sheets(以及其他Google套件...虽然实现上面的模式依赖概念很简单,但它是重用电子表格和代码有效方法之一。在我们讨论完本文中使用合约之后,我们再次回顾并佐证这一点。...下面的公式给出了一种汇总数据方案(你也可以使用Googlequery function做到这一点)。...其中细节和技巧可以查阅 How to Make a Killer Data Dashboard with Google Sheets 。下面的仪表盘就是根据该文中原则创建

6.4K60
您找到你想要的搜索结果了吗?
是的
没有找到

安全考量

另外,请记住,即使智能合约代码没有缺陷,编译器或平台本身也可能有错误。可以在已知错误列表中找到编译器一些公开已知安全相关错误列表,这些错误也是机器可读。...请注意,有一个错误赏金程序涵盖了Solidity编译器代码生成器。 与往常一样,使用开源文档,请帮助我们扩展本节(特别是,一些示例不会受到伤害)!...如果它没有后备功能,Ether将被拒绝(通过抛出异常)。 在执行回退功能时,合同只能依靠当时可用gas津贴”(2300 gas)。 这笔津贴不能以任何方式访问存储。...3.发送Ether也可能失败,因为收货合同执行需要gas超过了分配数量(明确地通过使用要求,断言,还原,抛出或因为操作太昂贵) - 它“耗尽gas”(OOG)。...记录你功能,以便其他人可以看到你意图是什么,以及它是否与代码不同。

52140

Python 自动化指南(繁琐工作自动化)第二版:十四、使用谷歌表格

: 名为credentials-sheets.json证书文件 一个名为token-sheets.pickle谷歌表格令牌 一个名为token-drive.pickle谷歌网盘令牌 凭据文件将生成令牌文件...将该文件重命名为credentials-sheets.json,并将其放在与 Python 脚本相同文件夹中。...登录后浏览器窗口提示关闭,token-sheets.pickle和token-drive.pickle文件和credentials-sheets.json出现在同一个文件夹中。...要永久删除您电子表格,请为permanent关键字参数传递True: >>> ss.delete(permanent=True) 一般来说,永久删除您电子表格不是一个好主意,因为它不可能恢复一个被脚本错误意外删除电子表格...将此代码放入一个循环中,以识别工作表中哪一行合计不正确

8.4K50

优化 Solidity 中百分数和比例运算

然而在 Solidity 中,对于足够大 和 乘法可能溢出,因此计算结果可能不正确,这样表达式也往往不能通过安全审计。...(uint) 这个函数功能是,计算 ,并将结果四舍五入,同时如果 为零抛出错误。.../ z; } 这个方案基本上满足大多数要求:它看起来能计算出 ,然后将结果四舍五入,并在 为零情况下抛出错误。...对于较小 和 ,当 时,这没有区别,但是对于较大产生错误结果。所以第一个问题是: 我们该如何避免溢出? 思路:不让它溢出。...程序要求是在溢出时能回滚,这个方案似乎可以满足要求。但问题是,即使最终结果不会溢出,只要 溢出,程序也回滚。我们称这种情况为“假溢出”(“phantom overflow”)。

2.9K20

支持公式3款Excel替代品

随着大数据、企业数字化转型等不可逆趋势推动下,似乎一切变得皆可量化和数据化,企业在解决问题时,也更为倾向于以数据表格来作为判断决策是否正确重要标志,这时具有数据思维和数据分析处理技能,成了当前及未来人才发展不可忽视能力之一...你可以存储、组织和协作处理任何信息,例如员工名录、产品清单等,有的人不会使用SQL和任何脚本,Airtable就非常适合缺点是没有中文版,并且服务器在国外,使用不稳定 Airtable 是适用于各种规模企业和企业电子表格解决方案...可圈可点,下面看下它电子表格内容 主要功能 创建新电子表格,或者打开并编辑您在网络上或其他设备上创建任何电子表格 共享电子表格,并且与他人同时处理同一份电子表格 随时随地处理工作,即使没有互联网连接也不受影响...Google Sheets 使用非常强大方式来互连文件,如果您希望自动化,可以使用 Google Script(Java Script 一种方言)。...即使是新手也可以录制宏或编写自定义函数,缺点是,在测试版中,Google提供产品是轻量级,缺乏像Excel之类产品所具有的完整功能。

3.3K10

以太坊智能合约审计 CheckList

,需要使用require函数抛出错误,否则会错误判断为交易成功 function transfer(address _to, uint256 _value) returns (bool success...在以太坊中,每一笔交易都会消耗一定量gas,而实际消耗量是由交易复杂度决定,循环次数越大,交易复杂度越高,当超过允许最大gas消耗量时,导致交易失败。...transfer抛出错误并自动回滚,而send返回false,所以在使用send时需要判断返回类型,否则可能导致转账失败但余额减少情况。...() address.send() 这类操作如果遇到错误并不会抛出异常,而是返回false并继续执行。...错误样例 uint x = 5 / 2; // 2 正确代码 uint multiplier = 10; uint x = (5 * multiplier) / 2; (2) 数据私密问题 注意链上所有数据都是公开

93631

在Solidity中使用Revert()、Assert()和Require(),并且在EVM中使用新Revert操作码

特别是,assert() 和 require()中 “判断”函数提高了合约代码可读性,但区分它们可能令人困惑。 在本文中,将看到: 1.解释这些函数解决问题。...useSuperPowers() 函数,该函数将抛出返回 invalid opcode 错误,撤消所有状态更改,并用完所有剩余 Gas(有关以太坊中 Gas 和费用更多信息,请参阅本文[10])...1.它将允许你返回一个值 大多数智能合约开发人员都非常熟悉臭名昭著且无用无效操作码错误。幸运是,我们很快就能返回错误消息,或者返回错误类型数字。...将剩余 gas 退还给调用者 目前,当你合约抛出异常时,它会耗尽所有剩余 gas。这可能导致对矿工慷慨捐赠,并且最终会花费用户很多钱。...q=https://www.google.com/url?

61130

Spread for Windows Forms高级主题(8)---通过暂停布局提高性能

当跟踪到一个需要重新生成布局对象改变发生时,绘制代码就会丢弃现有的布局对象,并计算出一个新对象。...如果控件状态变成这样,说明布局对象包含了非法数据(大多数情况下为错误数值),当控件使用非法布局数据绘制时就会导致异常发生。...也可能存在这样异常,它导致上述消息显示,但却与暂停布局无关;例如,IRenderer.PaintCell方法调用过程中由自定义单元格类型对象抛出异常。...即使布局被暂停,Spread控件仍然可以使用之前正确布局信息来绘制控件;但之后Spread控件可能产生不可预知情况,例如,当你想要滚动页面而控件却没有反应,也没有显示异常通知。...如果你使用了公式,在更新之前将AutoCalculation属性设置为false,然后再将其设回true,并调用Recalculate方法,这样可减少对公式多余中间计算。

1.7K60

Google Sheets搭建深度网络

我将通过展示我在google sheets中制作一个实现来证明它。这里有一些可用内容。...我正在对他们工作做一个小扩展,并把它放在google sheets上,这样每个人都更容易使用。 ? 我是怎么建造它?...它为什么找到左边缘可能不是很明显,但是试着使用电子表格,你就会看到数学是如何计算出来。过滤器找到看起来像它们自己东西。...即使只有4到5层,你模型也可以开始寻找面孔、动物和各种有意义形状。 神经网络 现在你可能问自己,“那太好了,但是想出正确过滤器听起来真的很乏味。”...原文链接: https://medium.com/@bwest87/building-a-deep-neural-net-in-google-sheets-49cdaf466da0

1.5K20

Python与Microsoft Office

标签:Python,pywin32 Microsoft Office现在已经是我们每天必须使用软件之一,而Python可用于编写Office脚本(也称为自动化),使用户更容易使用。...注意,以下脚本仅适用于Windows。而xlrd和xlwt一个优点是,可以在任何平台上使用它们。...要设置特定单元格值,调用如下内容:sh.Cells(row,col).Value=“一些值”。注意,我们实例不是基于零,实际上会将值放入正确行/列组合中。如果想提取一个值,只需删除等号。...如果想要这个公式呢?为了解决这个问题,在Excel中录制了一个宏,并执行了一个仅粘贴公式选择性粘贴命令。...使用生成代码,我解决了要在Python中获得公式,只需执行以下操作: formula=sh.Cells(row, col).Formula 如果需要改变所在工作表,怎么办?

2.5K20

Solidity开发智能合约安全建议

这些底层方法不会抛出异常(throw),只是会在遇到错误时返回false。...即使ExternalContract不包含恶意代码,但它所调用其他合约代码可能包含恶意代码。一个具体危险例子便是恶意代码可能劫持控制流程导致竞态。...assert(condition) 在条件不满足也抛出异常,但是最好只用于固定变量:内部错误或你智能合约陷入无效状态。...当开发一个依赖随机数生成应用时,正确顺序应当是(1)玩家提交行动计划,(2)生成随机数,(3)玩家支付。...以太坊规定了每一个区块所能花费gas limit,如果超过你交易便会失败。 即使没有故意攻击,这也可能导致问题。然而,最为糟糕是如果gas花费被攻击者操控。

1.3K50

EVMPatch:自动修补以太坊智能合约

(1)评估结果为了验证字节码重写器生成补丁正确性,使用了最新整数检测工具Osiris进行漏洞检测。...Gas费用:修补程序引入其他代码可能导致交易失败,并显示错误消息。尽管补丁通常不会显着增加gas消耗,但是当交易发送方提供非常紧张gas预算时,仍会发生这种行为。...即使考虑了字节码重写开销,对于该合约,EVMPATCH生成修补程序比手动修补方法小。但是,如果修补了许多漏洞,则EVMPATCH增加稍高开销。...Osiris报告了两个误报,这是由Solidity编译器生成EVM代码引起即使在Solidity源代码中所有类型都是无符号类型,编译器也会生成一个有符号加法。...不出所料,所有开发人员都使用EVMPATCH正确地修补了给定合约,因为EVMPATCH补丁测试器向开发人员报告错误补丁。 EVMPATCH集成补丁测试器使开发人员对其补丁程序充满信心。

32720

数据可视化探索之 SpreadJS

以上两个性能点,在目前架构下很难突破,这也是重构项目时最具挑战性需求点之一。当然硬堆服务器配置也是一个解决方案,但无法解决其它一些问题,并且也带来运维压力。 2....我们在开发时用到了大量用户事件、脏数据、联动等功能,所有这些功能确保正确运行一个重要前提,就是必须能确保随时可以拿到正确计算结果,那么最直接实现思路就是让公式以高优先级、同步方式来执行完计算。...所以即使引入了 Web Worker,也无法确保上边提到同步执行。 经过以上分析,可以看出公式计算性能局限性,取决于 JavaScript 计算能力。...据说,官方还在进一步开发缓存技术,来实现公式计算分块缓存:即使引用链上有值发生变化,也不需要计算整个引用链公式。听起来很强大,思路也靠谱,但愿早点推出。 3....因篇幅较长,所涉及概念性东西比较多,难免会出现错误,希望大家多多指正,谢谢大家!

2K20

借助BERT、表格上下文信息,谷歌提出模型能自动生成公式

,该模型基于目标单元格周围丰富上下文自动生成公式。...论文地址:http://proceedings.mlr.press/v139/chen21m/chen21m.pdf 它效果是这样,用户打算在单元格 B7、C7 和 D7 中输入公式,这时系统自动推断用户可能想在这些单元格中写入最可能公式...公式由两部分组成:1) 运算符序列(例如 SUM, IF);2) 应用运算符相应范围(例如 A2:A10)。目前 Google Sheets 用户现在可以使用这种功能。...列、表头等中信息),解码器可根据这些信息生成所需公式。...他们将 46k 个带公式谷歌表格(Google Sheets)中 42k 个用于训练,2.3k 用于验证,1.7k 用于测试。

2.4K10

作为程序员,你必须了解这些关于计算机知识

另外,扎实领域知识,可以大大提高编程调试、查错能力。知道编译器和编程语言运行时工作原理,就能快速根据编译错误和警告信息修改代码。 知道操作系统底层运行机制,就能快速找到运行时错误问题根源。...它是一个windows服务,需要执行dos脚本,这个脚本会替换掉这个windows服务本身。...发现有时脚本执行无效,查了一晚上,发现当windows服务安装后,第一次启动就执行脚本时就会有权限问题,log都正确,但实际执行这个脚本没有任何效果。但一旦windows服务程序启动一次之后就ok。...Google黑板报上发表了吴军博士一些文章,其中介绍了很多机器学习方面的知识。从文中可以知道,Google其实使用机器学习来分析搜集到页面。Google明显不会把这个公式公开出来。...即使有一天Google真的公开了这个公式,那么可以想见Google肯定又研发出了更加犀利秘籍,山寨货搜索引擎效果还是比不上Google。 山寨是通向创新必由之路。

69950

以太坊智能合约安全开发建议

外部调用 在合约中请求外部合约时需谨慎 请求不可信合约时可能引入一些意外风险或错误。在调用外部合约时,外部合约或其依赖其它合约中可能存在恶意代码。因此,每个外部合约请求都应该被认为是有风险。...伊斯坦布尔升级中包含了EIP 1884[8],1884 提案中包含一项更改就是增加了 gas 花费SLOAD操作码,导致合约 fallback 函数执行消耗 gas 大于 2300。...()抛出异常,该程序也抛出异常)。...正确使用assert(), require(), revert() assert 和 require函数可以用于参数校验,如果不通过则抛出异常。assert函数应仅用于检查内部错误和检查不变量。...external 修饰函数在接收大数据时,可能更有效。 Public 修饰函数是合约接口一部分,可以在内部或者外部被调用。对于 public 类型变量,自动生成 getter 方法。

1.1K20

智能合约安全审计之路-拒绝服务漏洞

拒绝服务原因 意外执行了SELFDESTRUCT指令 访问控制策略出错 Gas达到区块上限 非预期异常抛出 ?...漏洞分析 selfdestruct()合约自毁函数 指令执行后,合约将拒绝服务,地址对应字节码将被标注为删除 合约地址中所有的ETH将被发送到指定新地址 进行ETH转移时,即使目标地址为一个合约地址...Gas达到区块上限 对于每一个区块来说,有一个区块GasLimit,任何交易gas花费都不超过这个上限,否则无法被打包 GaslimitGame合约分析 pragma solidity ^0.4.24...在竞拍合约中,竞拍进行时,每个人向合约发送自己竞拍出价对应ETH 如果有人出价高于当前最高出价者,则合约退还当前最高出价者出价,并且此人成为新最高出价者 攻击者构造一个fallback函数一定会抛出异常合约...,当后面的竞拍者出更高价格时候,触发topBidder.transfer(topBid),然而攻击者合约内使用了fallback函数,在经过transfer函数时候会发生异常,导致交易回滚,从而使

1.5K40
领券