Ich habe Mühe, herauszufinden, wie Daten an eine Struktur gesendet werden können, die billiger und am effizientesten ist. Ich habe mir diese 2 verschiedenen Stile ausgedacht:
struct Database
{
string name;
string addressPerson;
}
mapping (string => Database) idToDatabase;
function setPerson(string _id, string _name, string _address) external {
Database storage person = idToDatabase[_id];
person.name = _name;
person.addressPerson = _address;
}
Und
struct Database
{
string name;
string addressPerson;
}
Database[] public people;
mapping (string => uint) idToPerson;
function setPerson(string _id, string _name, string _address) external {
people.push(Database(_name,_address));
idToPerson[_id] = people.length-1;
}
Welche sollte ich verwenden und warum? Ich habe viel recherchiert und keine Antwort gefunden. Danke schön.
Ich habe versucht, Musterverträge mit den beiden oben genannten Ansätzen zu erstellen. Ich habe Remix IDE verwendet , um die Kosten zu berechnen. Beachten Sie, dass es sich hierbei um ungefähre (aber dennoch hilfreiche) Kosten handelt, die sich abhängig von vielen Faktoren ändern können.
Wenn Sie den Vertrag bereitstellen und die Funktion SetPerson() aufrufen, werden Ihnen die Details der Transaktion im unteren Bereich angezeigt.
Erfahren Sie hier mehr über den Unterschied zwischen Transaktionskosten und Ausführungskosten
Ansatz 1 (Mapping auf Objekt)
Vertragsbereitstellung
Transaktionskosten 179161 Gas
Ausführungskosten 95141 Gas
Funktionsaufruf
Transaktionskosten 65441 Gas
Ausführungskosten 41609 Gas
Ansatz 2 (Zuordnung zu ID, Array)
Vertragsbereitstellung:
Transaktionskosten 361519 Gas
Ausführungskosten 232075 Gas
Funktionsaufruf
Transaktionskosten 91228 Gas
Ausführung kostet 67396 Gas
Benutzer19510