Skip to content

Commit

Permalink
Add GM_BASE_ASSET_ID (#561)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dentosal authored Mar 21, 2024
1 parent 3f228e7 commit 184f86f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
3 changes: 2 additions & 1 deletion src/fuel-vm/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ Every time the VM runs, a single monolithic memory of size `VM_MAX_RAM` bytes is
To initialize the VM, the following is pushed on the stack sequentially:

1. Transaction hash (`byte[32]`, word-aligned), computed as defined [here](../identifiers/transaction-id.md).
1. Base asset ID (`byte[32]`, word-aligned)
1. [`MAX_INPUTS`](../tx-format/consensus_parameters.md) pairs of `(asset_id: byte[32], balance: uint64)`, of:
1. For [predicate estimation](#predicate-estimation) and [predicate verification](#predicate-verification), zeroes.
1. For [script execution](#script-execution), the free balance for each asset ID seen in the transaction's inputs, ordered in ascending order. If there are fewer than `MAX_INPUTS` asset IDs, the pair has a value of zero.
Expand All @@ -89,7 +90,7 @@ To initialize the VM, the following is pushed on the stack sequentially:

Then the following registers are initialized (without explicit initialization, all registers are initialized to zero):

1. `$ssp = 32 + MAX_INPUTS*(32+8) + size(tx))`: the writable stack area starts immediately after the serialized transaction in memory (see above).
1. `$ssp = 32 + 32 + MAX_INPUTS*(32+8) + size(tx))`: the writable stack area starts immediately after the serialized transaction in memory (see above).
1. `$sp = $ssp`: writable stack area is empty to start.
1. `$hp = VM_MAX_RAM`: the heap area begins at the top and is empty to start.

Expand Down
15 changes: 8 additions & 7 deletions src/fuel-vm/instruction-set.md
Original file line number Diff line number Diff line change
Expand Up @@ -2415,13 +2415,14 @@ Panic if:

Read metadata from memory. A convenience instruction to avoid manually extracting metadata.

| name | value | description |
|------------------------------|-----------|---------------------------------|
| `GM_IS_CALLER_EXTERNAL` | `0x00001` | Get if caller is external. |
| `GM_GET_CALLER` | `0x00002` | Get caller's contract ID. |
| `GM_GET_VERIFYING_PREDICATE` | `0x00003` | Get index of current predicate. |
| `GM_GET_CHAIN_ID` | `0x00004` | Get the value of `CHAIN_ID` |
| `GM_GET_TX_START` | `0x00005` | Get transaction start address |
| name | value | description |
|------------------------------|-----------|----------------------------------|
| `GM_IS_CALLER_EXTERNAL` | `0x00001` | Get if caller is external. |
| `GM_GET_CALLER` | `0x00002` | Get caller's contract ID. |
| `GM_GET_VERIFYING_PREDICATE` | `0x00003` | Get index of current predicate. |
| `GM_GET_CHAIN_ID` | `0x00004` | Get the value of `CHAIN_ID` |
| `GM_TX_START` | `0x00005` | Transaction start memory address |
| `GM_BASE_ASSET_ID` | `0x00006` | Base asset ID |

If `imm == GM_IS_CALLER_EXTERNAL`:

Expand Down

0 comments on commit 184f86f

Please sign in to comment.