1673558400
Web3_proxy is a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers.
Under construction! This code is under active development. If you want to run this proxy youself, send me a message on Twitter and I can explain things that aren't documented yet. Most RPC methods are supported, but filters are coming soon. And of course, more tests are always needed.
Signed transactions (eth_sendRawTransaction) are sent in parallel to the configured private RPCs (eden, ethermine, flashbots, etc.).
All other requests are sent to an RPC server on the latest block (alchemy, moralis, rivet, your own node, or one of many other providers). If multiple servers are in sync, they are prioritized by active_requests/soft_limit
. Note that this means that the fastest server is most likely to serve requests and slow servers are unlikely to ever get any requests.
Each server has different limits to configure. The soft_limit
is the number of parallel active requests where a server starts to slow down. The hard_limit
is where a server starts giving rate limits or other errors.
docker-compose up -d
to start the database and caches. See docker-compose.yml
for details../config/example.toml
to ./config/development.toml
and change settings to match your setup.cargo
commands:$ cargo run --release -- --help
Compiling web3_proxy v0.1.0 (/home/bryan/src/web3_proxy/web3_proxy)
Finished release [optimized + debuginfo] target(s) in 17.69s
Running `target/release/web3_proxy --help`
Usage: web3_proxy [--port <port>] [--workers <workers>] [--config <config>]
web3_proxy is a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers.
Options:
--port what port the proxy should listen on
--workers number of worker threads
--config path to a toml of rpc servers
--help display usage information
Start the server with the defaults (listen on http://localhost:8544
and use ./config/development.toml
which uses the database and cache running under docker and proxies to a bunch of public nodes:
cargo run --release
Create a user:
cargo run --bin web3_proxy_cli -- --db-url "$YOUR_DB_URL" create_user --address "$USER_ADDRESS_0x"
Check that the proxy is working:
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_clientVersion","id":1}' 127.0.0.1:8544
Check that the websocket is working:
$ websocat ws://127.0.0.1:8544
{"id": 1, "method": "eth_subscribe", "params": ["newHeads"]}
{"id": 2, "method": "eth_subscribe", "params": ["newPendingTransactions"]}
{"id": 3, "method": "eth_subscribe", "params": ["newPendingFullTransactions"]}
{"id": 4, "method": "eth_subscribe", "params": ["newPendingRawTransactions"]}
You can copy config/example.toml
to config/production-$CHAINNAME.toml
and then run docker-compose up --build -d
start proxies for many chains.
Compare 3 RPCs:
web3_proxy_cli health_compass https://eth.llamarpc.com https://eth-ski.llamarpc.com https://rpc.ankr.com/eth
This is only really useful during development. The migrations run on application start.
cd migration
cargo run up
web3_proxy_cli --config ... create_user --address 0x0000000000000000000000000000000000000000 --email infra@llamanodes.com --description "..."
Copy the ULID key (or UUID key) out of the above command, and put it into the following command.
web3_proxy_cli --config ... change_user_tier_by_key "$RPC_ULID_KEY_FROM_PREV_COMMAND" "Unlimited"
Health check 3 servers and error if the first one doesn't match the others.
web3_proxy_cli https://eth.llamarpc.com/ https://rpc.ankr.com/eth https://cloudflare-eth.com
cargo install sea-orm-cli
sea-orm-cli migrate
sea-orm-cli generate entity -u mysql://root:dev_web3_proxy@127.0.0.1:13306/dev_web3_proxy -o entities/src --with-serde both
Vec<u8>
-> sea_orm::prelude::Uuid
and i8
-> bool
. Related: https://github.com/SeaQL/sea-query/issues/375 https://github.com/SeaQL/sea-orm/issues/924Flame graphs make a developer's join of finding slow code painless:
$ cat /proc/sys/kernel/kptr_restrict
1
$ echo 0 | sudo tee /proc/sys/kernel/kptr_restrict
0
$ cat /proc/sys/kernel/perf_event_paranoid
4
$ echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
-1
$ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin web3_proxy --no-inline
Be sure to use --no-inline
or perf will be VERY slow
Developers can run the proxy under gdb for advanced debugging:
cargo build --release && RUST_LOG=web3_proxy=debug rust-gdb --args target/debug/web3_proxy --listen-port 7503 --rpc-config-path ./config/production-eth.toml
TODO: also enable debug symbols in the release build by modifying the root Cargo.toml
Test the proxy:
wrk -s ./wrk/getBlockNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8544/u/$API_KEY
wrk -s ./wrk/getLatestBlockByNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8544/u/$API_KEY
Test geth (assuming it is on 8545):
wrk -s ./wrk/getBlockNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8545
wrk -s ./wrk/getLatestBlockByNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8545
Test erigon (assuming it is on 8945):
wrk -s ./wrk/getBlockNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8945
wrk -s ./wrk/getLatestBlockByNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8945
Note: Testing with getLatestBlockByNumber.lua
is not great because the latest block changes and so one run is likely to be very different than another.
Run ethspam and versus for a more realistic load test:
ethspam --rpc http://127.0.0.1:8544 | versus --concurrency=100 --stop-after=10000 http://127.0.0.1:8544
ethspam --rpc http://127.0.0.1:8544/u/$API_KEY | versus --concurrency=100 --stop-after=10000 http://127.0.0.1:8544/u/$API_KEY
Author: llamanodes
Source code: https://github.com/llamanodes/web3-proxy
License: GPL-3.0 license
#ethereum #blockchain #bitcoin
1672986240
A curated list of awesome Ethereum Ressources. Inspired by awesome-go.
Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!
If you see a link or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!
Basic {#basic}
Bitcoin 2.0? a world computer? a smart contracts platform?
If you feel like going to the source
Remembering a time where the price of Ether was 2000 ETH per BTC
The Ethereum Foundation’s mission is to promote and support research, development and education to bring decentralized protocols and tools to the world that empower developers to produce next generation decentralized applications (DAPPs), and together build a more globally accessible, more free and more trustworthy Internet.
Clients {#clients}
Implementations of the Ethereum protocol.
The Ethereum network {#network}
Need information about a block, a current difficulty, the network hashrate?
Ether {#ether}
Ether is the name of the currency used within Ethereum
SPOILER: There are about 77 million ethers in existence and every new block (an average of 15 seconds) creates 5 new ether.
Where you can trade ethers - Remember: if you don't control the private you don't really control the ethers
Free Ether? don't have big expectation :)
Wallets {#wallets}
To store your ethers
Mining {#mining}
let's make the network work! and earn some ethers!
Fell alone? join a pool
Smart Contract languages {#smart-contracts-languages}
Solidity, the JavaScript-like language
Serpent, the Python-like language
LLL, the Lisp-like languagee
DAPP {#dapp}
Others awesome things & concepts {#others}
an upcoming P2P messaging protocol that will be integrated into the EtherBrowser.
Ethereum compatible JavaScript API which implements the Generic JSON RPC spec.
Gas is the fundamental network cost unit and is paid for exclusively in ether.
Projects using Ethereum {#projects}
Companies {#companies}
Community {#community}
Stay up to date! {#up-to-date}
Contributing
Your contributions are always welcome! Please take a look at the contribution guidelines first.
I would keep some pull requests open if I'm not sure whether the content are awesome, you could vote for them by leaving a comment that contains +1
.
To be added
Author: lampGit
Source code: https://github.com/lampGit/awesome-ethereum
1625808587
Our dedicated Ethereum developers can create blockchain wallet apps, smart contracts, distributed applications (dApp), cryptocurrency (bitcoin) apps and more. Our experts work as your extended team and are capable to deliver quality Ethereum solutions meeting your business challenges.
Why Go For Hiring Ethereum Developers?
Hiring Blockchain Ethereum developers and programmers from India can help you save your time and cost. You get optimum quality Ethereum software solutions at highly affordable prices.
#ethereum developers #hire offshore ethereum developer #hire blockchain ethereum developers #dedicated ethereum developers #hire ethereum developers #hire ethereum developers in india
1673558400
Web3_proxy is a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers.
Under construction! This code is under active development. If you want to run this proxy youself, send me a message on Twitter and I can explain things that aren't documented yet. Most RPC methods are supported, but filters are coming soon. And of course, more tests are always needed.
Signed transactions (eth_sendRawTransaction) are sent in parallel to the configured private RPCs (eden, ethermine, flashbots, etc.).
All other requests are sent to an RPC server on the latest block (alchemy, moralis, rivet, your own node, or one of many other providers). If multiple servers are in sync, they are prioritized by active_requests/soft_limit
. Note that this means that the fastest server is most likely to serve requests and slow servers are unlikely to ever get any requests.
Each server has different limits to configure. The soft_limit
is the number of parallel active requests where a server starts to slow down. The hard_limit
is where a server starts giving rate limits or other errors.
docker-compose up -d
to start the database and caches. See docker-compose.yml
for details../config/example.toml
to ./config/development.toml
and change settings to match your setup.cargo
commands:$ cargo run --release -- --help
Compiling web3_proxy v0.1.0 (/home/bryan/src/web3_proxy/web3_proxy)
Finished release [optimized + debuginfo] target(s) in 17.69s
Running `target/release/web3_proxy --help`
Usage: web3_proxy [--port <port>] [--workers <workers>] [--config <config>]
web3_proxy is a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers.
Options:
--port what port the proxy should listen on
--workers number of worker threads
--config path to a toml of rpc servers
--help display usage information
Start the server with the defaults (listen on http://localhost:8544
and use ./config/development.toml
which uses the database and cache running under docker and proxies to a bunch of public nodes:
cargo run --release
Create a user:
cargo run --bin web3_proxy_cli -- --db-url "$YOUR_DB_URL" create_user --address "$USER_ADDRESS_0x"
Check that the proxy is working:
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_clientVersion","id":1}' 127.0.0.1:8544
Check that the websocket is working:
$ websocat ws://127.0.0.1:8544
{"id": 1, "method": "eth_subscribe", "params": ["newHeads"]}
{"id": 2, "method": "eth_subscribe", "params": ["newPendingTransactions"]}
{"id": 3, "method": "eth_subscribe", "params": ["newPendingFullTransactions"]}
{"id": 4, "method": "eth_subscribe", "params": ["newPendingRawTransactions"]}
You can copy config/example.toml
to config/production-$CHAINNAME.toml
and then run docker-compose up --build -d
start proxies for many chains.
Compare 3 RPCs:
web3_proxy_cli health_compass https://eth.llamarpc.com https://eth-ski.llamarpc.com https://rpc.ankr.com/eth
This is only really useful during development. The migrations run on application start.
cd migration
cargo run up
web3_proxy_cli --config ... create_user --address 0x0000000000000000000000000000000000000000 --email infra@llamanodes.com --description "..."
Copy the ULID key (or UUID key) out of the above command, and put it into the following command.
web3_proxy_cli --config ... change_user_tier_by_key "$RPC_ULID_KEY_FROM_PREV_COMMAND" "Unlimited"
Health check 3 servers and error if the first one doesn't match the others.
web3_proxy_cli https://eth.llamarpc.com/ https://rpc.ankr.com/eth https://cloudflare-eth.com
cargo install sea-orm-cli
sea-orm-cli migrate
sea-orm-cli generate entity -u mysql://root:dev_web3_proxy@127.0.0.1:13306/dev_web3_proxy -o entities/src --with-serde both
Vec<u8>
-> sea_orm::prelude::Uuid
and i8
-> bool
. Related: https://github.com/SeaQL/sea-query/issues/375 https://github.com/SeaQL/sea-orm/issues/924Flame graphs make a developer's join of finding slow code painless:
$ cat /proc/sys/kernel/kptr_restrict
1
$ echo 0 | sudo tee /proc/sys/kernel/kptr_restrict
0
$ cat /proc/sys/kernel/perf_event_paranoid
4
$ echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
-1
$ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin web3_proxy --no-inline
Be sure to use --no-inline
or perf will be VERY slow
Developers can run the proxy under gdb for advanced debugging:
cargo build --release && RUST_LOG=web3_proxy=debug rust-gdb --args target/debug/web3_proxy --listen-port 7503 --rpc-config-path ./config/production-eth.toml
TODO: also enable debug symbols in the release build by modifying the root Cargo.toml
Test the proxy:
wrk -s ./wrk/getBlockNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8544/u/$API_KEY
wrk -s ./wrk/getLatestBlockByNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8544/u/$API_KEY
Test geth (assuming it is on 8545):
wrk -s ./wrk/getBlockNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8545
wrk -s ./wrk/getLatestBlockByNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8545
Test erigon (assuming it is on 8945):
wrk -s ./wrk/getBlockNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8945
wrk -s ./wrk/getLatestBlockByNumber.lua -t12 -c400 -d30s --latency http://127.0.0.1:8945
Note: Testing with getLatestBlockByNumber.lua
is not great because the latest block changes and so one run is likely to be very different than another.
Run ethspam and versus for a more realistic load test:
ethspam --rpc http://127.0.0.1:8544 | versus --concurrency=100 --stop-after=10000 http://127.0.0.1:8544
ethspam --rpc http://127.0.0.1:8544/u/$API_KEY | versus --concurrency=100 --stop-after=10000 http://127.0.0.1:8544/u/$API_KEY
Author: llamanodes
Source code: https://github.com/llamanodes/web3-proxy
License: GPL-3.0 license
#ethereum #blockchain #bitcoin
1621339959
We have delivered excellent software development services for the last 15 years as an IT service provider. ValueCoders provides IT outsourcing services across the world. With their agile approach and proven methodologies, they enable digital transformation in existing businesses. Having expertise of 450+ professionals, ValueCoders have yielded optimal results. An ISO 9001:2008 certified company that has successfully delivered 4,200+ projects with 2,500 of happy customers from across the world. Being a blockchain development company, we have expertise in Ethereum wallet development and much more. Hire Ethereum developers from us and build customized wallets today!
Read Complete blog here:https://www.valuecoders.com/blog/technology-and-apps/top-10-ethereum-wallets-to-watch-out-for-in-2019/?utm_source=ethereum&utm_medium=av189&utm_campaign=web
#hire ethereum developers #hire ethereum developer #ethereum development team #ethereum developers #ethereum app development company #ethereum app development
1621251999
On the off chance that you fall in the subsequent class, Quick Flow Male Enhancement is the thing that your body is needing right now. The recently discovered male arrangement is the difficult solver for numerous types and types of erectile pressure causing brokenness and causes those issues to be rectified and henceforth blessings you with the more youthful sexual variant.
What is Quick Flow Male Enhancement?
With the new pill, you can supplant all extraordinary and numerous allopathic drugs you had been taking for each issue in an unexpected way. Quick Flow Male Enhancement is the one in all treating instrument pill and causes those explicitly hurtful issues to get right. Regardless of everything, those obstacles are restored and unquestionably, you can feel that the sexual peaks are better. This item builds body imperativeness and the measure of discharge that is required is likewise directed by it.
**How can it really function? **
Different results of this class have numerous regular Ingredients in them, yet the ones here in Quick Flow Male Enhancement are truly uncommon and furthermore natural in their reap and produce. This allows you to get the experience of the truth of more profound sex intercourse which you generally thought was a fantasy for you. Positively, this is a demonstrated natural thing, and relying upon it is no place off-base according to specialists. It is time that your body is given valuable minerals as requested by age.
It is fundamental that you visit the site and see by your own eyes you willing we are to help you in each progression. Start from the terms and furthermore know inconspicuously the states of procurement. Any question must be addressed as of now or, more than likely later things probably won’t go as you might suspect. Purchase Quick Flow Male Enhancement utilizing any method of online installment and you may likewise go for the simple EMI choice out there.
https://www.facebook.com/Quick-Flow-Male-Enhancement-111452187779423
#quick flow male enhancement #quick flow male enhancement reviews #quick flow male enhancement male health #quick flow male enhancement review #quick flow male enhancement offer #quick flow male enhancement trial