博客
关于我
EOS REX 安全系列之从源码开始玩转 REX(一)
阅读量:156 次
发布时间:2019-02-28

本文共 1764 字,大约阅读时间需要 5 分钟。

REX 系统分析与实现细节

前言

随着 REX 提案在 EOS 生态中逐渐成熟,其本质功能逐渐显现。作为一种资源交易所平台,REX 的目标是通过智能合约技术,为 EOS 网络用户提供一个高效的资源租赁服务,缓解高昂的资源使用成本,同时通过投票机制促进 EOS 系统的良性运转。本文将基于 REX 1.6.0-rc2 源码,深入分析其核心功能和操作流程。


REX 定义

REX(Resource Exchange,资源交易所)是一款基于 EOS 智能合约的资源租赁平台,旨在提供一个更加灵活和高效的资源使用方式。与传统的资源租赁 DApp 不同,REX 允许每个 EOS 持有者直接参与资源出租,而不是仅限于特定平台的资源出租方。这种设计使得 REX 成为了一个全新的资源共享生态系统。

值得注意的是,REX 本身并不是一种代币,而是一个资源租赁平台。用户购买的 rex 通证仅用于证明资源出租权益,其本身不可流转,类似于一种抵押品或权益证明。为了区分概念,这里将 REX 租赁平台称为 REX,而用户持有的通证则称为 rex。


REX 操作流程

REX 的核心功能主要通过以下几个接口实现:

  • deposit:用户将 EOS 转入 REX 账户,作为后续购买 rex 的预备金。
  • withdraw:用户将 rex 卖出后获得的收益转回 EOS 账户。
  • buyrex:用户使用预备金购买 rex,参与资源租赁。
  • sellrex:用户结算已租赁的资源收益。
  • 1. deposit 函数

    deposit 函数是用户参与 REX 的入口,主要完成 EOS 到 REX 账户的转移。其实现逻辑包括:

    • 权限校验:确保操作者具备合法权限。
    • 代币校验:确认使用的代币为系统代币(即 EOS)。
    • 资金转移:将 EOS 转入 REX 账户,并初始化用户的储备金记录。

    2. withdraw 函数

    withdraw 函数是 deposit 的反向操作,用于将储备金转回 EOS 账户。其实现逻辑与 deposit 类似,但主要完成资金提现。

    3. buyrex 函数

    buyrex 是用户购买 rex 的核心接口,其实现逻辑包括:

    • 权限校验:确保操作者具备购买权限。
    • 代币校验:确认使用的代币为系统代币。
    • 资金扣除:从用户的储备金中扣除相应金额。
    • 资金分配:根据 rex_pool 中的资源可用性,计算用户能获得的 rex 数量。
    • 资金更新:更新用户的储备金记录,确保资金流向的透明性。

    4. sellrex 函数

    sellrex 是用户结算收益的核心接口,其实现逻辑包括:

    • 权限校验:确保操作者具备卖出权限。
    • 资金检查:确认用户持有的 rex 是否已成熟。
    • 收益计算:根据 rex_pool 中的资源使用情况,计算用户可获得的收益。
    • 资金结算:将收益转回用户的 EOS 账户。

    REX 的核心算法

    REX 的收益计算核心在于智能合约中的比例计算机制。具体来说:

    • 用户购买 rex 时,收益计算基于 rex_pool 中的 EOS 总量与已租赁资源的比例。
    • 具体公式为:收益 = (用户购买的 rex 数量 × rex_pool 中 EOS 总量) / rex_pool 中的 rex 总量。

    这种设计在没有第三方资金干扰时,收益与资源使用呈 1:10000 的比例关系。在有第三方资金参与时,收益比例会因资金增加而自动调整,确保系统平衡。


    REX 安全性分析

    作为 EOS 生态中核心的系统合约,REX 的安全性至关重要。其安全防护措施包括:

  • 权限校验:每个接口都有严格的权限校验,防止越权操作。
  • 资源监控:实时监控 rex_pool 中的资源使用情况,防止资源被盗用。
  • 收益结算:采用智能合约自动结算机制,确保收益分配的公平性和透明性。
  • 值得注意的是,在早期版本中,sellrex 函数曾存在一个严重漏洞,导致系统资金不足时,用户可通过重复操作盗取资源。该漏洞已在后续版本中修复。


    总结

    通过以上分析可以看出,REX 系统通过智能合约技术实现了资源租赁与收益分配的自动化,其核心算法基于资源池的比例计算机制,确保了资源使用的高效性与收益的稳定性。尽管在早期版本中存在安全隐患,但经过不断优化,REX 已成为 EOS 生态中值得关注的资源共享平台。

    转载地址:http://aawj.baihongyu.com/

    你可能感兴趣的文章
    MTCNN 人脸检测
    查看>>
    MyEcplise中SpringBoot怎样定制启动banner?
    查看>>
    MyPython
    查看>>
    MTD技术介绍
    查看>>
    MySQL
    查看>>
    MySQL
    查看>>
    mysql
    查看>>
    MTK Android 如何获取系统权限
    查看>>
    MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
    查看>>
    MySQL - ERROR 1406
    查看>>
    mysql - 视图
    查看>>
    MySQL - 解读MySQL事务与锁机制
    查看>>
    MTTR、MTBF、MTTF的大白话理解
    查看>>
    mt_rand
    查看>>
    mysql -存储过程
    查看>>
    mysql /*! 50100 ... */ 条件编译
    查看>>
    mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
    查看>>
    mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
    查看>>
    mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
    查看>>
    mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
    查看>>