You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All system calls supported by ref-fvm have been implemented by go-fvm-sdk here.
Revamp TinyGo libraries that are being used by the go-fvm-sdk; Make modifications to reflection, output stream, platform and network related code (See background above)
Modifies TinyGo libraries to make it compatible with fvm. Also built a CLI interface to allow user to patch their TinyGo installations.
Add compile tooling; Enable compiling using TinyGo and allow processing on the output through inject init code in invoke function (See above background)
Compiling tools have been integrated into CLI which allows user to compile their GO contract into FVM native actors.
$ fvm_go_sdk build
Add abilities for creation of template (generation of a working actor directory structure and compilable actor template for user)
Use the new command from CLI to create a work space for you to write new contracts.
$ fvm_go_sdk new -- <YOUR_ACTOR_NAME>
The following structure will be created for user...
.
├── README.md
├── actor
│ ├── actor.go # Write your contract here
│ └── cbor_gen.go
├── client
│ └── client.go # client for installation and deployment of the contract
├── entry.go # Main entry point of the contract. If you change interfaces of your actor, please build again to renew the entry point file
├── gen
│ ├── go.mod
│ ├── go.sum
│ └── main.go
├── go.mod
├── go.sum
├── <YOUR_ACTOR_NAME>.wasm # WASM contract compiled from actor.go
└── test.json
Add testing tools which allows feature testing of actors
client.go is the generator for your actor client which allows a programatic way for developers to deploy, create or invoke it's contract.
entry_gen.go mimics inter-actor communication protocols on the reference fvm implementation. entry_gen produces method invocation switch cases and scaffolding code, which is comparable to the macro functions on Rust side.
type_gen.go is the generator for various actor types, cbor functions, structs and etc.
CI integration (incremental integration, lint checks, actor test run, auto-publish, CI harness/checks)
CI integration has been cooperated into the go-fvm-sdk project to facilitate its development. We have three separate actions defined. One for Go part of the code base, one for Rust and one for when tagging and releasing new version of the sdk.
Add amt and hamt support; import spec-actors and support map & array for data storage with read on demand support
For amt and hmt support, relevant ported code and examples can be found here...
Mock system APIs will return simulated results during integration/unit testing to facilitate overall testing experiences of developers.
Metrics on gas usages of each methods
Metrics on gas usage was determined by the team that was unfit for the milestone as there will be a lot of change made to native fvm. At the time of writing the grant application the decision of launching fevm first hadn’t been made yet. Thus need change of plan.
C-docsCategory - Improvements or additions to documentation
1 participant
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Background
This is a compilation of milestone checkins for the go-fvm-sdk grant. Checkins are arranged in the following format...
The work has been done to meet such requirement
Milestone 1.1
Upper stream contributions to TinyGo to make it have better affinity with WASM.
pointer := reflect.ValueOf(reflect.TypeOf(false)).Pointer()
in tinygo? tinygo-org/tinygo#2858All system calls supported by ref-fvm have been implemented by go-fvm-sdk here.
Modifies TinyGo libraries to make it compatible with fvm. Also built a CLI interface to allow user to patch their TinyGo installations.
Patch command could be used like the following...
Milestone 1.2
hello world
example could be found here.Follow the main document to install go-fvm-sdk and run the example.
erc-20
example could be found here.Follow the main document to install go-fvm-sdk and run the example.
Compiling tools have been integrated into CLI which allows user to compile their GO contract into FVM native actors.
Use the
new
command from CLI to create a work space for you to write new contracts.The following structure will be created for user...
Feature test cases of actors can be found here.
Milestone 1.3
We have built a series of generator tools to support development on go-fvm-sdk. For example...
client.go
is the generator for your actor client which allows a programatic way for developers to deploy, create or invoke it's contract.entry_gen.go
mimics inter-actor communication protocols on the reference fvm implementation. entry_gen produces method invocation switch cases and scaffolding code, which is comparable to the macro functions on Rust side.type_gen.go
is the generator for various actor types, cbor functions, structs and etc.CI integration has been cooperated into the go-fvm-sdk project to facilitate its development. We have three separate actions defined. One for Go part of the code base, one for Rust and one for when tagging and releasing new version of the sdk.
For amt and hmt support, relevant ported code and examples can be found here...
https://github.com/ipfs-force-community/go-fvm-sdk/tree/v0.1/sdk/adt
https://github.com/ipfs-force-community/go-fvm-sdk/blob/v0.1/sdk/cases/adt.go
Mock system APIs will return simulated results during integration/unit testing to facilitate overall testing experiences of developers.
Metrics on gas usage was determined by the team that was unfit for the milestone as there will be a lot of change made to native fvm. At the time of writing the grant application the decision of launching fevm first hadn’t been made yet. Thus need change of plan.
Beta Was this translation helpful? Give feedback.
All reactions