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

福利|评价超高的《精通以太坊》丛书免费送,还包邮!手慢无

使用回 由于Web3.js API被设计用来与本地的RPC结点交互,所以所有函数默认使用同步的HTTP请求。...如果想发起一个异步的请求,那么大多数函数允许传一个跟在参数列表后的可选的回函数来支持异步。回函数支持错误优先的回模式(Error First Callback)。例如: ?...点击Create,就会将智能合约部署到我们的测试环境中,如下图所示。 ? 智能合约部署之后,接下来要编写应用UI及跟合约交互的部分。...contracts为智能合约的文件夹,所有的智能合约文件都放置在这里。 migrations是用来处理部署(迁移)智能合约的。迁移是用一个额外、特别的合约来保存的。 test智能合约测试用例文件夹。...创建用户接口和智能合约交互 我们已经编写、部署及测试了智能合约。现在我们为合约编写UI,让UI和合约能真正交互起来。

1.1K20

当面试官问你Promise的时候,他究竟想听到什么?

传统的回调式异步操作有什么缺点 (Promise如何解决异步信任问题的) 传统的回有五大信任问题: 调用回太早 调用回调过晚(或没有被调用) 调用回次数过少或过多 未能传递所需的环境和参数 吞掉可能出现的错误和异常...2.调用回调过晚(或没有被调用) 对于一个Promise对象注册的每一个观察回都是相对独立、互不干预的。...而Promise对象调用resolve()和reject()时,每个注册的观察回也都会被自动调度。所以这些观察回的任意一个都无法影响或延误对其他回的调用。 此外,关于回调用。...5.吞掉可能出现的错误和异常 如果在创建Promise时,存在JavaScript代码错误,会直接导致该Promise的拒绝决议,那么你可以通过reject()来捕获异常,代码中的任何异常都不会吞掉。...而对于Promise对象来说,构造Promise实例时的代码如果出错,则会被认为是一个拒绝的决议,并会向观察回中传递异常信息。所以即使是一个异步的请求,Promise也是可以捕获异常的。

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

JavaScript Promise (期约)

# Promise 信任问题 把一个回传入工具 foo() 时可能出现如下问题: 调用回调过早; 调用回调过晚(或不被调用); 调用回次数过少或过多; 未能传递所需的环境和参数; 吞掉可能出现的错误和异常...任何 Promise 链的最后一步,不管是什么,总是存在着在未被查看的 Promise 中出现捕获错误的可能性,尽管这种可能性越来越低。...但它们辨识捕获错误的方法是定义一个某个时长的定时器,比如 3 秒钟,在拒绝的时刻启动。...它的处理方式类似于你可能对捕获错误通常期望的处理方式:done() 拒绝处理函数内部的任何异常都会被作为一个全局未处理错误抛出(基本上是在开发者终端上)。...如果在它被垃圾回收的时候其中有拒绝,浏览器就能够确保这是一个真正的捕获错误,进而可以确定应该将其报告到开发者终端。

44330

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

最近利用智能合约代码中的错误进行的攻击造成了严重后果,修复错误并及时部署补丁合约具有很大的挑战性。即时修补尤为重要,因为由于区块链系统的分布式特性,智能合约始终在线,它们还管理着相当数量的资产。...先前已经在自动利用漏洞产生的背景下研究了这种访问控制漏洞的自动检测,此外整数溢出错误构成了智能合约中的主要漏洞类别。...结果,修补智能合约错误目前是一个耗时,麻烦且容易出错的过程。例如,在修补Parity multisig wallet合约的同时,引入了一个漏洞。攻击者得以成为新部署的库合约的所有者。...方法:在整个研究过程中,要求开发人员手动执行由EVMPATCH自动执行的多个任务:(1)在给定静态分析器(OSIRIS)输出的情况下,手动修补由于整数溢出错误而易受攻击的三个合约,(2)使用EVMPATCH...尽管许多建议引入了可帮助开发人员查找错误的框架,但对于开发人员和社区如何快速,自动地对部署合约中的漏洞作出反应,这仍然是开放的。

