Added documentation #730
@ -462,7 +462,7 @@ Please refer to the `Map` [library documentation](sophia_stdlib.md#String).
|
|||||||
### Byte arrays
|
### Byte arrays
|
||||||
|
|
||||||
Byte arrays are fixed size arrays of 8-bit integers. They are described in hexadecimal system,
|
Byte arrays are fixed size arrays of 8-bit integers. They are described in hexadecimal system,
|
||||||
for example the literal `#cafe` means a two-element array of bytes `ca` (202) and `fe` (254)
|
for example the literal `#cafe` creates a two-element array of bytes `ca` (202) and `fe` (254)
|
||||||
and thus is a value of type `bytes(2)`.
|
and thus is a value of type `bytes(2)`.
|
||||||
|
|
||||||
Please refer to the `Bytes` [library documentation](sophia_stdlib.md#Bytes).
|
Please refer to the `Bytes` [library documentation](sophia_stdlib.md#Bytes).
|
||||||
@ -490,7 +490,7 @@ wrapping a transaction.) The transaction hash is available in the primitive
|
|||||||
normal contract call it returns `None`.
|
normal contract call it returns `None`.
|
||||||
|
|
||||||
|
|
||||||
#### Oracle interface
|
### Oracle interface
|
||||||
You can attach an oracle to the current contract and you can interact with oracles
|
You can attach an oracle to the current contract and you can interact with oracles
|
||||||
through the Oracle interface.
|
through the Oracle interface.
|
||||||
|
|
||||||
@ -499,7 +499,7 @@ For a full description of how Oracle works see
|
|||||||
For a functionality documentation refer to the [standard library](sophia_stdlib.md#Oracle).
|
For a functionality documentation refer to the [standard library](sophia_stdlib.md#Oracle).
|
||||||
|
|
||||||
|
|
||||||
##### Example
|
#### Example
|
||||||
|
|
||||||
Example for an oracle answering questions of type `string` with answers of type `int`:
|
Example for an oracle answering questions of type `string` with answers of type `int`:
|
||||||
```
|
```
|
||||||
@ -552,7 +552,7 @@ contract Oracles =
|
|||||||
Oracle.get_answer(o, q)
|
Oracle.get_answer(o, q)
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Sanity checks
|
#### Sanity checks
|
||||||
|
|
||||||
When an Oracle literal is passed to a contract, no deep checks are performed.
|
When an Oracle literal is passed to a contract, no deep checks are performed.
|
||||||
For extra safety [Oracle.check](sophia_stdlib.md#check) and [Oracle.check_query](sophia_stdlib.md#check_query)
|
For extra safety [Oracle.check](sophia_stdlib.md#check) and [Oracle.check_query](sophia_stdlib.md#check_query)
|
||||||
@ -565,17 +565,20 @@ Contracts can interact with the
|
|||||||
For this purpose the [AENS](sophia_stdlib.md#AENS) library was exposed.
|
For this purpose the [AENS](sophia_stdlib.md#AENS) library was exposed.
|
||||||
|
|
||||||
|
|
||||||
#### Events
|
### Events
|
||||||
|
|
||||||
Sophia contracts log structured messages to an event log in the resulting
|
Sophia contracts log structured messages to an event log in the resulting
|
||||||
blockchain transaction. The event log is quite similar to [Events in
|
blockchain transaction. The event log is quite similar to [Events in
|
||||||
Solidity](https://solidity.readthedocs.io/en/v0.4.24/contracts.html#events). To
|
Solidity](https://solidity.readthedocs.io/en/v0.4.24/contracts.html#events).
|
||||||
use events a contract must declare a datatype `event`, and events are then
|
Events are further discussed in the [protocol](https://github.com/aeternity/protocol/blob/master/contracts/events.md).
|
||||||
|
|
||||||
|
|
||||||
|
To use events a contract must declare a datatype `event`, and events are then
|
||||||
logged using the `Chain.event` function:
|
logged using the `Chain.event` function:
|
||||||
|
|
||||||
```
|
```
|
||||||
datatype event =
|
datatype event
|
||||||
Event1(int, int, string)
|
= Event1(int, int, string)
|
||||||
| Event2(string, address)
|
| Event2(string, address)
|
||||||
|
|
||||||
Chain.event(e : event) : unit
|
Chain.event(e : event) : unit
|
||||||
@ -597,9 +600,6 @@ The fields can appear in any order.
|
|||||||
|
|
||||||
*NOTE:* Indexing is not part of the core aeternity node.
|
*NOTE:* Indexing is not part of the core aeternity node.
|
||||||
|
|
||||||
Events are further discussed in [Sophia explained -
|
|
||||||
Events](./sophia_explained.md#events).
|
|
||||||
|
|
||||||
Events are emitted by using the `Chain.event` function. The following function
|
Events are emitted by using the `Chain.event` function. The following function
|
||||||
will emit one Event of each kind in the example.
|
will emit one Event of each kind in the example.
|
||||||
|
|
||||||
@ -609,6 +609,19 @@ will emit one Event of each kind in the example.
|
|||||||
Chain.event(AnotherEvent(Contract.address, "This is not indexed"))
|
Chain.event(AnotherEvent(Contract.address, "This is not indexed"))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Argument order
|
||||||
|
|
||||||
|
It is only possible to have one (1) `string` parameter in the event, but it can
|
||||||
|
be placed in any position (and its value will end up in the `data` field), i.e.
|
||||||
|
```
|
||||||
|
AnotherEvent(string, indexed address)
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
Chain.event(AnotherEvent("This is not indexed", Contract.address))
|
||||||
|
```
|
||||||
|
would yield exactly the same result in the example above!
|
||||||
|
|
||||||
### Compiler pragmas
|
### Compiler pragmas
|
||||||
|
|
||||||
To enforce that a contract is only compiled with specific versions of the
|
To enforce that a contract is only compiled with specific versions of the
|
||||||
|
@ -646,6 +646,13 @@ Chain.gas_limit : int
|
|||||||
The gas limit of the current block.
|
The gas limit of the current block.
|
||||||
|
|
||||||
|
|
||||||
|
### event
|
||||||
|
```
|
||||||
|
Chain.event(e : event) : unit
|
||||||
|
```
|
||||||
|
Emits the event. To use this function one needs to define the `event` type as a `datatype` in the contract.
|
||||||
|
|
||||||
|
|
||||||
# Includable namespaces
|
# Includable namespaces
|
||||||
|
|
||||||
These need to be explicitly included (with `.aes` suffix)
|
These need to be explicitly included (with `.aes` suffix)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user