如何释放已使用的EOS RAM,然后就可以*买卖了

     昨天到今天,EOS RAM价格大跌,有一些用户想卖RAM,但是却发现大量RAM被占用,比如下图:

如何释放已使用的EOS RAM,然后就可以*买卖了

    这位伙伴找到我时,他说啥都没做但他的内存使用量怎么高达189k,然后我查了一下该账号的交易记录,发现他曾经部署过智能合约。然后他告诉我是他不小心部署的,且报错了,以为没部署成功。可见RAM被智能合约吃掉了,那怎么办呢?

如何释放已使用的EOS RAM,然后就可以*买卖了

释放已经使用的EOS RAM

    个人使用掉的EOS RAM如果很大,大部分都是智能合约导致的,因此减少智能合约的EOS RAM占用即可释放RAM。智能合约已经部署上去了,又没有删除接口,那怎么减少智能合约的RAM占用?EOS提供了智能合约更新接口,通过更新一个更小的智能合约即可减少RAM的使用量。那什么是最小的智能合约呢?只有一个空函数的智能合约,比如

    如何释放已使用的EOS RAM,然后就可以*买卖了

    然后更新为这个最小的智能合约后发现占用的RAM确实下降到了31k了,瞬间减少了158K的RAM使用量。那有没有可能有更小的智能合约呢?经过底层分析,我实现了一个只占用7k的智能合约, 大家可以实践实践猜猜我是怎么实现的。合约链接如下:

        https://github.com/itleaks/eos-contract/tree/master/cleancontract-exp

更新智能合约释放RAM

git clone https://github.com/itleaks/eos-contract.git

cleos set contract your_account cleancontract-exp/empty/

 

    由于更新智能合约需要用到私钥,请大家不要轻易交给第三方操作,除非是非常信任的人,就算是这种可信任情况,也要要求他通过set permission更新账号的EOS公钥,达到私钥只有你一人知道的效果。

    还有一点需要注意的是如果你原来的智能合约的table已经有数据,请先通过你的智能合约接口清理这些数据,如果你的智能合约没有清理接口,那就先实现一个清理数据的智能合约并更新,清理完成后再部署这个empty智能合约。

 

其他操作占用的RAM    

    其他操作包括抵押,执行带有table的action也会占用RAM,这种RAM释放就比较麻烦一点,需要知道是抵押给谁的,调用哪些action,然后执行反向操作将数据清空才可以释放RAM。由于这部分RAM使用量一般较少,所以优先级不高

/********************************

* 本文来自CSDN博主"爱踢门"

* 转载请标明出处:http://blog.csdn.net/itleaks

******************************************/

EOS生态以太坊侧链(ethsidechain)代币'EETH'免费发放中,详情请访问eosfavor.com

EOS互助社区:Eosfavor.com, 免费购买EOS CPU,创建账号

EOS技术交流群,EOS开发群,以太坊技术群:787804520

如何释放已使用的EOS RAM,然后就可以*买卖了如何释放已使用的EOS RAM,然后就可以*买卖了