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

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

EOS 签名 ECDSA sign 椭圆曲线数字签名

先零散的记一下,后面再整理

js ecc

https://github.com/EOSIO/eosjs-ecc/blob/7ec577cad54e17da6168fdfb11ec2b09d6f0e7f0/src/signature.js

sign

https://github.com/EOSIO/eosjs-ecc/blob/7ec577cad54e17da6168fdfb11ec2b09d6f0e7f0/src/signature.js#L177

Signature.sign = function(data, privateKey, encoding = 'utf8') {
    if(typeof data === 'string') {
        data = Buffer.from(data, encoding)
    }
    assert(Buffer.isBuffer(data), 'data is a required String or Buffer')
    data = hash.sha256(data)
    return Signature.signHash(data, privateKey)
}

https://github.com/EOSIO/eosjs-ecc/blob/7ec577cad54e17da6168fdfb11ec2b09d6f0e7f0/src/signature.js#L210

 ecsignature = ecdsa.sign(curve, dataSha256, privateKey.d, nonce++);

java

https://github.com/adyliu/jeos/blob/53dbd027cd59d367d9a197cbff5a58bdd9bf7195/src/main/java/io/jafka/jeos/impl/LocalApiImpl.java#L68

private String sign(String privateKey, SignArg arg, PackedTransaction t) {
    Raw raw = Packer.packPackedTransaction(arg.getChainId(), t);
    raw.pack(ByteBuffer.allocate(33).array());// TODO: what's this?
    String hash = KeyUtil.signHash(privateKey, raw.bytes());
    return hash;
}

https://github.com/adyliu/jeos/blob/4eaa9fb4555129f3d0baa56e7ffb70cac213a009/src/main/java/io/jafka/jeos/util/ecc/Ecdsa.java

https://github.com/starkbank/ecdsa-java/blob/master/src/main/java/com/starkbank/ellipticcurve/Ecdsa.java

参考

ECDSA — The art of cryptographic signatures
https://medium.com/coinmonks/ecdsa-the-art-of-cryptographic-signatures-d0bb254c8b96