您正在查看: Surou 发布的文章

关于资源的抵押赎回,及查询抵押列表

关于抵押和赎回的方法,拿eosjs举例
https://eosio.github.io/eosjs/guides/2.-Transaction-Examples.html

Stake 抵押

const result = await api.transact({
  actions: [{
    account: 'eosio',
    name: 'delegatebw',
    authorization: [{
      actor: 'useraaaaaaaa',
      permission: 'active',
    }],
    data: {
      from: 'useraaaaaaaa',
      receiver: 'useraaaaaaaa',
      stake_net_quantity: '1.0000 SYS',
      stake_cpu_quantity: '1.0000 SYS',
      transfer: false,
    }
  }]
}, {
  blocksBehind: 3,
  expireSeconds: 30,
});

Unstake 赎回

const result = await api.transact({
  actions: [{
    account: 'eosio',
    name: 'undelegatebw',
    authorization: [{
      actor: 'useraaaaaaaa',
      permission: 'active',
    }],
    data: {
      from: 'useraaaaaaaa',
      receiver: 'useraaaaaaaa',
      unstake_net_quantity: '1.0000 SYS',
      unstake_cpu_quantity: '1.0000 SYS',
      transfer: false,
    }
  }]
}, {
  blocksBehind: 3,
  expireSeconds: 30,
});

操作细节看以上demo即可,下面我们说下抵押时transfer这个参数。
先看合约 (跳转代码)

if ( transfer ) {
    from = receiver;
}

如果设置transfer参数为true,及把来源的账户修改为接收账户。
也就变成了接收账户自己给自己抵押,由来源账户付钱

查看数据

查看代码
抵押数据表明为delband
(查看代码)

del_bandwidth_table     del_tbl( _self, from.value );

是以来源账户为查询的scope
所以RPC查询如下
post: https://api.eoslaomao.com/v1/chain/get_table_rows
data:

{
    "scope": "bcskillsurou",
    "code": "eosio",
    "table": "delband",
    "json": true
}

返回

{
    "rows": [
        {
            "from": "bcskillsurou",
            "to": "bcskillsurou",
            "net_weight": "0.0046 EOS",
            "cpu_weight": "0.0147 EOS"
        }
    ],
    "more": false
}

EOS 修改链代码 默认公钥前缀

https://github.com/EOSIO/fc/blob/df5a17ef0704d7dd96c444bfd9a70506bcfbc057/include/fc/crypto/public_key.hpp#L11

namespace fc { namespace crypto {
   namespace config {
      constexpr const char* public_key_legacy_prefix = "EOS"; // 修改EOS为需要的前缀即可,如BSC

EOS BCSkill技术论坛 区块链求职招聘

BCSkill技术社区论坛开放

为了方便问题收集,促进学习激情,我们的BCSkill技术社区新建一个论坛。
网址:http://wiki.bcskill.com/

欢迎学习EOS等区块链技术的小伙伴,以及求职招聘(招聘加群请注明)相关的加入~

求职板块:http://wiki.bcskill.com/?forum-2.htm
招聘版块:http://wiki.bcskill.com/?forum-3.htm
我们社区内有很多区块链技术不错的小伙伴,有需要人手的,快来发帖吧~

此贴定期更新一批邀请码,或者加QQ群791420381直接获取,邀请码永远是免费的。只是为了防止垃圾广告帖,减少不必要的内容维护。

邀请码 (20190626更新)

8D93BADE852A
0B9E8C1154C9
BDBDE23003F0
022DD038C8B6
4F769BD9E717
5E99E0623F53
AECC1DFBF089
942FAA28A72E
029DB38EF967
6E2D228B1A7A
4E531F0F603C
74203AB799D8
29E5197CDD37
A4205E8F887C
CA14F3FC6CD5
8EDE670F3158
3C1CBD30D732
C1223552764A
9E55D43A0B31
94CAF29753D3
0D2DD72A3B8D
347D14F7B608
70EDBDE5BF14
9E5D6377CDE6
EFB9A497172F
0C27D7E52EA7
FBFE103795C8
E8C077491575
4935C0BCD9CA
A3434A1FC97D
D2D9FCF33093
FA52947D11B0
5486B5339604
FDA85E994D7C
A40F20A9982D
9CD1F59EFA91
B6703CDFB303
FA2FC5376CAC
DCEE07FBDF26
F485EEAE2293
41BEC6014BB9
4F65898AF09F
9345EC014A71
F630E100BC1D
F949ED29A2E0
D3ACFD1FC374
234A91A79039
65C94C6763EA
1C0A73B415BF
86A44E0B5AF0

GitLab remote: HTTP Basic: Access denied and fatal Authentication

git config --system --unset credential.helper

then enter new password for Git remote server.

参考

https://stackoverflow.com/questions/47860772/gitlab-remote-http-basic-access-denied-and-fatal-authentication

EOS合约中使用nlohmann/json解析 float类型报"wabt out of bounds memory access"

由于合约中使用nlohmann/json解析json时,当遇到float类型时报"wabt out of bounds memory access"
不断调试代码,找到如下位置
https://github.com/nlohmann/json/blob/d2a08ddafd503b02b3418194c31e121e105411c6/include/nlohmann/detail/input/lexer.hpp#L1005
由于合约内不会考虑float类型,项目较急,先直接不解析此类型,下面位置添加return token_type::parse_error;

scan_number_decimal1:
    return token_type::parse_error; //在这加一个return
    // state: we just parsed a decimal point
    number_type = token_type::value_float;
    switch (get())
    {
        case '0':
        case '1':
        case '2':
        case '3':

并且由于合约内不允许使用try,修改下
https://github.com/nlohmann/json/blob/b52c3638f58291c2f2564aa31ad0a4a15cd01c84/include/nlohmann/detail/macro_scope.hpp#L68

// allow to disable exceptions
#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
    // #define JSON_THROW(exception) throw exception 修改为如下
    #define JSON_THROW(exception) eosio_assert(false, exception.c_str());
    #define JSON_TRY try
    #define JSON_CATCH(exception) catch(exception)
    #define JSON_INTERNAL_CATCH(exception) catch(exception)
#else
    #include <cstdlib>
    // #define JSON_THROW(exception) std::abort() 修改为如下
    #define JSON_THROW(exception) eosio_assert(false, exception.c_str());
    #define JSON_TRY if(true)
    #define JSON_CATCH(exception) if(false)
    #define JSON_INTERNAL_CATCH(exception) if(false)
#endif

// override exception macros
#if defined(JSON_THROW_USER)
    #undef JSON_THROW
    #define JSON_THROW JSON_THROW_USER
#endif