Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Contributions are welcome! Open an issue on here.
Please be nice to everyone.
All Protos used by Cashkit. ⚙️
This repo contains all proto files and generated code used by the cashkit
org.
https://github.com/cashkit/protos/tree/main/bchrpc
Valid transaction using the FT.cash contract with single OP_RETURN: https://explorer.bitcoin.com/bch/tx/a71eae6cd8864dca5e184f49093f1b0b9cb49572959354f9ad72e5d0c0a3fa8c
Valid transaction using the FT.cash contract with 2 OP_RETURN (SLP AND MEMO): https://explorer.bitcoin.com/bch/tx/9d1893ddedd9f1d041521c3f98508883856c3efde2406980dd3aa7af1c1b19bb
NFT1-Group: https://explorer.bitcoin.com/bch/tx/110426292c63fe0db0932b4dc1c49594127e9b2e1a6d66a3e5696a830de9f3dd
Genesis: 5000
NFT1-Child: https://explorer.bitcoin.com/bch/tx/546c0ca35ac4612a5ed800acc27b7c67888c874717fd1e385c07a9790240701b
Genesis: 1
Document URI: (hex to utf8)456c656374726963204d6f75736520302e346d20362e306b67 = Electric Mouse 0.4m 6.0kg
Document hash: 4335393041313135313339423742383046324543323237334431364436353744 = C590A115139B7B80F2EC2273D16D657D
https://explorer.bitcoin.com/bch/tx/dc8cbc6486709dea0f23db356549a23d53714a1845172c034fec201cd55c203f
React + gRPC + bchd = 💚
This project is under development. Stuff can break.
Runing Envoy + React + Tests in a single terminal
cd cashweb/
docker-compose build
docker-compose up
Running separatly [3 terminals]
React app:
npm install
npm start
or
docker build -f Dockerfile.dev -t webclient .
docker run -p 3000:3000 -v /app/node_modules -v $(pwd):/app webclient
Tests: npm run test
Envoy:
cd envoy/
docker build -t envoy .
docker run -p 8080:8080 envoy
Go to the browser at localhost:3000
Recreate proto files: ./src/protos/genproto.sh
React
gPRC, Web gRPC
Typescript
Hooks
Lazy loading, Code splitting
Error boundaries
Hot Reload
Components.
Memoized Components. (Prevents unnecessary rerendering)
Components: They are dumb, they only display the data provided. It may contain some conditional operators and are easy to memoize.
Containers: They are smart components the are aware of the props. (Props could be directly from the parent or from the store.) These smart components can make calls to business logic code or update the app state.
Views: These components contain containers and are also aware of the app state.
Redux: Consists of Actions, Reducers, Sagas and other business logic.
Utils: Consists of helper functions.
Protos: Used to connect to gRPC Server and act as a connection client.
Managers:
gRPC Manager. inspired from grpc-bchrpc-browser
Docker/Docker Compose: Containerises the application.
Hot reload via shared volumes in development mode.
Envoy: Envoy translates the HTTP/ 1.1 calls produced by the client into HTTP/ 2 calls that can be handled by the services.
Node interaction: Live Transactions, Fetch Transaction details, Fetch Block details
Scripts:
genproto.sh
Testing: Snapshot testing of Components.
After doing a lot of research and figuring out many ways to interact with gRPC server through web client. I ended up following this approach:
With Envoy (Current approach). grpc/grpc-web
Snapshot Testing
:information_source: Eventually this project will have:
Ability to interact with a local bchd node(private). :white_check_mark:
Ability to subscribe to custom events via cashserver(private). :white_check_mark:
Docker and Docker-Compose :white_check_mark:
Protos for interactions with cashserver.
Fetch SLP token data and more interactions.
Block Subscription.
Create a wallet and submit transactions.
Fetch address information.
Play a game via scanning a QR code [Separate module].
Kubernetes configs + docs.
Travis/circle CI configs + docs.
more...
:speaker: Private repositories will be made public in coming week(s).
bitcoincash:qre3vyl5amlua9a80fg9ta3ck806fvqvly9frxe6n4
MIT
BCHD Node Configs
Mac
File: bchwallet.conf
File: bchctl.conf
File: bchd.conf
Post running the bchd
on your local machine, you should be able to find the certificate and key that are generated by bchd
. You can use that for local development purposes.
See Sample bchd
config: https://github.com/gcash/bchd/blob/master/sample-bchd.conf rpccert=~/.bchd/rpc.cert
rpckey=~/.bchd/rpc.key
Output files
ca.key
: Certificate Authority private key file (this shouldn't be shared in real-life)
ca.crt
: Certificate Authority trust certificate (this should be shared with users in real-life)
server.key
: Server private key, password protected (this shouldn't be shared)
server.csr
: Server certificate signing request (this should be shared with the CA owner)
server.crt
: Server certificate signed by the CA (this would be sent back by the CA owner) - keep on server
server.pem
: Conversion of server.key
into a format gRPC likes (this shouldn't be shared)
certs.cnf
Bitcoin Cash is an ideal blockchain with incredible throughput capacity, ability to scale, low transaction fees, 0-confirmation, and soon an EVM compatible side chain and much more. It’s a gem waiting to be discovered by the many.
There is a huge demand for Software Engineers and Developers who work on the Bitcoin Cash Ecosystem. This open-source organization consists of many small and medium-sized projects which use but are not limited to various node implementations(BCHD), libraries, languages(Javascript, Go, Cashscript, and Python), and cutting-edge technologies like gRPC and Docker. I hope that this organization will act as the go-to place for the new developer(s) to experiment and build something that can help grow the ecosystem.
bitcoincash:qre3vyl5amlua9a80fg9ta3ck806fvqvly9frxe6n4
Feel free to open an issue on here and let's discuss.
MIT
Executable
Config path
Executable path
Bchd/
/Users/user-name/Library/Application Support/Bchd/bchd.conf
/Users/user-name/go/bin/bchd
Bchwallet/
/Users/user-name/Library/Application Support/Bchwallet/bchwallet.conf
/Users/user-name/go/bin/bchwallet
Bchctl/
/Users/user-name/Library/Application Support/Bchctl/bchctl.conf
/Users/user-name/go/bin/bchctl