Ich bin neu bei Ethereum, also entschuldigen Sie bitte meine Unwissenheit. Ethereum scheint ein ABI-Serialisierungsprotokoll namens Solidity zu haben. Die Spezifikation ist hier: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI
Ich suche nach einer Möglichkeit, Verträge in C # zu codieren und zu decodieren. Insbesondere möchte ich ein Array von Bytes (byte []) nehmen und es als Ausgangspunkt in eine für Menschen lesbare Ethereum-Adresse konvertieren.
Hier sind ein paar Bibliotheken, die ich geklont habe, aber nachdem ich den Code durchgesehen habe, ist nicht sofort ersichtlich, wie ich das erreichen kann, was ich versuche:
https://github.com/Nethereum/Nethereum
https://github.com/sense2k/Ethereum.NET
Kann mir jemand ein Beispiel zeigen, wie man ein Byte-Array in eine für Menschen lesbare Ethereum-String-Adresse umwandelt?
In Solidität:
Beispiel für die Umwandlung einer Adresse in ein Byte-Array und dann in einen String:
/// @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);
}
In C#:
Byte-Array in einen String umwandeln:
string address = System.Text.Encoding.UTF8.GetString(addrByteArray, 0, addrByteArray.Length);
Wo addrByteArray
ist die Adresse im Byte-Array-Format.
Hoffentlich hilft das.
Christian Findley
Christian Findley
Logos obscura
Christian Findley