Skip to content

Commit

Permalink
initial version of rpc server
Browse files Browse the repository at this point in the history
  • Loading branch information
asiegel-jt committed Jun 27, 2024
1 parent 453d88b commit a66a378
Show file tree
Hide file tree
Showing 21 changed files with 7,930 additions and 0 deletions.
1 change: 1 addition & 0 deletions config/extra/with-rpcserver.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
FD_WITH_RPCSERVER:=1
10 changes: 10 additions & 0 deletions src/app/rpcserver/Local.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
ifdef FD_WITH_RPCSERVER

LDFLAGS+=-Wl,--push-state,-Bstatic -lmicrohttpd -Wl,--pop-state -lgmp -lcrypto

$(call make-bin,fd_rpcserver,main fd_block_to_json fd_methods fd_rpc_service fd_webserver json_lex keywords,fd_flamenco fd_ballet fd_reedsol fd_disco fd_funk fd_shred fd_tango fd_choreo fd_waltz fd_util, $(SECP256K1_LIBS))

$(call make-unit-test,test_rpc_keywords,test_keywords keywords,fd_util)
$(call fuzz-test,fuzz_json_lex,fuzz_json_lex,fd_util)

endif
74 changes: 74 additions & 0 deletions src/app/rpcserver/deps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#!/usr/bin/env bash

set -euo pipefail

# Install prefix
cd ../../..
PREFIX="$(pwd)/opt"

checkout_gnuweb () {
# Skip if dir already exists
if [[ -d ./opt/gnuweb/"$1" ]]; then
echo "[~] Skipping $1 fetch as \"$(pwd)/opt/gnuweb/$1\" already exists"
else
echo "[+] Cloning $1 from $2/$3.tar.gz"
curl -o - -L "$2/$3.tar.gz" | gunzip | tar xf - -C ./opt/gnuweb
mv ./opt/gnuweb/$3 ./opt/gnuweb/$1
echo
fi
}

fetch () {
mkdir -pv ./opt/gnuweb
checkout_gnuweb libmicrohttpd https://ftp.gnu.org/gnu/libmicrohttpd/ "libmicrohttpd-0.9.77"
}

install_libmicrohttpd () {
cd ./opt/gnuweb/libmicrohttpd/
./configure \
--prefix="$PREFIX" \
--disable-https \
--disable-curl \
--disable-dauth \
--with-pic
make -j
make install

echo "[+] Successfully installed libmicrohttpd"
}

install () {
CC="$(command -v gcc)"
cc="$CC"
export CC
export cc

( install_libmicrohttpd )

echo "[~] Done!"
}

ACTION=0
while [[ $# -gt 0 ]]; do
case $1 in
fetch)
shift
fetch
ACTION=1
;;
install)
shift
install
ACTION=1
;;
*)
echo "Unknown command: $1" >&2
exit 1
;;
esac
done

if [[ $ACTION == 0 ]]; then
fetch
install
fi
513 changes: 513 additions & 0 deletions src/app/rpcserver/fd_block_to_json.c

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions src/app/rpcserver/fd_block_to_json.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
typedef enum {
FD_ENC_BASE58, FD_ENC_BASE64, FD_ENC_BASE64_ZSTD, FD_ENC_JSON, FD_ENC_JSON_PARSED
} fd_rpc_encoding_t;

enum fd_block_detail { FD_BLOCK_DETAIL_FULL, FD_BLOCK_DETAIL_ACCTS, FD_BLOCK_DETAIL_SIGS, FD_BLOCK_DETAIL_NONE };

int fd_txn_meta_to_json( fd_textstream_t * ts,
const void * meta_raw,
ulong meta_raw_sz );

int fd_txn_to_json( fd_textstream_t * ts,
fd_txn_t* txn,
const uchar* raw,
fd_rpc_encoding_t encoding,
long maxvers,
enum fd_block_detail detail,
int rewards );

int fd_block_to_json( fd_textstream_t * ts,
long call_id,
fd_block_t * blk,
const uchar * blk_data,
ulong blk_sz,
fd_slot_meta_t * meta,
fd_rpc_encoding_t encoding,
long maxvers,
enum fd_block_detail detail,
int rewards);

#define FD_LONG_UNSET (1L << 63L)

const char* fd_account_to_json( fd_textstream_t * ts,
fd_pubkey_t acct,
fd_rpc_encoding_t enc,
uchar const * val,
ulong val_sz,
long off,
long len );
Loading

0 comments on commit a66a378

Please sign in to comment.