@demox-labs/solreq
v0.0.5
Published
A js client to interact with the solreq program
Downloads
3
Readme
solreq
An Oracle on Solana based on the Demox Protocol.
This repository implements the Solana program and provides some utilities to make interacting with it easier.
This repository creates the:
- solreq crate (Rust): https://crates.io/crates/solreq
- solreq package on npm (JS): https://www.npmjs.com/package/@demox-labs/solreq
Installation
- Ensure that Anchor and all of its dependencies are installed: https://project-serum.github.io/anchor/getting-started/introduction.html
yarn install
- Start the
solana-test-validator
in a separate shell; - Create a solana wallet:
solana-keygen new -o ~/.config/solana/id.json
- Optionally, see also: https://docs.solana.com/wallet-guide/file-system-wallet#generate-a-file-system-wallet-keypair
- Copy the
Anchor.example.toml
toAnchor.toml
and update thewallet =
to your solana pubkey; - Run
solana airdrop --url localhost 1001
- Run
anchor build
- Run
anchor deploy --provider.wallet ~/.config/solana/id.json --provider.cluster localnet
- Use the Program Id found from the deployment log. Replace
6DeKhrczNofy2fhDhJXnyZpMnRnS4oA4q3NicngF7fzT
in all files at your clone of this repository with your new Program Id. - Run the tests:
anchor test --provider.wallet ~/.config/solana/id.json --provider.cluster localnet
Install the crate:
Add solreq = { version = "0.1.5", features = ["cpi"] }
to your Cargo.toml
Install the js client library:
npm i @demox-labs/solreq --save
Usage
For CPI Calls
If you're writing a Solana program to interact with this one, we recommend:
- Installing & running the
solana-test-validator
- Clone & Install this repository with the instructions above.
- Run
anchor build
- Run
anchor deploy --provider.wallet <wallet_pathname.json>
oranchor test --skip-local-validator
to deploy the program to test validator. You'll need to redo this if you ever reset thesolana-test-validator
for example by running it with-r
.
Now you can run your program using for example:
anchor build && anchor deploy && node my-script.js
anchor test --skip-test-validator
You could alternatively copy the state of devnet and load it locally but full installation is recommended as described. Any CPI call should test all error states & full installation makes development much easier if you can update the program to force them.
Examples
On chain
The best resource for understanding how to interact with solreq is through the P2P Coin Flip is the example here: https://github.com/evanmarshall/cross-pile
Client
The tests, tests/solreq.ts
, provide examples in how to use our client library.
Security Considerations
- This code has not been audited by a third party. If you find issues, please submit them. We plan get an audit as soon as we can.
- Error handling for hanging responses should be a consideration.
- The Demox Protocol is in its beginning stages and at this point, still requires trust in Demox Labs as a third party. With the launch of our dVPN, no third party need be trusted but for this, it requires trusting that we're not fabricating packet captures and tls sessions.
Troubleshooting
Problems with Anchor
- The most common problem with anchor is using the right version of nodejs. We recommend install NodeJS through NVM:
- Install the NVM, and
- then:
nvm install 16.11.1
nvm use 16.11.1
- Anchor may and has introduced breaking changes. The current version is 0.22.0. I recommend installing Anchor Version Manager (AVM)
to compile with different versions of Anchor.
cargo install --git https://github.com/project-serum/anchor avm --locked --force
License
We use the GNU Affero General Public License v3.0 or later
license to ensure the community will always have access to all original
and derivations of this program. Full text here: https://spdx.org/licenses/AGPL-3.0-or-later.html