32820

101项智能合约安全检查清单

鉴于快速发展的以太坊基础设施(新平台、新语言、新工具和新协议)的复杂程度令人瞠目结舌,以及部署管理数百万美元的智能合约所带来的风险,我认为智能合约开发者/审核员的工作有点类似于上文提到的外科医生/飞行员...锁定版本。合约应使用与其测试过的编译器版本/标志去部署。...锁定 pragma(例如在pragma solidity 0.5.10中不使用 ^ ) 可以确保合约不会意外地被部署到一个有修正错误的旧编译器版本。...虽然*transfer()和send()被推荐为防止重入攻击的最佳安全做法,因为它们只使用 2300 Gas ,但操作码的 Gas 重新定价可能会破坏部署合约。...死代码可能表明程序员出错、逻辑缺失或潜在的优化机会,需要标记出来予以删除或适当处理。(见此处[103]) 使用的返回值。函数调用中使用的返回值表明程序员错误,可能会产生意外行为。

1.6K10

智能合约:重入漏洞

漏洞分析 以太坊智能合约的特点之一是能够调用其他外部合约的代码,然而这些外部合约可能被攻击者劫持,迫使合约通过回退函数进一步执行代码,包括回本身。...但是有个问题是他没有先对用户的代币余额进行清零,而智能合约进行转账的时候会调用收款方 fallback 函数 合约可以有一个未命名的函数 —— Fallback 函数。...receiveEther.value(1 ether)(); } function reentry(address addr){ Victim(addr).withDraw(); } } 部署...Attacker 合约,给 Attacker 合约 1 以太币 部署之后点击 showAccount 再点击 amount 看一下余额,成功 同样,部署 victim 合约,给他 10 以太币,目前账户余额如下...Attacker 合约中,同时 test 的值为 11,说明 fallback 函数被调用了 11 次 漏洞防范 重入漏洞的关键在于:利用回退函数调用函数本身,形成递归调用,在递归调用的过程中进行了转账操作

2K31

如何及时发现网页的隐形错误

} window.onerror 优点: 可以捕获同步和异步的异常 可以获取到错误的详细信息 缺点: 受到同源策略的限制,只能捕获当前域名下的错误 无法捕获语法错误和网络异常的错误 无法阻止异常继续传播...因为无法保证我们编写的代码是否会出错,如果将其放置在后面,一旦发生错误,onerror 将无法捕获到异常。 window.onerror 只能同时订阅一个错误处理函数。...); Promise.then().catch(cb) 优点: 可以捕获 Promise 的拒绝(失败)状态,并执行相应的错误处理逻辑 可以很方便地处理 Promise 的成功和失败回 缺点: 无法捕获...可以捕捉请求过程中的各个阶段的错误,如请求失败、超时等 缺点: 需要编写更多的代码来处理请求细节,容易出现回地狱。 需要手动处理跨域问题 不支持 Promise,需要使用回函数来处理响应结果。...Vue提供的错误处理回——Vue.errorHandler(针对与vue框架,无法捕获异步异常) 微信小程序提供的错误处理——onError(异步、同步都可以捕获)。

15600

PCIe接口中断驱动寄存器被覆盖问题的发现与解决

如下,图1是驱动调用WdfDmaTransactionExecute函数的次数与操作系统调用回函数的次数不一致的截图。 ?...图1 DebugMonito监测 其中,5658(5576+82+0)为驱动调用WdfDmaTransactionExecute函数的次数,5664为操作系统调用回函数的次数。...我们尝试将操作系统多出来的调用回函数的次数跳过,即仅保留第一次调用。硬件侧可以正常完成这次DMA传输,并触发DMA写完成中断。...至此,我们猜测,操作系统多次调用回函数的原因是其认为配置过程出错才重新进行配置,直至最后一次成功。...在这个过程中,用于临时拷贝中断寄存的变量Adapter->IsrCode_dpc被覆盖重写。覆盖的直接后果是,前者读取到的寄存的中断,后者覆盖后就无法由中断延迟处理程序进行处理。

