EOS的RAM购买逻辑解析
【摘要】 eos的ram购买代码流程解析。
整体流程 1.需要买的内存数量B 转化为需要付的连接器代币数EOS A 2.扣取手续费。手续费 m = (A+199)/200 .5% 3.连接器代币(A-m)换取内存 B2(用户实际购买到内存) 说明: RAM与连接器代币通过 RAMCORE 进行互转 C: 已有储备金 R: 已有发行量 T: 需要兑换储备金 E: 需要兑换储备金兑换的发行量 详细解析 定义: RA1 = RAM.balance.amount = 64*1024*1024*1024 //ram剩余量 RC1= RC.supply.amount = 100000000000000.0000 //写死的 10的14次方 T1= 1024 //需要购买的内存数 cw = 0.05% //参数 EA = 10000000; //全网中购买RAM的花掉的连接器代币 ,初始值为EOS发行量除以1000 假设:需要购买 T1 数量 内存 RAM转成连接器代币 输出 A 1)RAM转成 RAMCORE 输入:T1,weight,RA1,RC1 横坐标 RAMCORE (发行货币) 纵坐标 RAM (储备金) 公式:
根据公式知道: R = RC1; C = RA1 + T1; T = T1; F = weight/1000 算出 E (需要发行的RAMCORE) 用 RC2(发行量) 表示 这时候把 RC3= RC1 + RC2 //这时候RAMCORE的发行量 RA1 = RA1 + T1 输出: RC3(当前总发行量) 与 RC2 (T1储备后得到的发行量) 2)RAMCORE转成连接器代币 输入: RC2,RC3,EA,weight 公式:
根据公式知道: R = RC3 - RC2 = RC1; //最大发行量 C = EA; //当前购买了 EOS总量 F = 1000/weight E = RC2; //当前转换的发行量 算出 T 所需的 连接器代币的数量 A 扣除手续费 A1 = A- (A+199)/200; 剩余 连接器代币A1 剩余连接器代币转成RAM 3) 连接器代币转成RAMCORE 输入:A1,EA,weight,RC1 横坐标 RAMCORE (发行货币) 纵坐标 连接器代币 (储备金) 公式:
根据公式知道: R = RC1; C = EA + A1; T = A1; //剩余代币 F = weight/1000 算出 E (需要发行的RAMCORE) 用 RC4(发行量) 表示 这时候把 RC5= RC1 + RC4 //这时候RAMCORE的发行量 输出: RC5(当前总发行量) 与 RC4 (A1储备后得到的发行量) 4)RAMCORE转成RAM 输入: RA1,RC5,RC4,weight 公式:
根据公式知道: R = RC5 - RC4 = RC1; //最大发行量 C = RA1; //当前内存剩余量 F = 1000/weight E = RC4; //当前转换的发行量 算出 T 所能购买的内存量
综上: 3)为 2)逆向
4)为 1)逆向 但是 由于3)中c 比 4)c大, 所以4)无法算出正确的 RAMCORE的发行量。3)步中能够得到的RAMCORE发行量会变小,导致4)算出内存也会变小。 结论: 1. 不管有没有手续费 实际得到的内存量都小于输入购买的量
测试结论
1. 发现 weight 的修改并不影响 RAM的价格2. RAM单价 = 购买RAM量(初始数量+后期连接器代币兑换量)/ RAM余额 (验证是正确的)
其他
场景 连接器代币最大发行量: 100000000000 1000亿 当前发行量:10000000000 100亿 RAM最大容量: 64*1024*1024*1024 64g RAM初始连接器被购买量: 当前发行量/1000 10000000 1千万 初始价格: 0.1490 FO/KB
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)