fix: remove deprecated bpf-sdk, localnet, and examples
BREAKING CHANGE: Removed binaries solana-localnet and solana-bpf-sdk-install. Please install the Solana CLI tools to download the BPF SDK and to install the solana-test-validator binary intead.
This commit is contained in:
parent
f46f346710
commit
e9b08b5e7f
|
@ -22,13 +22,6 @@ doc
|
||||||
# VIM swap files
|
# VIM swap files
|
||||||
*.sw*
|
*.sw*
|
||||||
|
|
||||||
# bpf-sdk
|
|
||||||
/bpf-sdk
|
|
||||||
/bpf-sdk.tar.bz2
|
|
||||||
|
|
||||||
# fixtures
|
|
||||||
/test/fixtures
|
|
||||||
|
|
||||||
# `solana-test-validator` ledger location
|
# `solana-test-validator` ledger location
|
||||||
test-ledger/
|
test-ledger/
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"repositoryUrl": "git@github.com:solana-labs/solana-web3.js.git",
|
||||||
|
"preset": "conventionalcommits",
|
||||||
|
"presetConfig": {
|
||||||
|
"issueUrlFormat": "{{host}}/{{owner}}/solana/issues/{{id}}"
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,10 +9,6 @@ sudo apt-get install -y libssl-dev --allow-unauthenticated
|
||||||
sudo apt-get install -y libssl1.1 --allow-unauthenticated
|
sudo apt-get install -y libssl1.1 --allow-unauthenticated
|
||||||
clang-7 --version
|
clang-7 --version
|
||||||
|
|
||||||
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
||||||
PATH=$HOME/.cargo/bin:$PATH
|
|
||||||
rustup --version
|
|
||||||
|
|
||||||
sh -c "$(curl -sSfL https://release.solana.com/edge/install)"
|
sh -c "$(curl -sSfL https://release.solana.com/edge/install)"
|
||||||
PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
|
PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
|
||||||
solana --version
|
solana --version
|
||||||
|
|
|
@ -10,7 +10,5 @@ test -r lib/index.esm.js
|
||||||
npm run doc
|
npm run doc
|
||||||
npm run lint
|
npm run lint
|
||||||
npm run codecov
|
npm run codecov
|
||||||
make -C examples/bpf-c-noop/
|
|
||||||
cargo build-bpf --manifest-path examples/bpf-rust-noop/Cargo.toml
|
|
||||||
npm run test:live-with-test-validator
|
npm run test:live-with-test-validator
|
||||||
npm run test:browser-with-test-validator
|
npm run test:browser-with-test-validator
|
||||||
|
|
|
@ -47,11 +47,17 @@ $ npm install --save @solana/web3.js
|
||||||
<script src="https://unpkg.com/@solana/web3.js@0.92.0/lib/index.iife.min.js"></script>
|
<script src="https://unpkg.com/@solana/web3.js@0.92.0/lib/index.iife.min.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Development Environment Setup
|
||||||
|
|
||||||
### Development Environment Setup
|
Install the latest Solana release from https://docs.solana.com/cli/install-solana-cli-tools
|
||||||
To build and run tests:
|
|
||||||
1. Install Rust from https://rustup.rs/
|
### Run test validator
|
||||||
2. Install the latest Solana release from https://docs.solana.com/cli/install-solana-cli-tools
|
|
||||||
|
**Use `solana-test-validator` from the latest Solana release**
|
||||||
|
|
||||||
|
### BPF program development
|
||||||
|
|
||||||
|
**Use `cargo build-bpf` from the latest Solana release**
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
@ -84,14 +90,6 @@ activate it:
|
||||||
node_modules/@solana/web3.js/module.flow.js
|
node_modules/@solana/web3.js/module.flow.js
|
||||||
```
|
```
|
||||||
|
|
||||||
## Examples
|
|
||||||
See the [examples/](https://github.com/solana-labs/solana-web3.js/tree/master/examples) directory for small snippets.
|
|
||||||
|
|
||||||
Standalone examples:
|
|
||||||
* Message feed (BPF Rust and C): https://github.com/solana-labs/example-messagefeed
|
|
||||||
* Tic-tac-toe (BPF C): https://github.com/solana-labs/example-tictactoe
|
|
||||||
* Web wallet: https://github.com/solana-labs/example-webwallet
|
|
||||||
|
|
||||||
## Releases
|
## Releases
|
||||||
Releases are available on [Github](https://github.com/solana-labs/solana-web3.js/releases)
|
Releases are available on [Github](https://github.com/solana-labs/solana-web3.js/releases)
|
||||||
and [npmjs.com](https://www.npmjs.com/package/@solana/web3.js)
|
and [npmjs.com](https://www.npmjs.com/package/@solana/web3.js)
|
||||||
|
@ -99,46 +97,3 @@ and [npmjs.com](https://www.npmjs.com/package/@solana/web3.js)
|
||||||
Each Github release features a tarball containing API documentation and a
|
Each Github release features a tarball containing API documentation and a
|
||||||
minified version of the module suitable for direct use in a browser environment
|
minified version of the module suitable for direct use in a browser environment
|
||||||
(<script> tag)
|
(<script> tag)
|
||||||
|
|
||||||
## Deprecated
|
|
||||||
|
|
||||||
### Local Network
|
|
||||||
|
|
||||||
**Please use `solana-test-validator` from the latest Solana release instead of the information in this section**
|
|
||||||
|
|
||||||
The `solana-localnet` program is provided to easily start a test Solana cluster
|
|
||||||
locally on your machine. Docker must be installed. The JSON RPC endpoint of
|
|
||||||
the local cluster is `http://localhost:8899`.
|
|
||||||
|
|
||||||
To start, first fetch the latest Docker image by running:
|
|
||||||
```bash
|
|
||||||
$ npx solana-localnet update
|
|
||||||
```
|
|
||||||
|
|
||||||
Then run the following command to start the cluster
|
|
||||||
```bash
|
|
||||||
$ npx solana-localnet up
|
|
||||||
```
|
|
||||||
|
|
||||||
While the cluster is running logs are available with:
|
|
||||||
```bash
|
|
||||||
$ npx solana-localnet logs -f
|
|
||||||
```
|
|
||||||
|
|
||||||
Stop the cluster with:
|
|
||||||
```bash
|
|
||||||
$ npx solana-localnet down
|
|
||||||
```
|
|
||||||
|
|
||||||
### BPF program development
|
|
||||||
|
|
||||||
**Please use `cargo build-bpf` from the latest Solana release instead of the information in this section**
|
|
||||||
|
|
||||||
The Solana BPF SDK is located in the `bpf-sdk/` subdirectory if you installed
|
|
||||||
solana-web3.js from npmjs.com.
|
|
||||||
|
|
||||||
From a git clone, run `npm run bpf-sdk:install` to fetch the latest BPF SDK.
|
|
||||||
|
|
||||||
Additionally Rust must be installed to build Rust BPF programs such as
|
|
||||||
`examples/bpf-rust-noop/`. See https://www.rust-lang.org/install.html for
|
|
||||||
installation details.
|
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
installDir=$1
|
|
||||||
if [[ -z $installDir ]]; then
|
|
||||||
installDir="$(cd "$(dirname "$0")"/..; pwd)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
channel=$(
|
|
||||||
cd "$(dirname "$0")";
|
|
||||||
node -p '
|
|
||||||
let p = [
|
|
||||||
"../../package.json",
|
|
||||||
"../lib/node_modules/@solana/web3.js/package.json",
|
|
||||||
"../@solana/web3.js/package.json",
|
|
||||||
"../package.json"
|
|
||||||
].find(require("fs").existsSync);
|
|
||||||
if (!p) throw new Error("Unable to locate package.json");
|
|
||||||
require(p)["testnetDefaultChannel"]
|
|
||||||
'
|
|
||||||
)
|
|
||||||
|
|
||||||
if [[ -n $2 ]]; then
|
|
||||||
channel=$2
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Installing $channel BPF SDK into $installDir"
|
|
||||||
|
|
||||||
set -x
|
|
||||||
cd "$installDir/"
|
|
||||||
curl -L --retry 5 --retry-delay 2 -o bpf-sdk.tar.bz2 \
|
|
||||||
https://solana-sdk.s3.amazonaws.com/"$channel"/bpf-sdk.tar.bz2
|
|
||||||
rm -rf bpf-sdk
|
|
||||||
mkdir -p bpf-sdk
|
|
||||||
tar jxf bpf-sdk.tar.bz2
|
|
||||||
rm -f bpf-sdk.tar.bz2
|
|
||||||
|
|
||||||
cat bpf-sdk/version.txt
|
|
|
@ -1,161 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
channel=$(
|
|
||||||
cd "$(dirname "$0")";
|
|
||||||
node -p '
|
|
||||||
let p = [
|
|
||||||
"../../package.json",
|
|
||||||
"../lib/node_modules/@solana/web3.js/package.json",
|
|
||||||
"../@solana/web3.js/package.json",
|
|
||||||
"../package.json"
|
|
||||||
].find(require("fs").existsSync);
|
|
||||||
if (!p) throw new Error("Unable to locate package.json");
|
|
||||||
require(p)["testnetDefaultChannel"]
|
|
||||||
'
|
|
||||||
)
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
exitcode=0
|
|
||||||
if [[ -n "$1" ]]; then
|
|
||||||
exitcode=1
|
|
||||||
echo "Error: $*"
|
|
||||||
fi
|
|
||||||
cat <<EOF
|
|
||||||
usage: $0 [update|up|down|logs] [command-specific options]
|
|
||||||
|
|
||||||
Operate a local testnet
|
|
||||||
|
|
||||||
update - Update the image from dockerhub.com
|
|
||||||
up - Start the cluster
|
|
||||||
down - Stop the cluster
|
|
||||||
logs - Display cluster logging
|
|
||||||
|
|
||||||
logs-specific options:
|
|
||||||
-f - Follow log output
|
|
||||||
|
|
||||||
update-specific options:
|
|
||||||
<tag> - Optional Docker image tag to use
|
|
||||||
|
|
||||||
up-specific options:
|
|
||||||
<tag> - Optional Docker image tag to use
|
|
||||||
-n - Optional Docker network to join
|
|
||||||
|
|
||||||
Default channel: $channel
|
|
||||||
|
|
||||||
down-specific options:
|
|
||||||
none
|
|
||||||
|
|
||||||
EOF
|
|
||||||
exit $exitcode
|
|
||||||
}
|
|
||||||
|
|
||||||
[[ -n $1 ]] || usage
|
|
||||||
cmd="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
docker --version || usage "It appears that docker is not installed"
|
|
||||||
case $cmd in
|
|
||||||
update)
|
|
||||||
if [[ -n $1 ]]; then
|
|
||||||
channel="$1"
|
|
||||||
fi
|
|
||||||
(
|
|
||||||
set -x
|
|
||||||
docker pull solanalabs/solana:"$channel"
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
up)
|
|
||||||
while [[ -n $1 ]]; do
|
|
||||||
if [[ $1 = -n ]]; then
|
|
||||||
[[ -n $2 ]] || usage "Invalid $1 argument"
|
|
||||||
network="$2"
|
|
||||||
shift 2
|
|
||||||
else
|
|
||||||
channel=$1
|
|
||||||
shift 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
(
|
|
||||||
set -x
|
|
||||||
RUST_LOG=${RUST_LOG:-solana=info,solana_runtime::message_processor=debug}
|
|
||||||
ARGS=(
|
|
||||||
--detach
|
|
||||||
--name solana-localnet
|
|
||||||
--rm
|
|
||||||
--publish 8001:8001/tcp # entrypoint
|
|
||||||
--publish 8899:8899/tcp # rpc http
|
|
||||||
--publish 8900:8900/tcp # rpc pubsub
|
|
||||||
--publish 8901:8901/tcp # (future) bank service
|
|
||||||
--publish 8902:8902/tcp # bank service
|
|
||||||
--publish 9900:9900/tcp # faucet
|
|
||||||
--publish 8000:8000/udp # tvu
|
|
||||||
--publish 8001:8001/udp # gossip
|
|
||||||
--publish 8002:8002/udp # tvu_forwards
|
|
||||||
--publish 8003:8003/udp # tpu
|
|
||||||
--publish 8004:8004/udp # tpu_forwards
|
|
||||||
--publish 8005:8005/udp # retransmit
|
|
||||||
--publish 8006:8006/udp # repair
|
|
||||||
--publish 8007:8007/udp # serve_repair
|
|
||||||
--publish 8008:8008/udp # broadcast
|
|
||||||
--tty
|
|
||||||
--ulimit "nofile=700000"
|
|
||||||
--env "RUST_LOG=$RUST_LOG"
|
|
||||||
)
|
|
||||||
if [[ -n $network ]]; then
|
|
||||||
ARGS+=(--network "$network")
|
|
||||||
fi
|
|
||||||
|
|
||||||
docker run "${ARGS[@]}" solanalabs/solana:"$channel"
|
|
||||||
|
|
||||||
for _ in 1 2 3 4 5; do
|
|
||||||
if curl \
|
|
||||||
-X POST \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \
|
|
||||||
http://localhost:8899; then
|
|
||||||
break;
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
down)
|
|
||||||
(
|
|
||||||
set -x
|
|
||||||
if [[ $(docker ps --filter "name=^/solana-localnet$" -q) ]]; then
|
|
||||||
docker stop --time 0 solana-localnet
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
logs)
|
|
||||||
follow=false
|
|
||||||
if [[ -n $1 ]]; then
|
|
||||||
if [[ $1 = "-f" ]]; then
|
|
||||||
follow=true
|
|
||||||
else
|
|
||||||
usage "Unknown argument: $1"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
while $follow; do
|
|
||||||
if [[ $(docker ps -q -f "name=^/solana-localnet$") ]]; then
|
|
||||||
(
|
|
||||||
set -x
|
|
||||||
docker logs solana-localnet -f
|
|
||||||
) || true
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
(
|
|
||||||
set -x
|
|
||||||
docker logs solana-localnet
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
usage "Unknown command: $cmd"
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,10 +0,0 @@
|
||||||
## Examples
|
|
||||||
Before trying any of the examples in this directory please populate the `lib/`
|
|
||||||
directory by running `npm install`.
|
|
||||||
|
|
||||||
Additionally most of the examples attempt to connect to a local cluster. Start
|
|
||||||
your local cluster first by running:
|
|
||||||
```bash
|
|
||||||
$ npx solana-localnet update
|
|
||||||
$ npx solana-localnet up
|
|
||||||
```
|
|
|
@ -1,24 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Create a new account</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<b>Account Public Key:</b>
|
|
||||||
<div id="accountPublicKey">?</div>
|
|
||||||
|
|
||||||
<script src="../lib/index.iife.js"></script>
|
|
||||||
<!--
|
|
||||||
<script src="https://github.com/solana-labs/solana-web3.js/releases/download/v0.11.10/solanaWeb3.min.js"></script>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Create a new account
|
|
||||||
const account = new solanaWeb3.Account();
|
|
||||||
|
|
||||||
// Display the account's public key
|
|
||||||
const accountPublicKey = document.getElementById('accountPublicKey');
|
|
||||||
accountPublicKey.innerHTML = account.publicKey;
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,10 +0,0 @@
|
||||||
/*
|
|
||||||
Create a new account
|
|
||||||
*/
|
|
||||||
|
|
||||||
//eslint-disable-next-line import/no-commonjs
|
|
||||||
const solanaWeb3 = require('..');
|
|
||||||
//const solanaWeb3 = require('@solana/web3.js');
|
|
||||||
|
|
||||||
const account = new solanaWeb3.Account();
|
|
||||||
console.log(account.publicKey.toString());
|
|
|
@ -1 +0,0 @@
|
||||||
/out/
|
|
|
@ -1 +0,0 @@
|
||||||
include ../../bpf-sdk/c/bpf.mk
|
|
|
@ -1,19 +0,0 @@
|
||||||
/**
|
|
||||||
* @brief Example C-based BPF program that prints out the parameters
|
|
||||||
* passed to it
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <solana_sdk.h>
|
|
||||||
|
|
||||||
extern uint64_t entrypoint(const uint8_t *input) {
|
|
||||||
SolAccountInfo ka[1];
|
|
||||||
SolParameters params = (SolParameters) { .ka = ka };
|
|
||||||
|
|
||||||
sol_log("Hello World");
|
|
||||||
|
|
||||||
if (!sol_deserialize(input, ¶ms, SOL_ARRAY_SIZE(ka))) {
|
|
||||||
return ERROR_INVALID_ARGUMENT;
|
|
||||||
}
|
|
||||||
sol_log_params(¶ms);
|
|
||||||
return SUCCESS;
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Get account balance</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<b>Account</b>
|
|
||||||
<div id="accountPublicKey">?</div>
|
|
||||||
has a balance of
|
|
||||||
<div id="accountBalance">?</div>
|
|
||||||
|
|
||||||
<script src="../lib/index.iife.js"></script>
|
|
||||||
<!--
|
|
||||||
<script src="https://github.com/solana-labs/solana-web3.js/releases/download/v0.11.10/solanaWeb3.min.js"></script>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Create a new account
|
|
||||||
const account = new solanaWeb3.Account();
|
|
||||||
|
|
||||||
// Display the account's public key
|
|
||||||
const accountPublicKey = document.getElementById('accountPublicKey');
|
|
||||||
accountPublicKey.innerHTML = account.publicKey;
|
|
||||||
|
|
||||||
// Fetch account balance
|
|
||||||
let url = 'http://localhost:8899';
|
|
||||||
const connection = new solanaWeb3.Connection(url);
|
|
||||||
|
|
||||||
connection.getBalance(account.publicKey)
|
|
||||||
.then((balance) => {
|
|
||||||
const accountBalance = document.getElementById('accountBalance');
|
|
||||||
accountBalance.innerHTML = balance;
|
|
||||||
console.log(`${account.publicKey} has a balance of ${balance}`);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,18 +0,0 @@
|
||||||
/*
|
|
||||||
Fetch the balance of an account
|
|
||||||
*/
|
|
||||||
|
|
||||||
//eslint-disable-next-line import/no-commonjs
|
|
||||||
const solanaWeb3 = require('..');
|
|
||||||
//const solanaWeb3 = require('@solana/web3.js');
|
|
||||||
|
|
||||||
const account = new solanaWeb3.Account();
|
|
||||||
|
|
||||||
let url;
|
|
||||||
url = 'http://devnet.solana.com';
|
|
||||||
//url = 'http://localhost:8899';
|
|
||||||
const connection = new solanaWeb3.Connection(url);
|
|
||||||
|
|
||||||
connection.getBalance(account.publicKey).then(balance => {
|
|
||||||
console.log(`${account.publicKey} has a balance of ${balance}`);
|
|
||||||
});
|
|
|
@ -31,48 +31,31 @@
|
||||||
"not IE 11",
|
"not IE 11",
|
||||||
"maintained node versions"
|
"maintained node versions"
|
||||||
],
|
],
|
||||||
"bin": {
|
|
||||||
"solana-bpf-sdk-install": "bin/bpf-sdk-install.sh",
|
|
||||||
"solana-localnet": "bin/localnet.sh"
|
|
||||||
},
|
|
||||||
"testnetDefaultChannel": "edge",
|
|
||||||
"files": [
|
"files": [
|
||||||
"/bin",
|
|
||||||
"/doc",
|
|
||||||
"/examples",
|
|
||||||
"/bpf-sdk",
|
|
||||||
"/lib",
|
"/lib",
|
||||||
"/module.flow.js",
|
"/module.flow.js",
|
||||||
"/src"
|
"/src"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"bpf-sdk:install": "npm run clean:fixtures; bin/bpf-sdk-install.sh .",
|
|
||||||
"bpf-sdk:remove-symlinks": "find bpf-sdk -type l -print -exec cp {} {}.tmp \\; -exec mv {}.tmp {} \\;",
|
|
||||||
"build": "cross-env NODE_ENV=production rollup -c; npx flowgen lib/types/index.d.ts -o module.flow.js",
|
"build": "cross-env NODE_ENV=production rollup -c; npx flowgen lib/types/index.d.ts -o module.flow.js",
|
||||||
"build:browser-test": "rollup -c test/rollup.config.js",
|
"build:browser-test": "rollup -c test/rollup.config.js",
|
||||||
"build:fixtures": "set -ex; ./test/fixtures/noop-c/build.sh; ./test/fixtures/noop-rust/build.sh",
|
"build:fixtures": "set -ex; ./test/fixtures/noop-program/build.sh",
|
||||||
"clean:fixtures": "make -C examples/bpf-c-noop clean ",
|
|
||||||
"clean": "rimraf ./coverage ./lib",
|
"clean": "rimraf ./coverage ./lib",
|
||||||
"codecov": "set -ex; npm run test:cover; cat ./coverage/lcov.info | codecov",
|
"codecov": "set -ex; npm run test:cover; cat ./coverage/lcov.info | codecov",
|
||||||
"dev": "cross-env NODE_ENV=development rollup -c",
|
"dev": "cross-env NODE_ENV=development rollup -c",
|
||||||
"doc": "set -ex; typedoc",
|
"doc": "set -ex; typedoc",
|
||||||
"doc:watch": "watch 'npm run doc' . --wait=1 --ignoreDirectoryPattern=/doc/",
|
"doc:watch": "watch 'npm run doc' . --wait=1 --ignoreDirectoryPattern=/doc/",
|
||||||
"examples": "set -ex; for example in examples/*.js; do node $example; done",
|
|
||||||
"lint": "set -ex; npm run pretty; eslint . --ext .js,.ts",
|
"lint": "set -ex; npm run pretty; eslint . --ext .js,.ts",
|
||||||
"lint:fix": "npm run pretty:fix && eslint . --fix",
|
"lint:fix": "npm run pretty:fix && eslint . --fix",
|
||||||
"lint:watch": "watch 'npm run lint:fix' . --wait=1 --ignoreDirectoryPattern=/doc/",
|
"lint:watch": "watch 'npm run lint:fix' . --wait=1 --ignoreDirectoryPattern=/doc/",
|
||||||
"localnet:down": "bin/localnet.sh down",
|
|
||||||
"localnet:logs": "bin/localnet.sh logs -f",
|
|
||||||
"localnet:up": "bin/localnet.sh up",
|
|
||||||
"localnet:update": "bin/localnet.sh update",
|
|
||||||
"ok": "run-s lint test doc",
|
"ok": "run-s lint test doc",
|
||||||
"prepare": "run-s clean bpf-sdk:install bpf-sdk:remove-symlinks build",
|
"prepare": "run-s clean build",
|
||||||
"pretty": "prettier --check '{,{examples,src,test}/**/}*.{j,t}s'",
|
"pretty": "prettier --check '{,{src,test}/**/}*.{j,t}s'",
|
||||||
"pretty:fix": "prettier --write '{,{examples,src,test}/**/}*.{j,t}s'",
|
"pretty:fix": "prettier --write '{,{src,test}/**/}*.{j,t}s'",
|
||||||
"re": "semantic-release --repository-url git@github.com:solana-labs/solana-web3.js.git",
|
"re": "semantic-release --repository-url git@github.com:solana-labs/solana-web3.js.git",
|
||||||
"test": "npm run build:fixtures && mocha -r ts-node/register './test/**/*.test.ts'",
|
"test": "mocha -r ts-node/register './test/**/*.test.ts'",
|
||||||
"test:cover": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' nyc --reporter=lcov mocha -r ts-node/register './test/**/*.test.ts'",
|
"test:cover": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' nyc --reporter=lcov mocha -r ts-node/register './test/**/*.test.ts'",
|
||||||
"test:browser": "TEST_LIVE=1 npm run build:fixtures && npm run build:browser-test && mocha-headless-chrome -f http://localhost:8080/mocha.html --timeout 180000",
|
"test:browser": "TEST_LIVE=1 npm run build:browser-test && mocha-headless-chrome -f http://localhost:8080/mocha.html --timeout 180000",
|
||||||
"test:browser-with-server": "start-server-and-test 'http-server -p 8080' 8080 test:browser",
|
"test:browser-with-server": "start-server-and-test 'http-server -p 8080' 8080 test:browser",
|
||||||
"test:browser-with-test-validator": "start-server-and-test 'solana-test-validator --reset --quiet' http://localhost:8899/health test:browser-with-server",
|
"test:browser-with-test-validator": "start-server-and-test 'solana-test-validator --reset --quiet' http://localhost:8899/health test:browser-with-server",
|
||||||
"test:live": "TEST_LIVE=1 npm run test",
|
"test:live": "TEST_LIVE=1 npm run test",
|
||||||
|
|
|
@ -17,52 +17,7 @@ use(chaiAsPromised);
|
||||||
|
|
||||||
if (process.env.TEST_LIVE) {
|
if (process.env.TEST_LIVE) {
|
||||||
describe('BPF Loader', () => {
|
describe('BPF Loader', () => {
|
||||||
it('load BPF C program', async () => {
|
describe('load BPF program', () => {
|
||||||
const data = await fs.readFile('test/fixtures/noop-c/noop.so');
|
|
||||||
|
|
||||||
const connection = new Connection(url, 'confirmed');
|
|
||||||
const {feeCalculator} = await connection.getRecentBlockhash();
|
|
||||||
const fees =
|
|
||||||
feeCalculator.lamportsPerSignature *
|
|
||||||
BpfLoader.getMinNumSignatures(data.length);
|
|
||||||
const payerBalance = await connection.getMinimumBalanceForRentExemption(
|
|
||||||
0,
|
|
||||||
);
|
|
||||||
const executableBalance = await connection.getMinimumBalanceForRentExemption(
|
|
||||||
data.length,
|
|
||||||
);
|
|
||||||
|
|
||||||
const from = new Account();
|
|
||||||
await helpers.airdrop({
|
|
||||||
connection,
|
|
||||||
address: from.publicKey,
|
|
||||||
amount: payerBalance + fees + executableBalance,
|
|
||||||
});
|
|
||||||
|
|
||||||
const program = new Account();
|
|
||||||
await BpfLoader.load(
|
|
||||||
connection,
|
|
||||||
from,
|
|
||||||
program,
|
|
||||||
data,
|
|
||||||
BPF_LOADER_PROGRAM_ID,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check that program loading costed exactly `fees + executableBalance`
|
|
||||||
const fromBalance = await connection.getBalance(from.publicKey);
|
|
||||||
expect(fromBalance).to.eq(payerBalance);
|
|
||||||
|
|
||||||
const transaction = new Transaction().add({
|
|
||||||
keys: [{pubkey: from.publicKey, isSigner: true, isWritable: true}],
|
|
||||||
programId: program.publicKey,
|
|
||||||
});
|
|
||||||
await sendAndConfirmTransaction(connection, transaction, [from], {
|
|
||||||
commitment: 'confirmed',
|
|
||||||
preflightCommitment: 'confirmed',
|
|
||||||
});
|
|
||||||
}).timeout(5000);
|
|
||||||
|
|
||||||
describe('load BPF Rust program', () => {
|
|
||||||
const connection = new Connection(url, 'confirmed');
|
const connection = new Connection(url, 'confirmed');
|
||||||
|
|
||||||
let program = new Account();
|
let program = new Account();
|
||||||
|
@ -72,7 +27,7 @@ if (process.env.TEST_LIVE) {
|
||||||
before(async function () {
|
before(async function () {
|
||||||
this.timeout(60_000);
|
this.timeout(60_000);
|
||||||
programData = await fs.readFile(
|
programData = await fs.readFile(
|
||||||
'test/fixtures/noop-rust/solana_bpf_rust_noop.so',
|
'test/fixtures/noop-program/solana_bpf_rust_noop.so',
|
||||||
);
|
);
|
||||||
|
|
||||||
const {feeCalculator} = await connection.getRecentBlockhash();
|
const {feeCalculator} = await connection.getRecentBlockhash();
|
||||||
|
|
|
@ -927,7 +927,7 @@ describe('Connection', () => {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// Block 0 never has any transactions in automation localnet
|
// Block 0 never has any transactions in test validator
|
||||||
const block0 = await connection.getConfirmedBlock(0);
|
const block0 = await connection.getConfirmedBlock(0);
|
||||||
const blockhash0 = block0.blockhash;
|
const blockhash0 = block0.blockhash;
|
||||||
expect(block0.transactions).to.have.length(0);
|
expect(block0.transactions).to.have.length(0);
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
make -C ../../../examples/bpf-c-noop/
|
|
||||||
cp ../../../examples/bpf-c-noop/out/noop.so .
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
cargo build-bpf
|
||||||
|
cp ./target/deploy/solana_bpf_rust_noop.so .
|
Binary file not shown.
|
@ -1,7 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
cargo build-bpf --manifest-path=../../../examples/bpf-rust-noop/Cargo.toml
|
|
||||||
cp ../../../examples/bpf-rust-noop/target/deploy/solana_bpf_rust_noop.so .
|
|
Loading…
Reference in New Issue