sudo apt-get --purge remove php-common
sudo apt-get install php-common php-mysql php-cli
查看已支持的扩展中,是否有pdo_mysql
php -m
sudo apt-get --purge remove php-common
sudo apt-get install php-common php-mysql php-cli
查看已支持的扩展中,是否有pdo_mysql
php -m
前面有篇文章专门介绍了如何使用Scatter扩展 《Scatter的使用及添加测试网络相关设置》
虽然介绍很详细了,但是还有有朋友群里留言说不会用,或者弄不清网络设置,身份等到底是做什么用的,还有在与Dapp交互时一些信息,一脸萌币。
今天推荐一款名为DAppPlay的EOS扩展,可以理解为Scatter的优化版本,并且兼容Scatter已有的DApp,非常适合中国人简而美的需求。
下载地址:Chrome 商店下载
界面简洁,和MetaMask类似,可以新建或者导入已有的备份。
主界面可以看出支持EOS和以太坊,但目前以太坊还在开发中,估计不久将支持。
创建账户,也比较简洁
点击创建完直接跳转到激活账户
点击激活,自动将账户名和公钥带到了一个激活的网页
https://account.eostore.vip/?name=suroubcskill&publicKey=EOS7zPw6ssjf6t5x6SSVwiVBRHrQoHs2yUN7zb6wNZXoHBK273Rue
网站此时在维护,无法看到效果。可以先使用别的App替代激活。
我们还是先手动导入一个已存在的账户吧
导入已有钱包或者激活新账户后,进入EOS钱包主页,这里可以转账充值和查看账户余额,并且还有资源的购买和账户交易记录查看等功能。
包含了常规的资源买卖等功能。
在设置中,还可以进行编辑网络、选择语言、备份等操作
相比Scatter,这款拓展有以下几个优点:
1.流程简单逻辑清晰,相比Scatter去除了很多不必要的功能,更便于普通用户使用。
2.有详细的EOS账户注册教程,方便很多新用户。
3.可对EOS的资源(CPU、内存、网络)进行配置。
4.同时支持EOS和ETH上的DApp。
拥有EOS账户并配置好相应的资源后,就可通过DAppPlay来使用EOS上面的DApp了
事实上目前EOS的DApp使用还是有很多问题,对DApp感兴趣,想了解更多DApp信息和EOS资源配比问题的朋友,可以加DAppPlay的官方群参与相关的讨论。
QQ群号:808876107
当在config.ini中开启 filter-on = *
并且激活 history_plugin
插件时,运行一段时间后会出现以下错误
terminate called after throwing an instance of 'boost::interprocess::bad_alloc'
what(): boost::interprocess::bad_alloc
或者
2018-08-09T07:21:22.037 thread-0 producer_plugin.cpp:331 on_incoming_block ] Received block adaceec950230d1e... #10209388 @ 2018-08-09T07:19:23.500 signed by helloeoscnbp [trxs: 254, lib: 10209272, conf: 0, latency: 118537 ms]
terminate called after throwing an instance of 'std::bad_alloc'
terminate called recursively
what(): std::bad_alloc
原因是由于filter-on = *
,共享内存映射文件已满。(github)
解决方案是
chain-state-db-size-mb
来提高 shared_memory_size
,确保您的硬件与您设置的较高值兼容。还有种错误如下
1733735ms thread-0 controller.cpp:625 push_scheduled_trans ] 3050003 eosio_assert_message_exception: eosio_assert_message assertion failure
assertion failure with message: refund request not found
{"s":"refund request not found"}
thread-0 wasm_interface.cpp:930 eosio_assert
pending console output:
{"console":""}
thread-0 apply_context.cpp:61 exec_one
1766924ms thread-0 controller.cpp:153 emit ] bad alloc
解决方案
注意
您将需要重新同步所有块,因为错误的alloc通常会导致数据库损坏。
如果config.ini开启 filter-on = *
,那么它实际上需要无限量。如果您正在连接到主网并且没有使用任何额外的插件,那么64 GB今天可以使用,但不会长期工作。
/etc/init.d/mysql stop
mkdir -p /mnt/mysql
cp -R /var/lib/mysql/* /mnt/mysql
chown -R mysql:mysql /mnt/mysql
vi /etc/mysql/mysql.conf.d/mysqld.cnf
//将 [mysqld] 组下的 datadir改为:
datadir = /mnt/mysql
vi /etc/apparmor.d/usr.sbin.mysqld
把
/var/lib/mysql r
/var/lib/mysql/** rwk
修改成
/mnt/mysql r
/mnt/mysql/** rwk,
/etc/init.d/apparmor restart
/etc/init.d/mysql restart
参考原文
App开发的小伙伴想有个接口,根据账户名查询交易记录,并且每条交易记录都带有status。
curl 'https://api1.eosdublin.io/v1/chain/get_block' -H 'Referer: https://eostracker.io/transactions/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b' -H 'Origin: https://eostracker.io' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' -H 'Content-Type: text/plain;charset=UTF-8' --data-binary '{"block_num_or_id":4265926}' --compressed
看第一步的,获取的actions数据中,同一个transaction id(91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b),会有多笔的交易。
那我们查下此transaction id,什么情况。(点击打开)
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/0
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/1
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/0?parentId=4926446
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/1?parentId=4926446
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/2
https://eostracker.io/actions/4265926/91206e95c247e76e924bf2b3a75b0e894347de138e3a5e7b0b011c6b3e6b268b/0?parentId=4926449
对于这些交易,App那边更期望,查询此transaction id后,界面显示此任务为顶级节点所做的事,查看详情后才显示二,三级数据。
首先查下status,有哪些类型
eos\libraries\chain\include\eosio\chain\block.hpp
struct transaction_receipt_header {
enum status_enum {
executed = 0, ///< succeed, no error handler executed
soft_fail = 1, ///< objectively failed (not executed), error handler executed
hard_fail = 2, ///< objectively failed and error handler objectively failed thus no state change
delayed = 3, ///< transaction delayed/deferred/scheduled for future execution
expired = 4 ///< transaction expired and storage space refuned to user
};