Pyth-client - client API for on-chain pyth programs

Overview

pyth-client

client API for on-chain pyth programs

Build Instructions

# depends on openssl
apt install libssl-dev

# depends on libz
apt install zlib1g zlib1g-dev

# depends on libzstd
apt install libzstd-dev

# uses cmake to build
apt install cmake

# default is release build
./scripts/build.sh

You may want to build this repository inside a linux docker container for various reasons, e.g., if building on an M1 mac, or to run BPF binaries. You can run the following command to open a shell in a linux docker container with the pyth-client directory mounted:

export PYTH_REPO=/path/to/host/pyth-client
export IMAGE="docker.io/pythfoundation/pyth-client:devnet-v2.8.1"

docker run -it \
  --volume "${HOME}:/home/pyth/home" \
  --volume "${HOME}/.config:/home/pyth/.config" \
  --mount "type=bind,src=${PYTH_REPO},target=/home/pyth/pyth-client" \
  --userns=host \
  --user="$( id -ur ):$( id -gr )" \
  --platform linux/amd64 \
  $IMAGE \
  /bin/bash -l

This command runs a recent pyth-client docker image that already has the necessary dependencies installed. Therefore, once the container is running, all you have to do is run cd pyth-client && ./scripts/build.sh. Note that updates to the pyth-client directory made inside the docker container will be persisted to the host filesystem (which is probably desirable).

Fuzzing

Build a docker image for running fuzz tests:

docker build . --platform linux/amd64 -f docker/fuzz/Dockerfile -t pyth-fuzz

Each fuzz test is invoked via an argument to the fuzz command-line program, and has a corresponding set of test cases in the subdirectory with the same name as the test. You can run these tests using a command like:

docker run -t \
  --platform linux/amd64 \
  -v "$(pwd)"/findings:/home/pyth/pyth-client/findings \
  pyth-fuzz \
  sh -c "./afl/afl-fuzz -i ./pyth-client/pyth/tests/fuzz/add/testcases -o ./pyth-client/findings ./pyth-client/build/fuzz add"

This command will run the add fuzz test on the tests cases in pyth/tests/fuzz/add/testcases, saving any outputs to findings/. Note that findings/ is shared between the host machine and the docker container, so you can inspect any error cases by looking in that subdirectory on the host.

If you find an error case that you want to investigate further, you can run the program on the failing input using something like:

docker run -t \
  --platform linux/amd64 \
  -v "$(pwd)"/findings:/home/pyth/pyth-client/findings \
  pyth-fuzz \
  sh -c "./pyth-client/build/fuzz add < ./pyth-client/findings/crashes/id\:000000\,sig\:06\,src\:000000\,op\:flip1\,pos\:0"

in this example, id\:000000\,sig\:06\,src\:000000\,op\:flip1\,pos\:0 is the file containing the failing input.

