Я новичок в Ethereum, поэтому, пожалуйста, извините мое невежество. Ethereum, похоже, имеет протокол сериализации ABI под названием Solidity. Спецификация находится здесь: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI .
Я ищу способ кодировать и декодировать контракты на С#. В частности, я хочу взять массив байтов (byte[]) и преобразовать его в удобочитаемый адрес Ethereum в качестве отправной точки.
Вот несколько библиотек, которые я клонировал, но после просмотра кода не сразу понятно, как добиться того, что я пытаюсь сделать:
https://github.com/Нетериум/Нетериум
https://github.com/sense2k/Ethereum.NET
Может ли кто-нибудь указать мне пример того, как преобразовать массив байтов в удобочитаемый строковый адрес Ethereum?
В солидности:
Пример преобразования адреса в байтовый массив, а затем в строку:
/// @dev Function convert a Address to a String
/// @return Address as a string
function toString(address input) internal pure returns (string) {
bytes memory byteArray = new bytes(20);
for (uint i = 0; i < 20; i++) {
byteArray[i] = byte(uint8(uint(input) / (2**(8*(19 - i)))));
}
return string(byteArray);
}
В С#:
Превращение массива байтов в строку:
string address = System.Text.Encoding.UTF8.GetString(addrByteArray, 0, addrByteArray.Length);
Где addrByteArray
находится адрес в формате байтового массива.
Надеюсь, это поможет.
Кристиан Финдли
Кристиан Финдли
Логотипы Обскура
Кристиан Финдли