Go to file
Vadim cd57d1cf10
Binary oracle implementation (#1347)
* oracle pair init

* update

* updates

* progress

* update

* update

* progress

* builds

* update

* progress

* update

* copy pasta

* Refactor and add Instruction serializing/deserializing

* Add pack/unpack for Pool struct

* Implement InitPool instruction

* Add unit test and refactor InitPool instruction

* Minor changes

* Add using deposing token mint decimals in pass and fail mints

* Add Deposit instruction processing

* Add test for Deposit instruction

* Add Withdraw instruction processing

* Add test for Withdraw instruction

* Add Decide instruction with test

* Changes in Withdraw instruciton and add time travel to Decide instruction test

* Fix clippy warning

* Fix warning with if operator

* Fix clippy warnings

* Update libs version and minor fixes

* Minor changes

* Add user_transfer_authority to withdraw instruction and other minor changes

* Fix clippy warns

* Change return value after serialization

* Update tokio and solana-program-test libs version

Co-authored-by: Anatoly Yakovenko <anatoly@solana.com>
2021-03-18 18:18:20 +01:00
.github token-swap: Use solana-test-validator in JS tests (#1367) 2021-03-05 10:34:29 +01:00
.travis Switch to Github Actions for CI (#768) 2020-11-01 18:42:51 +08:00
associated-token-account/program Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
binary-oracle-pair Binary oracle implementation (#1347) 2021-03-18 18:18:20 +01:00
ci Bump Rust version to 1.50.0 2021-03-16 22:22:59 -07:00
docs stake-pool: Add usage docs (#1277) 2021-03-15 19:05:33 +01:00
examples Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
feature-proposal Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
libraries/math Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
memo Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
record/program Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
shared-memory Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
stake-pool Set staking authority instruction removed (#1469) 2021-03-18 12:21:01 +01:00
themis Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
token Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
token-lending Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
token-swap Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
utils Bump Solana version to 1.6.1 2021-03-18 04:07:16 +00:00
.gitignore lending: Add overflow check in proptest (#1199) 2021-02-08 14:35:55 +01:00
.mergify.yml Add more checks to mergify due to GitHub Actions migration (#777) 2020-11-02 19:17:00 +01:00
.travis.yml Simplify github action with scripts (#769) 2020-11-04 10:50:07 +08:00
Cargo.lock Binary oracle implementation (#1347) 2021-03-18 18:18:20 +01:00
Cargo.toml Binary oracle implementation (#1347) 2021-03-18 18:18:20 +01:00
LICENSE Update contributors (#42) 2020-06-17 14:12:46 -07:00
README.md docs: no-verify step no longer necessary to publish crates 2021-02-12 01:47:22 +00:00
cbindgen.sh Move c header generation out of build.rs 2020-08-27 23:32:07 -07:00
coverage.sh Fix coverage on macOS 2020-12-14 12:07:16 -08:00
patch.crates-io.sh Remove tokio dev-dependency 2021-03-16 18:33:37 -07:00
update-solana-dependencies.sh Detect pinned versions 2021-03-18 04:07:16 +00:00

README.md

Build status

Solana Program Library

The Solana Program Library (SPL) is a collection of on-chain programs targeting the Sealevel parallel runtime. These programs are tested against Solana's implementation of Sealevel, solana-runtime, and deployed to its mainnet. As others implement Sealevel, we will graciously accept patches to ensure the programs here are portable across all implementations.

Full documentation is available at https://spl.solana.com

Development

Environment Setup

  1. Install the latest Rust stable from https://rustup.rs/
  2. Install Solana v1.4.7 or later from https://docs.solana.com/cli/install-solana-cli-tools

Build

The normal cargo build is available for building programs against your host machine:

$ cargo build

To build a specific program, such as SPL Token, for the Solana BPF target:

$ cd token/program
$ cargo build-bpf

Test

Unit tests contained within all projects can be run with:

$ cargo test      # <-- runs host-based tests
$ cargo test-bpf  # <-- runs BPF program tests

To run a specific program's tests, such as SPL Token:

$ cd token/program
$ cargo test      # <-- runs host-based tests
$ cargo test-bpf  # <-- runs BPF program tests

Integration testing may be performed via the per-project .js bindings. See the token program's js project for an example.

Clippy

$ cargo clippy

Coverage

$ ./coverage.sh  # Please help! Coverage build currently fails on MacOS due to an XCode `grcov` mismatch...

Release Process

SPL programs are currently tagged and released manually. Each program is versioned independently of the others, with all new development occurring on master. Once a program is tested and deemed ready for release:

Bump Version

  • Increment the version number in the program's Cargo.toml
  • Generate a new program ID and replace in <program>/program-id.md and <program>/src/lib.rs
  • Run cargo build-bpf <program> to update relevant C bindings. (Note the location of the generated spl_<program>.so for attaching to the Github release.)
  • Open a PR with these version changes and merge after passing CI.

Create Github tag

Program tags are of the form <program>-vX.Y.Z. Create the new tag at the version-bump commit and push to the solana-program-library repository, eg:

$ git tag token-v1.0.0 b24bfe7
$ git push upstream --tags

Publish Github release

  • Go to GitHub Releases UI
  • Click "Draft new release", and enter the new tag in the "Tag version" box.
  • Title the release "SPL vX.Y.Z", complete the description, and attach the spl_<program>.so binary
  • Click "Publish release"

Publish to Crates.io

Navigate to the program directory and run cargo package to test the build. Then run cargo publish.