{"id":17449,"date":"2021-09-19T16:56:53","date_gmt":"2021-09-19T14:56:53","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=17449"},"modified":"2021-09-19T16:56:53","modified_gmt":"2021-09-19T14:56:53","slug":"gehirn-smart-contract-mit-solidity-auf-der-ethereum-blockchain-compilieren-und-deployen-mit-remix-ide-auf-ethereum-virtual-machine-evm","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=17449","title":{"rendered":"Gehirn Smart Contract mit Solidity auf der Ethereum Blockchain compilieren und deployen mit Remix IDE auf Ethereum Virtual Machine (EVM)"},"content":{"rendered":"<p>Heute wollen wir ein Solidity Contract (Smart-Contract) auf der Blockchain mit der Remix-IDE im Browser schreiben. Daf\u00fcr verwenden wir die Programmiersprache Solidity. Hier ein kleiner \u00dcberblick mit einer Mindmap (Danke <a href=\"http:\/\/kleinhirn.eu\/\" rel=\"noopener\" target=\"_blank\">Dr. Kleinhirn.eu<\/a>) zu Sprache<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/Solidity.png\" alt=\"\" width=\"3400\" height=\"2356\" class=\"aligncenter size-full wp-image-17450\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/Solidity.png 3400w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/Solidity-300x208.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/Solidity-1024x710.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/Solidity-768x532.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/Solidity-1536x1064.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/Solidity-2048x1419.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Die <a href=\"https:\/\/remix.ethereum.org\" rel=\"noopener\" target=\"_blank\">Online Remix-IDE<\/a> mit der Doku <a href=\"https:\/\/remix-ide.readthedocs.io\/en\/latest\/index.html\" rel=\"noopener\" target=\"_blank\">Remix-IDE-Doku<\/a> sieht so aus:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/remix.ethereum-ide.png\" alt=\"\" width=\"3124\" height=\"1750\" class=\"aligncenter size-full wp-image-17451\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/remix.ethereum-ide.png 3124w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/remix.ethereum-ide-300x168.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/remix.ethereum-ide-1024x574.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/remix.ethereum-ide-768x430.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/remix.ethereum-ide-1536x860.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/remix.ethereum-ide-2048x1147.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Dann legen wir unseren <a href=\"https:\/\/de.wikipedia.org\/wiki\/Smart_Contract\" rel=\"noopener\" target=\"_blank\">Smart-Contract<\/a> an, der den IQ mit Geb\u00fchren auf der Blockchain speichert und auch lesen kann.<\/p>\n<p>Wir erstellen eine neue Datei <strong>Gehirn.sol<\/strong><!--more--><\/p>\n<pre class=\"lang:js decode:true \" >\r\n\r\n\/\/ SPDX-License-Identifier: MIT\r\n\r\npragma solidity &gt;=0.6.0 &lt;0.9.0;\r\n\r\n\/** \r\n * @title Gehirn von Thomas Wenzlaff\r\n * @dev Mein Smart Contract mit solidity zum Speichern von IQ auf der Blockchain\r\n *\/\r\ncontract Gehirn {\r\n    \r\n    uint256 iq = 0;\r\n    \r\n    function store(uint256 neuerIQ) public {\r\n        iq = neuerIQ;\r\n    } \r\n    \r\n    function retrieve() public view returns (uint256){\r\n        return iq;\r\n    }\r\n}<\/pre>\n<p>Dann wird die Datei gespeichert und deployed:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.08.49.png\" alt=\"\" width=\"2590\" height=\"822\" class=\"aligncenter size-full wp-image-17454\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.08.49.png 2590w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.08.49-300x95.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.08.49-1024x325.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.08.49-768x244.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.08.49-1536x487.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.08.49-2048x650.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Schon haben wir unser ersten Smart-Contract auf der Blockchain deployed und ausgef\u00fchrt. Nun wollen wir noch eine Geb\u00fchr \u00fcbergeben. Dazu verwenden wir das Schl\u00fcsselwort <strong>payable<\/strong>. Dann wird der Button rot, und der Betrag, hier 33 wei wird aus dem Value Feld bei klick auf store \u00fcbertragen. Rote-Button erzeugen Transaktionen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.18.23.png\" alt=\"\" width=\"2280\" height=\"1838\" class=\"aligncenter size-full wp-image-17455\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.18.23.png 2280w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.18.23-300x242.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.18.23-1024x825.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.18.23-768x619.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.18.23-1536x1238.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/09\/wenzlaff.de-2021-09-19-um-16.18.23-2048x1651.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Ein klick auf den blauen &#8222;retrieve&#8220; Button liefert dann den Wert aus der Blockchain. Alle Funktionen mit constant oder pure liefern blaue Button.<\/p>\n<p>Hier noch das ganze Programm:<\/p>\n<pre class=\"minimize:true lang:js decode:true \" >\/\/ SPDX-License-Identifier: MIT\r\n\r\npragma solidity ^0.8.4 &lt;= 0.9;\r\n\r\n\/** \r\n * @title Gehirn von Thomas Wenzlaff\r\n * @dev Mein Smart Contract mit solidity zum Speichern von IQ auf der Blockchain\r\n *\/\r\ncontract Gehirn {\r\n    \r\n    uint256 iq = 0;\r\n    \r\n    function store(uint256 neuerIQ) payable public {\r\n        iq = neuerIQ;\r\n    } \r\n    \r\n    function retrieve() public view returns (uint256){\r\n        return iq;\r\n    }\r\n}<\/pre>\n<p>Der ABI (Application Binary Interface) Code mit der Beschreibung des Interfaces:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n[\r\n{\r\n\"inputs\":[],\"name\":\"retrieve\",\"outputs\":\r\n\r\n[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":\r\n\r\n[{\"internalType\":\"uint256\",\"name\":\"neuerIQ\",\"type\":\"uint256\"}],\"name\":\"store\",\"outputs\":\r\n\r\n[],\"stateMutability\":\"payable\",\"type\":\"function\"\r\n}\r\n]<\/pre>\n<p>Und der Bytecode, das ist der compilierte Code der auf der Ethereum Blockchain landet (nicht sehr lesbar ;-):<\/p>\n<pre class=\"minimize:true lang:default decode:true \" >608060405260008061000f61002c565b505034801561002657600080610023610091565b50505b506100ff565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b60005b604081101561008c57600081830152602081019050610072565b505050565b632a2a7adb598160e01b8152600481016020815285602082015260005b868110156100cc5780860151816040840101526020810190506100ae565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b61027b8061010e6000396000f3fe6080604052600436106100295760003560e01c80632e64cec1146100375780636057361d1461006b575b6000806100346100aa565b50505b34801561004c576000806100496100aa565b50505b50610055610087565b6040516100629190610236565b60405180910390f35b610085600480360381019061008091906101f5565b610097565b005b600080610092610118565b905090565b80600081906100a461017b565b50505050565b632a2a7adb598160e01b8152600481016020815285602082015260005b868110156100e55780860151816040840101526020810190506100c7565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b60408110156101765760008183015260208101905061015c565b505050565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b60005b60408110156101db576000818301526020810190506101c1565b505050565b6000813590506101ef8161025b565b92915050565b6000602082840312156102105760008061020d6100aa565b50505b600061021e848285016101e0565b91505092915050565b61023081610251565b82525050565b600060208201905061024b6000830184610227565b92915050565b6000819050919050565b61026481610251565b8114610278576000806102756100aa565b50505b5056<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Heute wollen wir ein Solidity Contract (Smart-Contract) auf der Blockchain mit der Remix-IDE im Browser schreiben. Daf\u00fcr verwenden wir die Programmiersprache Solidity. Hier ein kleiner \u00dcberblick mit einer Mindmap (Danke Dr. Kleinhirn.eu) zu Sprache Die Online Remix-IDE mit der Doku Remix-IDE-Doku sieht so aus: Dann legen wir unseren Smart-Contract an, der den IQ mit Geb\u00fchren &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=17449\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eGehirn Smart Contract mit Solidity auf der Ethereum Blockchain compilieren und deployen mit Remix IDE auf Ethereum Virtual Machine (EVM)\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,4606,5004],"tags":[1183,3496,4611,5007,5008,5009,5005,5006,4490],"class_list":["post-17449","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-crypto","category-solidity","tag-bitcoin","tag-blockchain","tag-btc","tag-kontrakt","tag-remix","tag-remix-ide","tag-smart","tag-smart-contract","tag-solidity"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/17449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17449"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/17449\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17449"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}