博客
关于我
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/

    你可能感兴趣的文章
    MySQL-Explain的详解
    查看>>
    mysql-group_concat
    查看>>
    MySQL-redo日志
    查看>>
    MySQL-【1】配置
    查看>>
    MySQL-【4】基本操作
    查看>>
    Mysql-丢失更新
    查看>>
    Mysql-事务阻塞
    查看>>
    Mysql-存储引擎
    查看>>
    mysql-开启慢查询&所有操作记录日志
    查看>>
    MySQL-数据目录
    查看>>
    MySQL-数据页的结构
    查看>>
    MySQL-架构篇
    查看>>
    MySQL-索引的分类(聚簇索引、二级索引、联合索引)
    查看>>
    Mysql-触发器及创建触发器失败原因
    查看>>
    MySQL-连接
    查看>>
    mysql-递归查询(二)
    查看>>
    MySQL5.1安装
    查看>>
    mysql5.5和5.6版本间的坑
    查看>>
    mysql5.5最简安装教程
    查看>>
    mysql5.6 TIME,DATETIME,TIMESTAMP
    查看>>