mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Update introduction-to-smart-contracts.rst
modifying "write" to "transactions"
This commit is contained in:
parent
39f3175a37
commit
60416120af
@ -396,13 +396,13 @@ returns that code when executed.
|
|||||||
Gas
|
Gas
|
||||||
===
|
===
|
||||||
|
|
||||||
Upon creation, each transaction is charged with a certain amount of **gas**.
|
Upon creation, each transaction is charged with a certain amount of **gas**.
|
||||||
Imposing a cost on operations that write to the blockchain serves to secure the network:
|
Imposing a cost on transactions serves to secure the network:
|
||||||
it deincentivizes bad actors from spamming, and pays validators (i.e. miners and stakers)
|
it deincentivizes bad actors from spamming, and pays validators (i.e. miners and stakers)
|
||||||
for the work that is required to validate new blocks. While the EVM executes the
|
for the work that is required to validate new blocks. While the EVM executes the
|
||||||
transaction, the gas is gradually depleted according to specific rules.
|
transaction, the gas is gradually depleted according to specific rules.
|
||||||
|
|
||||||
The **gas price** is a value set by the creator of the transaction (see `msg.sender), who
|
The **gas price** is a value set by the originator of the transaction, i.e. `tx.origin`, who
|
||||||
has to pay ``gas_price * gas`` up front from the sending account.
|
has to pay ``gas_price * gas`` up front from the sending account.
|
||||||
If some gas is left after execution, it is refunded to the transaction originator.
|
If some gas is left after execution, it is refunded to the transaction originator.
|
||||||
|
|
||||||
@ -505,25 +505,14 @@ Delegatecall / Callcode and Libraries
|
|||||||
There exists a special variant of a message call, named **delegatecall**
|
There exists a special variant of a message call, named **delegatecall**
|
||||||
which is identical to a message call apart from the fact that
|
which is identical to a message call apart from the fact that
|
||||||
the code at the target address is executed in the context of the calling
|
the code at the target address is executed in the context of the calling
|
||||||
<<<<<<< HEAD
|
|
||||||
contract. In practice this means ``msg.sender`` and ``msg.value`` retain
|
contract. In practice this means ``msg.sender`` and ``msg.value`` retain
|
||||||
the values that were passed to the delegator, while executing code that
|
the values that were passed to the delegator, while executing code that
|
||||||
lives in the delegated contract.
|
lives in the delegated contract.
|
||||||
=======
|
|
||||||
contract. In practice this means ``msg.sender`` and ``msg.value`` retain
|
|
||||||
the values that were passed to the delegator, while executing code that
|
|
||||||
lives in the delegated contract.
|
|
||||||
>>>>>>> updates to delegatecall
|
|
||||||
|
|
||||||
This means that a contract can dynamically load code from a different
|
This means that a contract can dynamically load code from a different
|
||||||
address at runtime. Storage, current address and balance still
|
address at runtime. Storage, current address and balance still
|
||||||
refer to the calling contract, only the code is taken from the called address.
|
refer to the calling contract, only the code is taken from the called address.
|
||||||
|
|
||||||
For example, say Alice calls a method in contract A to modify
|
|
||||||
state variable `A.var` according to method ``A.foo()``.
|
|
||||||
If contract A then delegates call to contract B, the logic of `B.foo()`
|
|
||||||
will be executed, but modifications will be made to state variable `A.var`.
|
|
||||||
|
|
||||||
This makes it possible to implement the "library" feature in Solidity:
|
This makes it possible to implement the "library" feature in Solidity:
|
||||||
Reusable library code that can be applied to a contract's storage, e.g. in
|
Reusable library code that can be applied to a contract's storage, e.g. in
|
||||||
order to implement a complex data structure.
|
order to implement a complex data structure.
|
||||||
|
Loading…
Reference in New Issue
Block a user