EOS智能合约安全开发终极指南

2023-11-19

EOS智能合约安全终极指南。当世界上最大的ICO,EOS于2018年6月推出时,加密社区变得持怀疑态度,并且由于软件错误而被冻结了2天。但快进4个月,EOS今天占了以太网今天所做交易的两倍以上。通过免费和更快速交易的承诺,EOS最顶级的Dapp拥有大约13,000个每日活跃用户,而以太网的最顶级Dapp只有2,000个。

一些常见的智能合约漏洞几乎适用于所有平台。与以太坊一样,在EOS上编写的智能合约需要在主网上上线之前进行审核。合约中的致命错误可以在合约没有经过足够的测试时被利用。在本指南中,我们将帮助你避免在EOS上制作下一个杀手dApp的过程中常见的陷阱。

在阅读本指南之前,了解有关EOS开发的一些先决条件信息非常重要,这些信息在你阅读本指南时会很方便。了解C++是必须的。开始智能合约开发的最佳位置是EOSIO自己的文档。

ABI调用处理

extern "C" {
void apply(uint64_t receiver, uint64_t code, uint64_t action) {
  class_name thiscontract(receiver);

  if ((code == N(eosio.token)) && (action == N(transfer))) {
      execute_action(&thiscontract, &class_name::transfer);
      return;
  }

  if (code != receiver) return;

  switch (action) {     EOSIO_API(class_name, (action_1)(action_n))};
    eosio_exit(0);
}
}

上面是修改后的ABI调用程序的示例代码。如下所示的更简单的ABI调用程序用于简化合约的操作处理。

EOSIO_ABI( class_name, (action_1)(action_n) );

ABI调用程序/交易处理程序允许合约收听传入的eosio.token交易时间,以及与智能合约的正常交互。为了避免异常和非法调用,绑定每个键操作和代码以满足要求是很重要的。

一个例子是由于他们的ABI转发源代码中的错误而发生在dApp EOSBet Casino上的黑客攻击 。

if( code == self || code == N(eosio.token) ) {
TYPE thiscontract( self );
switch( action ) {
EOSIO_API( TYPE, MEMBERS )
}
}

上面检查ABI转发源代码的apply动作处理程序允许攻击者完全绕过eosio.token::transfer()函数,并在放置之前直接调用contract::transfer()函数而不将EOS转移到合约中。打赌。对于损失,他没有得到任何报酬,但一无所获。然而,对于胜利,他从合约中支付了真正的EOS。

他们通过在传入操作请求合约之前添加eosio.token合约转移操作检查来修复上述错误。

if( code == self || code == N(eosio.token) ) {
if( action == N(transfer) ){
eosio_assert( code == N(eosio.token), "Must transfer EOS");
}
TYPE thiscontract( self );
switch( action ) {
EOSIO_API( TYPE, MEMBERS )
}
}

使用语句require_auth(account)非常重要;进入只需要授权帐户才能执行的操作。require_auth(_self);用于仅授权合约的所有者签署交易。

操作中的授权

