diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b07bd73..afd213e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,3 +94,32 @@ Deployment flexibility: - more than Y% CPU used for more than Z minutes on the proxy container - bitcoind instance unreachable - any error + +# F.A.Q. + +Q. Why use netcat instead of an HTTP server like nginx or apache httpd? +A. We want to be able to run cyphernode everywhere, so we are trying to get the smallest possible docker images. + +Q. Why use Shell Scripting instead of a regular language like Python, C++, Java?... +A. Almost all parts of cyphernode were existing software or builtin commands: curl, sed, tr, grep, echo, etc. Remember, we want to keep docker images as small as possible. + +Q. Why don't you directly execute binaries from one container to the other instead of having an HTTP interface? +A. It would be great to improve that, it is actually in the TO-DO's. + +Q. Why haven't you secured the HTTP access of the proxy? +A. The proxy port is not published, so if you have access to the proxy port, you have access to the Docker overlay network which means you have a root/admin/docker access on the server meaning you are probably legit. In the TO-DO's, you will find "Security check" which is improvements security-wise. Don't hesitate! + +Q. The REST API is not pure, GET and POST concepts are not followed. +A. Yeah. The key point is if you need to pass multiple parameters, you will use a POST request and if 0 or 1 param, a GET request. Once again, very open to improvements! + +Q. Why don't you send the getrawtransaction output when calling conf from Bitcoin Core's walletnotify? +A. Because we need it only the first time. If we don't already have it in our DB, we'll request it. Let's be optimal, not only in space but also bandwidth. + +Q. Why do you compute transaction fees instead of using the fee element returned by Bitcoin Core's gettransaction? +A. Because when the transaction has not been created by our instance of Bitcoin Core, the fee element is absent. We have to calculate fees by looking at each input transactions. + +Q. What's up with the manage_missed_conf thing? +A. If a network glitch blocked 0-conf and 1-conf notifications, we still need to know if the transactions got in to call the app's callbacks. The cron container will check every 15 minutes. Yes, we use the UTXO set to manage to get the missed payment ... and if the outputs have been spent, we'll have a problem. We hope this won't happen within 15 minutes. Improvements welcome! + +Q. Why pycoin? Why a fork of it? +A. It works well! SegWit was added in the fork. diff --git a/doc/MANIFESTO.md b/doc/MANIFESTO.md new file mode 100644 index 0000000..e69de29 diff --git a/doc/SATOSHIPORTAL-WORKFLOW.md b/doc/SATOSHIPORTAL-WORKFLOW.md new file mode 100644 index 0000000..e69de29