Skip to content

Tags: aklenik/fabric-chaincode-evm

Tags

v0.1.0

Toggle v0.1.0's commit message
v0.1.0 Release Notes - January 10, 2019

Initial fabric-chaincode-evm release
====================================

This is the first release of the fabric-chaincode-evm. It contains two main components, the EVM
chaincode and the Fab3 proxy. This release has been tested against Fabric 1.4 and Fabric 1.3.

EVM CC - FAB-6590 & FAB-8078
----------------------------

The EVM CC is a wrapper around the EVM implementation from the Hyperledger Burrow 0.18.0 release.
It can be used as a user chaincode.

The user account address is the sha3-256 sum of the users’s marshalled public pkix
key. User to user transactions such as balance transfers that are not smart contract
based are not supported. No native tokens are introduced as part of this release, however
the EVM does support token contracts such as ERC20. Therefore contracts that require
ether will have to be edited before being used with the EVM.

- FAB-12903 Smart contracts have the ability to query and invoke other EVM smart contracts.
- FAB-10787 The EVM supports events in the smart contracts deployed. They are converted into
Fabric events which can be consumable from Fabric clients. As part of this the event
information is also available as a log when querying the Fab3 proxy for the transaction receipt.

Fab3 Proxy - FAB-10273
----------------------

The Fab3 is a web3 provider and implements a subset of the Etherum JSON-RPC API. Fab3 allows
users to use web3 to deploy, manage and interact with smart contracts.

- [FAB-11082](https://jira.hyperledger.org/browse/FAB-11082) This initial release will also
include Remix support, so the IDE can be used to interact and deploy EVM smart contracts.
- [FAB-13346](https://jira.hyperledger.org/browse/FAB-13346) Truffle support will be added in a subsequent release.

List of implemented endpoints
- net_verison
- eth
  - getCode
  - call
  - sendTransaction
  - accounts
  - estimateGas
  - getBalance
  - getBlockByNumber
  - getTransactionByHash
  - getTransactionReceipt

Limitations
-----------

- No ether or token balance is associated with user accounts so contracts that require native tokens will not work.

The following limitations will be addressed in subsquent releases.

- The Burrow v0.18.0 EVM does not implement `STATICCALL`, `SHL`, `SHR`, `SAR`, `RETURNDATASIZE`,
`RETURNDATACOPY` and only partially implements `REVERT`. Since future releases have more opcodes
implemented, this issue will be addressed by bumping the Burrow dependency.
- When using a Solidity compiler greather than v0.4.21, contract to contract transactions may
fail because the transactions require `RETURNDATASIZE` & `RETURNDATACOPY`
- If a contract that emits events is compiled with Solidity compiler greater than v0.5.0, `fab3`
is unable to process the emitted logs and will fail generating a transaction receipt for that
transaction when querying `eth_getTransactionReceipt`

We welcome contributions and would like help with the continued development of this project!

Dependencies
------------

- fabric-sdk-go revision = "beccd9cb1450fddfe426616e151d709c99f7ccdd"
- Fabric v1.4.0
- Burrow v0.18.0
- Go 1.10