您正在查看: EOS 分类下的文章

EOS合约中获取当天本地时间的零点和第二天的零点

获取当前时间所在当天的本地零点时间

time_point contract::last_zeto_time_point(time_point last_do_time_point) {
   uint64_t days_count = (last_do_time_point.time_since_epoch().count() + (8 * one_hour_msec)) / one_day_msec;
   uint64_t days_msec = days_count * one_day_msec;
   days_msec -= (8 * one_hour_msec);
   return time_point(microseconds(days_msec));
}

获取当前时间所在当天的本地第二天的零点时间

time_point contract::next_zeto_time_point(time_point last_do_time_point) {
   return last_zeto_time_point(last_do_time_point) + microseconds(one_day_msec);
}

time_point 无法表示 2106年以后的时间问题

问题

目前想存下相对于当前时间100年以后的时间,当输入的时间超过2106年后,就重新从1970来开始累加

问题跟进

合约中常用的时间类型为

time_point
time_point_sec

由于两个都是uint32_t(unsigned int)类型保存秒数,最大值是4294967295
EOSIO时间戳使用的仍然是Unix时间戳,即从1970/1/1 0:0:0开始计算,所以可以表示到最大的时间为2106
无法满足需求

解决方案

存储当前更新时间与结束时间的差值秒数作为存储数据

参考

https://bihu.com/article/1403575169

Eosplayer -> eosjs的绑定层

Eosplayer是eosjs的绑定层,它基于eosjs并为应用程序层提供了更好的可用性。它既可以在node.js服务器上使用,也可以在已经安装了Scatter的浏览器或Dapp钱包中使用。

frontd releases : https://github.com/bagaking/eosplayer/releases

演示地址:http://eosplayer.kihand.com/#/

ubuntu 编译 EOS 缺少libtinfo.so.5解决办法

sudo apt-get install libncurses5

EOS 内联操作后,立即查询数据未更新

问题

老同事今天问我,A合约inline调用B合约的action(B合约的action中的逻辑会修改B合约的某个Table),A合约中执行完inline后,立刻查B合约中的Table数据,数据未更新,怎么处理。

解决方案

A合约inline调用B合约的action后,B再内联调用A合约的另一个新加的action(在这个action中再查B合约的Table数据)

先暂时记录下,等下再跟下链代码,详细分析下为什么合约是同步执行的,然而inline action 出现了“异步的效果”