Najlepsze praktyki dotyczące funkcji Getter
Mam tablicę, że chcę, aby wyświetlić na stronie unit public x[31]
. Poprzez web3.js mogę utworzyć 32 różne wywołania od x [0] do x [31]. Alternatywnie mógłbym dodać funkcję widoku pobierającego do mojego kontraktu solidity, który po prostu przedstawia tablicę
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
Dzięki tej funkcji wbudowanej w moją umowę solidity wystarczyłoby wywołać ją raz w moim pliku javascript, a następnie mieć tablicę. W ten sposób mogę włożyć więcej pracy do javascript lub solidity. Czy któraś z metod jest bardziej wydajna / elegancka?
Odpowiedzi
Ponieważ masz do czynienia z view
funkcjami, w każdym razie nie ma dużej różnicy. Dane są pobierane bezpośrednio z używanego węzła i nie ma prawdziwej transakcji w łańcuchu bloków. Dlatego albo wykorzystujesz więcej mocy obliczeniowej przeglądarki (JavaScript), albo komputera węzła. Te połączenia również nie kosztują benzyny.
Z architektonicznego punktu widzenia po prostu rozważyłbym Twoje potrzeby: jeśli prawdopodobnie nie potrzebujesz pobierać wielu wpisów, może być łatwiejsze odzyskanie ich indywidualnie. Z drugiej strony prawdopodobnie mówimy o bardzo nieznacznych ilościach danych, bez względu na sposób, w jaki to robisz, więc tak naprawdę nie ma to żadnej realnej różnicy pod względem szybkości lub wymagań dotyczących pamięci. Nie sądzę też, żeby którykolwiek sposób był bardziej elegancki niż drugi - po prostu rozważ swoje potrzeby.