1.5K20

WEB安全基础 - - -命令执行漏洞

双引号   命令执行漏洞简介: 原因: 对用户输入进行检查过滤,导致用户输入的参数被应用当成命令来执行。...> eval() 函数传入的参数必须为PHP代码,即要以分号结尾; 弊端:eval函数可以执行任意php代码 2.assert 断言函数,用于在调试过程中捕捉程序的错误。...“断言”在语文中的意思是“断定”、“十分肯定地说”,在编程中是指对某种假设条件进行检测,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序执行。...array_map ( callable callback , array array1 [, array ) 将函数作用到数组中的每个值上,每个值都乘以本身,并返回带有新值的数组  数组的每个元素应用回函数...  array_filter() 函数用回函数过滤数组中的值。

1.3K20

智能合约编写之 Solidity 的设计模式

除此之外,合约的公开性、回机制,每一个特点都可被利用,作为攻击手法,稍有不慎,轻则合约形同虚设,重则要面临企业机密泄露的风险。...安全性(Security) 智能合约编写,首要考虑的就是安全性问题。 在区块链世界中,恶意代码数不胜数。...如果此时又递归地调用了some,修饰符的逻辑会再次激活,由于此时的locked属性已为true,修饰符的第一行代码会抛出错误。 ?...,无法获取链外数据,影响了智能合约的应用范围。...链外数据可极大扩展智能合约的使用范围,比如在保险业中,如果智能合约可读取到现实发生的意外事件,就可自动执行理赔。 获取外部数据会通过名为Oracle的链外数据层来执行。

1.1K22

以太坊合约审计 CheckList 之“以太坊智能合约编码隐患”影响分析报告

“数据可靠性”、“gas消耗优化”、“合约用户”、“日志记录”、“回函数”、“Owner权限”、“用户鉴权”、 “条件竞争”等,统一归类为“以太坊智能合约编码隐患”。...详见下文: 二、漏洞详情 以太坊智能合约是以太坊概念中非常重要的一个概念,以太坊实现了基于solidity语言的以太坊虚拟机(Ethereum Virtual Machine),它允许用户在链上部署智能合约代码...对于智能合约来说,任何函数的执行都是通过交易来完成的,但函数的执行过程中可能会遇到各种各样的问题,在交易失败或者交易结束后,就会执行fallback来最后处理结果和返回。...关于owner权限问题,应该遵循几个要求: 合约创造后,任何人不能改变合约规则,包括规则参数大小等 只允许owner在合约销毁前,从合约中提取余额 owner不能在限制的情况下操作其他用户的余额等...五、一些思考 在这一次整理合约编码隐患的过程中,对智能合约本身的特殊性进行了深入了解。

55120

【链安科技】EOS部分智能合约漏洞

主要存在的问题包括: 一、存在整型溢出错误; 二、权限检查不严谨; 三、API函数的不规范使用; 四、常规代码错误。...EOS合约存在不严谨之处 我们通过对审核的EOS合约分析,发现存在如下主要问题: 1、存在整型溢出错误 使用自己的数据结构描述代币,对代币数值进行算数运算时未进行安全检查。...在误操作时容易产生整型溢出错误,可能导致代币量归零甚至变成负数的严重结果! 2、权限检查不严谨 权限检查不严谨,造成逻辑漏洞。...如 string_to_symbol(uint8_t , const char *),第一个参数传入的整型变量需要小于256,若使用该API前对输入进行检查,则可能导致整型溢出,从而导致操作了错误类型的代币...另一方面,智能合约安全作为一个关键的链上交易程序,一旦部署将无法撤销。

56530

实现Promise,有手就行巨详细,不看血亏

原生Promise的捕获错误 原生Promise在遇到错误有两种可能 executor函数里面的代码有错误,但是没有被then的reject捕获,会修改Promise的状态为rejected,并抛出错误...返回,不会抛出错误; 如果没有then捕获错误,就不会reject,然后抛出错误; 如果有catch捕获错误,就会把错误信息通过reject返回,不会抛出错误; 即只要错误有被Promise捕获到...,就会通过reject返回 没有Promise.then回 // executor函数里面的代码有错误,但是没有被then的reject捕获,会修改Promise的状态为rejected,并抛出错误...且有reject回 // executor函数里面的代码有错误,但是有被then的reject捕获,不会抛出错误,会修改Promise的状态为rejected,然后通过reject回返回错误原因 var...再判断抛不抛出错误 // 步骤: // 1,捕获错误,存到exception; // 2,遇到定时器宏任务,把定时器的回放进宏任务队列,等待函数执行栈全部执行完再执行

64210

蚂蚁区块链第18课 区块链预言机(ORACLE)的定义及在蚂蚁BAAS中的使用

DOS Network 是一个 Layer-2 的预言机解决方案,它通过在链上部署一个轻量级智能合约,链下是一个 p2p 网络,服务节点的选取和数据验证采用 VRF+阈值签名等技术,保证了去中心化和数据安全...外部数据源服务会在智能合约平台部署一个外部数据源服务合约,用户合约通过调用该服务合约发送外部数据源请求,链下的 TEE 外部数据源服务对接该服务合约,监听用户的请求,然后去对应的外部数据源取数据,最后将结果返回给用户合约...回接口 oracleCallbackCurlResponse 回接口需要业务合约实现,用于接收预言机合约的请求结果回,如果未能正确实现该合约,则将无法接收请求结果。...合约错误码表。...nonce_str、timestamp、time_to_live 暂启用。

2.2K00

快递100快递信息订阅推送API接口案例代码

添加此字段表示打开行政区域解析功能 └- autoCom String 否 1 添加此字段且将此值设为1,则表示开始智能判断单号所属公司的功能...(如不支持的快递公司、单号为空、单号超长等)或错误的回地址 请检查快递公司编码、对照技术文档检查参数、在后台调试工具测试回地址 702 POLL:识别不到该单号对应的快递公司...comNew都为空;(2)如果贵司提交的快递公司编码出错,我们会帮忙用正确的快递公司编码+原来的运单号重新提交订阅并开启监控(后续如果监控到单号有更新就给贵司的回接口(callbackurl)推送带有如下字段的信息...如果提交回接口的地址失败,30分钟后重新回,3次仍旧失败的,自动放弃 returnCode 200: 提交成功 500: 服务器错误 其他错误请自行定义 message...信息推送服务是企业提交快递单号,快递100接收到后便对这些运单进行跟踪,当运单状态发生变化的时候,快递100便通过调用回接口将运单的跟踪信息推送给贵公司,直到这些运单号的生命周期结束(一般以“签收”

1.4K51

秒懂商用区块链关键技术:智能合约

(2)客户端(定义其使用C++代码实现)调用Chrome V8引擎,并把合约代码加载到引擎里执行,在执行的过程中如果遇到内置的接口,就会产生回函数,调用客户端代码,此时实现了双向交互功能。...(3)合约在执行过程中,有可能产生新的交易,如合约账户B在合约内部通过接口对账户C进行转账操作,如果账户C仅是普通账户,那么只需进行普通转账操作即可;如果账户C是一个合约账户,那么将会再次触发新的合约形成一次递归调用...合约调用合约的递归深度为3层,超过3层将会出错并回退整个交易,这是出于合约实现的复杂度和区块链底层的安全性来考虑与设计的。...智能合约安全开发指南 开发智能合约和开发普通程序有一定的区别,其部署之后无法被修改,甚至很难升级,且数据无法被篡改,因此,开发智能合约需要遵循以下几个原则: (1)保持合约的简洁。...(4)对于不可预知的错误,要多使用断言并终止程序。 (5)避免重入攻击。

40931
领券