Как сохранить строку с символом 300+?

Я пытаюсь сохранить следующую строку в контракте

5030480389847504049639477069961901518251822532055915812015454717740961852942027334498786032153069913846973579859702642411497486328669598344496363306620763652362226170692287240855050713537819594000868803228735504934019483458523068727831434237837325563417285328158635879852481735301070609988900677951635437637299660610442447448957534545817

Его размер составляет 337 байт.

Соответствующий код контракта

contract User {
    bytes32 publicKey;

    function setPublicKey(bytes32 _publicKey)
        onlyOwner
    {
        publicKey = _publicKey;
    }

    function getPublicKey() returns (bytes32 _publicKey) {
        return publicKey;
    }

}

Когда я вызываю getPublicKey() после его установки, используя (снова показывающий только соответствующую часть)

contract.getPublicKey.call((err, res) => {
        if (err) {
            console.log(err);
        } else {
            const k = web3.toAscii(res);
            console.log(k);
        }
    })
}

Я просто вернусь 50304803898475040496394770699619, который является началом строки /ключа. Я полагаю, что это связано с превышением размера bytes32, но как это можно сделать?

Кроме того, я должен упомянуть, что я не хочу хранить эту цепочку. Кроме того, я знаю, что затраты на газ для хранения больших данных в блок-цепочке высоки, но (1) я полагаю, что это все равно будет иметь приемлемый размер и (2) это частная цепочка для тестирования, поэтому я не слишком озабочен что на данный момент.

5 голосов | спросил mcansado 11 PM00000010000005031 2017, 13:35:50

1 ответ


2

Мое предложение состояло в том, чтобы использовать либо строку, либо байты, и просто отметить, что нет ограничений на количество сохраняемых символов. Если вы храните много символов, тогда вы можете рассмотреть вопрос об увеличении стоимости газа. Как только вы увеличиваете значение газа, тогда строка или байты должны работать.

Если вы хотите оценить газ транзакции, вы можете взглянуть на этот API web3js -

https://github.com/ethereum/wiki/wiki/JavaScript -API # web3ethestimategas

ответил Sanchit 11 PM00000030000003131 2017, 15:09:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132