From 2dc39fb9b3bc32b907fbb9a3588ef16d411cd89b Mon Sep 17 00:00:00 2001 From: feruzm <fmiboy@gmail.com> Date: Fri, 26 Apr 2024 18:05:23 +0300 Subject: [PATCH] restructure few sections and starting points --- _config.yml | 14 +- _data/apidefinitions/broadcast_ops.yml | 10 +- .../broadcast_ops_communities.yml | 20 +-- _data/nav.yml | 24 +-- _introduction/web3.md | 23 +++ _introduction/welcome.md | 22 +-- _introduction/workflow.md | 10 ++ _quickstart/authentication.md | 71 ++++++++ _quickstart/choose_library.md | 9 +- _quickstart/fetch_broadcast.md | 19 ++ _quickstart/hive_full_nodes.md | 169 ++++++++++++------ _quickstart/testnet.md | 2 +- _resources/hivesigner_libs.md | 2 +- _services/hivesigner.md | 4 +- _tutorials-javascript/hivesigner.md | 2 +- images/hive-dev-structure.png | Bin 0 -> 66707 bytes 16 files changed, 286 insertions(+), 115 deletions(-) create mode 100644 _introduction/web3.md create mode 100644 _introduction/workflow.md create mode 100644 _quickstart/authentication.md create mode 100644 _quickstart/fetch_broadcast.md create mode 100644 images/hive-dev-structure.png diff --git a/_config.yml b/_config.yml index 1501fcdf..a9592a13 100644 --- a/_config.yml +++ b/_config.yml @@ -24,24 +24,24 @@ collections: id: quickstart position: 3 output: true - nodeop: - title: Node Operation - id: nodeop - position: 4 - output: true javascript: title: Javascript id: javascript - position: 5 + position: 4 output: true tutorials: title: Tutorials id: tutorials - position: 6 + position: 5 output: true services: title: Services id: services + position: 6 + output: true + nodeop: + title: Node Operation + id: nodeop position: 7 output: true resources: diff --git a/_data/apidefinitions/broadcast_ops.yml b/_data/apidefinitions/broadcast_ops.yml index 0b89495b..68b86c08 100644 --- a/_data/apidefinitions/broadcast_ops.yml +++ b/_data/apidefinitions/broadcast_ops.yml @@ -74,7 +74,7 @@ - '["vote", {"voter":"hiveio","author":"alice","permlink":"a-post-by-alice","weight":10000}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestvote)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#vote)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#vote)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#vote)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.vote)' @@ -166,7 +166,7 @@ - '["comment",{"parent_author":"","parent_permlink":"hiveio","author":"alice","permlink":"a-post-by-alice","title":"A Post By Alice","body":"This is my post.","json_metadata":"{\"tags\":[\"hiveio\",\"example\",\"tags\"]}"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestpost)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#comment)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#comment)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#comment)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.comment)' @@ -194,7 +194,7 @@ - '["transfer",{"from":"hiveio","to":"alice","amount":{"amount":"10","precision":3,"nai":"@@000000021"},"memo":"Thanks for all the fish."}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requesttransfer)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#transfer)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#transfer)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#transfer)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.transfer)' @@ -681,7 +681,7 @@ - '["custom_json",{"required_auths":["alice"],"required_posting_auths":[],"id":"witness","json":"[\"enable_content_editing\", {\"account\": \"alice\", \"relock_time\": \"2100-01-01T12:00:00\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -931,7 +931,7 @@ witness according to stake. See: [#169]({{ 'https://github.com/steemit/steem/issues/169' | archived_url }}), [PY: Account Recovery]({{ '/tutorials-python/account_recovery.html' | relative_url }}) - roles: + roles: - owner params: - account_to_recover diff --git a/_data/apidefinitions/broadcast_ops_communities.yml b/_data/apidefinitions/broadcast_ops_communities.yml index 783ec1c9..843ada6f 100644 --- a/_data/apidefinitions/broadcast_ops_communities.yml +++ b/_data/apidefinitions/broadcast_ops_communities.yml @@ -27,7 +27,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"setRole\", {\"community\": \"hive-123456\", \"account\": \"edward\", \"role\": \"member\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -44,7 +44,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"setUserTitle\", {\"community\": \"hive-123456\", \"account\": \"alice\", \"title\": \"Founder\"}]"}]' client_docs: - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' - name: mutePost @@ -56,7 +56,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"mutePost\",{\"community\":\"hive-123456\",\"account\":\"eve\",\"permlink\":\"re-eve-comment-1564339652z\",\"notes\":\"Off Topic\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -66,7 +66,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"unmutePost\",{\"community\":\"hive-123456\",\"account\":\"eve\",\"permlink\":\"re-eve-comment-1564339652z\",\"notes\":\"On Topic (on second thought)\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -75,7 +75,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"updateProps\",{\"community\":\"hive-123456\",\"props\":{\"title\":\"Anti-Knitting\",\"about\":\"A community against knitting.\",\"is_nsfw\":false,\"description\":\"If you like to knitting, go away.\",\"flag_text\":\"Must hate knitting or else you will be muted.\"}}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -85,7 +85,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"subscribe\",{\"community\":\"hive-123456\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -95,7 +95,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"pinPost\",{\"community\":\"hive-123456\",\"account\":\"alice\",\"permlink\":\"a-post-by-alice\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -105,7 +105,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"unsubscribe\",{\"community\":\"hive-123456\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -115,7 +115,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"unpinPost\",{\"community\":\"hive-123456\",\"account\":\"alice\",\"permlink\":\"a-post-by-alice\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' @@ -125,7 +125,7 @@ - '["custom_json",{"required_auths":[],"required_posting_auths":["alice"],"id":"community","json":"[\"flagPost\",{\"community\":\"hive-123456\",\"account\":\"eve\",\"permlink\":\"a-post-by-eve\",\"notes\":\"Warning\"}]"}]' client_docs: - '[hive-keychain](https://github.com/stoodkev/hive-keychain#requestcustomjson)' - - '[hivesigner.js](https://github.com/ledgerconnect/hivesigner.js#custom-json)' + - '[hivesigner.js](https://github.com/ecency/hivesigner-sdk#custom-json)' - '[hive-js](https://gitlab.syncad.com/hive/hive-js/tree/master/doc#custom-json)' - '[beem](https://beem.readthedocs.io/en/latest/beem.transactionbuilder.html)' - '[hive-ruby](https://www.rubydoc.info/gems/hive-ruby/Hive/Broadcast.custom_json)' diff --git a/_data/nav.yml b/_data/nav.yml index 62b1def9..743792ae 100644 --- a/_data/nav.yml +++ b/_data/nav.yml @@ -8,16 +8,10 @@ toc: url: "/quickstart/" position: 2 exclude: true - - title: "Node Operation" - collection: "nodeop" - url: "/nodeop/" - position: 3 - exclude: true - top_level_section: true - title: "Tutorials" collection: "tutorials" url: "/tutorials/" - position: 4 + position: 3 exclude: true docs: - title: Javascript @@ -33,20 +27,26 @@ toc: - title: "Services" collection: "services" url: "/services/" - position: 6 + position: 4 exclude: true - title: "Appbase API" - collection: apidefinitions + collection: apidefinitions url: "/apidefinitions/" exclude: true - position: 7 + position: 5 + - title: "Node Operation" + collection: "nodeop" + url: "/nodeop/" + position: 6 + exclude: true + top_level_section: true - title: "Resources" collection: "resources" url: "/resources/" exclude: true - position: 8 + position: 7 - title: "Glossary" collection: "glossary" url: "/glossary/" - position: 9 + position: 8 exclude: true diff --git a/_introduction/web3.md b/_introduction/web3.md new file mode 100644 index 00000000..e603bc92 --- /dev/null +++ b/_introduction/web3.md @@ -0,0 +1,23 @@ +--- +title: Web2 vs Web3 +position: 2 +--- + +Internet, we know of today mostly contain websites and services which is referred as Web2. Dominated by companies that +provide services in exchange for your personal data. Blockchains such as Hive, powers websites and services that go +into Web3 category, referring to decentralized apps which runs on the blockchain. +These are apps that allow anyone to participate without monetising their personal data, true ownership. + +| Aspect | Web2 | Web3 | +|------------------|--------------------------------------------|---------------------------------------------------| +| Data Ownership | Controlled by centralized entities | Decentralized, users own their data | +| Trust | Relies on trust in centralized entities | Trustless system through blockchain technology | +| Censorship | Vulnerable to censorship by centralized authorities | Resistant to censorship due to decentralization | +| Scalability | Limited scalability due to centralized infrastructure | Potential for greater scalability through decentralization | +| Transparency | Lack of transparency in data handling | Transparent, immutable record on the blockchain | +| Governance | Controlled by centralized entities | Community-driven governance through DAOs | +| Monetization | Centralized monetization models (e.g., advertising) | Decentralized monetization via tokens and smart contracts | +| Intermediaries | Relies heavily on intermediaries (e.g., social media platforms) | Removes intermediaries through decentralization | +| Innovation | Innovation driven by large tech companies | Innovation driven by decentralized protocols and communities | + +**Start developing and investing your time building products on Web3 to empower communities, now!** diff --git a/_introduction/welcome.md b/_introduction/welcome.md index 01933977..e9d518f4 100644 --- a/_introduction/welcome.md +++ b/_introduction/welcome.md @@ -1,29 +1,13 @@ --- -title: Welcome to Hive +title: Intro to Hive position: 1 --- -#### Hive Developer Portal +**[Hive](https://hive.io){:target="_blank"}** is a decentralized blockchain with fast transaction speed (3s) without fees, human +readable account names, decentralized community fund and algorithmic stablecoin (HBD) backed by HIVE. This site is designed to aid those interested in developing applications on the **[Hive](https://hive.io){:target="_blank"}** blockchain. -If you don't know about Hive yet, visit [hive.io](https://hive.io). - The code for this site is on [gitlab](https://gitlab.syncad.com/hive/devportal). If you'd like to see a specific improvement you can either submit a pull request or file an issue. Please follow our [contribution guidelines](https://gitlab.syncad.com/hive/devportal/-/blob/develop/CONTRIBUTING.md) - - - -#### Site Resources - -The **quickstart** section has some general information on working with nodes, and testnets. - -Our **tutorials** section will take you through the basics of interacting with Hive apis in Javascript, Python, and Ruby. - -More detailed API specs are available in the **APPBASE API** section. Those apis are under development, so please read -notes at the top of each section. - -You can find community resources, libraries, and more interactive ways to get help and education in the **Resources->Communities** section. - -The **glossary** has Hive specific terms that will help you understand documentation, whitepapers, and the speech of other hivers. diff --git a/_introduction/workflow.md b/_introduction/workflow.md new file mode 100644 index 00000000..ca4f7a69 --- /dev/null +++ b/_introduction/workflow.md @@ -0,0 +1,10 @@ +--- +title: Developer workflow +position: 3 +--- + +This is high level representation of how websites or services talk with blockchain. It's important to note that +this is an oversimplification of the Hive network for the purposes of making it easier to understand learning. + +<img src="{{ '/images/hive-dev-structure.png' | relative_url }}" width="80%" alt="Hive devs workflow" /> + diff --git a/_quickstart/authentication.md b/_quickstart/authentication.md new file mode 100644 index 00000000..68b56e33 --- /dev/null +++ b/_quickstart/authentication.md @@ -0,0 +1,71 @@ +--- +title: Authentication +position: 3 +exclude: true +--- +#### User authentication + +In Web3 unlike Web2, authenticating user has different meaning. Since only user has and knows their private keys, there should +be a secure way to sign the transaction because there is no concept of Login and applications won't have direct access to user private keys. +Web3 way of authentication or login, means user has to sign arbitrary message to verify ownership and wallet applications facilitate that. +In Hive, there are services maintained and developed by community. These services help to decrease trust on all new dapps and services. +They help to minimize hacks and private key stealing, phishing attacks done by malicious actors. It is recommended to +utilize and integrate these services into your website or apps so users can quickly authenticate and start using your app +without fear of loosing their private keys. + +#### HiveSigner + +This is OAuth2 standard built on top of Hive blockchain. Just like web2 OAuth2 integration, Hivesigner integration works in similar way. + +**Application side** +1. Create Hive account for application/website [https://signup.hive.io](https://signup.hive.io). +2. Login with that account into Hivesigner and set account as **Application** from [https://hivesigner.com/profile](https://hivesigner.com/profile). +3. Authorize **hivesigner** with Application account by clicking this link [https://hivesigner.com/authorize/hivesigner](https://hivesigner.com/authorize/hivesigner). +4. Finalize app integration [https://docs.hivesigner.com/h/guides/get-started/hivesigner-oauth2](https://docs.hivesigner.com/h/guides/get-started/hivesigner-oauth2). + +**User side** + +Overview of steps that user experiences during Login/Authentication in your website or app. + +1. Website or application will forward user to Hivesigner.com to authenticate. +2. Hivesigner after verification/authentication redirects user back website or application with **access token**. +3. Access token used by website or application to sign and broadcast transactions on blockchain. + +For more detailed instruction please follow [HiveSigner documentation](https://docs.hivesigner.com/). +HiveSigner SDK: [https://www.npmjs.com/package/hivesigner](https://www.npmjs.com/package/hivesigner) + +#### HiveKeychain + +Hive Keychain is an extension for accessing Hive-enabled distributed applications, or "dApps" in your Chromium or Firefox browser! + +**Application side** +1. Send a handshake to make sure the extension is installed on browser. +2. Decrypt a message encrypted by a Hive account private key (commonly used for "logging in") +3. Create and sign transaction +4. Broadcast transaction. + +**User side** +1. Install Keychain browser extension and import accounts +2. On Login/Authentication popup from website/application, verify message and sign with selected account. +3. Signature used from website/application to sign transactions going forward, every transaction should be signed by user. + +For more detailed instruction please follow [HiveKeychain documentation](https://github.com/hive-keychain/hive-keychain-extension/blob/master/documentation/README.md). +HiveKeychain SDK: [https://www.npmjs.com/package/keychain-sdk](https://www.npmjs.com/package/keychain-sdk) + +#### HiveAuth + +HiveAuth is decentralized solution for any application (either web, desktop or mobile) to easily authenticate +users without asking them to provide any password or private key. + +**Application side** +1. Open a Websocket connection with HAS server. +2. Generate unique auth_key for each user account every time they Login/Authenticate. +3. After user authenticates, auth_key used for broadcasting transactions. + +**User side** +1. Install wallet applications that support Hive Auth. +2. On Login/Authentication popup from website/application, verify message with selected account. +3. Unique auth key generated by application for user account used for signing transaction going forward, every transaction should be signed by user. + +For more detailed instruction please follow [HiveAuth documentation](https://docs.hiveauth.com/). + diff --git a/_quickstart/choose_library.md b/_quickstart/choose_library.md index aea0cb27..99398e78 100644 --- a/_quickstart/choose_library.md +++ b/_quickstart/choose_library.md @@ -1,12 +1,15 @@ --- title: SDK Libraries -position: 1 +position: 4 exclude: true --- +#### Software development kits -Getting started to develop robust and feature rich **Hive** applications couldn't be easier. Accessing hive data is easy from various options depending on your infrastructure and objectives. +Accessing and interacting with Hive data is easy from various options depending on your infrastructure and objectives. -Building a web3 app is a breeze with the [JavaScript, check related tutorials]({{ '/tutorials/#tutorials-javascript' | relative_url }}). There is also a [Python tutorials]({{ '/tutorials/#tutorials-python' | relative_url }}) available, [hive.blog]({{ '/services/#services-hive-blog' | relative_url }}), as well as many [opensource projects]({{ '/resources/#resources-overview' | relative_url }}) which could be beneficial for your Hive project. +Building a web3 app is a breeze with the [JavaScript, check related tutorials]({{ '/tutorials/#tutorials-javascript' | relative_url }}). +There is also a [Python tutorials]({{ '/tutorials/#tutorials-python' | relative_url }}) available, [hive.blog]({{ '/services/#services-hive-blog' | relative_url }}), as well as many [opensource projects]({{ '/resources/#resources-overview' | relative_url }}) +which could be beneficial for your Hive project. --- diff --git a/_quickstart/fetch_broadcast.md b/_quickstart/fetch_broadcast.md new file mode 100644 index 00000000..ff174cb8 --- /dev/null +++ b/_quickstart/fetch_broadcast.md @@ -0,0 +1,19 @@ +--- +title: Get and Set +position: 5 +exclude: true +--- +#### Fetching data + +Fetching blockchain data with help of SDK libraries, couldn't be much simpler and easy to do. Nodejs and Python libraries +help any developer to quickly access Blockchain data and do analysis or create apps using those data. SDK by default utilizes +JSON-RPC to make a request to Hive nodes. Community has created [REST API alternatives](https://hivexplorer.com/api-docs) as well which could easily be integrated +with any app on any framework or application. + +#### Broadcast data + +Broadcasting or Set, modifying blockchain data could be done directly with above SDK libraries as well. Broadcasting or making +any modification into account require user's private key. Using [Authentication services]({{ '/quickstart/#quickstart-authentication' | relative_url }}) highly recommended in this use-cases. + +By utilizing Authenticating services, you can eliminate or give more confidence to user, so they are assured their keys are safe. +They can securely interact with your application, website or service. diff --git a/_quickstart/hive_full_nodes.md b/_quickstart/hive_full_nodes.md index c1ca0152..c06b3e35 100644 --- a/_quickstart/hive_full_nodes.md +++ b/_quickstart/hive_full_nodes.md @@ -1,14 +1,14 @@ --- title: Hive Nodes -position: 2 +position: 1 exclude: true --- -Applications that interface directly with the Hive blockchain will need to connect to a `hived` node. Developers may choose to use one of the public API nodes that are available, or run their own instance of a node. +Applications that interface directly with the Hive blockchain will need to connect to a `Hive` node. Developers may choose to use one of the public API nodes that are available, or run their own instance of a node. ### Public Nodes -Although `hived` fully supports WebSockets (`wss://` and `ws://`) public nodes typically do not. All nodes listed use HTTPS (`https://`). If you require WebSockets for your solutions, please consider setting up your own `hived` node or proxy WebSockets to HTTPS using [lineman](https://gitlab.syncad.com/hive/lineman). +All nodes listed use HTTPS (`https://`). If you require WebSockets for your solutions, please consider setting up your own `hived` node or proxy WebSockets to HTTPS using [lineman](https://gitlab.syncad.com/hive/lineman). <div id="report"> <table> @@ -97,71 +97,96 @@ Although `hived` fully supports WebSockets (`wss://` and `ws://`) public nodes t The simplest way to get started is by deploying a pre-built dockerized container. -##### Dockerized p2p Node +**System Requirements** -To install a witness or seed node: +We assume the base system will be running at least Ubuntu 22.04 (jammy). Everything will likely work with later +versions of Ubuntu. IMPORTANT UPDATE: experiments have shown 20% better API performance when running U23.10, so this +latter version is recommended over Ubuntu 22 as a hosting OS. -```bash -git clone https://github.com/someguy123/hive-docker.git -cd hive-docker -# If you don't already have a docker installation, this will install it for you -./run.sh install_docker +For a mainnet API node, we recommend: -# This downloads/updates the low-memory docker image for Hive -./run.sh install +* At least 32GB of memory. If you have 64GB, it will improve the time it takes to sync from scratch, but +it should make less of a difference if you're starting from a mostly-synced HAF node (i.e., +restoring a recent ZFS snapshot) +* 4TB of NVMe storage + * Hive block log & shared memory: 500GB + * Base HAF database: 3.5T (before 2x lz4 compression) + * Hivemind database: 0.65T (before 2x lz4 compression) + * base HAF + Hivemind: 2.14T (compressed) + * HAF Block Explorer: ~0.2T -# If you are a witness, you need to adjust the configuration as needed -# e.g. witness name, private key, logging config, turn off p2p-endpoint etc. -# If you're running a seed, then don't worry about the config, it will just work -nano data/witness_node_data_dir/config.ini +#### Running Hive node with Docker -# (optional) Setting the .env file up (see the env settings section of this readme) -# will help you to adjust settings for hive-in-a-box -nano .env +**Install ZFS support** -# Once you've configured your server, it's recommended to download the block log, as replays can be -# faster than p2p download -./run.sh dlblocks +We strongly recommend running your HAF instance on a ZFS filesystem, and this documentation assumes you will be running +ZFS. Its compression and snapshot features are particularly useful when running a HAF node. +We intend to publish ZFS snapshots of fully-synced HAF nodes that can downloaded to get a HAF node up & running quickly, +avoiding multi-day replay times. -# You'll also want to set the shared memory size (use sudo if not logged in as root). -# Adjust 64G to whatever size is needed for your type of server and make sure to leave growth room. -# Please be aware that the shared memory size changes constantly. Ask in a witness chatroom if you're unsure. -./run.sh shm_size 64G - -# Then after you've downloaded the blockchain, you can start hived in replay mode -./run.sh replay -# If you DON'T want to replay, use "start" instead -./run.sh start ``` +sudo apt install zfsutils-linux +``` + +**Install Docker** + +Follow official guide [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/). + +**Create a ZFS pool** -You may want to persist the /dev/shm size (shared memory) across reboots. To do this, you can edit `/etc/fstab`, please be very careful, as any mistakes in this file will cause your system to become unbootable. +Create your ZFS pool if necessary. HAF requires at least 4TB of space, and 2TB NVMe drives are readily available, +so we typically construct a pool striping data across several 2TB drives. If you have three or four drives, you will +get somewhat better read/write performance, and the extra space can come in handy. +To create a pool named "haf-pool" using the first two NVMe drives in your system, use a command like: -##### Dockerized Full Node +``` +sudo zpool create haf-pool /dev/nvme0n1 /dev/nvme1n1 +``` +If you name your ZFS pool something else, configure the name in the environment file, as described in the next section. +Note: By default, ZFS tries to detect your disk's actual sector size, but it often gets it wrong for modern NVMe drives, +which will degrade performance due to having to write the same sector multiple times. If you don't know the actual +sector size, we recommend forcing the sector size to 8k by specifying +setting ashift=13 (e.g., zfs create -o ashift=13 haf-pool /dev....) + +**Configure your environment** -To install a full RPC node - follow the same steps as above, but use `install_full` instead of `install`. +Clone HAF API Node repository from here [https://github.com/openhive-network/haf_api_node](https://github.com/openhive-network/haf_api_node) +Make a copy of the file .env.example and customize it for your system. This file contains configurable parameters for +things like directories versions of hived, HAF, and associated tools +The docker compose command will automatically read the file named .env. If you want to keep multiple configurations, +you can give your environment files different names like .env.dev and .env.prod, then explicitly specify the filename +when running docker compose: `docker compose --env-file=.env.dev ...` -Remember to adjust the config, you'll need a higher shared memory size (potentially up to 1 TB), and various plugins. +**Set up ZFS filesystems** -For handling requests to your full node in docker, I recommend spinning up an nginx container, and connecting nginx to the Hive node using a docker network. +The HAF installation is spread across multiple ZFS datasets, which allows us to set different ZFS options for different +portions of the data. We recommend that most nodes keep the default datasets in order to enable easy sharing of snapshots. -Example: +**Initializing from scratch** +If you're starting from scratch, after you've created your zpool and configured its name in the .env file as described +above, run: ``` -docker network create rpc_default -# Assuming your RPC container is called "rpc1" instead of witness/seed -docker network connect rpc_default rpc1 -docker network connect rpc_default nginx +sudo ./create_zfs_datasets.sh ``` -Nginx will now be able to access the container RPC1 via `http://rpc1:8090` (assuming 8090 is the RPC port in your config). Then you can set up SSL and container port forwarding as needed for nginx. +to create and mount the datasets. +By default, the dataset holding most of the database storage uses zfs compression. The dataset for the blockchain data +directory (which holds the block_log for hived and the shared_memory.bin file) is not compressed because hived directly +manages compression of the block_log file. +If you have a LOT of nvme storage (e.g. 6TB+), you can get better API performance at the cost of disk storage by +disabling ZFS compression on the database dataset, but for most nodes this isn't recommended. -##### Customized Docker Node +**Assisted startup** + +``` +./assisted_startup.sh +``` -If the above options do not meet your needs, refer to Hive-in-a-box by [@someguy123](https://hive.blog/@someguy123): +Depending on your environment variables, assisted start up script will quickly bootstrap the process. -[https://github.com/someguy123/hive-docker](https://github.com/someguy123/hive-docker) -##### Building Without Docker +#### Building Without Docker Full non-docker steps can be reviewed here: @@ -169,20 +194,54 @@ Full non-docker steps can be reviewed here: ### Syncing blockchain -Normally syncing blockchain starts from very first, `0` genesis block. It might take long time to catch up with live network, because it connects to various p2p nodes in the Hive network and requests blocks from 0 to head block. It stores blocks in block log file and builds up the current state in the shared memory file. But there is a way to bootstrap syncing by using trusted `block_log` file. The block log is an external append only log of the blocks. It contains blocks that are only added to the log after they are irreversible because the log is append only. +**Initializing from a snapshot** + +If you're starting with one of our snapshots, the process of restoring the snapshots will create the correct +datasets with the correct options set. +First, download the snapshot file from: [https://gtg.openhive.network/get/snapshot/](https://gtg.openhive.network/get/snapshot/) +Since these snapshots are huge, it's best to download the snapshot file to a different disk (a magnetic +HDD will be fine for this) that has enough free space for the snapshot first, then restore it to the ZFS pool. +This lets you easily resume the download if your transfer is interrupted. If you download directly to +the ZFS pool, any interruption would require you to start the download from the beginning. +``` +wget -c https://whatever.net/snapshot_filename +``` + + +If the transfer gets interrupted, run the same command again to resume. +Then, to restore the snapshot, run: +``` +sudo zfs recv -d -v haf-pool < snapshot_filename +``` + +**Replay with blocklog** + +Normally syncing blockchain starts from very first, `0` genesis block. It might take long time to catch up with live +network, because it connects to various p2p nodes in the Hive network and requests blocks from 0 to head block. +It stores blocks in block log file and builds up the current state in the shared memory file. But there is a way to +bootstrap syncing by using trusted `block_log` file. The block log is an external append only log of the blocks. +It contains blocks that are only added to the log after they are irreversible because the log is append only. -Trusted block log file helps to download blocks faster. Various operators provide public block log file which can be downloaded from: +Trusted block log file helps to download blocks faster. Various operators provide public block log file which can be +downloaded from: * [https://files.privex.io/hive/](https://files.privex.io/hive/) * [https://gtg.openhive.network/get/blockchain/block_log](https://gtg.openhive.network/get/blockchain/block_log) -Both `block_log` files updated periodically, as of March 2021 uncompressed `block_log` file size ~350 GB. (Docker container on `stable` branch of Hive source code has option to use `USE_PUBLIC_BLOCKLOG=1` to download latest block log and start Hive node with replay.) +Both `block_log` files updated periodically, as of March 2021 uncompressed `block_log` file size ~350 GB. +(Docker container on `stable` branch of Hive source code has option to use `USE_PUBLIC_BLOCKLOG=1` to download latest +block log and start Hive node with replay.) -Block log should be place in `blockchain` directory below `data_dir` and node should be started with `--replay-blockchain` to ensure block log is valid and continue to sync from the point of snapshot. Replay uses the downloaded block log file to build up the shared memory file up to the highest block stored in that snapshot and then continues with sync up to the head block. +Block log should be place in `blockchain` directory below `data_dir` and node should be started with +`--replay-blockchain` to ensure block log is valid and continue to sync from the point of snapshot. +Replay uses the downloaded block log file to build up the shared memory file up to the highest block stored in that +snapshot and then continues with sync up to the head block. -Replay helps to sync blockchain in much faster rate, but as blockchain grows in size replay might also take some time to verify blocks. +Replay helps to sync blockchain in much faster rate, but as blockchain grows in size replay might also take some time +to verify blocks. -There is another [trick which might help]({{ 'https://github.com/steemit/steem/issues/2391' | archived_url }}) with faster sync/replay on smaller equipped servers: +There is another [trick which might help]({{ 'https://github.com/steemit/steem/issues/2391' | archived_url }}) with +faster sync/replay on smaller equipped servers: ``` while : @@ -192,11 +251,13 @@ do done ``` -Above bash script drops `block_log` from the OS cache, leaving more memory free for backing the blockchain database. It might also help while running live, but measurement would be needed to determine this. +Above bash script drops `block_log` from the OS cache, leaving more memory free for backing the blockchain database. +It might also help while running live, but measurement would be needed to determine this. ##### Few other tricks that might help: -For Linux users, virtual memory writes dirty pages of the shared file out to disk more often than is optimal which results in hived being slowed down by redundant IO operations. These settings are recommended to optimize reindex time. +For Linux users, virtual memory writes dirty pages of the shared file out to disk more often than is optimal which +results in hived being slowed down by redundant IO operations. These settings are recommended to optimize reindex time. ``` echo 75 | sudo tee /proc/sys/vm/dirty_background_ratio diff --git a/_quickstart/testnet.md b/_quickstart/testnet.md index 4455e458..fd1481a8 100644 --- a/_quickstart/testnet.md +++ b/_quickstart/testnet.md @@ -1,6 +1,6 @@ --- title: Hive Testnet -position: 3 +position: 2 exclude: true --- diff --git a/_resources/hivesigner_libs.md b/_resources/hivesigner_libs.md index 01a0d0b1..b40c928b 100644 --- a/_resources/hivesigner_libs.md +++ b/_resources/hivesigner_libs.md @@ -10,7 +10,7 @@ If you're wondering what Hivesigner is, go [here]({{ '/services/#services-hivesi --- -**Hivesigner SDK** - [https://github.com/ledgerconnect/hivesigner.js](https://github.com/ledgerconnect/hivesigner.js) +**Hivesigner SDK** - [https://github.com/ecency/hivesigner-sdk](https://github.com/ecency/hivesigner-sdk) An official javascript library for utilizing Hivesigner. diff --git a/_services/hivesigner.md b/_services/hivesigner.md index 7c441ecd..2c517b23 100644 --- a/_services/hivesigner.md +++ b/_services/hivesigner.md @@ -23,11 +23,11 @@ Simplified, the process includes the following steps: 3. The user is redirected to the application redirect URI along with the access token Once the application has an access token, it may use the token to access the user's account via the API, limited to the scope of access, until the token expires or is revoked. -A full breakdown of OAuth2 and how it applies to Hive and Hivesigner can be found [here](https://github.com/ledgerconnect/hivesigner/wiki/OAuth-2#code-authorization-flow). +A full breakdown of OAuth2 and how it applies to Hive and Hivesigner can be found [here](https://docs.hivesigner.com). **Useful Links** -* [Hivesigner Repo](https://github.com/ledgerconnect/hivesigner) +* [Hivesigner Repo](https://github.com/ecency/hivesigner-ui) * [Community Resources]({{ '/resources/#resources-hivesigner-libs' | relative_url }}) * [Hivesigner docs](https://docs.hivesigner.com) diff --git a/_tutorials-javascript/hivesigner.md b/_tutorials-javascript/hivesigner.md index d7bd5374..953b222a 100644 --- a/_tutorials-javascript/hivesigner.md +++ b/_tutorials-javascript/hivesigner.md @@ -22,7 +22,7 @@ Some other calls that require an access token (or login) are: * Follow * Reblog -Learn more about [Hivesigner operations here](https://github.com/ledgerconnect/hivesigner.js) +Learn more about [Hivesigner operations here](https://github.com/ecency/hivesigner-sdk) ## Steps diff --git a/images/hive-dev-structure.png b/images/hive-dev-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..2e39942cb5f3389eae00a57d24ab2a97ec0a530f GIT binary patch literal 66707 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%0AsKYn6s}yl-2`VOt># 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 z%0A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�GyLHr`7fUa~7JY6H|1~3y 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 literal 0 HcmV?d00001 -- GitLab