casperlabs-contract-ffi 0.9.0

Library for developing CasperLabs smart contracts.
Documentation
Version 0.8.0 (2019-06-14)
==========================
* [[#598]]https://github.com/CasperLabs/CasperLabs/pull/598 Factors out `URef` from `Key` variant to its own type.
* [[#599]]https://github.com/CasperLabs/CasperLabs/pull/599 Adds `purseId` object to an `Account`.

Version 0.7.0 (2019-06-09)
==========================
* [[#563]]https://github.com/CasperLabs/CasperLabs/pull/563 Change encoding of URef's access rights to `Option<..>`.
* [[#604]]https://github.com/CasperLabs/CasperLabs/pull/604 Fixed serialization bug in URef's access rights encoding.

Version 0.6.0 (2019-05-28)
==========================
* `read_local` and `write_local` functions are defined for interacting with the new "context-local partitions of global state".

Version 0.5.0 (2019-04-10)
==========================
* API method `call_contract` has been simplified. Instead of requiring arguments passed in the binary form it now accepts tuples up to 8 elements. It is required that for every type in the tuple there exists an instance of `ToBytes` trait.

Version 0.4.0 (2019-04-03)
==========================

* `new_uref` FFI now requires an initial value
  [commit]https://github.com/CasperLabs/CasperLabs/pull/327/commits/58393ada6a41cf9a068125845c83dfc8af961b03.
  This prevents creating "dangling" `URef`s.

Version 0.2.0 (2019-03-14)
==========================

* Renamed `ext` module to `contract_api`
  [commit]https://github.com/CasperLabs/CasperLabs/commit/e158bddc2a9282ad6edcd6561d509514fd0693cd#diff-d140dd56f8d99d4f77fcdb8bc85e1238.
* Replaced untyped pointers in the FFI with typed versions
  [commit]https://github.com/CasperLabs/CasperLabs/blob/dev/execution-engine/common/src/contract_api/pointers.rs.
* [`new_uref` method now expects initial value (of some type `T`) and
  produces typed, unforgeable reference
  (`UPointer<T>`)](https://github.com/CasperLabs/CasperLabs/blob/92c02d23c9f03ab6b816ac37c8581e5929e5da7f/execution-engine/common/src/contract_api/mod.rs#L66).
* Changed the API for interacting with the Global State. Following FFI
  functions operate on unforgeable references only:
  - [`read`. Accepts typed unforgeable reference (`UPointer<T>`) and
    returns `T` (or `panic!`s if value under the key can't be parsed
    as
    `T`](https://github.com/CasperLabs/CasperLabs/blob/92c02d23c9f03ab6b816ac37c8581e5929e5da7f/execution-engine/common/src/contract_api/mod.rs#L15).
  - [`write`. Accepts typed unforgeable reference (`UPointer<T>`) and
    value of type
    `T`](https://github.com/CasperLabs/CasperLabs/blob/92c02d23c9f03ab6b816ac37c8581e5929e5da7f/execution-engine/common/src/contract_api/mod.rs#L34).
  - [`add`. Accepts typed unforgeable reference (`UPointer<T>`) and
    value of type `T`. May `panic` if `T` is not a `Monoid` (cannot
    add two values of type `T`) or the value living under the
    unforgeable reference is not of type
    `T`](https://github.com/CasperLabs/CasperLabs/blob/92c02d23c9f03ab6b816ac37c8581e5929e5da7f/execution-engine/common/src/contract_api/mod.rs#L49).
  - [`store_function` now returns
    `ContractPointer`](https://github.com/CasperLabs/CasperLabs/blob/92c02d23c9f03ab6b816ac37c8581e5929e5da7f/execution-engine/common/src/contract_api/mod.rs#L104).
  - [`call_contract` accepts
    `ContractPointer`](https://github.com/CasperLabs/CasperLabs/blob/92c02d23c9f03ab6b816ac37c8581e5929e5da7f/execution-engine/common/src/contract_api/mod.rs#L182).
* Added implementations for `From`/`TryFrom` for easy conversion
  between `value::Value` and rust base types
  [commit]https://github.com/CasperLabs/CasperLabs/commit/fb7bb153037f43f0bab8ceb5ff6755bae89c453c#diff-056afd53406aa3eedc8f003ae6afd3eaR177.