{"id":18816,"date":"2026-03-30T11:31:35","date_gmt":"2026-03-30T11:31:35","guid":{"rendered":"https:\/\/cryptoted.net\/index.php\/2026\/03\/30\/ethereum-in-practice-part-3-how-to-build-your-own-transparent-bank-on-the-blockchain\/"},"modified":"2026-03-30T11:31:35","modified_gmt":"2026-03-30T11:31:35","slug":"ethereum-in-practice-part-3-how-to-build-your-own-transparent-bank-on-the-blockchain","status":"publish","type":"post","link":"https:\/\/cryptoted.net\/index.php\/2026\/03\/30\/ethereum-in-practice-part-3-how-to-build-your-own-transparent-bank-on-the-blockchain\/","title":{"rendered":"Ethereum in practice part 3: how to build your own transparent bank on the blockchain"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"\">\n<p class=\"chakra-text css-gi02ar\">This is the third and final post on a series on how to use the Ethereum Wallet to create your own autonomous organisations. On the <a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/2015\/12\/03\/how-to-build-your-own-cryptocurrency\">first post we detailed how to create a token<\/a>, and on the <a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/2015\/12\/04\/ethereum-in-practice-part-2-how-to-build-a-better-democracy-in-under-a-100-lines-of-code\">second we shown how to generate a digital democracy controlled by these tokens<\/a>. Now we will do the full circle and create a token <em class=\"chakra-text css-0\">controlled<\/em> by the Organisation!<\/p>\n<p class=\"chakra-text css-gi02ar\">We are going to modify the token contract to allow it to be minted by your DAO. So save the address of your current DAO in a note pad (pay attention to the icon) and <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/chriseth.github.io\/browser-solidity\/?gist=1e8ebf35ff1fd48aca46\">grab this source code<\/a> and you know the drill:<strong> contracts &gt; deploy new contract &gt; solidity source code &gt; pick contract<\/strong><\/p>\n<p class=\"chakra-text css-gi02ar\">You can fill the parameters any way you want (yes, emojis are permitted on the string fields) but you&#8217;ll notice one new field that didn&#8217;t exist before: Central Minter. Here add the address of your newly created democracy contract.<\/p>\n<p class=\"chakra-text css-gi02ar\"><a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-01-at-7.09.11-PM.png\"><img decoding=\"async\" alt=\"Ethereum Wallet 2015-12-01 at 7.09.11 PM\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-01-at-7.09.11-PM.png\" class=\"chakra-image css-hw6q2r\"\/><\/a><\/p>\n<p class=\"chakra-text css-gi02ar\">\u00a0<\/p>\n<p class=\"chakra-text css-gi02ar\">Click Deploy and let&#8217;s wait for the transaction to be picked up. After it has at least two confirmations, go to your democracy contract and you&#8217;ll notice that now it owns a million of your new coins. Now if you go to the Contracts tab you&#8217;ll see that there is a new <strong>DAO dollar (admin page)<\/strong> contract on your collection.<\/p>\n<p class=\"chakra-text css-gi02ar\">Select the &#8220;mintToken&#8221; function to your right and then put any address you own as the &#8220;target&#8221;, and then the amount of new mints you want to create from thin air in their account. Press &#8220;<strong>execute<\/strong>&#8221; but <strong>don&#8217;t press send<\/strong>! You&#8217;ll notice that there is a warning saying that the transaction can&#8217;t be executed. This happens because only the <strong>Minter <\/strong>(which is currently set to the DAO address) can call that function and you are calling it with your main account. But the calling code is the same, which is why you can simply copy it.<\/p>\n<p class=\"chakra-text css-gi02ar\">Instead, <strong>copy the contract execution code from the &#8220;data&#8221; field<\/strong> and put it aside on a notepad. Also get the address of your new &#8220;Mint&#8221; contract and save it somewhere.<\/p>\n<p class=\"chakra-text css-gi02ar\"><a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-01-at-7.17.06-PM.png\"><img decoding=\"async\" alt=\"Ethereum Wallet Screen-Shot-2015-12-01-at-7.17.06-PM\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-01-at-7.17.06-PM.png\" class=\"chakra-image css-hw6q2r\"\/><\/a><\/p>\n<p class=\"chakra-text css-gi02ar\">Now go back to the democracy contract and create a new proposal with these parameters:<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">As the <strong>beneficiary<\/strong>, put the address of your new token<\/li>\n<li class=\"css-0\">Leave <strong>etherAmount<\/strong> blank<\/li>\n<li class=\"css-0\">On the <strong>jobDescription<\/strong> just write a small description that you are minting new coins<\/li>\n<li class=\"css-0\">On the <strong>transactionBytecode<\/strong>, paste the bytecode you saved from the data field on the previous step<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p class=\"chakra-text css-gi02ar\"><a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-01-at-7.22.48-PM.png\"><img decoding=\"async\" alt=\"Ethereum Wallet Screen Shot 2015-12-01 at 7.22.48 PM\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-01-at-7.22.48-PM.png\" class=\"chakra-image css-hw6q2r\"\/><\/a><\/p>\n<p class=\"chakra-text css-gi02ar\">\u00a0<\/p>\n<p class=\"chakra-text css-gi02ar\">In a few seconds you should be able to see that the details on the proposal. Unlike the other fields, transactionBytecode can be extremely lengthy and therefore expensive to store on the blockchain. So instead of archiving it, the person executing the call later will provide the bytecode.<\/p>\n<p class=\"chakra-text css-gi02ar\">But that of course creates a security hole: how can a proposal be voted without the actual code being there? And what prevents a user from executing a different code after the proposal has been voted on? That&#8217;s why we keep the hash of the bytecode. Scroll a bit on the &#8220;read from contract&#8221; function list and you&#8217;ll see a proposal checker function, where anyone can put all the function parameters and check if they match the one being voted on. This also guarantees that proposals don&#8217;t get executed unless the hash of the bytecode matches exactly the one on the provided code.<\/p>\n<p class=\"chakra-text css-gi02ar\">\u00a0<\/p>\n<p class=\"chakra-text css-gi02ar\"><a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-02-at-11.51.50-AM.png\"><img decoding=\"async\" alt=\"It's an older code, but it checks out\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-02-at-11.51.50-AM.png\" class=\"chakra-image css-hw6q2r\"\/><\/a> <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/www.youtube.com\/watch?v=4HJ-Y8YTo8Q\"><br \/>\nIt&#8217;s an older code, but it checks out<\/a><\/p>\n<p class=\"chakra-text css-gi02ar\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/www.youtube.com\/watch?v=4HJ-Y8YTo8Q\">\u00a0<\/a><\/p>\n<p>Now everyone can vote on the proposal and after the voting period has passed, anyone with the correct bytecode can ask the votes to be tallied up and the contract to be executed. If the proposal has enough support then the newly minted coins should appear on Alice&#8217;s account, as if it was a transfer from address Zero.<\/p>\n<p class=\"chakra-text css-gi02ar\">\u00a0<\/p>\n<p class=\"chakra-text css-gi02ar\"><a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-02-at-12.02.43-PM.png\"><img decoding=\"async\" alt=\"Why a transfer from code zero? Because it says so on the code. You can change that as you will\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2015\/12\/Screen-Shot-2015-12-02-at-12.02.43-PM.png\" class=\"chakra-image css-hw6q2r\"\/><\/a> Why a transfer from address\u00a0zero? Because doing the opposite, sending a coin to 0x00 is a way to effectively destroy it, but more importantly, because it says so on the contract code. You can change that as you\u00a0prefer.<\/p>\n<p class=\"chakra-text css-gi02ar\">\u00a0<\/p>\n<p class=\"chakra-text css-gi02ar\">And now you have a central minter contract that exists solely on the blockchain, completelly fraud-proof as all their activities are logged transparently. The mint can also take coins from circulation by simply sending the coins it has to address Zero, or by freezing the funds on any account, but it&#8217;s <strong>mathematically impossible<\/strong> for the Mint to do any of those actions or generate more coins without the support of enough shareholders of the mint.<\/p>\n<p class=\"chakra-text css-gi02ar\">Possible uses of this DAO:<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">The creation of a universal stable crypto currency. By controlling the total amount of coins in circulation the Mint shareholders can attempt to create an asset whose value doesn&#8217;t fluctuate too wildly.<\/li>\n<li class=\"css-0\">Issuance of certificates of backed assets: the coins can represent an external currency or items that the Mint owns and can prove to it&#8217;s shareholders and token holders. When the Mint acquires or sells more of these assets it can burn or generate more assets to guarantee that their digital inventory will always match their real counterpart<\/li>\n<li class=\"css-0\">Digitally backed assets. The Mint can hold ether or other ethereum based digital currencies and use that to back the value of the currencies circulating<\/li>\n<\/ul>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"improvements-suggestions\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"improvements suggestions permalink\" href=\"#improvements-suggestions\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Improvements Suggestions<\/h2>\n<p>There are multiple ways that this structure can be yet improved, but we will leave it as an exercise and challenge to the reader:<\/p>\n<ol role=\"list\" class=\"css-vgl4zd\">\n<li class=\"css-0\">Right now votes are made by shareholders based on freely tradable tokens. Can instead membership be based on invitation, each member getting a single vote (or maybe use <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/ericposner.com\/quadratic-voting\/\">quadratic voting<\/a> or <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/en.wikipedia.org\/wiki\/Delegative_democracy\">liquid democracy<\/a>)?<\/li>\n<li class=\"css-0\">What about other voting mechanisms? Maybe the vote instead of being a boolean could be a more flexible arrangement: you could vote to postpone the decision, or you can make a vote that is neutral but still count to the quorum<\/li>\n<li class=\"css-0\">Currently all proposals have the same debating period. Can you make that proportional to the value transfer being proposed? How would you calculate that to tokens?<\/li>\n<li class=\"css-0\">Can you create a better token that can be automatically created by sending ether into it, which can then be retrieved by burning the token, at a fluctuating market price?<\/li>\n<li class=\"css-0\">What else can the DAO own or do, besides tokens?<\/li>\n<\/ol>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2015\/12\/07\/ethereum-in-practice-part-3-how-to-build-your-own-transparent-bank-on-the-blockchain\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the third and final post on a series on how to use the Ethereum Wallet to create your own autonomous organisations. On the first post we detailed how to create a token, and on the second we shown how to generate a digital democracy controlled by these tokens. Now we will do the [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":18498,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[24],"tags":[],"kronos_expire_date":[],"class_list":["post-18816","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ethereum"],"_links":{"self":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/18816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/comments?post=18816"}],"version-history":[{"count":0,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/18816\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media\/18498"}],"wp:attachment":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media?parent=18816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/categories?post=18816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/tags?post=18816"},{"taxonomy":"kronos_expire_date","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/kronos_expire_date?post=18816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}