Comments
  • Unable to build v2021-07-27 branch

    Unable to build v2021-07-27 branch

    In file included from /home/ubuntu/solana-test/pyth-client/pc/manager.cpp:1: In file included from /home/ubuntu/solana-test/pyth-client/pc/manager.hpp:5: /home/ubuntu/solana-test/pyth-client/pc/request.hpp:136:10: error: 'pc::init_mapping::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::create_account * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::create_account *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:137:10: error: 'pc::init_mapping::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::init_mapping * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::init_mapping *') void on_response( rpc::program_subscribe * ) override;

    /home/ubuntu/solana-test/pyth-client/pc/request.hpp:138:10: error: 'pc::init_mapping::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::signature_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::signature_subscribe *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:195:10: error: 'pc::add_mapping::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::create_account * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::create_account *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:196:10: error: 'pc::add_mapping::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::add_mapping * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::add_mapping *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:197:10: error: 'pc::add_mapping::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::signature_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::signature_subscribe *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:228:10: error: 'pc::add_product::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::create_account * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::create_account *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:229:10: error: 'pc::add_product::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::signature_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::signature_subscribe *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:230:10: error: 'pc::add_product::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::add_product * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::add_product *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:263:10: error: 'pc::upd_product::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::signature_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::signature_subscribe *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:264:10: error: 'pc::upd_product::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::upd_product * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::upd_product *') void on_response( rpc::program_subscribe * ) override; /home/ubuntu/solana-test/pyth-client/pc/request.hpp:300:10: error: 'pc::add_price::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::create_account * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::create_account *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:301:10: error: 'pc::add_price::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::signature_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::signature_subscribe *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:302:10: error: 'pc::add_price::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::add_price * ) override; /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::add_price *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:336:10: error: 'pc::init_price::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::signature_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::signature_subscribe *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:337:10: error: 'pc::init_price::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::init_price * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::init_price *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:367:10: error: 'pc::add_publisher::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::add_publisher * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::add_publisher *') void on_response( rpc::program_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:368:10: error: 'pc::add_publisher::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::signature_subscribe * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::signature_subscribe *') void on_response( rpc::program_subscribe * ) override; /home/ubuntu/solana-test/pyth-client/pc/request.hpp:399:10: error: 'pc::del_publisher::on_response' hides overloaded virtual function [-Werror,-Woverloaded-virtual] void on_response( rpc::del_publisher * ) override; ^ /home/ubuntu/solana-test/pyth-client/pc/request.hpp:102:10: note: hidden overloaded virtual function 'pc::request::on_response' declared here: type mismatch at 1st parameter ('rpc::program_subscribe *' vs 'rpc::del_publisher *') void on_response( rpc::program_subscribe * ) override; ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. make[2]: *** [CMakeFiles/pc.dir/build.make:141: CMakeFiles/pc.dir/pc/manager.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:98: CMakeFiles/pc.dir/all] Error 2 make: *** [Makefile:141: all] Error 2

    opened by rkonda20 6
  • [pythd] mainnet: error=failed to handshake websocket: Too Many Requests

    [pythd] mainnet: error=failed to handshake websocket: Too Many Requests

    Hi,

    I'm trying to use pythd with mainnet-beta, but I can't connect. It runs fine using devnet, but mainet-beta fails.

    ./pythd -k $KDIR -r $RHOST [2021-10-01T10:01:03.758888Z 722534 INF publish_key ] key_name=CZfEVuDoUKEgpyuoBtTHDkUcetvyKrTKWfPJsYfqv355 [2021-10-01T10:01:03.758935Z 722534 INF mapping_key ] key_name=AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J [2021-10-01T10:01:03.758949Z 722534 INF program_key ] key_name=FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH [2021-10-01T10:01:03.796309Z 722534 INF listening ] port=8910,content_dir= [2021-10-01T10:01:03.796316Z 722534 INF initialized ] version=2,rpc_host=api.mainnet-beta.solana.com,tx_host=localhost,capture_file=,commitment=confirmed,publish_interval(ms)=227 [2021-10-01T10:01:03.865403Z 722534 INF rpc_connected ] [2021-10-01T10:01:03.926304Z 722534 INF received_recent_block_hash ] curr_slot=99230323,hash_slot=99230269,round_trip_time(ms)=30.283889 [2021-10-01T10:01:03.957041Z 722534 INF add_mapping ] account=AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J,num_products=43 [2021-10-01T10:01:03.987762Z 722534 INF add_product ] account=5uKdRzB3FzdmwyCHrqSGq4u2URja617jqtKkM71BVrkw,attr={"asset_type":"Crypto","symbol":"BCH/USD","country":"US","quote_currency":"USD","description":"BCH/USD","tenor":"Spot","generic_symbol":"BCHUSD"} [2021-10-01T10:01:03.988206Z 722534 INF add_product ] account=ETuC4VK6kuHfxc9MCU14dASfnGBfzgFUVCs1oVowawHb,attr={"asset_type":"Crypto","symbol":"LTC/USD","country":"US","quote_currency":"USD","description":"LTC/USD","tenor":"Spot","generic_symbol":"LTCUSD"} [2021-10-01T10:01:03.988539Z 722534 INF add_product ] account=4aDoSXJ5o3AuvL7QFeR6h44jALQfTmUUCTVGDD6aoJTM,attr={"asset_type":"Crypto","symbol":"BTC/USD","country":"US","quote_currency":"USD","description":"BTC/USD","tenor":"Spot","generic_symbol":"BTCUSD"} [2021-10-01T10:01:03.988871Z 722534 INF add_product ] account=4ANvG59u4YToJnVi2CkZbbfTE9mWHpyNbMmm69R43E3q,attr={"asset_type":"Crypto","symbol":"BNB/USD","country":"US","quote_currency":"USD","description":"BNB/USD","tenor":"Spot","generic_symbol":"BNBUSD"} [2021-10-01T10:01:03.989246Z 722534 INF add_product ] account=GeSpWQucSvWhaXVvC2RJihpne9dCdL25pn46BTiDLyYs,attr={"asset_type":"Crypto","symbol":"DOGE/USD","country":"US","quote_currency":"USD","description":"DOGE/USD","tenor":"Spot","generic_symbol":"XDGUSD"} [2021-10-01T10:01:03.989538Z 722534 INF add_product ] account=Av6XyAMJnyi68FdsKSPYgzfXGjYrrt6jcAMwtvzLCqaM,attr={"asset_type":"Crypto","symbol":"USDT/USD","country":"US","quote_currency":"USD","description":"USDT/USD","tenor":"Spot","generic_symbol":"USDTUSD"} [2021-10-01T10:01:03.989866Z 722534 INF add_product ] account=ALP8SdU9oARYVLgLR7LrqMNCYBnhtnQz1cj6bwgwQmgj,attr={"asset_type":"Crypto","symbol":"SOL/USD","country":"US","quote_currency":"USD","description":"SOL/USD","tenor":"Spot","generic_symbol":"SOLUSD"} [2021-10-01T10:01:03.990104Z 722534 INF add_product ] account=8GWTTbNiXdmyZREXbjsZBmCRuzdPrW55dnZGDkTRjWvb,attr={"asset_type":"Crypto","symbol":"USDC/USD","country":"US","quote_currency":"USD","description":"USDC/USD","tenor":"Spot","generic_symbol":"USDCUSD"} [2021-10-01T10:01:03.990411Z 722534 INF add_product ] account=EMkxjGC1CQ7JLiutDbfYb7UKb3zm9SJcUmr1YicBsdpZ,attr={"asset_type":"Crypto","symbol":"ETH/USD","country":"US","quote_currency":"USD","description":"ETH/USD","tenor":"Spot","generic_symbol":"ETHUSD"} [2021-10-01T10:01:03.990688Z 722534 INF add_product ] account=6T1eJbKWyhZXEjmuBej9gPk3SRTagzrEQovCSwAWD57P,attr={"asset_type":"Crypto","symbol":"SRM/USD","country":"US","quote_currency":"USD","description":"SRM/USD","tenor":"Spot","generic_symbol":"SRMUSD"} [2021-10-01T10:01:04.020090Z 722534 ERR rpc_http_reset ] error=fail to read [104 Connection reset by peer],host=api.mainnet-beta.solana.com,port=80 [2021-10-01T10:01:04.088382Z 722534 ERR rpc_websocket_reset ] error=failed to handshake websocket: Too Many Requests,host=api.mainnet-beta.solana.com,port=80 [2021-10-01T10:01:06.083764Z 722534 ERR rpc_websocket_reset ] error=failed to handshake websocket: Too Many Requests,host=api.mainnet-beta.solana.com,port=80 [2021-10-01T10:01:10.084534Z 722534 ERR rpc_websocket_reset ] error=failed to handshake websocket: Too Many Requests,host=api.mainnet-beta.solana.com,port=80 [2021-10-01T10:01:18.086001Z 722534 INF rpc_connected ] [2021-10-01T10:01:18.152652Z 722534 INF received_recent_block_hash ] curr_slot=99230356,hash_slot=99230321,round_trip_time(ms)=33.398536 [2021-10-01T10:01:18.186456Z 722534 INF add_mapping ] account=AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J,num_products=43 [2021-10-01T10:01:18.186835Z 722534 INF add_product ] account=5uKdRzB3FzdmwyCHrqSGq4u2URja617jqtKkM71BVrkw,attr={"asset_type":"Crypto","symbol":"BCH/USD","country":"US","quote_currency":"USD","description":"BCH/USD","tenor":"Spot","generic_symbol":"BCHUSD"} [2021-10-01T10:01:18.187316Z 722534 INF add_price ] account=5ALDzwcRJfSyGdGyhP3kP628aqBNHZzLuVww7o9kdspe,product=5uKdRzB3FzdmwyCHrqSGq4u2URja617jqtKkM71BVrkw,symbol=BCH/USD,price_type=price,version=2,exponent=-8,num_publishers=9 [2021-10-01T10:01:18.187568Z 722534 INF add_product ] account=ETuC4VK6kuHfxc9MCU14dASfnGBfzgFUVCs1oVowawHb,attr={"asset_type":"Crypto","symbol":"LTC/USD","country":"US","quote_currency":"USD","description":"LTC/USD","tenor":"Spot","generic_symbol":"LTCUSD"} [2021-10-01T10:01:18.188111Z 722534 INF add_price ] account=8RMnV1eD55iqUFJLMguPkYBkq8DCtx81XcmAja93LvRR,product=ETuC4VK6kuHfxc9MCU14dASfnGBfzgFUVCs1oVowawHb,symbol=LTC/USD,price_type=price,version=2,exponent=-8,num_publishers=11 [2021-10-01T10:01:18.188375Z 722534 INF add_product ] account=4aDoSXJ5o3AuvL7QFeR6h44jALQfTmUUCTVGDD6aoJTM,attr={"asset_type":"Crypto","symbol":"BTC/USD","country":"US","quote_currency":"USD","description":"BTC/USD","tenor":"Spot","generic_symbol":"BTCUSD"} [2021-10-01T10:01:18.188793Z 722534 INF add_price ] account=GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU,product=4aDoSXJ5o3AuvL7QFeR6h44jALQfTmUUCTVGDD6aoJTM,symbol=BTC/USD,price_type=price,version=2,exponent=-8,num_publishers=17 [2021-10-01T10:01:18.189053Z 722534 INF add_product ] account=4ANvG59u4YToJnVi2CkZbbfTE9mWHpyNbMmm69R43E3q,attr={"asset_type":"Crypto","symbol":"BNB/USD","country":"US","quote_currency":"USD","description":"BNB/USD","tenor":"Spot","generic_symbol":"BNBUSD"} [2021-10-01T10:01:18.221274Z 722534 ERR rpc_http_reset ] error=fail to read [104 Connection reset by peer],host=api.mainnet-beta.solana.com,port=80 [2021-10-01T10:01:19.088638Z 722534 INF rpc_connected ] [2021-10-01T10:01:19.160880Z 722534 INF received_recent_block_hash ] curr_slot=99230359,hash_slot=99230322,round_trip_time(ms)=37.319143 pythd: Connection rate limits exceeded, contact your app developer or [email protected] [2021-10-01T10:01:19.193679Z 722534 INF pythd_teardown

    opened by tnedev 5
  • pyth: failed to create key_store directory [13 Permission denied]

    pyth: failed to create key_store directory [13 Permission denied]

    When I'm about to create a solana key pair, it says I don't have permission

    I have no [email protected]:/home/pyth/pyth-client/build$ ./pyth init_key -k $KDIR pyth: failed to create key_store directory [13 Permission denied]

    opened by Smea1 3
  • API connection error

    API connection error

    after connecting without issue for about a month, I am now getting the following error: ClientConnectorCertificateError: Cannot connect to host api.devnet.solana.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')]

    The snippet presented in github was used to test the connection but the error remains: from pythclient.pythclient import PythClient from pythclient.pythaccounts import PythPriceAccount from pythclient.utils import get_key

    solana_network="devnet" async with PythClient( first_mapping_account_key=get_key(solana_network, "mapping"), program_key=get_key(solana_network, "program") if use_program else None, ) as c: await c.refresh_all_prices() products = await c.get_products() for p in products: print(p.attrs) prices = await p.get_prices() for _, pr in prices.items(): print( pr.price_type, pr.aggregate_price_status, pr.aggregate_price, "p/m", pr.aggregate_price_confidence_interval, )

    I am running python 3.10 at the moment.

    opened by ebeullard 3
  • Lack Of Zero Copy Serialization/Deserialization Will Be Problematic For Stack Size

    Lack Of Zero Copy Serialization/Deserialization Will Be Problematic For Stack Size

    Stack size in solana is fairly limited to 4096bytes, and with the release of pyth v2 price accounts making it difficult to be able to reference price accounts. Zero copy serialization/deserialization would pretty much resolve this issue.

    enhancement 
    opened by bonedaddy 3
  • Fix solana dir

    Fix solana dir

    The goal of this PR is fixing an annoying quirk of the repo that meant you had to the pyth_client repo and the solana repo side to side in the same folder. The trick is we can find the solana local installation by doing which cargo-build-bpf. This is inspired by https://github.com/guibescos/example-helloworld .

    Resolving the solana installation ended up a little bit dirty in build.rs because bindgen needs to find the solana C headers. This will get better when we get rid of the C headers.

    opened by guibescos 2
  • Extra check from audit

    Extra check from audit

    Check on the funding account from the internal audit. I don't think there's ever a situation where funder is not owned by the system program. Even executor_key from the executor will be owned by system program.

    opened by guibescos 2
  • changed c return value of update price to indicate aggregation (#190)

    changed c return value of update price to indicate aggregation (#190)

    • changed c return value of update price to indicate aggregation

    • forgot to add bindings

    • removed the need for casting

    • fixed update_no_fail

    • removed unnecessary docker packages

    opened by majabbour 2
  • Aggregation Logic

    Aggregation Logic

    This PR includes only commits required to merge aggregation logic into the Pyth contract, these have been spliced out from #139 with only the required utilities for aggregation. This doesn't include utilities that aren't used as they can be included in future PRs.

    opened by Reisen 2
  • Pyth Daemon -

    Pyth Daemon - "not ready to publish - check rpc / pyth_tx connection" on RPC reconnect

    pythd version - 2.9.1 command: home/pyth/pyth-client/build/pythd -r nginx:7899:7900 -t pyth-tx-server-mainnet:8898 -k $KDIR -w /home/pyth/pyth-client/dashboard"

    When pythd reconnects to the Solana RPC we see either of the following logs:

    [2021-11-29T14:37:24.923149Z 11 INF rpc_connected                           ]
    [2021-11-29T14:37:24.896228Z 11 ERR rpc_websocket_reset                     ] error=fail to read [11 Resource temporarily unavailable],host=nginx:7899:7900,port=7899
    
    [2021-11-29T05:09:28.396393Z 11 ERR rpc_http_reset                          ] error=fail to read [11 Resource temporarily unavailable],host=nginx:7899:7900,port=7899
    [2021-11-29T05:09:28.451638Z 11 INF rpc_connected    
    

    After the reconnect happens, we are unable to post price_update because of the following JSON RPC error:

    Error code: -32002 message: not ready to publish - check rpc / pyth_tx connection
    

    We don't see any matching pythx errors. The only way for us to fix this is to restart the pythd process.

    Ideally pythd would be able to handle those JSON RPC requests without having to restart it after a RPC reconnect.

    opened by opaolini 2
  • Move `pd.h` function definitions to a new `pd.c` file.

    Move `pd.h` function definitions to a new `pd.c` file.

    • Allow including pd.h in test sources without adding -Wno-unused-function (see https://github.com/pyth-network/pyth-client/pull/91).
    • Avoid duplicating definitions across compilation units.

    Source changes: https://github.com/pyth-network/pyth-client/pull/94 Requires https://github.com/pyth-network/pyth-client/issues/90

    cleanup 
    opened by tony-ricciardi 2
  • pythd throws when HOME undefined

    pythd throws when HOME undefined

    pythd crashes with the following when getenv ( "HOME" ) returns nullptr:

    terminate called after throwing an instance of 'std::logic_error'
      what():  basic_string::_M_construct null not valid
    Aborted
    

    HOME being undefined is not common and in my case may be an artifact of what nitro-cli is doing under the hood, but figured this would be helpful for anyone who runs into the same issue. A quick test to ensure the envvar is defined and provide less cryptic output may also be helpful.

    opened by gmarkey 3
  • Pythd Dashboard Issue

    Pythd Dashboard Issue

    We had a few questions about the pythd dashboard referenced in your documentation [here] (https://urldefense.com/v3/https:/docs.pyth.network/publish-data*running-the-dashboard;Iw!!GSt_xZU7050wKg!qOrCVC6LYuM9QkJT5v0UNKyt_FzhxX27xu4cI4ccru8FsSs_jcyUmeVdd1nmza1ybJXCPL-5Ms6r6d3DVKvlSaw$).

    First, the dashboard is broken. The file dashboard/dashboard.js attempts to make a websocket connection to pythd at a hardcoded URL: ws://localhost:8910. This is a problem for multiple reasons: • You might not want to view the dashboard on the same host on which you’re running pythd. • Even if you are viewing the dashboard on the same host as pythd’s docker container, the container’s published port is unlikely to be 8910. The dashboard, as-is, only works if the browser you’re viewing it on is on the same host as pythd and the published port of pythd’s container is 8910. Can your team fix this?

    Second, the dashboard doesn’t seem very useful to a publisher. It shows a view of the current aggregated state of all symbols. It might be more useful to us if it was a view of what pythd was seeing from its clients and sending to the broader pyth network. Is that something that you could change?

    Thanks,

    opened by hkalirai 2
  • Move compilation warnings to CI

    Move compilation warnings to CI

    #![deny(warnings)] reduces development speed because you have to fix all this stuff in order to build/run tests. This makes it harder to iterate on bug fixes, e.g., to quickly change something in your code to see if it fixes a test. It's also bad practice for rust because it can break the build when something in rust changes (see https://rust-unofficial.github.io/patterns/anti_patterns/deny-warnings.html ).

    This PR moves the warning check to CI.

    opened by jayantk 1
  • RPC host fails name resolution if it contains a path

    RPC host fails name resolution if it contains a path

    Hello,

    I'm trying to use a RPC host at rpcpool.com with a URL that looks like this: my-subdomain.rpcpool.com/some-path

    When I pass that URL as the rpc host with the -r flag, the pythd daemon fails with the following error:

    pythd: failed to resolve host
    

    I traced the source code and confirmed that getaddrinfo is being called with the entire URL and not just the hostname, which is where it's failing.

    I'm guessing this is the same underlying issue as #93 but it's hard to tell since they didn't mention where it's failing for them.

    opened by matt-allan 2
Releases(devnet-v2.20.0)
  • devnet-v2.20.0(Dec 20, 2022)

  • pythd-v2.17.3(Dec 5, 2022)

    What's Changed

    • Fix option parsing bug by @jayantk in https://github.com/pyth-network/pyth-client/pull/324

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.19.0...pythd-v2.17.3

    Source code(tar.gz)
    Source code(zip)
  • pythd-v2.17.2(Dec 1, 2022)

    What's Changed

    • Make requested CU amount and price in upd_price transactions configurable in pythd by @tompntn in https://github.com/pyth-network/pyth-client/pull/306
    • Fix spurious too many unacked price update transactions message by @tompntn in https://github.com/pyth-network/pyth-client/pull/274

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/pythd-v2.17.1...pythd-v2.17.2

    Source code(tar.gz)
    Source code(zip)
  • mainnet-v2.16.3(Nov 18, 2022)

    What's Changed

    • Reduce size of Oracle binary by @tompntn in https://github.com/pyth-network/pyth-client/pull/309

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/mainnet-v2.16.2...mainnet-v2.16.3

    Source code(tar.gz)
    Source code(zip)
  • devnet-v2.16.3(Nov 15, 2022)

  • devnet-v2.18.0(Nov 14, 2022)

    What's Changed

    • Rust instructions by @guibescos in https://github.com/pyth-network/pyth-client/pull/264
    • Rust instructions by @guibescos in https://github.com/pyth-network/pyth-client/pull/266
    • Create rust structs and replace bindgen structs by @guibescos in https://github.com/pyth-network/pyth-client/pull/270
    • Cleanup resize, remove print staments, add extra check by @guibescos in https://github.com/pyth-network/pyth-client/pull/272
    • Renames by @guibescos in https://github.com/pyth-network/pyth-client/pull/276
    • Add test for resize instruction by @guibescos in https://github.com/pyth-network/pyth-client/pull/273
    • Update example blockdaemon nginx pythnet config by @tompntn in https://github.com/pyth-network/pyth-client/pull/278
    • Move minimum size check to load_checked and initialize_checked by @guibescos in https://github.com/pyth-network/pyth-client/pull/271
    • Pubkey by @guibescos in https://github.com/pyth-network/pyth-client/pull/277
    • Port MAX_CI_DIVISOR and MAX_NUM_DECIMALS by @guibescos in https://github.com/pyth-network/pyth-client/pull/281
    • Remove as conversions from rust_oracle.rs by @guibescos in https://github.com/pyth-network/pyth-client/pull/282
    • Turn minimum function into constant by @guibescos in https://github.com/pyth-network/pyth-client/pull/280
    • Clenaup constants by @guibescos in https://github.com/pyth-network/pyth-client/pull/283
    • Init permissions by @guibescos in https://github.com/pyth-network/pyth-client/pull/275
    • Get rent by @guibescos in https://github.com/pyth-network/pyth-client/pull/290
    • Sma3 by @guibescos in https://github.com/pyth-network/pyth-client/pull/288
    • Check to see if price account exists in either network when handling subscribe_price_sched by @tompntn in https://github.com/pyth-network/pyth-client/pull/292
    • Improve errors by @guibescos in https://github.com/pyth-network/pyth-client/pull/293
    • Permissions by @guibescos in https://github.com/pyth-network/pyth-client/pull/289
    • Gate sma with test flag by @guibescos in https://github.com/pyth-network/pyth-client/pull/295
    • Guibescos/transition to permissions by @guibescos in https://github.com/pyth-network/pyth-client/pull/297
    • Bump Solana Version to fix CI issue by @jayantk in https://github.com/pyth-network/pyth-client/pull/302
    • Add fPIC flag by @guibescos in https://github.com/pyth-network/pyth-client/pull/303
    • [wip] Request compute units for price update transactions by @jayantk in https://github.com/pyth-network/pyth-client/pull/301
    • Set price per compute unit by @tompntn in https://github.com/pyth-network/pyth-client/pull/304
    • Apply Clippy & Rustfmt to project. by @Reisen in https://github.com/pyth-network/pyth-client/pull/299
    • Set CI threshold to 3 by @jayantk in https://github.com/pyth-network/pyth-client/pull/305
    • Re-organize Modules by @Reisen in https://github.com/pyth-network/pyth-client/pull/300
    • updating security.md by @njkumr in https://github.com/pyth-network/pyth-client/pull/307
    • Enable governance by master authority by @guibescos in https://github.com/pyth-network/pyth-client/pull/308

    New Contributors

    • @njkumr made their first contribution in https://github.com/pyth-network/pyth-client/pull/307

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.16.0...devnet-v2.18.0

    Source code(tar.gz)
    Source code(zip)
    pyth_oracle.so(176.87 KB)
  • mainnet-v2.16.2(Nov 14, 2022)

    Hotfix: increase CI threshold for allowing data providers into the aggregate price.

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.16.1...mainnet-v2.16.2

    Source code(tar.gz)
    Source code(zip)
  • devnet-v2.16.2(Nov 14, 2022)

  • devnet-v2.16.1(Nov 10, 2022)

    Adjust CI threshold to be less aggressive on filtering out data providers.

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.16.0...devnet-v2.16.1

    Source code(tar.gz)
    Source code(zip)
  • pythd-v2.17.0(Nov 9, 2022)

    What's Changed

    • Request compute units for price update transactions by @jayantk in https://github.com/pyth-network/pyth-client/pull/301

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/pythd-v2.15.1...pythd-v2.17.0

    Source code(tar.gz)
    Source code(zip)
  • devnet-v2.17.0(Nov 8, 2022)

    What's Changed

    • Improve errors by @guibescos in https://github.com/pyth-network/pyth-client/pull/293
    • Permissions by @guibescos in https://github.com/pyth-network/pyth-client/pull/289
    • Gate sma with test flag by @guibescos in https://github.com/pyth-network/pyth-client/pull/295
    • Guibescos/transition to permissions by @guibescos in https://github.com/pyth-network/pyth-client/pull/297
    • Bump Solana Version to fix CI issue by @jayantk in https://github.com/pyth-network/pyth-client/pull/302
    • Add fPIC flag by @guibescos in https://github.com/pyth-network/pyth-client/pull/303

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/pythd-v2.15.1...devnet-v2.17.0

    Source code(tar.gz)
    Source code(zip)
    pyth_oracle.so(177.12 KB)
  • pythd-v2.15.1(Sep 13, 2022)

    What's Changed

    • Check to see if price account exists in either network when handling subscribe_price_sched by @tompntn in https://github.com/pyth-network/pyth-client/pull/292

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/pythd-v2.15.0...pythd-v2.15.1

    Source code(tar.gz)
    Source code(zip)
  • mainnet-v2.16.0(Oct 3, 2022)

    What's Changed

    • Cleanup by @guibescos in https://github.com/pyth-network/pyth-client/pull/252
    • Cleanup entrypoint by @guibescos in https://github.com/pyth-network/pyth-client/pull/258
    • Make it build on macs by @jayantk in https://github.com/pyth-network/pyth-client/pull/259
    • Command to delete price accounts by @jayantk in https://github.com/pyth-network/pyth-client/pull/260
    • Add example triton1 pythnet nginx configuration by @tompntn in https://github.com/pyth-network/pyth-client/pull/261
    • Command to delete a product by @jayantk in https://github.com/pyth-network/pyth-client/pull/262

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.15.0...mainnet-v2.16.0

    Source code(tar.gz)
    Source code(zip)
  • devnet-v2.16.0(Aug 22, 2022)

    What's Changed

    • Cleanup by @guibescos in https://github.com/pyth-network/pyth-client/pull/252
    • Cleanup entrypoint by @guibescos in https://github.com/pyth-network/pyth-client/pull/258
    • Make it build on macs by @jayantk in https://github.com/pyth-network/pyth-client/pull/259
    • Command to delete price accounts by @jayantk in https://github.com/pyth-network/pyth-client/pull/260
    • Add example triton1 pythnet nginx configuration by @tompntn in https://github.com/pyth-network/pyth-client/pull/261
    • Command to delete a product by @jayantk in https://github.com/pyth-network/pyth-client/pull/262

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.15.0...devnet-v2.16.0

    Source code(tar.gz)
    Source code(zip)
    pyth_oracle.so(84.71 KB)
  • devnet-v2.15.0(Aug 18, 2022)

    What's Changed

    • Clippy by @guibescos in https://github.com/pyth-network/pyth-client/pull/218
    • Migrate init_mapping to Rust by @jayantk in https://github.com/pyth-network/pyth-client/pull/219
    • Implement add_mapping instruction by @jayantk in https://github.com/pyth-network/pyth-client/pull/221
    • Test init mapping by @guibescos in https://github.com/pyth-network/pyth-client/pull/222
    • Add price rust by @guibescos in https://github.com/pyth-network/pyth-client/pull/220
    • Removed Borsh by @majabbour in https://github.com/pyth-network/pyth-client/pull/224
    • Add mapping tests by @guibescos in https://github.com/pyth-network/pyth-client/pull/223
    • Implement add product instruction by @jayantk in https://github.com/pyth-network/pyth-client/pull/225
    • Add check_valid functions to allow for more precise errors by @jayantk in https://github.com/pyth-network/pyth-client/pull/226
    • Rust/add publisher by @guibescos in https://github.com/pyth-network/pyth-client/pull/229
    • Use pubkey functions everywhere by @guibescos in https://github.com/pyth-network/pyth-client/pull/231
    • Simplistic trait by @guibescos in https://github.com/pyth-network/pyth-client/pull/232
    • Migrate upd_product instruction by @jayantk in https://github.com/pyth-network/pyth-client/pull/228
    • Traits2 by @guibescos in https://github.com/pyth-network/pyth-client/pull/233
    • Set min pub instruction by @jayantk in https://github.com/pyth-network/pyth-client/pull/235
    • Rust/more tests by @guibescos in https://github.com/pyth-network/pyth-client/pull/234
    • Check length by @guibescos in https://github.com/pyth-network/pyth-client/pull/236
    • Specifying account check errors by @majabbour in https://github.com/pyth-network/pyth-client/pull/243
    • Only send one price update per price per slot by @tompntn in https://github.com/pyth-network/pyth-client/pull/244
    • Make pub_int configurable from pythd by @tompntn in https://github.com/pyth-network/pyth-client/pull/245
    • Rust/del publisher by @guibescos in https://github.com/pyth-network/pyth-client/pull/237
    • Implement init_price instruction by @jayantk in https://github.com/pyth-network/pyth-client/pull/242
    • New interface with time machine by @majabbour in https://github.com/pyth-network/pyth-client/pull/230
    • Move to utils by @majabbour in https://github.com/pyth-network/pyth-client/pull/247
    • Export upd_aggregate by @guibescos in https://github.com/pyth-network/pyth-client/pull/249
    • Upd price in rust by @guibescos in https://github.com/pyth-network/pyth-client/pull/248
    • Delete test_oracle.c by @guibescos in https://github.com/pyth-network/pyth-client/pull/255
    • Run aggregation tests in CI by @guibescos in https://github.com/pyth-network/pyth-client/pull/257
    • Debug feature by @guibescos in https://github.com/pyth-network/pyth-client/pull/256

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.14.0...devnet-v2.15.0

    Source code(tar.gz)
    Source code(zip)
    pyth_oracle.so(83.27 KB)
  • pythd-v2.15.0(Aug 11, 2022)

    What's Changed

    • Only send one price update per price per slot by @tompntn in https://github.com/pyth-network/pyth-client/pull/244
    • Make pub_int configurable from pythd by @tompntn in https://github.com/pyth-network/pyth-client/pull/245

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.14.0...pythd-v2.15.0

    Source code(tar.gz)
    Source code(zip)
  • devnet-v2.14.0(Aug 1, 2022)

    What's Changed

    • Add pyth2wormhole audit links by @claudijd in https://github.com/pyth-network/pyth-client/pull/172
    • Publish pythd releases by @tompntn in https://github.com/pyth-network/pyth-client/pull/173
    • Batch price updates across all websocket users by @wijagels in https://github.com/pyth-network/pyth-client/pull/175
    • Add pyth governance audit by @claudijd in https://github.com/pyth-network/pyth-client/pull/177
    • Add support for a secondary network by @tompntn in https://github.com/pyth-network/pyth-client/pull/178
    • Check exponent range by @jayantk in https://github.com/pyth-network/pyth-client/pull/179
    • Bump solana 2 by @guibescos in https://github.com/pyth-network/pyth-client/pull/181
    • Remove upd_test and init_test oracle instructions by @tompntn in https://github.com/pyth-network/pyth-client/pull/182
    • Rust entrypoint by @guibescos in https://github.com/pyth-network/pyth-client/pull/184
    • Add C++ pythd websocket example by @tompntn in https://github.com/pyth-network/pyth-client/pull/183
    • Update README to reference pythd image tag by @tompntn in https://github.com/pyth-network/pyth-client/pull/187
    • Add OtterSec and move other audits to relative repos by @claudijd in https://github.com/pyth-network/pyth-client/pull/186
    • Add docker pinning by @claudijd in https://github.com/pyth-network/pyth-client/pull/188
    • changed c return value of update price to indicate aggregation (#190) by @majabbour in https://github.com/pyth-network/pyth-client/pull/191
    • link with c only when target is bpf by @majabbour in https://github.com/pyth-network/pyth-client/pull/195
    • Syncing account sizes between c and rust by @majabbour in https://github.com/pyth-network/pyth-client/pull/197
    • Called cargo fmt by @majabbour in https://github.com/pyth-network/pyth-client/pull/200
    • Remove test_publish.cpp example by @tompntn in https://github.com/pyth-network/pyth-client/pull/199
    • Borsch traits using bindgen by @majabbour in https://github.com/pyth-network/pyth-client/pull/196
    • Only return SUCCESSFULLY_UPDATED_AGGREGATE if upd_twap was called [bug fix] by @majabbour in https://github.com/pyth-network/pyth-client/pull/202
    • Made Price_t member offsets available to Rust by @majabbour in https://github.com/pyth-network/pyth-client/pull/203
    • Rust logging 2 by @guibescos in https://github.com/pyth-network/pyth-client/pull/198
    • Rust logging 2 by @guibescos in https://github.com/pyth-network/pyth-client/pull/205
    • Twap tracker production by @guibescos in https://github.com/pyth-network/pyth-client/pull/214
    • Publish binary at release by @guibescos in https://github.com/pyth-network/pyth-client/pull/211
    • Format by @guibescos in https://github.com/pyth-network/pyth-client/pull/215
    • More logging by @guibescos in https://github.com/pyth-network/pyth-client/pull/217

    New Contributors

    • @wijagels made their first contribution in https://github.com/pyth-network/pyth-client/pull/175

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.13.0...devnet-v2.14.0

    Source code(tar.gz)
    Source code(zip)
    pyth_oracle.so(109.96 KB)
  • pythd-v2.14.0(Jul 11, 2022)

    • [pythd] Batch price updates across all websocket users by @wijagels and @146karol in #175
    • [pythd] Add support for a secondary network by @tompntn in #178
    • [pyth] Check exponent range by @jayantk in #179
    • [pyth] Remove upd_test and init_test oracle instructions by @tompntn in #182
    • [pythd] Bump Solana version to 1.10.29 by @guibescos in #181
    • [pyth] Add Rust entrypoint by @guibescos and @majabbour in #184

    Full changelog: https://github.com/pyth-network/pyth-client/compare/pythd-v2.13.0...pythd-v2.14.0

    Source code(tar.gz)
    Source code(zip)
  • testnet-v2.13.0(May 17, 2022)

    • [pyth] Filter out publisher quotes with wide CIs by @jayantk in https://github.com/pyth-network/pyth-client/pull/166
    • [pythd] Flush batches early by @jayantk in https://github.com/pyth-network/pyth-client/pull/167
    • [pyth] Improve accuracy of rent exemption check by @tompntn in https://github.com/pyth-network/pyth-client/pull/168
    Source code(tar.gz)
    Source code(zip)
  • mainnet-v2.13.0(May 17, 2022)

    • [pyth] Filter out publisher quotes with wide CIs by @jayantk in https://github.com/pyth-network/pyth-client/pull/166
    • [pythd] Flush batches early by @jayantk in https://github.com/pyth-network/pyth-client/pull/167
    • [pyth] Improve accuracy of rent exemption check by @tompntn in https://github.com/pyth-network/pyth-client/pull/168
    Source code(tar.gz)
    Source code(zip)
  • devnet-v2.13.0(May 17, 2022)

    • [pyth] Filter out publisher quotes with wide CIs by @jayantk in https://github.com/pyth-network/pyth-client/pull/166
    • [pythd] Flush batches early by @jayantk in https://github.com/pyth-network/pyth-client/pull/167
    • [pyth] Improve accuracy of rent exemption check by @tompntn in https://github.com/pyth-network/pyth-client/pull/168
    Source code(tar.gz)
    Source code(zip)
  • pythd-v2.13.0(May 5, 2022)

    • [pyth] Filter out publisher quotes with wide CIs by @jayantk in https://github.com/pyth-network/pyth-client/pull/166
    • [pythd] Flush batches early by @jayantk in https://github.com/pyth-network/pyth-client/pull/167
    • [pyth] Improve accuracy of rent exemption check by @tompntn in https://github.com/pyth-network/pyth-client/pull/168

    Full Changelog: https://github.com/pyth-network/pyth-client/compare/devnet-v2.12.0...pythd-v2.13.0

    Source code(tar.gz)
    Source code(zip)
  • testnet-v2.12.0(Apr 26, 2022)

    • [pythd] Make batch size configurable.
    • [pythd] Fix inaccurate num_sent metric for last element in batch.
    • [pyth] Aggregation logic adjustment.
    Source code(tar.gz)
    Source code(zip)
  • mainnet-v2.12.0(Apr 28, 2022)

    • [pythd] Make batch size configurable.
    • [pythd] Fix inaccurate num_sent metric for last element in batch.
    • [pyth] Aggregation logic adjustment.
    Source code(tar.gz)
    Source code(zip)
  • devnet-v2.12.0(Apr 26, 2022)

    • [pythd] Make batch size configurable.
    • [pythd] Fix inaccurate num_sent metric for last element in batch.
    • [pyth] Aggregation logic adjustment.
    Source code(tar.gz)
    Source code(zip)
  • mainnet-v2.11.2(Apr 19, 2022)

  • testnet-v2.11.2(Apr 14, 2022)

  • devnet-v2.11.2(Apr 14, 2022)

  • testnet-v2.11.1(Apr 6, 2022)

Owner
Pyth Network
Bringing real-world data on-chain at a sub-second timescale
Pyth Network
Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC or RDP)

Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC)

null 34 Dec 16, 2022
A Rust crate that simplifies the integration of Rust and eBPF programs written in C.

This crate simplifies the compilation of eBPF programs written in C integrating clang with Rust and the cargo build system with functions that can be

Simone Margaritelli 19 Mar 16, 2022
XDP programs that increment stat counters for packets/bytes.

XDP Stats Description This is a program that calculates stats inside of an XDP program (support for both XDP_DROP and XDP_TX). As of right now, the st

Christian Deacon 10 Oct 30, 2022
Extract TLS session keys from running programs

Tlskeydump Tlskeydump extracts TLS key material from processes at runtime so that packet captures containing TLS-encrypted data can be decrypted and a

Konstantinos Tsanaktsidis 7 Sep 5, 2022
Examples and test programs I made while learning the DPDK.

The DPDK Examples (WIP) Description A small repository I will be using to store my progress and test programs from the DPDK, a kernel bypass library v

Christian Deacon 24 Dec 19, 2022
A collection of eBPF programs demonstrating bad behavior

Bad BPF A collection of malicious eBPF programs that make use of eBPF's ability to read and write user data in between the usermode program and the ke

pat_h/to/file 288 Dec 26, 2022
SimpleSockets is a lightweight set of classes that allow developers to implement IP based network programs.

------------------------------------------------------------------------------------------ * History -------------------------------------------------

DFHack 143 Dec 8, 2022
Source-code based coverage for eBPF programs actually running in the Linux kernel

bpfcov Source-code based coverage for eBPF programs actually running in the Linux kernel This project provides 2 main components: libBPFCov.so - an ou

elastic 113 Nov 23, 2022
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

Welcome! The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design

Microsoft 7.2k Dec 30, 2022
Online chess platform (client-server) in Python with StockFish API

PyChess Gra w szachy tylko w Pythonie :) Wymagania Python 3.8 Instalacja Wchodzimy i pobieramy najnowsze wydanie aplikacji. https://github.com/Rafixe

Rafał Hrabia 6 Oct 7, 2021
Neon - neon - an HTTP/1.1 and WebDAV client library with a C API

neon neon is an HTTP and WebDAV client library, with a C language API. Mailing list: [email protected] || Web site: https://notroj.github.io/n

Joe Orton 88 Dec 31, 2022
Triton Python and C++ client libraries and example, and client examples for go, java and scala.

Triton Client Libraries and Examples To simplify communication with Triton, the Triton project provides several client libraries and examples of how t

Triton Inference Server 228 Jan 5, 2023
VEngine-Client - vEngine: Official Client Module

━ S Y N O P S I S ━ Maintainer(s): Aviril, Tron vEngine is Next-Gen Sandbox-Engine being crafted in C++. In contrast to UE/Unity/ReverseEngineered-Mod

ᴠ : ꜱᴛᴜᴅɪᴏ 15 Sep 7, 2022
Webdav-client-cpp - C++ WebDAV Client provides easy and convenient to work with WebDAV-servers.

WebDAV Client Package WebDAV Client provides easy and convenient to work with WebDAV-servers: Yandex.Disk Dropbox Google Drive Box 4shared ownCloud ..

Cloud Polis 103 Jan 1, 2023
This repository provides a C++ client SDK for Unleash that meets the Unleash Client Specifications.

Unleash Client SDK for C++ This repository provides a C++ client SDK for Unleash that meets the Unleash Client Specifications. Features The below tabl

Antonio Ruiz 4 Jan 30, 2022
Mongoose Embedded Web Server Library - a multi-protocol embedded networking library with TCP/UDP, HTTP, WebSocket, MQTT built-in protocols, async DNS resolver, and non-blocking API.

Mongoose - Embedded Web Server / Embedded Networking Library Mongoose is a networking library for C/C++. It implements event-driven non-blocking APIs

Cesanta Software 9k Jan 1, 2023
Like libevent and libuv, libhv provides event-loop with non-blocking IO and timer, but simpler api and richer protocols.

中文版 Intro Like libevent, libev, and libuv, libhv provides event-loop with non-blocking IO and timer, but simpler api and richer protocols. Features cr

ithewei 5k Jan 4, 2023
Wrapper library for the BSD sockets API with a nicer C99 interface

A wrapper library for the BSD sockets API. Why? This library trades the series of getaddrinfo, socket, connect, bind, listen, etc. functions and their

Scott Vokes 136 Dec 10, 2022
A mini C library for interacting with the Twitter OAuth api.

twitc A mini C library for interacting with the Twitter OAuth api. Installation: # if deps need to be installed: ./install_deps.sh /usr/local # build

Sam Garrett 25 Apr 30, 2021