Przypomnij sobie , że inteligentne umowy Ethereum są napisane w języku programowania Solidity. Chociaż biblioteka JavaScript web3 pomoże nam wdrożyć naszą umowę na blockchain Ethereum, nadal będziemy musieli napisać i skompilować nasz inteligentny kontrakt w Solidity, zanim wyślemy go do sieci Ethereum za pomocą web3. Stwórzmy więc przykładową umowę za pomocą Solidity. Istnieje wiele narzędzi do kodowania w Solidity. Większość głównych IDE i edytorów kodu ma wtyczki Solidity do edycji i kompilacji inteligentnych umów. Istnieje również internetowy edytor Solidity o nazwie Remix. Jest dostępny do bezpłatnego użytku na https://remix.ethereum.org/. Remix zapewnia bardzo prosty interfejs do kodowania i kompilowania inteligentnych umów w przeglądarce. W tym ćwiczeniu będziemy używać Remiksu do kodowania i testowania naszej inteligentnej umowy, a następnie wyślemy tę samą umowę do sieci Ethereum za pomocą biblioteki JavaScript web3 i usługi API Infura. Poniższy fragment kodu został napisany w języku programowania Solidity i jest to prosty inteligentny kontrakt, który zwraca ciąg „Hello World” z funkcji Hello. Ma również konstruktor, który ustawia wartość zwracanej wiadomości.
pragma solidność ^ 0.4.0;
umowa HelloWorld {
wiadomość łańcuchowa;
funkcja HelloWorld () {
message = “Hello World!”;
}
funkcja Hello () stałe zwraca (ciąg) {
wiadomość zwrotna;
}
}
Przejdźmy do Remiksu i wklejmy ten kod w oknie edytora. Poniższe obrazy pokazują, jak wygląda nasz przykładowy inteligentny kontrakt w edytorze remiksów i jak wygląda wynik po kliknięciu przycisku Utwórz w menu po prawej stronie, na karcie Uruchom. Należy również pamiętać, że domyślnie edytor Remix jest ukierunkowany na środowisko VM VM JavaScript do inteligentnej kompilacji kontraktów i do celów testowych używa konta testowego z pewnym saldem ETH. Po kliknięciu przycisku Utwórz umowa zostaje utworzona przy użyciu wybranego konta w środowisku JavaScript VM.
Poniżej przedstawiono dane wyjściowe wygenerowane przez operację tworzenia i pokazuje nam, że umowa została utworzona, ponieważ ma adres umowy. Wartość „od” to adres konta, który został użyty do utworzenia umowy. Pokazuje nam również skrót transakcji tworzenia kontraktu.
status 0x1 Transaction mined and execution succeed
contractAddress 0x692a70d2e424a56d2c6c27aa97d1a86395877b3a
from 0xca35b7d915458ef540ade6068dfe2f44e8fa733c
to HelloWorld.(constructor)
gas 3000000 gas
transaction cost 205547 gas
execution cost 109539 gas
hash 0x9f3c21c21f263084b9f031966858a5d8e0648ed19c77d4d2291
875b01d89a141
input 0x6060604052341561000f57600080fd5b6040805190810160405
280600c81526020017f48656c6c6f20576f726c642100000000000000000
000000000000000000000008152506000908051906020019061005a92919
0610060565b50610105565b8280546001816001161561010002031660029
00490600052602060002090601f016020900481019282601f106100a1578
05160ff19168380011785556100cf565b828001600101855582156100cf5
79182015b828111156100ce5782518255916020019190600101906100b35
65b5b5090506100dc91906100e0565b5090565b61010291905b808211156
100fe5760008160009055506001016100e6565b5090565b90565b6101bc8
06101146000396000f300606060405260043610610041576000357c01000
00000000000000000000000000000000000000000000000000000900463f
fffffff168063bcdfe0d514610046575b600080fd5b34156100515760008
0fd5b6100596100d4565b604051808060200182810382528381815181526
0200191508051906020019080838360005b8381101561009957808201518
184015260208101905061007e565b50505050905090810190601f1680156
100c65780820380516001836020036101000a031916815260200191505b5
09250505060405180910390f35b6100dc61017c565b60008054600181600
116156101000203166002900480601f01602080910402602001604051908
101604052809291908181526020018280546001816001161561010002031
66002900480156101725780601f106101475761010080835404028352916
0200191610172565b820191906000526020600020905b815481529060010
19060200180831161015557829003601f168201915b50505050509050905
65b6020604051908101604052806000815250905600a165627a7a7230582
0d6796e48540eced3646ea52c632364666e64094479451066317789a712
aef4da0029
decoded input {}
decoded output –
logs []
value 0 wei
W tym momencie przygotowaliśmy prosty inteligentny kontrakt „Hello World”, a teraz następnym krokiem jest wdrożenie go programowo do blockchaina Ethereum.