void token::transfer( account_name fro
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EOS智能合约安全开发终极指南 的相关文章

  • 区块链能提供有效的身份管理?

    随着身份盗窃和数据泄露在世界各地越来越多的情况下 身份验证是一个主要问题 对访问数据的人进行身份验证实际上是他们要求的 每天 数以百万计的人在网上进行不同的活动 从研究一个学术话题 到购买新的项目 到在社交媒体平台上发表评论 甚至进行不同的
  • 以太坊系列之十五: 以太坊数据库

    以太坊数据库中都存了什么 以太坊使用的数据库是一个NOSQL数据库 是谷歌提供的开源数据leveldb 这里尝试通过分析以太坊数据库存储了什么来分析以太坊可能为我们提供哪些关于区块链的API 存储内容 NOSQL是一个key value数据
  • [区块链安全-CTF Protocol]区块链智能合约安全实战(已完结)

    区块链安全 CTF Protocol 区块链智能合约安全实战 前言 1 The Lost Kitty 2 RootMe 3 Trickster 4 The Golden Ticket 5 Smart Horrocrux 6 Gas Valv
  • 区块链应用开发(智能合约的开发和WeBASE合约IDE的使用)

    文章目录 四 智能合约的开发和WeBASE合约IDE的使用 一 实验概述 二 实验目标 三 实验环境及建议 四 实验步骤 4 1 启动Webase 4 2 智能合约开发 4 2 1 合约功能设计 4 2 2 存证合约开发 4 2 3 工厂合
  • 课程笔记3

    一 以太坊 比特币被称为区块链1 0 以太坊被称为区块链2 0 以太坊的符号是ETH 以太币的符号是Ether 单位是Wei 比特币的符号是BTC 单位是Satoshi 以太坊做出的改进 在以太坊中出块时间减少到十几秒 比特币的mining
  • 巴比特

    摘要 3月15日凌晨 OpenAI在官网上宣告了多模态大模型GPT 4的诞生 GPT 4 实现了以下几个方面的飞跃式提升 强大的识图能力 文字输入限制提升至 2 5 万字 回答准确性显著提高 能够生成歌词 创意文本 实现风格变化 GPT 4
  • 阿里巴巴都害怕的区块链电商到底是什么?

    近日 区块链权威机构中国通信工业协会区块链专业委员会 CCIAPCB 发出倡议 联合各界将中共中央政治局10月24日集体学习区块链主席讲话日作为 区块链中国日 此次中央将区块链技术放在了国家战略层面高度上 让区块链一时间成了全民热点 特别是
  • 区块链数据的存储和更新

    目录 1 引言 2 主要流程 2 1数据库读取 2 1 1 从数据库加载块数据 2 1 2从数据库读取账户信息 2 2 区块链数据更新与回滚 2 2 1 交易数据 2 2 2 块数据 1 引言 在第一篇文章里我们从静态的角度讲解了以太坊的数
  • 如何使用区块链技术保护个人隐私和数据安全

    区块链技术是一种分布式账本技术 它具有不可篡改 去中心化 透明度高等特点 区块链技术能够实现数据的可信存证 隐私保护和交易安全 并且能够通过智能合约的自动执行 因此被广泛应用于金融 电商 物流 社交网络等领域 区块链技术的核心是 分布式账本
  • 引介

    转载自 https ethfans org posts rlp encode and decode RLP编码和解码 RLP Recursive Length Prefix 递归的长度前缀 是一种编码规则 可用于编码任意嵌套的二进制数组数据
  • 区块链+物联网 BOT

    不可否认 我们的一只脚已经迈入万物智联时代 但另一只脚迈入还存在一定的阻碍 区块链技术的出现将会促进这一进程的发展 智能音响 主人你好 我是小Q 现在是早上08点29分 上班时间要到咯 智能门锁 主人你摔疼我了 你总是这样匆忙 下次赶紧麻溜
  • 链语BTChat力推“加密+社交” 引领区块链新社交时代

    近些年来互联网的发展日新月异 大数据化 人工智能 物联网这些都在成为人们生活中触手可及的东西 而区块链技能则被认为是继互联网之后最具颠覆性的创新技术 此前区块链技术在金融服务业 游戏 供应链等不同的产业中都有着广泛应用 同样的对于社交平台而
  • java-ipfs-api.jar的食用方法

    引入java ipfs api jar 从仓库引入 在pom xml中添加仓库
  • "我为区块链赋能实体经济代言"第二批代言人:复旦大学张江研究院教授陈文君

    我为区块链赋能实体经济代言 推出以来 颇受行业关注 为进一步规范行业发展 落实区块链赋能实体经济的目标 为行业发展 正本清源而发声 新一轮的 我为区块链赋能实体经济代言 于9月3日重磅启动 我为区块链赋能实体经济代言100人第二批 第3位代
  • 区块链交易平台服务器该怎么选

    区块链交易平台服务器该怎么选 随着互联网技术的发展 区块链也发展成为一种潮流 越来越多的人加入到区块链行业中来 尤其是区块链交易平台 但也有很多人不了解区块链对服务器的要求 那么我们就要好好说说搭建区块链交易平台服务器该怎么选 1 区块链交
  • 扬帆证券:A股风格或呈大小盘短期均衡

    上星期 A股商场接连弱势盘整格局 沪指于3000点上方窄幅轰动 前期小盘股占优的风格再度演绎 北交所个股体现继续生动 组织观念以为 近期北证50指数的动摇加剧 短期商场的风格或许会呈现大小盘均衡 进入12月 出资者对经济和商场的决心进一步上
  • 工业互联网会是制造业数字化发展的未来吗?

    新工业革命正逐步形成 你认为工业互联网会是制造业数字化发展的未来吗 从这几年的工业互联网发展政策措施 就能看到答案 早在近三年前 工业互联网创新发展行动计划 2021 2023年 就提出了五方面 11项重点行动和10大重点工程 着力解决工业
  • Moonbeam生态项目分析 — — 跨链借贷协议Orbiter One

    概览 Orbiter One 是一个非托管的借贷协议和DeFi中心 专注于跨链互操作性 通过使用从借贷中赚取的ORB Token铸造的Intergactic Whiskers Brigade NFT 用户可以质押并获得额外奖励 借贷和跨链存
  • Sui限定版冬季任务来袭,100万份礼物和50万SUI在等你!

    在这个渐趋寒冷但节日氛围却日渐浓厚的冬日 Mysten Labs非常高兴地向大家宣布 限定版冬季任务已于北京时间12月19日凌晨3点正式启动啦 这次冒险任务充满刺激 奖励丰厚 快来 Mysten Labs任务网站 体验吧 对于参加过Ques
  • 英国金融时报关注TRX登陆Mercado Bitcoin交易所:波场TRON强化南美洲布局,国际化进程持续加速

    近日 波场TRON网络原生代币TRX正式上线巴西最大的合规加密交易所Mercado Bitcoin 英国金融时报 Decrypt Blockworks等财经及加密行业权威媒体对该话题进行了报道 表示此次合作是波场TRON全球业务增长的有力证

随机推荐

  • windows MongoDB安装和配置

    一 MongoDB安装和配置 1 进入官网下载你所需要的安装版本 点击直通官网 Step1 进入官网后 将看到如下界面 点击上方导航栏Products 找到Community Server Step2 选择自己需要的版本 系统和压缩方式 2
  • centos启动停留在started GNOME display manager

    Centos启动卡死进不去界面 停留在started GNOME display manager 在安装Centos7 9系统成功后 需要安装显卡驱动 显卡驱动有一个驱动程序自带这图形化界面 安装该驱动程序后 系统一直处于started G
  • Python连接MySQL数据库

    一 准备模块 python连接SQL数据库首先需要用到 pymysql 模块 这里使用pip install指令来安装步骤如下 1 在安装的python的路径下找到Scripts文件夹并打开 在路径上面写成 cmd 后回车 2 进入这个界面
  • springboot配置自定义数据源(Druid德鲁伊)的步骤。

    今天和大家分享下在Springboot中配置自定义数据源Druid的两种方法及步骤 方法一 1 在pom xml配置依赖 注释里面的内容 2 配置自己的数据源设置 我是在yaml文件中配置的 顺便提醒一下 在配置yaml文件的时候缩进问题一
  • 【引用】四元组与旋转矩阵

    引用 四元组与旋转矩阵 2011 09 22 17 13 39 分类 DirectX资料 举报 字号 订阅 下载LOFTER客户端 本文转载自ericyang1231 四元组与旋转矩阵 在3D程序中 通常用quaternion来计算3D物体
  • iOS开发之状态栏statusBar颜色变化

    在网上搜索了很久 我也试了很多种情况 下面我为每种情况排布一下优先级 刚开始的时候我没有写播放器 使用的是腾讯的SDK 发现我之前设置的状态栏变化不在发生变化啦 所以在这里做一个小结 Xcode默认的颜色是黑色 记录优化代码的点滴 第一种
  • C++---背包模型---装箱问题(每日一道算法2023.3.9)

    注意事项 本题是 动态规划 01背包 的扩展题 dp和优化思路不多赘述 题目 有一个箱子容量为 V 同时有 n 个物品 每个物品有一个体积 正整数 要求 n 个物品中 任取若干个装入箱内 使箱子的剩余空间为最小 输入格式 第一行是一个整数
  • int $0x80系统调用的idea

    1 基础知识 用户态和内核态 一般现代CPU都有几种不同的指令执行级别 Linux总共划分为4个指令执行级别 内核运行在0级别上 1 2级别默认不运行 用户程序运行在3级别上 在内核指令执行级别上 代码可以执行特权指令 访问任意的物理地址
  • 微信小程序组件 - 部门机构人员岗位树组件

  • 国产版Airtag防丢器

    Airtag是什么 AirTag是苹果公司设计的一款定位神奇 它通过一款纽扣电池进行供电 即可实现长达1 2年的关键物品的定位 查找的功能 按照苹果公司自己的话说 您 丢三落四这门绝技 要 失 传 了 AirTag 可帮你轻松追踪并查找各种
  • 华为手机怎样才算激活了_华为P30 Pro手机壳不要闹,简约个性才是王道

    提起手机壳相信大家都不会陌生 在曾经 很多人对于手机壳的印象还只是停留于保护阶段 但是伴随着人们生活水屏的不断提升 手机壳设计师们为了迎合年轻消费者的需求 在外观上做出了升级 风格款式多样 材质分门别类 如今市场上的手机壳可谓是琳琅满目 不
  • 【大数据】Hive: 获取字段数据类型

    2018 12 01 文章目录 前言 方法 前言 某项目涉及将Hive中的textFile表转换成parquet表 由于parquet表不支持date类型 需要判断字段是否是date 并cast成timestamp 方法 采用DESCRIB
  • redis缓存机构-持久化详解(二)

    redis缓存机构 持久化详解 1 redis对于生产环境的灾难恢复的意义 在于故障恢复 2 redis的持久化 RDB AOF 区别 特点是什么 适合什么场景 1 RDB持久化机制 对redis中的数据执行周期性的持久化 数据快照 RDB
  • luaj使用 方法签名规则 Cocos2dxLuaJavaBridge

    function AndroidHandler getParamJson local args nil local ok ret luaj callStaticMethod className getParamJson args Ljava
  • P1609 最小回文数 题解

    本题位数较大 所以只能使用字符串读入 因为是回文数 所以我们只考虑前半部分的情况就能确定一个回文数 如一个型为 x y z overline xyz xy
  • 在安装了vcpkg,并编译了osgEarth后,osgEarth工程中所有依赖项vs2019会自动默认生成最新,解决办法

    前言 问题描述 在安装了vcpkg 并编译了osgEarth后 osgEarth工程中所有依赖项 1 hdf dll 2 hdf5 dll 3 hdf5 cpp dll 4 hdf5 hl dll 5 hdf5 hl cpp dll 6 l
  • sql sever文件导入mysql服务器,怎样将外部数据库文件导入MySQL

    怎样将外部数据库文件导入MySQL 内容精选 换一换 数据导入 章节适用于MRS 3 x及后续版本 Loader是实现MRS与外部数据源如关系型数据库 SFTP服务器 FTP服务器之间交换数据和文件的ETL工具 支持将数据或文件从关系型数据
  • Dubbo快速入门

    文章目录 一 初识Dubbo 1 Dubbo是什么 2 Dubbo现状 3 Dubbo的故事 主要历程 二 RPC介绍 三 Dubbo工作原理 四 案例实操 项目编写 1 项目创建 2 服务提供者 producer 的开发 3 服务消费方
  • RISC-V嵌入式开发准备篇2:嵌入式开发的特点介绍

    原文出处 https mp weixin qq com s ljYZwMj3JaPN29dTAXA3bQ 随着国内第一本RISC V中文书籍 手把手教你设计CPU RISC V处理器篇 正式上市 越来越多的爱好者开始使用开源的蜂鸟E203
  • EOS智能合约安全开发终极指南

    EOS智能合约安全终极指南 当世界上最大的ICO EOS于2018年6月推出时 加密社区变得持怀疑态度 并且由于软件错误而被冻结了2天 但快进4个月 EOS今天占了以太网今天所做交易的两倍以上 通过免费和更快速交易的承诺 EOS最顶级的Da