This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:xapend:n_gas [2022/05/11 18:41] nick |
dido:public:ra:xapend:n_gas [2022/06/07 16:35] (current) nick |
||
|---|---|---|---|
| Line 4: | Line 4: | ||
| ===== Overview ===== | ===== Overview ===== | ||
| [[dido:public:ra:xapend:n_gas | Return to Top]] | [[dido:public:ra:xapend:n_gas | Return to Top]] | ||
| + | |||
| + | Some of the most important aspects of a DIDOs are: | ||
| + | |||
| + | * The data is immutable and every update takes more storage | ||
| + | * They are distributed and all the nodes in the system must ultimately get the same results from calculations | ||
| + | * The data is distributed across all the nodes and must be kept in sync across all the nodes | ||
| + | * There needs to be an assurance of data correctness | ||
| + | * The Data needs to be secure during Data-at-Rest, Data-in-Motion, and Data-in-Use | ||
| + | * __<color darkblue>**There is a cost to using the distributed resources**</color>__ | ||
| + | |||
| + | Most of these can be achieved as part of a DIDO Platform such as Ethereum. In this section, the focus is on the last item, __<color darkblue>//**"There is a cost to using the distributed resources**//</color>__. This requires a method for remuneration for all the work required to make the DIDO function. In Ethereum and in many other DIDO Platforms, this is achieved using the concept of Gas. | ||
| + | |||
| + | The purpose of gas is to provide a "value layer" providing a way to recapture the computational costs of running and maintaining the DIDO Platform and its Node Network (i.e., Ethereum Platform and Ethereum Network). Unfortunately, the analogy used to describe how such a system would work was also used as the name of the value only adding to the confusion and leading to ambiguity. | ||
| + | |||
| + | The unfortunate analogy used is between the cost of running a gasoline car over a certain distance and the cost of running a transaction over a certain network. Here is the example often quoted: | ||
| + | : //running a real-world car for X miles may require Y gallons of fuel, or moving X amount of money from your bank account to your friend’s credit card account may cost you Y dollars in a processing fee. In both cases, X indicates the utility value, while Y indicates the cost of performing the process of the car trip or financial transaction.// (( | ||
| + | Jake Frankenfield, | ||
| + | Investopedia, | ||
| + | __Gas (Ethereum)__, | ||
| + | 20 May 2022, | ||
| + | Accessed 2 June 2022 | ||
| + | [[https://www.investopedia.com/terms/g/gas-ethereum.asp]] | ||
| + | )) | ||
| + | |||
| + | Although the car analogy is useful in explaining how simplistically the "value layer" operates, using the exact same terminology leads to inconsistencies and constraints in moving forward. | ||
| + | |||
| + | Regardless of how we got here, or how it could have been done differently, we are where we are and for better or worse, for now, we must use the terms given to us by Ethereum. Hopefully, future "value layer" propositions won't repeat the same nomenclature and taxonomy. | ||
| + | |||
| + | ^ Term ^ Definition ^ | ||
| + | ^ Gas | | | ||
| + | ^ Gas Limit | | | ||
| + | |||
| + | |||
| + | <color Red> | ||
| + | that solely indicates the consumption toward computational expenses on the Ethereum network. Having a separate unit for this purpose allows for a practical distinction between the actual valuation of the cryptocurrency (ETH), and the computational cost of using Ethereum's virtual machine (EVM). Here, gas refers to Ethereum network transaction fees, not the gasoline for your car. | ||
| + | |||
| + | Gas fees are payments made by users to compensate for the computing energy required to process and validate transactions on the Ethereum blockchain. "Gas limit" refers to the maximum amount of gas (or energy) that you're willing to spend on a particular transaction. A higher gas limit means that you must do more work to execute a transaction using ETH or a smart contract. | ||
| + | |||
| + | To draw an analogy, running a real-world car for X miles may require Y gallons of fuel, or moving X amount of money from your bank account to your friend’s credit card account may cost you Y dollars in a processing fee. In both cases, X indicates the utility value, while Y indicates the cost of performing the process of the car trip or financial transaction. | ||
| + | |||
| + | Similarly, a contract or transaction on Ethereum may be worth 50 ETH (X), and the gas price to process this transaction at that particular time might be, say, 1/100,000 ETH (Y). | ||
| + | |||
| + | Ethereum miners, who perform all the important tasks of verifying and processing transactions on the network, are awarded this particular fee in return for their computational services. If the gas price limit is too low, miners can choose to ignore such transactions. As such, the price of gas fluctuates (priced in ETH) with supply and demand for processing power. | ||
| + | </color> | ||
| + | |||
| + | |||
| + | ===== Gas Units ===== | ||
| On Ethereum, each low-level operation available in the [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:e:evm | Ethereum Virtual Machine (EVM)]] is called an [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:o:opcode | Operational Code (OPCODE)]]. There are OPCODES for the following categories(( | On Ethereum, each low-level operation available in the [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:e:evm | Ethereum Virtual Machine (EVM)]] is called an [[https://www.omgwiki.org/dido/doku.php?id=dido:public:ra:xapend:xapend.a_glossary:o:opcode | Operational Code (OPCODE)]]. There are OPCODES for the following categories(( | ||
| Line 30: | Line 77: | ||
| Each OPCODE (i.e, ADD) within each category has an associated cost that is expressed in terms of Gas units. Gas is an abstract number that represents the relative complexity of operations. For example, the integer ADD (i.e., addition) operation uses 3 gas units while the Integer MUL (i.e.m multiplication) uses 5 gas units. Therefore the MUL OPCODE is more complex than ADD OPCODE. | Each OPCODE (i.e, ADD) within each category has an associated cost that is expressed in terms of Gas units. Gas is an abstract number that represents the relative complexity of operations. For example, the integer ADD (i.e., addition) operation uses 3 gas units while the Integer MUL (i.e.m multiplication) uses 5 gas units. Therefore the MUL OPCODE is more complex than ADD OPCODE. | ||
| + | |||
| + | ===== Ethereum Virtual Machine (EVM) ===== | ||
| + | [[dido:public:ra:xapend:n_gas | Return to Top]] | ||
| + | |||
| + | The [[dido:public:ra:xapend:xapend.a_glossary:e:evm]] is the runtime environment used by the Ethereum platform. There are several reasons why Ethereum uses a Virtual Machine (VM) for its runtime on every node within the Node Network. | ||
| + | |||
| + | - Platform Independence | ||
| + | - Hardware | ||
| + | - Operating System | ||
| + | - Runtime System | ||
| + | - Security | ||
| + | - Correctness | ||
| + | |||
| + | It allows smart contract code to run by compiling to EVM bytecode. EVM plays a core role in the Ethereum blockchain to ensure a trustless mechanism without having any central administrator. EVM keeps each node systemically isolated from others in order to avoid security risks. Even if one node is compromised, it does not influence any other nodes and the blockchain network. EVM ensures the Ethereum blockchain is secured. | ||
| + | |||
| + | ===== Gas Units ===== | ||
| + | [[dido:public:ra:xapend:n_gas | Return to Top]] | ||
| + | |||
| + | The Smart Contract written in Solidity is compiled into a stream of EVM Bytcodes. EVM Bytecode | ||
| + | The Ethereum Yellow Paper Appendix G, provides a cost for processing each | ||
| + | |||
| + | Gas Units are the calculated cost of every operation the EVM can perform. | ||
| + | |||
| + | <figure OpCodeCalc> | ||
| + | {{ :dido:public:ra:xapend:screen_shot_2022-06-01_at_9.22.09_am.png?600 |}} | ||
| + | <caption>Schematic of how the Gas Fees for a Transaction are calculated.</caption> | ||
| + | </figure> | ||
| + | |||
| ===== Gas Price ===== | ===== Gas Price ===== | ||
| Line 80: | Line 155: | ||
| Another bottleneck in storing large amounts of data is the current Block Gas Limit of approximately 4700000 gas/block. At this cap of gas per block, it would take over 132 blocks to write 1 MB of data to the blockchain, and that is assuming you can manage to hog all of the gas per block and that there are no other operations required! | Another bottleneck in storing large amounts of data is the current Block Gas Limit of approximately 4700000 gas/block. At this cap of gas per block, it would take over 132 blocks to write 1 MB of data to the blockchain, and that is assuming you can manage to hog all of the gas per block and that there are no other operations required! | ||
| - | ===== Quantitative Data ===== | + | ===== Analysis of Cost Data ===== |
| [[dido:public:ra:xapend:n_gas | Return to Top]] | [[dido:public:ra:xapend:n_gas | Return to Top]] | ||
| Line 109: | Line 184: | ||
| ^ 4 ^ Save 1MB to Storage (31250 256-bit words) | 625000000 | 18.75 | 5531.25 | 0.053333333 | 0.000180791 | 0.00752 | 132.9787234 | | ^ 4 ^ Save 1MB to Storage (31250 256-bit words) | 625000000 | 18.75 | 5531.25 | 0.053333333 | 0.000180791 | 0.00752 | 132.9787234 | | ||
| ^ 5 ^ Save 1GB to Storage (31250 256-bit words) | 6250000000000 | 18750.00 | 5531250 | 0.00005333333 | 0.00000018079 | 0.00000752 | 132978.7234 | | ^ 5 ^ Save 1GB to Storage (31250 256-bit words) | 6250000000000 | 18750.00 | 5531250 | 0.00005333333 | 0.00000018079 | 0.00000752 | 132978.7234 | | ||
| - | : **Note:** The data mentioned above are only true for a public Ethereum blockchain. The data could be totally different for private or permissioned blockchains. | + | ^ **Note:** The data mentioned above are only true for a public Ethereum blockchain. The data could be totally different for private or permissioned blockchains. ^^^^^^^^^ |
| </table> | </table> | ||