In vielen Solidity-Beispielen, die ich gelesen habe und die Zeichenfolgen für Parameter oder Rückgabewerte verwenden, sehe ich, dass sie typisiert sind, als bytes32
ob es einen string
Typ gäbe. Was ist der wahre Grund dafür? Vielen Dank.
2 Hauptgründe:
string
, die von einem anderen Vertrag zurückgegeben werden.Ich habe einen Test auf dieser Seite https://ethfiddle.com/zLxE5Y-8B4
contract TestGas {
string constant statictext = "Hello World";
bytes11 constant byteText11 = "Hello World";
bytes32 constant byteText32 = "Hello World";
function getString() payable public returns(string){
return statictext;
}
function getByte11() payable public returns(bytes11){
return byteText11;
}
function getByte32() payable public returns(bytes32){
return byteText32;
}
}
Und die Funktion getString
verbrauchte 21875 Gas,
Funktion getByte11
ausgegeben 21509 Gas,
Funktion getByte32
ausgegeben 21487 Gas.
Wenn Ihre Zeichenfolgenlänge also fest ist, verwenden Sie einfach bytes32.
getByte11
mehr Benzin als getByte32
?
Nicolas Massart
eth