En muchos ejemplos de Solidity leí que usan cadenas para parámetros o valores devueltos, veo que se escriben como bytes32
si hubiera un string
tipo. ¿Cuál es la verdadera razón de eso? Gracias.
2 razones principales:
string
devuelto por otro contrato.Tengo prueba en este sitio 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;
}
}
Y función getString
gastó 21875 gas,
función getByte11
gastó 21509 gas,
función getByte32
gastada 21487 gas.
Entonces, si la longitud de su cadena es fija, solo use bytes32.
getByte11
cuesta más gasolina que getByte32
?
Nicolás Massart
ética