Во многих примерах Solidity, которые я читал, в которых используются строки для параметров или возвращаемых значений, я вижу, что они типизированы, bytes32
хотя string
тип есть. Какова реальная причина этого? Спасибо.
2 основные причины:
string
, возвращенное другим контрактом.У меня есть тест на этом сайте 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;
}
}
И функция getString
потратила 21875 газа,
функция getByte11
израсходована 21509 газа,
функция getByte32
израсходована 21487 газа.
Поэтому, если длина вашей строки фиксирована, просто используйте bytes32.
getByte11
бензин дороже getByte32
?
Николя Массарт
эт