├── .gitignore ├── CONTRIBUTING.md ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── Makefile ├── Rakefile ├── _api ├── _defaults.md └── accounts.md ├── _apidefinitions ├── _defaults.md ├── account-by-key-api.md ├── account-history-api.md ├── block-api.md ├── bridge.md ├── broadcast-ops-communities.md ├── broadcast-ops.md ├── condenser-api.md ├── database-api.md ├── debug-node-api.md ├── follow-api.md ├── jsonrpc.md ├── market-history-api.md ├── network-broadcast-api.md ├── rc-api.md ├── reputation-api.md ├── rewards-api.md ├── tags-api.md ├── transaction-status-api.md └── witness-api.md ├── _config.yml ├── _data ├── apidefinitions │ ├── account_by_key_api.yml │ ├── account_history_api.yml │ ├── block_api.yml │ ├── bridge.yml │ ├── broadcast_ops.yml │ ├── broadcast_ops_communities.yml │ ├── condenser_api.yml │ ├── database_api.yml │ ├── debug_node_api.yml │ ├── follow_api.yml │ ├── jsonrpc.yml │ ├── market_history_api.yml │ ├── network_broadcast_api.yml │ ├── rc_api.yml │ ├── reputation_api.yml │ ├── rewards_api.yml │ ├── tags_api.yml │ ├── transaction_status_api.yml │ └── witness_api.yml ├── glossary │ ├── blockchain.yml │ └── index.yml ├── nav.yml ├── objects │ ├── config.yml │ └── dgpo.yml └── testnet │ └── tools.yml ├── _glossary ├── _defaults.md ├── api.md ├── chain_basics.md ├── governance.md ├── index.html ├── market.md └── transactions.md ├── _includes ├── api-template.html ├── sidebar.html └── tutorials-javascript │ ├── blog_feed.json │ └── get_posts.json ├── _introduction ├── _defaults.md └── welcome.md ├── _layouts ├── default.html ├── full.html ├── main-script.html └── steem-post.html ├── _plugins ├── keywordify_filter.rb ├── liquify_filter.rb ├── neat_json_filter.rb └── post_generator.rb ├── _quickstart ├── _defaults.md ├── choose_library.md ├── steemd_nodes.md └── testnet.md ├── _resources ├── _defaults.md ├── _piston.md ├── bluepaper.md ├── client_libs.md ├── developeradvocate.md ├── overview.md ├── steem_connect_libs.md ├── steem_keychain.md ├── tools.md └── whitepaper.md ├── _sass ├── _borland.scss ├── _main.scss ├── _mixins.scss └── _monaki.scss ├── _services ├── _defaults.md ├── imageHoster.md ├── jussi.md ├── steem.dao.md ├── steemconnect.md └── steemit.md ├── _steemjs ├── _defaults.md └── getting_started.md ├── _testnet ├── _defaults.md ├── index.md └── tools.md ├── _tutorials-javascript ├── _defaults.md ├── account_reputation.md ├── blog_feed.md ├── claim_rewards.md ├── client_signing.md ├── convert_sbd_to_steem.md ├── create_account.md ├── delegate_power.md ├── edit_content_patching.md ├── follow_a_user.md ├── get_account_comments.md ├── get_account_replies.md ├── get_delegations_by_user.md ├── get_follower_and_following_list.md ├── get_post_comments.md ├── get_post_details.md ├── get_posts.md ├── get_state_replacement_api.md ├── get_voters_list_on_post.md ├── getting_started.md ├── grant_active_permission.md ├── grant_posting_permission.md ├── power_down.md ├── power_up_steem.md ├── reblogging_post.md ├── search_accounts.md ├── search_tags.md ├── set_withdraw_route.md ├── steemconnect.md ├── stream_blockchain_transactions.md ├── submit_comment_reply.md ├── submit_post.md ├── transfer_steem_and_sbd.md ├── vote_on_content.md └── witness_listing_and_voting.md ├── _tutorials-python ├── _defaults.md ├── account_recovery.md ├── account_reputation.md ├── claim_rewards.md ├── convert_sbd_to_steem.md ├── delegate_power.md ├── edit_content_patching.md ├── follow_a_user.md ├── get_account_comments.md ├── get_account_replies.md ├── get_delegations_by_user.md ├── get_follower_and_following_list.md ├── get_post_comments.md ├── get_post_details.md ├── get_posts.md ├── get_voters_list_on_post.md ├── getting_started.md ├── grant_active_permission.md ├── grant_posting_permission.md ├── password_key_change.md ├── power_down.md ├── power_up_steem.md ├── reblogging_post.md ├── search_accounts.md ├── search_tags.md ├── stream_blockchain_transactions.md ├── submit_comment_reply.md ├── submit_post.md ├── transfer_STEEM_and_SBD.md ├── transfer_steem_and_sbd_to_savings_balance.md ├── using_keys_securely.md ├── vote_on_content.md └── witness_listing_and_voting.md ├── _tutorials-recipes ├── _defaults.md ├── account-creation-process.md ├── calculate_rc_recipe.md ├── estimate_upvote.md ├── exchange_node.md ├── forum-market-bandwidth.md ├── get_transaction_node.md ├── how-to-serialize-and-sign-using-js.md ├── jussi-multiplexer.md ├── mira-performance-tuning.md ├── node-cli.md ├── node-config.md ├── paginated-api-methods.md ├── plugin-and-api-list.md ├── setting-up-a-testnet.md ├── understanding-configuration-values.md ├── understanding-dynamic-global-properties.md ├── understanding-transaction-status.md ├── using-hivemind.md ├── using-multisignatire-accounts.md ├── vest-to-steem.md └── virtual-operations-when-streaming-blockchain-transactions.md ├── _tutorials-ruby ├── _defaults.md ├── blog_feed.md ├── edit_content_patching.md ├── follow_another_user.md ├── get_account_comments.md ├── get_account_replies.md ├── get_follower_and_following_list.md ├── get_post_comments.md ├── get_post_details.md ├── get_posts.md ├── get_voters_list_on_post.md ├── getting_started.md ├── reblogging_post.md ├── search_accounts.md ├── search_tags.md ├── stream_blockchain_transactions.md ├── submit_comment_reply.md ├── submit_post.md └── vote_on_content.md ├── _tutorials ├── _defaults.md └── index.md ├── apidefinitions.html ├── apple-touch-icon.png ├── css ├── css │ ├── fa-brands.css │ ├── fa-brands.min.css │ ├── fa-regular.css │ ├── fa-regular.min.css │ ├── fa-solid.css │ ├── fa-solid.min.css │ ├── fontawesome-all.css │ ├── fontawesome-all.min.css │ ├── fontawesome.css │ └── fontawesome.min.css ├── style.scss └── webfonts │ ├── fa-brands-400.eot │ ├── fa-brands-400.svg │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.svg │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-regular-400.woff2 │ ├── fa-solid-900.eot │ ├── fa-solid-900.svg │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff │ └── fa-solid-900.woff2 ├── docs ├── CONTRIBUTING.html ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── Rakefile ├── apidefinitions │ ├── account-by-key-api.html │ ├── account-history-api.html │ ├── block-api.html │ ├── broadcast-ops-comment.html │ ├── broadcast-ops.html │ ├── condenser-api.html │ ├── database-api.html │ ├── debug-node-api.html │ ├── follow-api.html │ ├── index.html │ ├── jsonrpc.html │ ├── market-history-api.html │ ├── network-broadcast-api.html │ ├── rc-api.html │ ├── tags-api.html │ └── witness-api.html ├── apple-touch-icon.png ├── css │ ├── css │ │ ├── fa-brands.css │ │ ├── fa-brands.min.css │ │ ├── fa-regular.css │ │ ├── fa-regular.min.css │ │ ├── fa-solid.css │ │ ├── fa-solid.min.css │ │ ├── fontawesome-all.css │ │ ├── fontawesome-all.min.css │ │ ├── fontawesome.css │ │ └── fontawesome.min.css │ ├── style.css │ └── webfonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ └── fa-solid-900.woff2 ├── favicon.png ├── glossary │ ├── api.html │ ├── chain_basics.html │ ├── governance.html │ ├── index.html │ ├── market.html │ └── transactions.html ├── images │ ├── emblem.svg │ ├── hero.png │ ├── logo.svg │ ├── logo_white.svg │ ├── logotype_white.svg │ ├── look.svg │ ├── menu.svg │ ├── npm-logo.svg │ ├── services-jussi │ │ └── kitematic-example.png │ ├── steemdev.png │ └── tutorials-recipes │ │ └── jussi-multiplexer │ │ └── network-diagram.png ├── index.html ├── introduction │ └── welcome.html ├── js │ ├── adjust.js │ ├── lunr.min.js │ ├── main.js │ └── search.js ├── lib │ └── scrape │ │ ├── api_definitions_job.rb │ │ └── tutorials_job │ │ ├── base.rb │ │ ├── javascript.rb │ │ ├── python.rb │ │ └── ruby.rb ├── quickstart │ ├── choose_library.html │ ├── index.html │ ├── steemd_nodes.html │ └── testnet.html ├── resources │ ├── client_libs.html │ ├── developeradvocate.html │ ├── index.html │ ├── overview.html │ ├── steem_connect_libs.html │ └── tools.html ├── robots.txt ├── search │ └── index.html ├── services │ ├── imageHoster.html │ ├── index.html │ ├── jussi.html │ ├── sbds.html │ ├── steemconnect.html │ └── steemit.html ├── siteicon.png ├── sitemap.xml ├── testnet │ ├── index.html │ └── tools.html ├── touch-icon.png ├── tutorial_structure.md ├── tutorials-javascript │ ├── account_reputation.html │ ├── blog_feed.html │ ├── claim_rewards.html │ ├── client_signing.html │ ├── convert_sbd_to_steem.html │ ├── create_account.html │ ├── delegate_power.html │ ├── edit_content_patching.html │ ├── follow_a_user.html │ ├── get_account_comments.html │ ├── get_account_replies.html │ ├── get_delegations_by_user.html │ ├── get_follower_and_following_list.html │ ├── get_post_comments.html │ ├── get_post_details.html │ ├── get_posts.html │ ├── get_state_replacement_api.html │ ├── get_voters_list_on_post.html │ ├── getting_started.html │ ├── grant_active_permission.html │ ├── grant_posting_permission.html │ ├── power_down.html │ ├── power_up_steem.html │ ├── reblogging_post.html │ ├── search_accounts.html │ ├── search_tags.html │ ├── set_withdraw_route.html │ ├── steemconnect.html │ ├── stream_blockchain_transactions.html │ ├── submit_comment_reply.html │ ├── submit_post.html │ ├── transfer_steem_and_sbd.html │ ├── vote_on_content.html │ └── witness_listing_and_voting.html ├── tutorials-python │ ├── account_recovery.html │ ├── account_reputation.html │ ├── claim_rewards.html │ ├── convert_sbd_to_steem.html │ ├── delegate_power.html │ ├── edit_content_patching.html │ ├── follow_a_user.html │ ├── get_account_comments.html │ ├── get_account_replies.html │ ├── get_delegations_by_user.html │ ├── get_follower_and_following_list.html │ ├── get_post_comments.html │ ├── get_post_details.html │ ├── get_posts.html │ ├── get_voters_list_on_post.html │ ├── getting_started.html │ ├── grant_active_permission.html │ ├── grant_posting_permission.html │ ├── password_key_change.html │ ├── power_down.html │ ├── power_up_steem.html │ ├── reblogging_post.html │ ├── search_accounts.html │ ├── search_tags.html │ ├── stream_blockchain_transactions.html │ ├── submit_comment_reply.html │ ├── submit_post.html │ ├── transfer_steem_and_sbd.html │ ├── transfer_steem_and_sbd_to_savings_balance.html │ ├── using_keys_securely.html │ ├── vote_on_content.html │ └── witness_listing_and_voting.html ├── tutorials-recipes │ ├── account-creation-process.html │ ├── calculate_rc_recipe.html │ ├── estimate_upvote.html │ ├── forum-market-bandwidth.html │ ├── jussi-multiplexer.html │ ├── plugin_and_api_list.html │ ├── understanding-configuration-values.html │ ├── understanding-dynamic-global-properties.html │ ├── vest-to-steem.html │ └── virtual-operations-when-streaming-blockchain-transactions.html ├── tutorials-ruby │ ├── blog_feed.html │ ├── edit_content_patching.html │ ├── follow_another_user.html │ ├── get_account_comments.html │ ├── get_account_replies.html │ ├── get_follower_and_following_list.html │ ├── get_post_comments.html │ ├── get_post_details.html │ ├── get_posts.html │ ├── get_voters_list_on_post.html │ ├── getting_started.html │ ├── reblogging_post.html │ ├── search_accounts.html │ ├── search_tags.html │ ├── stream_blockchain_transactions.html │ ├── submit_comment_reply.html │ ├── submit_post.html │ └── vote_on_content.html ├── tutorials │ └── index.html └── unused │ ├── accounts.md │ ├── authority_and_validation.md │ ├── blocks_and_transactions.md │ ├── community.html │ ├── database_api.html │ ├── docker.html │ ├── globals.md │ ├── keys.md │ ├── market.md │ ├── steemd.html │ ├── tags.html │ └── tutorials.html ├── favicon.png ├── images ├── emblem.svg ├── hero.png ├── logo.svg ├── logo_white.svg ├── logotype_white.svg ├── look.svg ├── menu.svg ├── npm-logo.svg ├── services-jussi │ └── kitematic-example.png ├── steemdev.png └── tutorials-recipes │ └── jussi-multiplexer │ └── network-diagram.png ├── index.html ├── js ├── .gitignore ├── adjust.js ├── lunr.min.js ├── main.js └── search.js ├── lib └── scrape │ ├── api_definitions_job.rb │ └── tutorials_job │ ├── base.rb │ ├── javascript.rb │ ├── python.rb │ └── ruby.rb ├── quickstart.html ├── readme.md ├── resources.html ├── search.html ├── services.html ├── siteicon.png ├── support └── 9239ce3667e0-config.ini ├── touch-icon.png ├── tutorial_structure.md └── unused ├── accounts.md ├── authority_and_validation.md ├── blocks_and_transactions.md ├── community.md ├── database_api.md ├── docker.md ├── globals.md ├── keys.md ├── market.md ├── sbds.md ├── steemd.md ├── tags.md └── tutorials.md /.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | .sass-cache/ 3 | .idea 4 | vendor 5 | node_modules/ 6 | .DS_Store 7 | 8 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'jekyll' 4 | gem 'neatjson' 5 | gem 'rake' 6 | gem 'git' 7 | gem 'steem-ruby' 8 | gem 'html-proofer' 9 | 10 | group :jekyll_plugins do 11 | gem 'jekyll-seo-tag' 12 | gem 'jekyll-sitemap' 13 | end 14 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (5.2.2) 5 | concurrent-ruby (~> 1.0, >= 1.0.2) 6 | i18n (>= 0.7, < 2) 7 | minitest (~> 5.1) 8 | tzinfo (~> 1.1) 9 | addressable (2.5.2) 10 | public_suffix (>= 2.0.2, < 4.0) 11 | base58 (0.2.3) 12 | bindata (2.4.4) 13 | bitcoin-ruby (0.0.18) 14 | colorator (1.1.0) 15 | colorize (0.8.1) 16 | concurrent-ruby (1.1.4) 17 | em-websocket (0.5.1) 18 | eventmachine (>= 0.12.9) 19 | http_parser.rb (~> 0.6.0) 20 | ethon (0.11.0) 21 | ffi (>= 1.3.0) 22 | eventmachine (1.2.7) 23 | ffi (1.9.25) 24 | forwardable-extended (2.6.0) 25 | git (1.5.0) 26 | hashie (3.6.0) 27 | html-proofer (3.9.3) 28 | activesupport (>= 4.2, < 6.0) 29 | addressable (~> 2.3) 30 | colorize (~> 0.8) 31 | mercenary (~> 0.3.2) 32 | nokogiri (~> 1.8.1) 33 | parallel (~> 1.3) 34 | typhoeus (~> 1.3) 35 | yell (~> 2.0) 36 | http_parser.rb (0.6.0) 37 | i18n (0.9.5) 38 | concurrent-ruby (~> 1.0) 39 | jekyll (3.8.5) 40 | addressable (~> 2.4) 41 | colorator (~> 1.0) 42 | em-websocket (~> 0.5) 43 | i18n (~> 0.7) 44 | jekyll-sass-converter (~> 1.0) 45 | jekyll-watch (~> 2.0) 46 | kramdown (~> 1.14) 47 | liquid (~> 4.0) 48 | mercenary (~> 0.3.3) 49 | pathutil (~> 0.9) 50 | rouge (>= 1.7, < 4) 51 | safe_yaml (~> 1.0) 52 | jekyll-sass-converter (1.5.2) 53 | sass (~> 3.4) 54 | jekyll-seo-tag (2.5.0) 55 | jekyll (~> 3.3) 56 | jekyll-sitemap (1.2.0) 57 | jekyll (~> 3.3) 58 | jekyll-watch (2.1.2) 59 | listen (~> 3.0) 60 | json (2.1.0) 61 | kramdown (1.17.0) 62 | liquid (4.0.1) 63 | listen (3.1.5) 64 | rb-fsevent (~> 0.9, >= 0.9.4) 65 | rb-inotify (~> 0.9, >= 0.9.7) 66 | ruby_dep (~> 1.2) 67 | little-plugger (1.1.4) 68 | logging (2.2.2) 69 | little-plugger (~> 1.1) 70 | multi_json (~> 1.10) 71 | mercenary (0.3.6) 72 | mini_portile2 (2.3.0) 73 | minitest (5.11.3) 74 | multi_json (1.13.1) 75 | neatjson (0.8.4) 76 | nokogiri (1.8.5) 77 | mini_portile2 (~> 2.3.0) 78 | parallel (1.12.1) 79 | pathutil (0.16.2) 80 | forwardable-extended (~> 2.6) 81 | public_suffix (3.0.3) 82 | rake (12.3.2) 83 | rb-fsevent (0.10.3) 84 | rb-inotify (0.10.0) 85 | ffi (~> 1.0) 86 | rouge (3.3.0) 87 | ruby_dep (1.5.0) 88 | safe_yaml (1.0.4) 89 | sass (3.7.2) 90 | sass-listen (~> 4.0.0) 91 | sass-listen (4.0.0) 92 | rb-fsevent (~> 0.9, >= 0.9.4) 93 | rb-inotify (~> 0.9, >= 0.9.7) 94 | steem-ruby (0.9.4) 95 | base58 (~> 0.2, >= 0.2.3) 96 | bindata (~> 2.4, >= 2.4.4) 97 | bitcoin-ruby (~> 0.0, >= 0.0.18) 98 | ffi (~> 1.9, >= 1.9.23) 99 | hashie (~> 3.5, >= 3.5.7) 100 | json (~> 2.1, >= 2.1.0) 101 | logging (~> 2.2, >= 2.2.0) 102 | thread_safe (0.3.6) 103 | typhoeus (1.3.1) 104 | ethon (>= 0.9.0) 105 | tzinfo (1.2.5) 106 | thread_safe (~> 0.1) 107 | yell (2.0.7) 108 | 109 | PLATFORMS 110 | ruby 111 | 112 | DEPENDENCIES 113 | git 114 | html-proofer 115 | jekyll 116 | jekyll-seo-tag 117 | jekyll-sitemap 118 | neatjson 119 | rake 120 | steem-ruby 121 | 122 | BUNDLED WITH 123 | 1.16.5 124 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 CloudCannon 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | default: serve 2 | 3 | serve: vendor 4 | bundle exec jekyll serve --port 8080 5 | 6 | vendor: 7 | bundle install --path vendor/bundle 8 | 9 | clean: 10 | rm -rf _site 11 | 12 | distclean: clean 13 | rm -rf vendor 14 | -------------------------------------------------------------------------------- /_api/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_api/accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Accounts 3 | position: 1 4 | --- -------------------------------------------------------------------------------- /_apidefinitions/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_apidefinitions/account-by-key-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 1 3 | exclude: true 4 | --- 5 | 6 | {% include api-template.html api_data=site.data.apidefinitions.account_by_key_api %} -------------------------------------------------------------------------------- /_apidefinitions/account-history-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 2 3 | exclude: true 4 | --- 5 | 6 | {% include api-template.html api_data=site.data.apidefinitions.account_history_api %} 7 | -------------------------------------------------------------------------------- /_apidefinitions/block-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 3 3 | exclude: true 4 | --- 5 | 6 | {% include api-template.html api_data=site.data.apidefinitions.block_api %} 7 | -------------------------------------------------------------------------------- /_apidefinitions/bridge.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 1 3 | group: communities 4 | exclude: true 5 | --- 6 | 7 | {% include api-template.html api_data=site.data.apidefinitions.bridge %} 8 | -------------------------------------------------------------------------------- /_apidefinitions/broadcast-ops-communities.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 100 3 | exclude: true 4 | --- 5 | 6 | Ops: 7 | 17 | 18 | {% for sections in site.data.apidefinitions.broadcast_ops_communities %} 19 | {{ sections.description | liquify | markdownify }} 20 | {% for op in sections.ops %} 21 | 38 |

39 | {{op.name}} 40 | 41 | 42 |

43 | {{ op.purpose | liquify | markdownify }} 44 |
Roles: {{op.roles}}
45 |
Parameters: {{op.params}}
46 | {% if op.json_examples %} 47 |
Example Op:
48 | {% for json_example in op.json_examples %} 49 | ```json 50 | {{json_example | neat_json}} 51 | ``` 52 | {% endfor %} 53 | {% endif %} 54 |
55 | {% endfor %} 56 | {% endfor %} 57 | -------------------------------------------------------------------------------- /_apidefinitions/broadcast-ops.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 99 3 | exclude: true 4 | --- 5 | 6 | Ops: 7 | 17 | 18 | Virtual Ops: 19 | 29 | 30 | {% for sections in site.data.apidefinitions.broadcast_ops %} 31 | {{ sections.description | liquify | markdownify }} 32 | {% for op in sections.ops %} 33 | 50 |

51 | {{op.name}} 52 | 53 | 54 |

55 | {{ op.purpose | liquify | markdownify }} 56 |
Roles: {{op.roles}}
57 |
Parameters: {{op.params}}
58 | {% if op.json_examples %} 59 |
Example Op:
60 | {% for json_example in op.json_examples %} 61 | ```json 62 | {{json_example | neat_json}} 63 | ``` 64 | {% endfor %} 65 | {% endif %} 66 |
67 | {% endfor %} 68 | {% endfor %} 69 | -------------------------------------------------------------------------------- /_apidefinitions/condenser-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 0 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.condenser_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/database-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 4 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.database_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/debug-node-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 5 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.debug_node_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/follow-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 6 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.follow_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/jsonrpc.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 7 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.jsonrpc %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/market-history-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 8 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.market_history_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/network-broadcast-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 9 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.network_broadcast_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/rc-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 10 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.rc_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/reputation-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 11 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.reputation_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/rewards-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 12 3 | exclude: true 4 | --- 5 | 6 | {% include api-template.html api_data=site.data.apidefinitions.rewards_api %} 7 | -------------------------------------------------------------------------------- /_apidefinitions/tags-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 13 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.tags_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/transaction-status-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 14 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.transaction_status_api %} 6 | -------------------------------------------------------------------------------- /_apidefinitions/witness-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | position: 15 3 | exclude: true 4 | --- 5 | {% include api-template.html api_data=site.data.apidefinitions.witness_api %} 6 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # ---- 2 | # Site 3 | 4 | title: Steem Developer 5 | description: Steem Developer Documentation. 6 | baseurl: '/' 7 | url: https://developers.steem.io 8 | google_analytics_key: UA-76480270-4 9 | permalink: /:categories/:title.html 10 | 11 | collections: 12 | introduction: 13 | title: Introduction 14 | id: introduction 15 | position: 1 16 | output: true 17 | contributors: 18 | title: Contributors 19 | id: contributors 20 | position: 2 21 | output: true 22 | quickstart: 23 | title: Quickstart 24 | id: quickstart 25 | position: 3 26 | output: true 27 | javascript: 28 | title: Javascript 29 | id: javascript 30 | position: 4 31 | output: true 32 | tutorials: 33 | title: Tutorials 34 | id: tutorials 35 | position: 5 36 | output: true 37 | services: 38 | title: Services 39 | id: services 40 | position: 6 41 | output: true 42 | resources: 43 | title: Resources 44 | id: resources 45 | position: 7 46 | output: true 47 | glossary: 48 | title: Glossary 49 | id: glossary 50 | position: 8 51 | output: true 52 | tutorials-recipes: 53 | title: Recipes 54 | id: tutorials-recipes 55 | position: 9 56 | output: true 57 | tutorials-javascript: 58 | title: Javascript Tutorials 59 | id: tutorials-javascript 60 | position: 10 61 | output: true 62 | tutorials-python: 63 | title: Python Tutorials 64 | id: tutorials-python 65 | position: 11 66 | output: true 67 | apidefinitions: 68 | title: API Definitions 69 | id: apidefinitions 70 | position: 12 71 | output: true 72 | testnet: 73 | title: Testnet 74 | id: testnet 75 | position: 13 76 | output: true 77 | tutorials-ruby: 78 | title: Ruby Tutorials 79 | id: tutorials-ruby 80 | position: 14 81 | output: true 82 | 83 | plugins: 84 | - jekyll-sitemap 85 | - jekyll-seo-tag 86 | 87 | exclude: 88 | - readme.md 89 | - LICENCE 90 | - vendor 91 | - Makefile 92 | 93 | defaults: 94 | - 95 | scope: 96 | path: "" 97 | values: 98 | layout: default 99 | 100 | types: 101 | - get 102 | - put 103 | - delete 104 | - post 105 | 106 | kramdown: 107 | auto_ids: true 108 | 109 | exclude: ['README.md', 'Gemfile.lock', 'Gemfile', 'CONTRIBUTING.md'] 110 | -------------------------------------------------------------------------------- /_data/apidefinitions/account_by_key_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-09-25 01:15:43 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: Account by key API 5 | description: Used to lookup account information based on a key. **These AppBase 6 | API methods are still under development and subject to change.** 7 | methods: 8 | - api_method: account_by_key_api.get_key_references 9 | since: HF16 10 | purpose: Returns all accounts that have the key associated with their owner or 11 | active authorities. 12 | parameter_json: '{"keys":[]}' 13 | expected_response_json: '{"accounts":[]}' 14 | curl_examples: 15 | - '{"jsonrpc":"2.0", "method":"account_by_key_api.get_key_references", "params":{"keys":["STM5jZtLoV8YbxCxr4imnbWn61zMB24wwonpnVhfXRmv7j6fk3dTH"]}, 16 | "id":1}' 17 | -------------------------------------------------------------------------------- /_data/apidefinitions/account_history_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2019-10-08 17:22:36 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: Account history API 5 | description: Used to lookup account history information. **These AppBase API methods are still under development and subject to change.** 6 | methods: 7 | - api_method: account_history_api.get_account_history 8 | purpose: | 9 | Returns a history of all operations for a given account. 10 | 11 | Also see: [Paginated API Methods]({{ '/tutorials-recipes/paginated-api-methods#account_history_apiget_account_history' | relative_url }}) 12 | parameter_json: {"account":"","start":"18446744073709551615","limit":1000} 13 | expected_response_json: {"history":[]} 14 | curl_examples: 15 | - '{"jsonrpc":"2.0", "method":"account_history_api.get_account_history", "params":{"account":"steemit", "start":1000, "limit":1000}, "id":1}' 16 | - '{"jsonrpc":"2.0", "method":"account_history_api.get_account_history", "params":{"account":"steemit", "start":-1, "limit":10000}, "id":1}' 17 | expected_curl_responses: 18 | - Could not find API account_history_api 19 | - Could not find API account_history_api 20 | - api_method: account_history_api.get_ops_in_block 21 | purpose: Returns all operations contained in a block. 22 | parameter_json: {"block_num":0,"only_virtual":false} 23 | expected_response_json: {"ops":[]} 24 | curl_examples: 25 | - '{"jsonrpc":"2.0", "method":"account_history_api.get_ops_in_block", "params":{"block_num":1,"only_virtual":false}, "id":1}' 26 | - '{"jsonrpc":"2.0", "method":"account_history_api.get_ops_in_block", "params":{"block_num":5443322,"only_virtual":true}, "id":1}' 27 | expected_curl_responses: 28 | - Could not find API account_history_api 29 | - Could not find API account_history_api 30 | - api_method: account_history_api.get_transaction 31 | deprecated: true 32 | purpose: Returns the details of a transaction based on a transaction id. 33 | parameter_json: {"id":"0000000000000000000000000000000000000000"} 34 | expected_response_json: {"ref_block_num":0,"ref_block_prefix":0,"expiration":"1970-01-01T00:00:00","operations":[],"extensions":[],"signatures":[],"transaction_id":"0000000000000000000000000000000000000000","block_num":0,"transaction_num":0} 35 | curl_examples: 36 | - '{"jsonrpc":"2.0", "method":"account_history_api.get_transaction", "params":{"id":"6fde0190a97835ea6d9e651293e90c89911f933c"}, "id":1}' 37 | expected_curl_responses: 38 | - Could not find API account_history_api 39 | - api_method: account_history_api.enum_virtual_ops 40 | since: HF23 41 | purpose: 42 | parameter_json: '{"block_range_begin":1,"block_range_end":2}' 43 | expected_response_json: '{"ops":[],"next_block_range_begin":0}' 44 | -------------------------------------------------------------------------------- /_data/apidefinitions/block_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-09-25 01:15:43 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: :block_api 5 | description: 'Used to query values related to the block plugin. **These AppBase 6 | API methods are still under development and subject to change.** 7 | 8 | ' 9 | methods: 10 | - api_method: block_api.get_block 11 | purpose: | 12 | Retrieve a full, signed block of the referenced block, or null if no matching block was found. 13 | 14 | **Parameters:** 15 | 16 | * `block_num:int` 17 | 18 | | `block_num` (int) | | 19 | |-------------------|-| 20 | | `1` | Queries the very first block. | 21 | | `8675309` | Queries block number 8,675,309. | 22 | | `62396745` | Queries block number 62,396,745. | 23 | parameter_json: '{"block_num":0}' 24 | expected_response_json: "{}" 25 | curl_examples: 26 | - '{"jsonrpc":"2.0", "method":"block_api.get_block", "params":{"block_num":1}, 27 | "id":1}' 28 | - '{"jsonrpc":"2.0", "method":"block_api.get_block", "params":{"block_num":8675309}, 29 | "id":1}' 30 | - '{"jsonrpc":"2.0", "method":"block_api.get_block", "params":{"block_num":62396745}, 31 | "id":1}' 32 | - api_method: block_api.get_block_header 33 | purpose: "Retrieve a block header of the referenced block, or null if no matching 34 | block was found.\n\n**Parameters:**\n \n * `block_num:int` - Height of the 35 | block whose header should be returned\n\n| `block_num` (int) | |\n|-------------------|-|\n| 36 | `1` | Queries the block headers for the very first block. |\n| `8675309` | Queries 37 | block headers for block number 8,675,309. |\n| `62396745` | Queries block headers 38 | for block number 62,396,745. |\n" 39 | parameter_json: '{"block_num":0}' 40 | expected_response_json: "{}" 41 | curl_examples: 42 | - '{"jsonrpc":"2.0", "method":"block_api.get_block_header", "params":{"block_num":1}, 43 | "id":1}' 44 | - '{"jsonrpc":"2.0", "method":"block_api.get_block_header", "params":{"block_num":8675309}, 45 | "id":1}' 46 | - '{"jsonrpc":"2.0", "method":"block_api.get_block_header", "params":{"block_num":62396745}, 47 | "id":1}' 48 | -------------------------------------------------------------------------------- /_data/apidefinitions/debug_node_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-09-27 16:01:47 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: :debug_node_api 5 | description: | 6 | This plugin allows all sorts of creative "what-if" experiments with the chain. 7 | 8 | See: [debug_node_plugin.md](https://github.com/steemit/steem/blob/master/doc/devs/debug_node_plugin.md) 9 | methods: 10 | - api_method: debug_node_api.debug_generate_blocks 11 | purpose: Generate blocks locally. 12 | parameter_json: '{"debug_key":"","count":0,"skip":0,"miss_blocks":0,"edit_if_needed":true}' 13 | expected_response_json: '{"blocks":0}' 14 | - api_method: debug_node_api.debug_generate_blocks_until 15 | purpose: Generate blocks locally until a specified head block time. Can generate them sparsely. 16 | parameter_json: '{"debug_key":"","head_block_time":"1970-01-01T00:00:00","generate_sparsely":true}' 17 | expected_response_json: '{"blocks":0}' 18 | - api_method: debug_node_api.debug_get_hardfork_property_object 19 | purpose: 20 | parameter_json: "{}" 21 | expected_response_json: '{"id":0,"processed_hardforks":[],"last_hardfork":0,"current_hardfork_version":"0.0.0","next_hardfork":"0.0.0","next_hardfork_time":"1970-01-01T00:00:00"}' 22 | - api_method: debug_node_api.debug_get_json_schema 23 | purpose: 24 | parameter_json: "{}" 25 | expected_response_json: '{"schema":""}' 26 | - api_method: debug_node_api.debug_get_witness_schedule 27 | purpose: 28 | parameter_json: "{}" 29 | expected_response_json: '{"id":0,"current_virtual_time":"0","next_shuffle_block_num":21573344,"current_shuffled_witnesses":[],"num_scheduled_witnesses":192,"elected_weight":49,"timeshare_weight":73,"miner_weight":1,"witness_pay_normalization_factor":0,"median_props":{"account_creation_fee":{"amount":"0","precision":3,"nai":"@@000000021"},"maximum_block_size":131072,"sbd_interest_rate":1000,"account_subsidy_budget":797,"account_subsidy_decay":347321},"majority_version":"0.0.0","max_voted_witnesses":128,"max_miner_witnesses":131,"max_runner_witnesses":191,"hardfork_required_witnesses":4,"account_subsidy_rd":{"resource_unit":0,"budget_per_time_unit":0,"pool_eq":0,"max_pool_size":0,"decay_params":{"decay_per_time_unit":0,"decay_per_time_unit_denom_shift":0},"min_decay":0},"account_subsidy_witness_rd":{"resource_unit":0,"budget_per_time_unit":0,"pool_eq":0,"max_pool_size":0,"decay_params":{"decay_per_time_unit":0,"decay_per_time_unit_denom_shift":0},"min_decay":0},"min_witness_account_subsidy_decay":0}' 30 | - api_method: debug_node_api.debug_has_hardfork 31 | purpose: 32 | parameter_json: '{"hardfork_id":0}' 33 | expected_response_json: '{"has_hardfork":false}' 34 | - api_method: debug_node_api.debug_pop_block 35 | purpose: Pop a block from the blockchain, returning it. 36 | parameter_json: "{}" 37 | expected_response_json: "{}" 38 | - api_method: debug_node_api.debug_push_blocks 39 | purpose: Push blocks from existing database. 40 | parameter_json: '{"src_filename":"","count":0,"skip_validate_invariants":false}' 41 | expected_response_json: '{"blocks":0}' 42 | - api_method: debug_node_api.debug_set_hardfork 43 | purpose: 44 | parameter_json: '{"hardfork_id":0}' 45 | expected_response_json: "{}" 46 | -------------------------------------------------------------------------------- /_data/apidefinitions/jsonrpc.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-09-25 01:15:43 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: JSON RPC 5 | description: Used to lookup information about the JSON RPC API. **These AppBase 6 | API methods are still under development and subject to change.** 7 | methods: 8 | - api_method: jsonrpc.get_methods 9 | purpose: Returns a list of methods supported by the JSON RPC API. 10 | parameter_json: "{}" 11 | expected_response_json: "[]" 12 | curl_examples: 13 | - '{"jsonrpc":"2.0", "method":"jsonrpc.get_methods", "id":1}' 14 | - api_method: jsonrpc.get_signature 15 | purpose: Returns the signature information for a JSON RPC method including the 16 | arguments and expected response JSON. 17 | parameter_json: '{"method":""}' 18 | expected_response_json: '{"args":null,"ret":null}' 19 | curl_examples: 20 | - '{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"jsonrpc.get_methods"}, 21 | "id":1}' 22 | - '{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"jsonrpc.get_signature"}, 23 | "id":1}' 24 | - '{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"condenser_api.get_dynamic_global_properties"}, 25 | "id":1}' 26 | - '{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"database_api.get_dynamic_global_properties"}, 27 | "id":1}' 28 | -------------------------------------------------------------------------------- /_data/apidefinitions/network_broadcast_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-09-25 01:15:43 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: Network Broadcast API 5 | description: | 6 | Used to broadcast transactions and blocks. **These AppBase API methods are 7 | still under development and subject to change.** 8 | 9 | Also see: [Blockchain Ops]({{ '/apidefinitions/broadcast-ops' | relative_url }}) 10 | methods: 11 | - api_method: network_broadcast_api.broadcast_block 12 | purpose: Used to broadcast a block. 13 | parameter_json: '{"block":{"previous":"0000000000000000000000000000000000000000","timestamp":"1970-01-01T00:00:00","witness":"","transaction_merkle_root":"0000000000000000000000000000000000000000","extensions":[],"witness_signature":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","transactions":[]}}' 14 | expected_response_json: "{}" 15 | curl_examples: 16 | - '{"jsonrpc":"2.0", "method":"network_broadcast_api.broadcast_block", "params":{"block":{"previous":"0000000000000000000000000000000000000000","timestamp":"1970-01-01T00:00:00","witness":"","transaction_merkle_root":"0000000000000000000000000000000000000000","extensions":[],"witness_signature":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","transactions":[]}}, 17 | "id":1}' 18 | expected_curl_responses: 19 | - attempting to push a block that is too old 20 | - api_method: network_broadcast_api.broadcast_transaction 21 | purpose: Used to broadcast a transaction. 22 | parameter_json: '{"trx":{"ref_block_num":0,"ref_block_prefix":0,"expiration":"1970-01-01T00:00:00","operations":[],"extensions":[],"signatures":[]},"max_block_age":-1}' 23 | expected_response_json: "{}" 24 | curl_examples: 25 | - '{"jsonrpc":"2.0", "method":"network_broadcast_api.broadcast_transaction", "params":{"trx":{"ref_block_num":1097,"ref_block_prefix":2181793527,"expiration":"2016-03-24T18:00:21","operations":[{"type":"vote_operation","value":{"voter":"steemit","author":"alice","permlink":"a-post-by-alice","weight":10000}}],"extensions":[],"signatures":[]},"max_block_age":50}, 26 | "id":1}' 27 | - '{"jsonrpc":"2.0", "method":"network_broadcast_api.broadcast_transaction", "params":{"trx":{"ref_block_num":1097,"ref_block_prefix":2181793527,"expiration":"2016-03-24T18:00:21","operations":[{"type":"pow_operation","value":{"worker_account":"cloop3","block_id":"00000449f7860b82b4fbe2f317c670e9f01d6d9a","nonce":3899,"work":{"worker":"STM7P5TDnA87Pj9T4mf6YHrhzjC1KbPZpNxLWCcVcHxNYXakpoT4F","input":"ae8e7c677119d22385f8c48026fee7aad7bba693bf788d7f27047f40b47738c0","signature":"1f38fe9a3f9989f84bd94aa5bbc88beaf09b67f825aa4450cf5105d111149ba6db560b582c7dbb026c7fc9c2eb5051815a72b17f6896ed59d3851d9a0f9883ca7a","work":"000e7b209d58f2e64b36e9bf12b999c6c7af168cc3fc41eb7f8a4bf796c174c3"},"props":{"account_creation_fee":{"amount":"100000","precision":3,"nai":"@@000000021"},"maximum_block_size":131072,"sbd_interest_rate":1000}}}],"extensions":[],"signatures":[]},"max_block_age":50}, 28 | "id":1}' 29 | expected_curl_responses: 30 | - Internal Error 31 | - Internal Error 32 | -------------------------------------------------------------------------------- /_data/apidefinitions/reputation_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-12-18 22:30:11 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: :reputation_api 5 | description: | 6 | Needed by `condenser_api` to optionally use `follow_api` or `reputation_api` 7 | for account reputations (the latter if [`hivemind`]({{ '/tutorials-recipes/using-hivemind' | relative_url }}) is fronting `follow_api`) 8 | methods: 9 | - api_method: reputation_api.get_account_reputations 10 | since: HF20 11 | purpose: | 12 | Returns the reputation of accounts. Parameters: `account:string`; `limit:int` 13 | 14 | * `limit` is up to 1000. 15 | 16 | | `account` (string) | `limit` (int) | | 17 | |--------------------|-| 18 | | `"steemit"` | 10 | Queries the reputation for account named "steemit". | 19 | 20 | See [#1425](https://github.com/steemit/steem/issues/1425) 21 | 22 | Also see: [Paginated API Methods]({{ '/tutorials-recipes/paginated-api-methods#reputation_apiget_account_reputations' | relative_url }}) 23 | parameter_json: '{"account_lower_bound":"","limit":1000}' 24 | expected_response_json: | 25 | { 26 | "account": "steem", 27 | "reputation": 0 28 | } 29 | curl_examples: 30 | - '{"jsonrpc":"2.0", "method":"reputation_api.get_account_reputations", "params": {"account_lower_bound": "steem"}, "id":1}' 31 | -------------------------------------------------------------------------------- /_data/apidefinitions/rewards_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2019-09-03 18:38:25 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: :rewards_api 5 | description: | 6 | Returns the simulated curve for payouts. Parameters: `curve:string`; `var1:string` 7 | 8 | Note: **The `rewards_api` plugin is for testing purposes only, do not run in production.** 9 | 10 | | `curve` (string) | `var1` (string) | | 11 | |--------------------|-| 12 | | `"quadratic"` | "2000000000000" | | 13 | | `"bounded_curation"` | "2000000000000" | | 14 | | `"linear"` | "2000000000000" | | 15 | | `"square_root"` | "2000000000000" | | 16 | | `"convergent_linear"` | "2000000000000" | | 17 | | `"convergent_square_root"` | "2000000000000" | | 18 | 19 | See: [#3325](https://github.com/steemit/steem/issues/3325) 20 | methods: 21 | - api_method: rewards_api.simulate_curve_payouts 22 | purpose: 23 | parameter_json: '{"curve":"quadratic","var1":"2000000000000"}' 24 | expected_response_json: '{"recent_claims":"","payouts":[]}' 25 | curl_examples: 26 | - '{"jsonrpc":"2.0", "method":"rewards_api.simulate_curve_payouts", "params": {"curve": "quadratic", "var1": "2000000000000"}, "id":1}' 27 | - '{"jsonrpc":"2.0", "method":"rewards_api.simulate_curve_payouts", "params": {"curve": "bounded_curation", "var1": "2000000000000"}, "id":1}' 28 | - '{"jsonrpc":"2.0", "method":"rewards_api.simulate_curve_payouts", "params": {"curve": "linear", "var1": "2000000000000"}, "id":1}' 29 | - '{"jsonrpc":"2.0", "method":"rewards_api.simulate_curve_payouts", "params": {"curve": "square_root", "var1": "2000000000000"}, "id":1}' 30 | - '{"jsonrpc":"2.0", "method":"rewards_api.simulate_curve_payouts", "params": {"curve": "convergent_linear", "var1": "2000000000000"}, "id":1}' 31 | - '{"jsonrpc":"2.0", "method":"rewards_api.simulate_curve_payouts", "params": {"curve": "convergent_square_root", "var1": "2000000000000"}, "id":1}' 32 | -------------------------------------------------------------------------------- /_data/apidefinitions/transaction_status_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-11-29 05:54:53 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: :transaction_status_api 5 | description: | 6 | This API is intended to evaluate a transaction status after calling [`condenser_api.broadcast_transaction`]({{ '/apidefinitions/#condenser_api.broadcast_transaction' | relative_url }}). 7 | 8 | To enable this API for `steemd`, the following is required in `config.ini` by specifying: 9 | 10 | ```ini 11 | plugin = transaction_status_api 12 | ``` 13 | 14 | See: [#3060](https://github.com/steemit/steem/pull/3060) 15 | methods: 16 | - api_method: transaction_status_api.find_transaction 17 | since: The Mysterious Future 18 | purpose: | 19 | Returns the status of a given transaction id. Parameters: `trx_id:string`; `expiration:timestamp` (optional) 20 | 21 | The result will contain one of the following `status` values: 22 | 23 | | Status | Meaning | 24 | |--------|---------| 25 | | `unknown` | Expiration time in future, transaction not included in block or mempool | 26 | | `within_mempool` | Transaction in mempool | 27 | | `within_reversible_block` | Transaction has been included in block, block not irreversible | 28 | | `within_irreversible_block` | Transaction has been included in block, block is irreversible | 29 | | `expired_reversible` | Transaction has expired, transaction is not irreversible (transaction could be in a fork) | 30 | | `expired_irreversible` | Transaction has expired, transaction is irreversible (transaction cannot be in a fork) | 31 | | `too_old` | Transaction is too old, I don't know about it | 32 | parameter_json: '{"transaction_id":"0000000000000000000000000000000000000000", "expiration":"2016-03-24T18:00:21"}' 33 | expected_response_json: '{"status":"unknown"}' 34 | curl_examples: 35 | - '{"jsonrpc":"2.0", "method":"transaction_status_api.find_transaction", "params": {"transaction_id": "0000000000000000000000000000000000000000"}, "id":1}' 36 | - '{"jsonrpc":"2.0", "method":"transaction_status_api.find_transaction", "params": {"transaction_id": "0000000000000000000000000000000000000000", "expiration":"2016-03-24T18:00:21"}, "id":1}' 37 | mainnet: 38 | working: false 39 | detail: "Not yet enabled." 40 | testnet: 41 | working: false 42 | detail: "Not yet enabled." 43 | -------------------------------------------------------------------------------- /_data/apidefinitions/witness_api.yml: -------------------------------------------------------------------------------- 1 | # Generated by Scrape::ApiDefinitionsJob: 2018-09-25 01:15:43 UTC 2 | # See: https://git.io/vx5CY 3 | --- 4 | - name: Witness API 5 | description: | 6 | **API removed in 0.20.6, see: [#3029](https://github.com/steemit/steem/issues/3029#issuecomment-428404844)** 7 | methods: 8 | - api_method: witness_api.get_account_bandwidth 9 | disabled: true 10 | purpose: | 11 | **Disabled since 0.20.6, see: [#3029](https://github.com/steemit/steem/issues/3029#issuecomment-428404844)** 12 | 13 | Returns the available bandwidth of an account. See: [Forum/Market Bandwidth]({{ '/tutorials-recipes/forum-market-bandwidth' | relative_url }}) 14 | parameter_json: '{"account":"","type":"post"}' 15 | expected_response_json: "{}" 16 | - api_method: witness_api.get_reserve_ratio 17 | disabled: true 18 | purpose: | 19 | **Disabled since 0.20.6, see: [#3029](https://github.com/steemit/steem/issues/3029#issuecomment-428404844)** 20 | 21 | Returns the current reserve ratio. 22 | parameter_json: "{}" 23 | expected_response_json: '{"id":0,"average_block_size":0,"current_reserve_ratio":1,"max_virtual_bandwidth":"0"}' 24 | curl_examples: 25 | - '{"jsonrpc":"2.0", "method":"witness_api.get_account_bandwidth", "params":{"account":"steemit","type":"forum"}, 26 | "id":1}' 27 | - '{"jsonrpc":"2.0", "method":"witness_api.get_account_bandwidth", "params":{"account":"alice","type":"market"}, 28 | "id":1}' 29 | expected_curl_responses: 30 | - Could not find API witness_api 31 | - Could not find API witness_api 32 | -------------------------------------------------------------------------------- /_data/glossary/blockchain.yml: -------------------------------------------------------------------------------- 1 | - term: Blockchain 2 | definition: Decentralized ledger and consensus protocol 3 | 4 | - term: Steem (blockchain) 5 | definition: Name of the blockchain and platform 6 | -------------------------------------------------------------------------------- /_data/nav.yml: -------------------------------------------------------------------------------- 1 | toc: 2 | - title: "Introduction" 3 | collection: "introduction" 4 | url: "/" 5 | position: 1 6 | - title: "Quickstart" 7 | collection: "quickstart" 8 | url: "/quickstart/" 9 | position: 2 10 | exclude: true 11 | - title: "Tutorials" 12 | collection: "tutorials" 13 | url: "/tutorials/" 14 | position: 4 15 | exclude: true 16 | docs: 17 | - title: Javascript 18 | collection: tutorials-javascript 19 | - title: Python 20 | collection: tutorials-python 21 | - title: Ruby 22 | collection: tutorials-ruby 23 | - title: Recipes 24 | collection: tutorials-recipes 25 | - title: "Services" 26 | collection: "services" 27 | url: "/services/" 28 | position: 6 29 | exclude: true 30 | - title: "Appbase API" 31 | collection: apidefinitions 32 | url: "/apidefinitions/" 33 | exclude: true 34 | position: 7 35 | - title: "Resources" 36 | collection: "resources" 37 | url: "/resources/" 38 | exclude: true 39 | position: 8 40 | - title: "Glossary" 41 | collection: "glossary" 42 | url: "/glossary/" 43 | position: 9 44 | exclude: true 45 | -------------------------------------------------------------------------------- /_data/testnet/tools.yml: -------------------------------------------------------------------------------- 1 | # Be sure to group each tool by testnet_id. 2 | # Possible places to watch for new testnet tools: 3 | # https://steemprojects.com/search/?q=testnet 4 | - name: Steemit, Inc. Live Testnet Endpoint 5 | testnet_id: 46d82ab 6 | url: https://testnet.steemitdev.com/ 7 | purpose: For anyone who wants to start testing their node and applications. 8 | - name: testnet.steem.vc 9 | testnet_id: 79276ae 10 | url: https://steemprojects.com/projects/p/steem-testnet/ 11 | purpose: General bootstrapping to `testnet.steem.vc` maintained maintained by `@almost-digital`. 12 | - name: TestNET Condenser 13 | testnet_id: 79276ae 14 | url: https://steemprojects.com/projects/p/testnet-condenser/ 15 | purpose: A condenser instance for `testnet.steem.vc`. 16 | -------------------------------------------------------------------------------- /_glossary/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_glossary/api.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: API 3 | position: 4 4 | description: Dictionary of API Terms 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /_glossary/chain_basics.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Chain Basics 3 | position: 1 4 | description: Dictionary of Chain Basic Terms 5 | --- 6 | 7 | 8 | 9 | 10 | 11 | {% for term in site.data.glossary.blockchain %} 12 | 13 | 14 | 15 | {% endfor %} 16 |
TermDefinition
{{ term.term }}{{ term.definition }}
17 | -------------------------------------------------------------------------------- /_glossary/governance.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Governance 3 | position: 2 4 | description: Dictionary of Governance Terms 5 | --- 6 | -------------------------------------------------------------------------------- /_glossary/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | section: Glossary 3 | position: 1 4 | exclude: true 5 | exclude_nav: true 6 | --- 7 |

Understanding the common terms used by the Steem blockchain is an important part of being able to build applications and tools that use it.

8 | 9 |

This section outlines several of the common terms.

10 | 11 |

More terms and information can be found on the steemit.com FAQ.

12 | 13 |
14 |
15 |
16 | {% for sections in site.data.glossary.index %} 17 |

{{sections.name}}

18 | {% for entry in sections.items %} 19 |
20 |
21 | {% assign keywords = entry.term | keywordify | escape %} 22 | {% assign search_url = '/search/?q=' | append: keywords %} 23 | 24 | {{entry.term}} 25 |
26 |
{{entry.def}}
27 |
28 | {% endfor %} 29 |
30 | {% endfor %} 31 |
32 |
33 |
34 | -------------------------------------------------------------------------------- /_glossary/market.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Market 3 | position: 5 4 | description: Dictionary of Market Terms 5 | --- 6 | -------------------------------------------------------------------------------- /_glossary/transactions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Transactions 3 | position: 3 4 | description: Dictionary of Transaction Terms 5 | --- 6 | -------------------------------------------------------------------------------- /_includes/api-template.html: -------------------------------------------------------------------------------- 1 | Methods: 2 | 10 | 11 | {% for sections in include.api_data %} 12 | {{ sections.description | liquify | markdownify }} 13 | {% for method in sections.methods %} 14 | 29 |

{{method.api_method}}

30 | {{ method.purpose | liquify | markdownify }} 31 |
Query Parameters JSON
32 | ```json 33 | {{method.parameter_json | neat_json}} 34 | ``` 35 |
Expected Response JSON
36 | ```json 37 | {{method.expected_response_json | neat_json}} 38 | ``` 39 | {% if method.curl_examples %} 40 |
Example curl
41 | {% for curl in method.curl_examples %} 42 | ```bash 43 | curl -s --data '{{curl}}' https://api.steemit.com 44 | ``` 45 | {% endfor %} 46 | {% endif %} 47 | --- 48 | {% endfor %} 49 | {% endfor %} 50 | -------------------------------------------------------------------------------- /_includes/sidebar.html: -------------------------------------------------------------------------------- 1 | 31 | -------------------------------------------------------------------------------- /_includes/tutorials-javascript/blog_feed.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 37338948, 4 | "author": "steemitblog", 5 | "permlink": "join-team-steemit-at-tokenfest", 6 | "category": "steemit", 7 | "parent_author": "", 8 | "parent_permlink": "steemit", 9 | "title": "Join Team Steemit at TokenFest!", 10 | "body": "\n\nHello Steemians! If you’d like to meet Team Steemit live-in-person, or are just interested in attending what promises to be a great blockchain conference, join us at TokenFest in San Francisco from March 15th to 16th. \n\nSteemit CEO, Ned Scott, will be participating in a fireside chat alongside Steemit’s CTO, Harry Schmidt, as well as the creator of Utopian.io, Diego Pucci. Steemit will also be hosting the opening party on Thursday night and we’d certainly love to meet as many of you as possible IRL, so head on over to https://tokenfest.adria.digital/ and get your tickets while you can. \n\n*Team Steemit*", 11 | "json_metadata": "{\"tags\":[\"steemit\",\"tokenfest\",\"conference\"],\"image\":[\"https://i.imgur.com/fOScDIW.png\"],\"links\":[\"https://tokenfest.adria.digital\",\"https://tokenfest.adria.digital/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}", 12 | "last_update": "2018-03-07T23:22:54", 13 | "created": "2018-03-07T20:56:36", 14 | "active": "2018-03-13T01:40:21", 15 | "last_payout": "1970-01-01T00:00:00", 16 | "depth": 0, 17 | "children": 29, 18 | "net_rshares": "11453442114933", 19 | "abs_rshares": "11454054795840", 20 | "vote_rshares": "11454054795840", 21 | "children_abs_rshares": "13568695606090", 22 | "cashout_time": "2018-03-14T20:56:36", 23 | "max_cashout_time": "1969-12-31T23:59:59", 24 | "total_vote_weight": 3462435, 25 | "reward_weight": 10000, 26 | "total_payout_value": "0.000 SBD", 27 | "curator_payout_value": "0.000 SBD", 28 | "author_rewards": 0, 29 | "net_votes": 77, 30 | "root_comment": 37338948, 31 | "max_accepted_payout": "0.000 SBD", 32 | "percent_steem_dollars": 10000, 33 | "allow_replies": true, 34 | "allow_votes": true, 35 | "allow_curation_rewards": true, 36 | "beneficiaries": [], 37 | "url": "/steemit/@steemitblog/join-team-steemit-at-tokenfest", 38 | "root_title": "Join Team Steemit at TokenFest!", 39 | "pending_payout_value": "46.436 SBD", 40 | "total_pending_payout_value": "0.000 STEEM", 41 | "active_votes": [ 42 | { 43 | "voter": "steemitblog", 44 | "weight": 0, 45 | "rshares": "1870813909383", 46 | "percent": 10000, 47 | "reputation": "128210130644387", 48 | "time": "2018-03-07T20:56:36" 49 | }, 50 | { 51 | "voter": "kevinwong", 52 | "weight": 526653, 53 | "rshares": "2208942520687", 54 | "percent": 5000, 55 | "reputation": "374133832002581", 56 | "time": "2018-03-08T04:27:00" 57 | } 58 | ], 59 | "replies": [], 60 | "author_reputation": "128210130644387", 61 | "promoted": "0.000 SBD", 62 | "body_length": 754, 63 | "reblogged_by": [] 64 | } 65 | ] -------------------------------------------------------------------------------- /_includes/tutorials-javascript/get_posts.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 37338948, 4 | "author": "steemitblog", 5 | "permlink": "join-team-steemit-at-tokenfest", 6 | "category": "steemit", 7 | "parent_author": "", 8 | "parent_permlink": "steemit", 9 | "title": "Join Team Steemit at TokenFest!", 10 | "body": 11 | "\n\nHello Steemians! If you’d like to meet Team Steemit live-in-person, or are just interested in attending what promises to be a great blockchain conference, join us at TokenFest in San Francisco from March 15th to 16th. \n\nSteemit CEO, Ned Scott, will be participating in a fireside chat alongside Steemit’s CTO, Harry Schmidt, as well as the creator of Utopian.io, Diego Pucci. Steemit will also be hosting the opening party on Thursday night and we’d certainly love to meet as many of you as possible IRL, so head on over to https://tokenfest.adria.digital/ and get your tickets while you can. \n\n*Team Steemit*", 12 | "json_metadata": 13 | "{\"tags\":[\"steemit\",\"tokenfest\",\"conference\"],\"image\":[\"https://i.imgur.com/fOScDIW.png\"],\"links\":[\"https://tokenfest.adria.digital\",\"https://tokenfest.adria.digital/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}", 14 | "last_update": "2018-03-07T23:22:54", 15 | "created": "2018-03-07T20:56:36", 16 | "active": "2018-03-13T01:40:21", 17 | "last_payout": "1970-01-01T00:00:00", 18 | "depth": 0, 19 | "children": 29, 20 | "net_rshares": "11453442114933", 21 | "abs_rshares": "11454054795840", 22 | "vote_rshares": "11454054795840", 23 | "children_abs_rshares": "13568695606090", 24 | "cashout_time": "2018-03-14T20:56:36", 25 | "max_cashout_time": "1969-12-31T23:59:59", 26 | "total_vote_weight": 3462435, 27 | "reward_weight": 10000, 28 | "total_payout_value": "0.000 SBD", 29 | "curator_payout_value": "0.000 SBD", 30 | "author_rewards": 0, 31 | "net_votes": 77, 32 | "root_comment": 37338948, 33 | "max_accepted_payout": "0.000 SBD", 34 | "percent_steem_dollars": 10000, 35 | "allow_replies": true, 36 | "allow_votes": true, 37 | "allow_curation_rewards": true, 38 | "beneficiaries": [], 39 | "url": "/steemit/@steemitblog/join-team-steemit-at-tokenfest", 40 | "root_title": "Join Team Steemit at TokenFest!", 41 | "pending_payout_value": "46.436 SBD", 42 | "total_pending_payout_value": "0.000 STEEM", 43 | "active_votes": [ 44 | { 45 | "voter": "steemitblog", 46 | "weight": 0, 47 | "rshares": "1870813909383", 48 | "percent": 10000, 49 | "reputation": "128210130644387", 50 | "time": "2018-03-07T20:56:36" 51 | }, 52 | { 53 | "voter": "kevinwong", 54 | "weight": 526653, 55 | "rshares": "2208942520687", 56 | "percent": 5000, 57 | "reputation": "374133832002581", 58 | "time": "2018-03-08T04:27:00" 59 | } 60 | ], 61 | "replies": [], 62 | "author_reputation": "128210130644387", 63 | "promoted": "0.000 SBD", 64 | "body_length": 754, 65 | "reblogged_by": [] 66 | }, 67 | { 68 | "id": 37338954, 69 | "etc.": "..." 70 | } 71 | ] -------------------------------------------------------------------------------- /_introduction/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_introduction/welcome.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Welcome to Steem 3 | position: 1 4 | --- 5 | 6 | #### Welcome to the Steem Developer Portal! 7 | 8 | This site is designed to aid those interested in developing applications on the **[Steem](http://steem.com){:target="_blank"}** blockchain. 9 | 10 | If you don't know about Steem yet, visit [steem.com](https://steem.com). 11 | 12 | The code for this site is on [github](https://github.com/steemit/devportal). If you'd like to see a specific improvement 13 | you can either submit a pull request or file an issue. Please follow our 14 | [contribution guidelines](https://github.com/steemit/devportal/blob/master/CONTRIBUTING.md) 15 | 16 | 17 | 18 | #### Site Resources 19 | 20 | The **quickstart** section has some general information on working with nodes, and testnets. 21 | 22 | Our **tutorials** section will take you through the basics of interacting with Steem apis in Javascript, Python, and Ruby. 23 | 24 | More detailed API specs are available in the **APPBASE API** section. Those apis are under development, so please read 25 | notes at the top of each section. 26 | 27 | You can find community resources, libraries, and more 'human' ways to get help and education in the **communities** section. 28 | 29 | The **glossary** has Steem specific terms that will help you understand documentation, whitepapers, and the speech of other steemians. 30 | 31 | 32 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | {% if jekyll.environment == 'production' %} 14 | 15 | 16 | 17 | {% else %} 18 | 19 | 20 | 21 | {% endif %} 22 | 23 | {% seo %} 24 | 25 | {% if jekyll.environment == 'production' %} 26 | 27 | 28 | 35 | {% endif %} 36 | 37 | 38 |
39 |

40 | 41 | {{ site.title }} logo 42 |

43 | 44 | {% if jekyll.environment == 'production' %} 45 |
46 | 47 | 48 |
49 | {% else %} 50 |
51 | 52 | 53 |
54 | {% endif %} 55 | 56 | {% include sidebar.html %} 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
65 |
66 |
67 |

Steem Developer Portal {% if page.section %} - {{ page.section }}{% endif %}

68 | {% if jekyll.environment == 'production' %} 69 | 70 | {% else %} 71 | 72 | {% endif %} 73 |
74 | {{ content }} 75 |
76 | 79 | 84 | 85 | 86 | 87 | {% if jekyll.environment == 'production' %} 88 | 89 | {% else %} 90 | 91 | {% endif %} 92 | -------------------------------------------------------------------------------- /_layouts/full.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 |

6 | 7 | {{ page.title }} 8 | {% if page.type %} 9 | 10 | {% endif %} 11 | 12 |

13 | {% if page.description %} 14 | {{page.description | markdownify}} 15 | {% endif %} 16 | 17 | {{ page.content | replace: "
", "
Parameters
" }} 18 |
19 | -------------------------------------------------------------------------------- /_layouts/main-script.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 |
6 |

7 | 8 | {{ page.title }} 9 | {% if page.type %} 10 | 11 | {% endif %} 12 | 13 |

14 | {% if page.description %} 15 |

{{page.description}}

16 | {% endif %} 17 | 18 | {{ page.content | replace: "
", "
Parameters
" }} 19 |
20 | 21 | {% if page.main_script or page.right_code %} 22 |
23 | {% if page.main_script %} 24 |

{{ page.main_script_anchor }}

25 | {% assign filename = page.main_script | split: '/' %} 26 | {{ filename.last }} 27 | {% capture main_script %}```{{page.main_type}} 28 | {% include {{page.main_script}} %} 29 | ```{% endcapture %} 30 | {{ main_script | markdownify }} 31 | {% endif %} 32 | 33 | {% if page.right_code %} 34 | {{ page.right_code | markdownify }} 35 | {% endif %} 36 |
37 | {% endif %} 38 |
39 | -------------------------------------------------------------------------------- /_layouts/steem-post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 |

6 | 7 | {{ page.title }} 8 | {% if page.type %} 9 | 10 | {% endif %} 11 | 12 |

13 | {% if page.description %} 14 | {{page.description | markdownify}} 15 | {% endif %} 16 | 17 |
18 | {{ content }} 19 |
20 |
21 | -------------------------------------------------------------------------------- /_plugins/keywordify_filter.rb: -------------------------------------------------------------------------------- 1 | module Jekyll 2 | module KeywordifyFilter 3 | SEP = /[^a-z0-9_]+/i 4 | STOP_WORDS = %w(i me my myself we our ours ourselves you your yours yourself 5 | yourselves he him his himself she her hers herself it its itself they them 6 | their theirs themselves what which who whom this that these those am is 7 | are was were be been being have has had having do does did doing a an the 8 | and but if or because as until while of at by for with about against 9 | between into through during before after above below to from up down in 10 | out on off over under again further then once here there when where why 11 | how all any both each few more most other some such no nor not only own 12 | same so than too very s t can will just don should now) 13 | 14 | def keywordify(object, mode = 'subtract', extra_keywords = nil) 15 | output = [] 16 | 17 | case object 18 | when Hash 19 | object.each do |k, v| 20 | output += keywordify(k).split(SEP) 21 | output += keywordify(v).split(SEP) 22 | end 23 | when Array 24 | object.each do |k, v| 25 | output += keywordify(v).split(SEP) 26 | end 27 | when NilClass 28 | # no-op 29 | else 30 | output += object.inspect.split(SEP) 31 | end 32 | 33 | output = output.map(&:strip).map(&:downcase) 34 | extra_keywords = extra_keywords.to_s.split(SEP).map(&:strip).map(&:downcase) 35 | 36 | case mode 37 | when 'subtract' then output -= extra_keywords 38 | when 'add' then output += extra_keywords 39 | else; raise "Unknown mode: #{mode}" 40 | end 41 | 42 | (output - STOP_WORDS).uniq.compact.join(' ').strip 43 | end 44 | end 45 | end 46 | 47 | Liquid::Template.register_filter(Jekyll::KeywordifyFilter) 48 | 49 | # USAGE: 50 | # {{object | keywordify}} 51 | # {{object | keywordify 'subtract', 'some words to subtract'}} 52 | # {{object | keywordify 'add', 'additional words to add'}} 53 | -------------------------------------------------------------------------------- /_plugins/liquify_filter.rb: -------------------------------------------------------------------------------- 1 | module Jekyll 2 | module LiquidFilter 3 | def liquify(input) 4 | Liquid::Template.parse(input).render(@context) 5 | end 6 | end 7 | end 8 | 9 | Liquid::Template.register_filter(Jekyll::LiquidFilter) 10 | -------------------------------------------------------------------------------- /_plugins/neat_json_filter.rb: -------------------------------------------------------------------------------- 1 | require 'neatjson' 2 | 3 | module Jekyll 4 | module NeatJsonFilter 5 | def neat_json(input) 6 | input = JSON[input] rescue input if input.class == String 7 | 8 | begin 9 | JSON.neat_generate(input, wrap: 50, after_comma: 1, after_colon: 1) 10 | rescue JSON::GeneratorError => e 11 | "Error: #{e}." 12 | end 13 | end 14 | end 15 | end 16 | 17 | Liquid::Template.register_filter(Jekyll::NeatJsonFilter) 18 | 19 | # USAGE: 20 | # {{ site.data.user | neat_json }} 21 | # 22 | # neatjson formatting options: https://github.com/Phrogz/NeatJSON#options 23 | -------------------------------------------------------------------------------- /_plugins/post_generator.rb: -------------------------------------------------------------------------------- 1 | require 'steem' 2 | 3 | module Jekyll 4 | module SteemPostGenerator 5 | def steem_post(slug) 6 | slug = slug.split('@').last 7 | slug = slug.split('/') 8 | author = slug[0] 9 | permlink = slug[1..-1].join('/') 10 | permlink = permlink.split('?').first 11 | permlink = permlink.split('#').first 12 | api = Steem::CondenserApi.new 13 | 14 | api.get_content(author, permlink) do |content| 15 | body = content.body 16 | 17 | # This will normalize image hoster proxy URLs that the author copied 18 | # from another post. 19 | 20 | body = body.gsub(/https:\/\/steemitimages.com\/[0-9]+x0\/https:\/\//, 'https://') 21 | 22 | # Although it works on steemit.com and many other markdown interpretors, 23 | # kramdown doesn't like this, so we have to fix it: 24 | # 25 | #
26 | # This *won't* work. 27 | #
28 | # 29 | # See: https://stackoverflow.blog/2008/06/25/three-markdown-gotcha/ 30 | 31 | body = body.gsub(/<([^\/].+)>(.+)<\/\1>/m) do 32 | match = Regexp.last_match 33 | html = Kramdown::Document.new(match[2]).to_html 34 | 35 | "<#{match[1]}>#{html.gsub("\n", "
")}" 36 | end 37 | 38 | body + <<~DONE 39 | \n
40 |

41 | See: #{content.title} 42 | by 43 | @#{author} 44 |

45 | DONE 46 | end 47 | end 48 | end 49 | end 50 | 51 | Liquid::Template.register_filter(Jekyll::SteemPostGenerator) 52 | 53 | # USAGE: 54 | # {{'@stoodkev/how-to-set-up-and-use-multisignature-accounts-on-steem-blockchain' | steem_post}} 55 | -------------------------------------------------------------------------------- /_quickstart/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_quickstart/choose_library.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Choose Library 3 | position: 1 4 | exclude: true 5 | --- 6 | 7 | Getting started to develop robust and feature rich **Steem** applications couldn't be easier. Accessing steem data is easy from various options depending on your infrastructure and objectives. 8 | 9 | Building a picture discovery app is a breeze with the [JavaScript]({{ '/tutorials/#tutorials-javascript' | relative_url }}) library. There is also a [Python]({{ '/tutorials/#tutorials-python' | relative_url }}) library available, [Steemit.com]({{ '/services/#services-steemit' | relative_url }}) and [SBDS]({{ '/services/#services-sbds' | relative_url }}) services, as well as many [community projects]({{ '/resources/#resources-overview' | relative_url }}) which could be beneficial for your steem project. 10 | -------------------------------------------------------------------------------- /_resources/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_resources/_piston.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: PistonCLI 3 | position: 4 4 | --- 5 | 6 | Piston is a command line tool to interact with the STEEM network. Piston is 7 | written in Python and highly customizable for building steem tools and performing 8 | wallet operations. 9 | 10 | **Piston** - [https://github.com/xeroc/python-steem](https://github.com/xeroc/python-steem) 11 | 12 | Install with pip3: 13 |
14 | ``` 15 | sudo apt-get install libffi-dev libssl-dev python-dev python3-pip 16 | pip3 install steem 17 | ``` 18 | 19 | Manual installation: 20 | 21 | ``` 22 | git clone https://github.com/xeroc/python-steem/ 23 | cd python-steem 24 | python3 setup.py install --user 25 | ``` 26 | 27 | Upgrade 28 | 29 | ``` 30 | pip3 install steem --user --upgrade 31 | ``` 32 | 33 | Additional dependencies 34 | 35 | steemapi.steemasyncclient: 36 | 37 | - asyncio==3.4.3 38 | - pyyaml==3.11 39 | - Documentation 40 | 41 | Thanks to readthedocs.io, the documentation can be viewed on pysteem.com 42 | 43 | Documentation is written with the help of sphinx and can be compile to html with: 44 | 45 | ~~~ 46 | cd docs 47 | make html 48 | ~~~ -------------------------------------------------------------------------------- /_resources/bluepaper.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bluepaper 3 | position: 2 4 | --- 5 | 6 | The Steem Bluepaper describes how the Steem blockchain works, and provides an overview of the key features. 7 | 8 | [https://steem.com/steem-bluepaper.pdf](https://steem.com/steem-bluepaper.pdf) 9 | -------------------------------------------------------------------------------- /_resources/client_libs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Client Libraries 3 | position: 2 4 | --- 5 | 6 | **Radiator** - [https://github.com/inertia186/radiator](https://github.com/inertia186/radiator) 7 | 8 | Radiator is a Ruby API client to interact with the steem blockchain. 9 | 10 | --- 11 | 12 | **Steem-JS** - [https://github.com/steemit/steem-js](https://github.com/steemit/steem-js) 13 | 14 | Pure JavaScript Steem crypto library for node.js and browsers. Can be used to construct, sign and broadcast transactions in JavaScript. 15 | 16 | --- 17 | 18 | **Steem-TX-JS** - [https://github.com/mahdiyari/steem-tx-js](https://github.com/mahdiyari/steem-tx-js) 19 | 20 | Lightweight JavaScript library for creating and signing transactions. Works with frameworks like Nativescript. This library is a solution to such cases when other libraries are not working. And also an alternative for *only* creating, signing, and broadcasting transactions. 21 | 22 | --- 23 | 24 | **DSteem** - [https://github.com/jnordberg/dsteem](https://github.com/jnordberg/dsteem) 25 | 26 | A Typescript Steem crypto library for node.js and browsers. Steemit Inc [also maintains a version of this library](https://github.com/steemit/dsteem) 27 | 28 | --- 29 | 30 | **Beem** - [https://github.com/holgern/beem](https://github.com/holgern/beem) 31 | 32 | A python library to interact with the STEEM blockchain. It includes the CLI tool beempy. 33 | 34 | --- 35 | 36 | **PHP Steem** - [https://github.com/lukestokes/php-steem-tools](https://github.com/lukestokes/php-steem-tools) 37 | 38 | Various tools and scripts written in PHP for exploring the STEEM blockchain. 39 | 40 | --- 41 | 42 | **SteemJ** - [https://github.com/marvin-we/steem-java-api-wrapper](https://github.com/marvin-we/steem-java-api-wrapper) 43 | 44 | An API Wrapper for Steem written in Java 45 | 46 | --- 47 | 48 | **GoSteem** - [https://github.com/go-steem/rpc](https://github.com/go-steem/rpc) 49 | 50 | Golang RPC client library for Steem 51 | 52 | --- 53 | 54 | **SteemClientRS** - [https://github.com/cyberpunk-ventures/steem-client-rs](https://github.com/cyberpunk-ventures/steem-client-rs) 55 | 56 | Client library for Steem blockchain built with Rust 57 | -------------------------------------------------------------------------------- /_resources/developeradvocate.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Community & Help 3 | position: 6 4 | --- 5 | 6 | **Developer Advocate** 7 | 8 | The members of the Steemit Inc. development team are currently the main contributors to the Steem blockchain software. They oversee the open source [Steem](https://github.com/steemit/steem) GitHub repository, and maintain many of the open source [libraries](https://github.com/steemit) that developers use. 9 | 10 | Steemit’s [Developer Advocate](mailto:da@steemit.com) is here to make the process of developing for the Steem platform as smooth as possible. If you have any comments, concerns, or suggestions about how to improve the experience of developing applications with the Steem blockchain - please [reach out](mailto:da@steemit.com). 11 | 12 | The D.A. receives a lot of emails, but will respond as quickly as possible. 13 | 14 | --- 15 | 16 | **SteemDevs Chat** - [https://discord.gg/B29Bbng](https://discord.gg/B29Bbng) 17 | 18 | SteemDevs chat is a public Discord chat community where members of the Steem development community go to discuss Steem development, and other related topics. 19 | It is a great place to go to ask questions, meet other developers that are working on Steem projects, share tips and code snippets, and discuss the items you are working on. 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /_resources/overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Overview 3 | position: 1 4 | --- 5 | 6 | Steem has an active developer community that is constantly innovating on the blockchain. 7 | While the their presence on this page doesn't constitute endorsement, 8 | it's likely a few of these projects could be beneficial for your Steem idea. -------------------------------------------------------------------------------- /_resources/steem_connect_libs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: SteemConnect Libs 3 | position: 4 4 | --- 5 | 6 | Most people who will be implementing OAuth2 will want to find and utilize a library in the language of their choice. These libraries, while not necessarily built by Steemit, should support the SteemConnect API. 7 | 8 | If you're wondering what SteemConnect is, go [here]({{ '/services/#services-steemconnect' | relative_url }}). 9 | 10 | --- 11 | 12 | **SteemConnect SDK** - [https://github.com/steemit/steemconnect-sdk](https://github.com/steemit/steemconnect-sdk) 13 | 14 | An official javascript library for utilizing SteemConnect. 15 | 16 | --- 17 | 18 | **steem-connect-firebase-function** - [https://jakipatryk.github.io/steemconnect-firebase-functions/](https://jakipatryk.github.io/steemconnect-firebase-functions/) 19 | 20 | A TypeScript library that can help you build applications with SteemConnect and Firebase. 21 | 22 | --- 23 | 24 | **Sc2 SDK PHP** - [https://github.com/hernandev/sc2-sdk-php](https://github.com/hernandev/sc2-sdk-php) 25 | 26 | Easily integrate STEEM blockchain into your PHP applications, though SteemConnect. 27 | 28 | --- 29 | 30 | **Social Auth SteemConnect** - [https://pypi.python.org/pypi/social-auth-steemconnect/0.0.2](https://pypi.python.org/pypi/social-auth-steemconnect/0.0.2) 31 | 32 | Pluggable authentication backend for python-social-auth, that allows authentication via SteemConnect (v2). 33 | 34 | --- 35 | 36 | **steemconnect-python-client** - [https://github.com/emre/steemconnect-python-client](https://github.com/emre/steemconnect-python-client) 37 | 38 | steemconnect-python-client is a simple yet powerful library to interact with the Steemconnect. 39 | 40 | --- 41 | 42 | **omniauth-steemconnect** - [https://rubygems.org/gems/omniauth-steemconnect/versions/0.1.0](https://rubygems.org/gems/omniauth-steemconnect/versions/0.1.0) 43 | 44 | Ruby Omniauth2 Strategy for SteemConnect. 45 | 46 | --- 47 | 48 | **SwiftyConnect** - [https://github.com/caspernikus/SwiftyConnect](https://github.com/caspernikus/SwiftyConnect) 49 | 50 | SteemConnect Library for iOS / Swift. 51 | 52 | --- 53 | 54 | **SteemConnect4j** - [https://github.com/hapramp/steemconnect4j](https://github.com/hapramp/steemconnect4j) 55 | 56 | Steemconnect SDK for Java. 57 | -------------------------------------------------------------------------------- /_resources/steem_keychain.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Steem Keychain 3 | position: 5 4 | --- 5 | 6 | Steem Keychain is a browser extension solution to integrate web sites with the Steem blockchain. 7 | 8 | **Installation for Steem Keychain on:** 9 | * Google Chrome or Brave - [https://chrome.google.com/webstore/detail/steem-keychain/lkcjlnjfpbikmcmbachjpdbijejflpcm](https://chrome.google.com/webstore/detail/steem-keychain/lkcjlnjfpbikmcmbachjpdbijejflpcm) 10 | * Firefox - [https://addons.mozilla.org/en-US/firefox/addon/steem-keychain/](https://addons.mozilla.org/en-US/firefox/addon/steem-keychain/) 11 | 12 | For information on integrating Steem Keychain into your own web application, see: [**Website Integration**](https://github.com/MattyIce/steem-keychain/blob/master/README.md#website-integration) 13 | -------------------------------------------------------------------------------- /_resources/tools.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tools 3 | position: 3 4 | --- 5 | 6 | **ChainSync** - [https://github.com/aaroncox/chainsync](https://github.com/aaroncox/chainsync) 7 | 8 | A simple library to stream blocks and operations for digesting into other mediums. 9 | 10 | --- 11 | 12 | **SteemIAPI** - [http://steem.esteem.ws/](http://steem.esteem.ws/) 13 | 14 | Interactive Steem API swagger, [open-source](https://github.com/eSteemApp/steemapi) script allows you to interact with blockchain. 15 | 16 | --- 17 | 18 | **SteemSQL** - [http://www.steemsql.com/](http://www.steemsql.com/) 19 | 20 | A private Microsoft SQL server database with Steem blockchain data, subscription based, allows you to do flexible queries and analyze blockchain data. 21 | 22 | --- 23 | 24 | **eSync** - [https://github.com/eSteemApp/esync](https://github.com/eSteemApp/esync) 25 | 26 | eSync extracts Steem blockchain data and saves into Mongodb, written in Nodejs. 27 | 28 | --- 29 | 30 | **SteemPress** - [https://github.com/drov0/steempress](https://github.com/drov0/steempress) 31 | 32 | SteemPress is a WordPress plugin to allow you to automatically publish your articles to the Steem blockchain whenever you publish them on your blog. 33 | 34 | --- 35 | 36 | _**Many more projects and tools can be found at [https://steemprojects.com](https://steemprojects.com)**_ 37 | 38 | --- 39 | -------------------------------------------------------------------------------- /_resources/whitepaper.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Whitepaper 3 | position: 3 4 | --- 5 | 6 | The Steem Whitepaper provides a more in depth technical analysis of how the Steem blockchain operates. 7 | 8 | [https://steem.com/SteemWhitePaper.pdf](https://steem.com/SteemWhitePaper.pdf) 9 | -------------------------------------------------------------------------------- /_sass/_borland.scss: -------------------------------------------------------------------------------- 1 | code .hll { background-color: #ffffcc } 2 | code .c { color: #aaaaaa; font-style: italic } /* Comment */ 3 | code .err { color: #F00000; background-color: #F0A0A0 } /* Error */ 4 | code .k { color: #0000aa } /* Keyword */ 5 | code .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */ 6 | code .cp { color: #4c8317 } /* Comment.Preproc */ 7 | code .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */ 8 | code .cs { color: #0000aa; font-style: italic } /* Comment.Special */ 9 | code .gd { color: #aa0000 } /* Generic.Deleted */ 10 | code .ge { font-style: italic } /* Generic.Emph */ 11 | code .gr { color: #aa0000 } /* Generic.Error */ 12 | code .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 13 | code .gi { color: #00aa00 } /* Generic.Inserted */ 14 | code .go { color: #888888 } /* Generic.Output */ 15 | code .gp { color: #555555 } /* Generic.Prompt */ 16 | code .gs { font-weight: bold } /* Generic.Strong */ 17 | code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 18 | code .gt { color: #aa0000 } /* Generic.Traceback */ 19 | code .kc { color: #0000aa } /* Keyword.Constant */ 20 | code .kd { color: #0000aa } /* Keyword.Declaration */ 21 | code .kn { color: #0000aa } /* Keyword.Namespace */ 22 | code .kp { color: #0000aa } /* Keyword.Pseudo */ 23 | code .kr { color: #0000aa } /* Keyword.Reserved */ 24 | code .kt { color: #00aaaa } /* Keyword.Type */ 25 | code .m { color: #009999 } /* Literal.Number */ 26 | code .s { color: #aa5500 } /* Literal.String */ 27 | code .na { color: #1e90ff } /* Name.Attribute */ 28 | code .nb { color: #00aaaa } /* Name.Builtin */ 29 | code .nc { color: #00aa00; text-decoration: underline } /* Name.Class */ 30 | code .no { color: #aa0000 } /* Name.Constant */ 31 | code .nd { color: #888888 } /* Name.Decorator */ 32 | code .ni { color: #800000; font-weight: bold } /* Name.Entity */ 33 | code .nf { color: #00aa00 } /* Name.Function */ 34 | code .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */ 35 | code .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */ 36 | code .nv { color: #aa0000 } /* Name.Variable */ 37 | code .ow { color: #0000aa } /* Operator.Word */ 38 | code .w { color: #bbbbbb } /* Text.Whitespace */ 39 | code .mf { color: #009999 } /* Literal.Number.Float */ 40 | code .mh { color: #009999 } /* Literal.Number.Hex */ 41 | code .mi { color: #009999 } /* Literal.Number.Integer */ 42 | code .mo { color: #009999 } /* Literal.Number.Oct */ 43 | code .sb { color: #aa5500 } /* Literal.String.Backtick */ 44 | code .sc { color: #aa5500 } /* Literal.String.Char */ 45 | code .sd { color: #aa5500 } /* Literal.String.Doc */ 46 | code .s2 { color: #aa5500 } /* Literal.String.Double */ 47 | code .se { color: #aa5500 } /* Literal.String.Escape */ 48 | code .sh { color: #aa5500 } /* Literal.String.Heredoc */ 49 | code .si { color: #aa5500 } /* Literal.String.Interpol */ 50 | code .sx { color: #aa5500 } /* Literal.String.Other */ 51 | code .sr { color: #009999 } /* Literal.String.Regex */ 52 | code .s1 { color: #aa5500 } /* Literal.String.Single */ 53 | code .ss { color: #0000aa } /* Literal.String.Symbol */ 54 | code .bp { color: #00aaaa } /* Name.Builtin.Pseudo */ 55 | code .vc { color: #aa0000 } /* Name.Variable.Class */ 56 | code .vg { color: #aa0000 } /* Name.Variable.Global */ 57 | code .vi { color: #aa0000 } /* Name.Variable.Instance */ 58 | code .il { color: #009999 } /* Literal.Number.Integer.Long */ 59 | -------------------------------------------------------------------------------- /_sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin flex-direction($values) { 2 | -webkit-flex-direction: $values; 3 | flex-direction: $values; 4 | } 5 | 6 | @mixin flex-flow($values) { 7 | -webkit-flex-flow: $values; 8 | flex-flow: $values; 9 | } 10 | 11 | @mixin align-items($values) { 12 | -webkit-align-items: $values; 13 | align-items: $values; 14 | } 15 | 16 | @mixin justify-content($values) { 17 | -webkit-justify-content: $values; 18 | justify-content: $values; 19 | } 20 | 21 | @mixin flex($values) { 22 | -webkit-flex: $values; 23 | flex: $values; 24 | } 25 | 26 | @mixin display-flex() { 27 | display: -webkit-flex; 28 | display: flex; 29 | } 30 | 31 | @mixin display-inline-flex() { 32 | display: -webkit-inline-flex; 33 | display: inline-flex; 34 | } 35 | -------------------------------------------------------------------------------- /_services/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_services/steem.dao.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Steem.DAO 3 | position: 5 4 | --- 5 | 6 | #### Intro 7 | 8 | Steem.DAO is an account on the Steem blockchain ([@steem.dao](https://steemd.com/@steem.dao)) that receives 10% of the [annual new supply]({{ '/tutorials-recipes/understanding-configuration-values#STEEM_INFLATION_NARROWING_PERIOD' | relative_url }}). These funds are dedicated to the Steem Proposal System (SPS) for platform improvements. 9 | 10 | Every day a portion of the SBD fund managed by the Steem.DAO is distributed to various proposals, depending on **a)** how much the proposal is asking for and **b)** how much approval the proposal has. 11 | 12 | > The Steem.DAO was a concept proposed by [@blocktrades](https://steemd.com/@blocktrades) to allow Steem users to publicly propose work they are willing to do in exchange for pay. Steem users can then vote on these proposals in almost the same way they vote for witnesses. It uses stake-weighted votes, but voters can vote for as many proposals as they want. 13 | 14 | See original announcement: [https://steemit.com/steem/@steemitblog/hf21-sps-and-eip-explained](https://steemit.com/steem/@steemitblog/hf21-sps-and-eip-explained) 15 | 16 | #### Tools 17 | 18 | * [https://steemproposals.com](https://steemproposals.com) - Steem Proposals UI by [@dmitrydao](https://steemit.com/@dmitrydao) 19 | * [https://steempeak.com/proposals](https://steempeak.com/proposals) - Steem Proposals UI by [@steempeak](https://steemit.com/@steempeak) 20 | * [https://steemitwallet.com/proposals](https://steemitwallet.com/proposals) - Vote for your favorite Steem proposals without leaving the safety of steemitwallet.com. 21 | * [https://joticajulian.github.io/steemexplorer/#/proposals](https://joticajulian.github.io/steemexplorer/#/proposals) - Check who voted what. 22 | * [https://steemit.com/@proposalalert](https://steemit.com/@proposalalert) - Follow this account to be notified of new proposals. 23 | 24 | #### API 25 | 26 | To access the proposal system by JSON-RPC request, see: [`database_api.list_proposals`]({{ '/apidefinitions/#database_api.list_proposals' | relative_url }}). Proposal creation by broadcast operation, see: [`create_proposal`]({{ '/apidefinitions/#broadcast_ops_create_proposal' | relative_url }}). 27 | -------------------------------------------------------------------------------- /_services/steemconnect.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: SteemConnect 3 | position: 2 4 | --- 5 | 6 | **What is SteemConnect?** 7 | 8 | The goal of SteemConnect is to provide a safe way of connecting to the blockchain via 3rd party apps without compromising the security of your private keys and passwords. It's a simple identity layer built on top of the blockchain allowing users safe access and developers the freedom of not having to handle the authentication system, i.e. managing users' private keys and encryption. This means that devs won't have to opensource their projects in order to gain user trust. When connecting to apps in this manner, neither SteemConnect nor the authorised app store the private keys as the posting key is incrypted on your cookie. 9 | 10 | 11 | **How SteemConnect is implemented** 12 | 13 | SteemConnect works by granting an access token to the requesting app once the application has been approved. 14 | A full tutorial on how to set up an application, request authorisation and grant access can be found [here]({{ '/tutorials-javascript/steemconnect' | relative_url }}). 15 | 16 | **Steem Authorisation and OAuth 2** 17 | 18 | The OAuth protocol allows third party apps to grant limited access to an HTTP service, either on behalf of a resource owner or by allowing the app to obtain access on its own behalf. The authorisation is provided without the private key or password of the user being shared with the third party. 19 | Simplified, the process includes the following steps: 20 | 21 | 1. The user is presented with an authorisation link that requests a token from the API 22 | 2. The user has to log in to the service to verify their identity whereupon they will be prompted to authorise the application 23 | 3. The user is redirected to the application redirect URI along with the access token 24 | 25 | 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. 26 | A full breakdown of OAuth2 and how it applies to SteemIt and SteemConnect can be found [here](https://github.com/steemit/steemconnect/wiki/OAuth-2#code-authorization-flow). 27 | 28 | **Useful Links** 29 | 30 | * [SteemConnect Repo](https://github.com/steemit/steemconnect) 31 | * [Community Resources]({{ '/resources/#community-steem-connect-libs' | relative_url }}) 32 | 33 | 34 | For additional material you can refer to the original steemit [blog](https://steemit.com/steemconnect/@busy.org/introducing-steemconnect-by-busy-identity-authentication-authorization-for-steem-blockchain-s-apps) post by [busy.org](https://busy.org/) 35 | -------------------------------------------------------------------------------- /_steemjs/_defaults.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/_steemjs/_defaults.md -------------------------------------------------------------------------------- /_steemjs/getting_started.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/_steemjs/getting_started.md -------------------------------------------------------------------------------- /_testnet/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_testnet/tools.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tools 3 | position: 1 4 | description: Directory of community testnet tools 5 | --- 6 | 7 | Testnet ID | Tool | Purpose 8 | -----------|------|-------- 9 | {% 10 | for tool in site.data.testnet.tools 11 | %}{{ 12 | tool.testnet_id 13 | }} | [{{tool.name}}]({{tool.url}}) | {{ 14 | tool.purpose 15 | }} 16 | {% endfor %} 17 | -------------------------------------------------------------------------------- /_tutorials-javascript/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_tutorials-javascript/getting_started.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'JS: Getting Started' 3 | position: 0 4 | description: "Prepare your development environment to use Javascript with the Steem blockchain." 5 | layout: full 6 | --- 7 | Full, runnable src of [Getting Started](https://github.com/steemit/devportal-tutorials-js/tree/master/tutorials/00_getting_started) can be downloaded as part of the [JS tutorials repository](https://github.com/steemit/devportal-tutorials-js). 8 |
9 | 10 | 11 | 12 | For Javascript tutorials, we will use the opensource library [dsteem](https://github.com/steemit/dsteem). 13 | 14 | ### Node.js 15 | 16 | To get the most out of these tutorials, you should be familiar with [Node.js](https://nodejs.org/en/), [ES6](https://babeljs.io/learn-es2015/) aka [es2015](http://www.ecma-international.org/ecma-262/6.0/), the DOM, and modern Javascript programming practices. 17 | You can still learn a lot of these if they aren't in your base skill-set; it'll be much easier if they are. 18 | 19 | ### Your Dev Environment 20 | 21 | These tutorials require [Node.js 8.9+](https://nodejs.org/en/download/). [Yarn](https://yarnpkg.com/en/) is nice, but not required. Runnable versions of the tutorials are located [in this github repo](https://github.com/steemit/devportal-tutorials-js). 22 | If you haven't chosen an editor, you can use [Atom](https://atom.io/), [Sublime](https://www.sublimetext.com/), [Intellij](https://www.jetbrains.com/idea/), [Vi](https://en.wikipedia.org/wiki/Vi), etc. 23 | 24 | If you want to keep multiple versions of Node on your system try [Node Version Manager](https://github.com/creationix/nvm). 25 | 26 | ### Running a typical Tutorial 27 | 28 | Let's say you wanted to run the very [first tutorial](blog_feed), `01_blog_feed`. Here's how you'd do it: 29 | 30 | 1. From Bash: 31 | 32 | ```bash 33 | git clone https://github.com/steemit/devportal-tutorials-js.git 34 | 35 | cd devportal-tutorials-js/tutorials/01_blog_feed 36 | npm i 37 | npm run dev-server 38 | ``` 39 | 40 | 1. open http://localhost:3000/ in your web browser 41 | 42 | ``` 43 | ### Github 44 | 45 | If you'd rather clone projects in a windowed environment rather than the terminal, consider [Github Desktop](https://desktop.github.com/). 46 | ``` 47 | 48 | 49 | --- 50 | -------------------------------------------------------------------------------- /_tutorials-javascript/search_accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'JS: Search Accounts' 3 | position: 15 4 | description: "_By the end of this tutorial you should know how to call a list of user names from the steem blockchain_" 5 | layout: full 6 | --- 7 | Full, runnable src of [Search Accounts](https://github.com/steemit/devportal-tutorials-js/tree/master/tutorials/15_search_accounts) can be downloaded as part of the [JS tutorials repository](https://github.com/steemit/devportal-tutorials-js). 8 |
9 | 10 | 11 | 12 | This tutorial will show the method of capturing a queried user name, matching that to the steem database and then displaying the matching names. This tutorial will be run on the `production server`. 13 | 14 | ## Intro 15 | 16 | We are using the `call` function provided by the `dsteem` library to pull user names from the steem blockchain. The information being pulled is dependent on two variables: 17 | 18 | 1. The max number of user names that needs to be displayed by the search 19 | 2. The string representing the first characters of the user name you are searching for 20 | 21 | A simple HTML interface is used to both capture the string query as well as display the completed search. The layout can be found in the "index.html" file. 22 | 23 | ## Steps 24 | 25 | 1. [**Configure connection**](#configure_connection) Configuration of `dsteem` to use the proper connection and network. 26 | 2. [**Collecting input variables**](#collecting_input_variables) Assigning and collecting the necessary variables 27 | 3. [**Blockchain query**](#blockchain_query) Finding the data on the blockchain based on the inputs 28 | 4. [**Output**](#output) Displaying query results 29 | 30 | 31 | #### 1. **Configure connection** 32 | 33 | Below we have `dsteem` pointing to the production network with the proper chainId, addressPrefix, and endpoint. There is a `public/app.js` file which holds the Javascript segment of this tutorial. In the first few lines we define the configured library and packages: 34 | 35 | ```javascript 36 | const dsteem = require('dsteem'); 37 | let opts = {}; 38 | //connect to production server 39 | opts.addressPrefix = 'STM'; 40 | opts.chainId = 41 | '0000000000000000000000000000000000000000000000000000000000000000'; 42 | //connect to server which is connected to the network/production 43 | const client = new dsteem.Client('https://api.steemit.com'); 44 | ``` 45 | 46 | #### 2. **Collecting input variables** 47 | 48 | Next we assign the max number of lines that will be returned by the query. We also use `getElementById` to retrieve the requested user name for searching from the HTML interface. The `max` value can very easily also be attained from the HTML side simply by adding another input line in `index.html` and a second `getElementById` line. 49 | 50 | ```javascript 51 | const max = 10; 52 | window.submitAcc = async () => { 53 | const accSearch = document.getElementById("username").value; 54 | ``` 55 | 56 | #### 3. **Blockchain query** 57 | 58 | The next step is to pull the user names from the blockchain that matches the "username" variable that was retrieved. This is done using the `database.call` function and assigning the result to an array. 59 | 60 | ```javascript 61 | const _accounts = await client.database.call('lookup_accounts',[accSearch, max]); 62 | console.log(`_accounts:`, _accounts); 63 | ``` 64 | 65 | #### 4. **Output** 66 | 67 | Finally we create a list from the "_accounts" array generated in step 3. 68 | 69 | ```javascript 70 | document.getElementById('accList').innerHTML = _accounts.join('
'); 71 | } 72 | ``` 73 | 74 | ## To run this tutorial 75 | 76 | 1. clone this repo 77 | 2. `cd tutorials/15_search_accounts` 78 | 3. `npm i` 79 | 4. `npm run dev-server` or `npm run start` 80 | 5. After a few moments, the server should be running at [http://localhost:3000/](http://localhost:3000/) 81 | 82 | 83 | --- 84 | -------------------------------------------------------------------------------- /_tutorials-javascript/search_tags.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'JS: Search Tags' 3 | position: 16 4 | description: "_By the end of this tutorial you should know how to run a search for trending tags_" 5 | layout: full 6 | --- 7 | Full, runnable src of [Search Tags](https://github.com/steemit/devportal-tutorials-js/tree/master/tutorials/16_search_tags) can be downloaded as part of the [JS tutorials repository](https://github.com/steemit/devportal-tutorials-js). 8 |
9 | 10 | 11 | 12 | This tutorial runs on the main Steem blockchain. 13 | 14 | ## Intro 15 | 16 | This tutorial will show the method of capturing a queried tag name and matching it to the steem database. We are using the `call` function provided by the `dsteem` library to pull tags from the steem blockchain. A simple HTML interface is used to both capture the string query as well as display the completed search. 17 | 18 | ## steps 19 | 20 | 1. [**Configure connection**](#configure-conn) Configuration of `dsteem` to use the proper connection and network. 21 | 2. [**Search input**](#search-input) Collecting the relevant search criteria 22 | 3. [**Run Search**](#run-search) Running the search on the blockchain 23 | 4. [**Output**](#output) Displaying the results of the search query 24 | 25 | #### 1. Configure connection 26 | 27 | Below we have `dsteem` pointing to the production network with the proper chainId, addressPrefix, and endpoint. There is a `public/app.js` file which holds the Javascript segment of this tutorial. In the first few lines we define the configured library and packages: 28 | 29 | ```javascript 30 | const dsteem = require('dsteem'); 31 | let opts = {}; 32 | //connect to production server 33 | opts.addressPrefix = 'STM'; 34 | opts.chainId = 35 | '0000000000000000000000000000000000000000000000000000000000000000'; 36 | //connect to server which is connected to the network/production 37 | const client = new dsteem.Client('https://api.steemit.com'); 38 | ``` 39 | 40 | #### 2. Search input 41 | 42 | Collecting of the search criteria happens via an HTML input. The form can be found in the `index.html` file. The values are pulled from that screen with the below: 43 | 44 | ```javascript 45 | const max = 10; 46 | window.submitTag = async () => { 47 | const tagSearch = document.getElementById("tagName").value; 48 | ``` 49 | 50 | #### 3. Run Search 51 | 52 | In order to access the blockchain to run the search a `call` function is used with the `search field` and `maximum` list items as parameters. 53 | 54 | ```javascript 55 | const _tags = await client.database.call('get_trending_tags',[tagSearch, max]); 56 | ``` 57 | 58 | The result of the search is an array of tags along with their respective vital data like `comments`, `payouts`, etc. 59 | 60 | #### 4. Output 61 | 62 | Due to the output from the `call` function being an array, we can't use a simple `post` function to display the tags. The specific fields within the array needs to be selected and then displayed. 63 | 64 | ```javascript 65 | console.log('tags: ', _tags); 66 | var posts = []; 67 | _tags.forEach(post => { 68 | posts.push( 69 | `
${ 70 | post.name 71 | }
` 72 | ); 73 | }); 74 | //disply list of tags with line breaks 75 | document.getElementById('tagList').innerHTML = posts.join('
'); 76 | ``` 77 | 78 | ### To run this tutorial 79 | 80 | 1. clone this repo 81 | 1. `cd tutorials/16_search_tags` 82 | 1. `npm i` 83 | 1. `npm run dev-server` or `npm run start` 84 | 1. After a few moments, the server should be running at http://localhost:3000/ 85 | 86 | 87 | --- 88 | -------------------------------------------------------------------------------- /_tutorials-python/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_tutorials-python/getting_started.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'PY: Getting Started' 3 | position: 0 4 | description: "The official Steem library for Python is `steem-python`. It comes with a BIP38 encrypted wallet and a practical CLI utility called `steempy`." 5 | layout: full 6 | --- 7 | Full, runnable src of [Getting Started](https://github.com/steemit/devportal-tutorials-py/tree/master/tutorials/00_getting_started) can be downloaded as part of the [PY tutorials repository](https://github.com/steemit/devportal-tutorials-py). 8 |
9 | 10 | 11 | 12 | The library was designed to allow Python developers to easily access the network as well as build utilities and applications. 13 | 14 | Currently steem-python documentation is generated in the standard [pydoc format](https://steem.readthedocs.io/en/latest/). 15 | 16 | Documentation is available at: [Official steem-python Docs](https://github.com/steemit/steem-python). 17 | 18 | --- 19 | 20 | #### Dev requirements 21 | 22 | In our Python tutorials we recommend developers to be familiar with following requirements/libraries. 23 | 24 | 25 | * Python developer should be familiar with Python 3.x and above 26 | 27 | * Medium knowledge of package manager `pip/pip3` and/or `pipenv` is required, since our tutorials will be using package manager to get started quickly. 28 | 29 | * Terminal (Linux/Mac) or Cmd (Windows command prompt) knowledge is also required, since most python tutorials will only work with terminal and print out result in different formats. 30 | 31 | * Python environment path should be set up properly so that terminal can access proper python library without conflicts. 32 | 33 | * Additional and optional packages that we might use: setuptools, brew 34 | 35 | 36 | To get started with Python, you can also check official [Python installation](https://wiki.python.org/moin/BeginnersGuide/Download) and [Python tutorial](https://docs.python.org/3/tutorial/). 37 | 38 | To get started with our Python tutorials, checkout our [first tutorial here](get_posts). 39 | 40 | 41 | --- 42 | -------------------------------------------------------------------------------- /_tutorials-python/reblogging_post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'PY: Reblogging Post' 3 | position: 14 4 | description: "We will show how to reblog or resteem post using Python, with username and posting private key." 5 | layout: full 6 | --- 7 | Full, runnable src of [Reblogging Post](https://github.com/steemit/devportal-tutorials-py/tree/master/tutorials/14_reblogging_post) can be downloaded as part of the [PY tutorials repository](https://github.com/steemit/devportal-tutorials-py). 8 |
9 | 10 | 11 | 12 | Tutorial will also explain and show you how to sign/broadcast transaction on **Steem** blockchain using the [steem-python](https://github.com/steemit/steem-python) library. 13 | 14 | ## Intro 15 | 16 | Steem python library has built-in function to commit transaction and broadcast it to the network. 17 | 18 | ## Steps 19 | 20 | 1. [**App setup**](#app-setup) - Library install and import 21 | 1. [**Post list**](#post-list) - List of posts to select from trending filter 22 | 1. [**Enter user credentials**](#credentials-list) - Enter user credentails to sign transaction 23 | 24 | #### 1. App setup 25 | 26 | In this tutorial we use 3 packages, `pick` - helps us to select filter interactively. `steem` - steem-python library, interaction with Blockchain. `pprint` - print results in better format. 27 | 28 | First we import all three library and initialize Steem class 29 | 30 | ```python 31 | import pprint 32 | from pick import pick 33 | # initialize Steem class 34 | from steem import Steem 35 | 36 | s = Steem() 37 | ``` 38 | 39 | #### 2. Post list 40 | 41 | 42 | Next we will fetch and make list of accounts and setup `pick` properly. 43 | 44 | ```python 45 | query = { 46 | "limit":5, #number of posts 47 | "tag":"" #tag of posts 48 | } 49 | # post list from trending post list 50 | posts = s.get_discussions_by_trending(query) 51 | 52 | title = 'Please choose post to reblog: ' 53 | options = [] 54 | # post list 55 | for post in posts: 56 | options.append('@'+post["author"]+'/'+post["permlink"]) 57 | 58 | ``` 59 | 60 | This will show us list of posts to select in terminal/command prompt. And after selection we will get formatted post as an `option` variable. 61 | 62 | #### 3. Enter user credentials 63 | 64 | Next in order to sign transaction, application asks for username and posting private key to sign transaction and broadcast it. 65 | 66 | ```python 67 | # get index and selected post 68 | option, index = pick(options, title) 69 | pprint.pprint("You selected: "+option) 70 | 71 | account = input("Enter your username? ") 72 | wif = input("Enter your Posting private key? ") 73 | 74 | # commit or build transaction 75 | c = Commit(steem=Steem(keys=[wif])) 76 | 77 | # broadcast transaction 78 | c.resteem(option, account=account) 79 | 80 | ``` 81 | 82 | 83 | That's it, if transaction is successful you shouldn't see any error messages, otherwise you will be notified. 84 | 85 | ### To Run the tutorial 86 | 87 | 1. [review dev requirements](getting_started) 88 | 1. clone this repo 89 | 1. `cd tutorials/14_reblogging_post` 90 | 1. `pip install -r requirements.txt` 91 | 1. `python index.py` 92 | 1. After a few moments, you should see output in terminal/command prompt screen. 93 | 94 | 95 | 96 | --- 97 | -------------------------------------------------------------------------------- /_tutorials-python/search_tags.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'PY: Search Tags' 3 | position: 16 4 | description: "How to pull a list of the trending tags from the blockchain using Python." 5 | layout: full 6 | --- 7 | Full, runnable src of [Search Tags](https://github.com/steemit/devportal-tutorials-py/tree/master/tutorials/16_search_tags) can be downloaded as part of the [PY tutorials repository](https://github.com/steemit/devportal-tutorials-py). 8 |
9 | 10 | 11 | 12 | Please refer to [15_search_accounts](search_accounts) which includes a tutorial for `trending tags` as well. 13 | 14 | --- 15 | -------------------------------------------------------------------------------- /_tutorials-python/stream_blockchain_transactions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'PY: Stream Blockchain Transactions' 3 | position: 13 4 | description: "How to stream transactions on the live **Steem** blockchain" 5 | layout: full 6 | --- 7 | Full, runnable src of [Stream Blockchain Transactions](https://github.com/steemit/devportal-tutorials-py/tree/master/tutorials/13_stream_blockchain_transactions) can be downloaded as part of the [PY tutorials repository](https://github.com/steemit/devportal-tutorials-py). 8 |
9 | 10 | 11 | 12 | In this tutorial we show you how to stream transactions on the **Steem** blockchain using the `blockchain` class found within the [steem-python](https://github.com/steemit/steem-python) library. 13 | 14 | ## Intro 15 | 16 | Tutorial is demonstrating the typical process of streaming blocks on Steem. We will show some information from each block that is being streamed to give you an idea. Each block contains transactions objects as well but we will not show each of this data in user interface. 17 | 18 | We are using the `blockchain.stream()` function provided by `steem-python` which returns each block after it has been accepted by witnesses. By default it follows irreversible blocks which was accepted by all witnesses. 19 | 20 | ## Steps 21 | 22 | 1. [**App setup**](#app-setup) Configure imports and initialization of libraries 23 | 1. [**Stream blocks**](#stream-blocks) Stream blocks 24 | 1. [**Sample result**](#sample-result) Stream blocks 25 | 26 | #### 1. App setup 27 | 28 | In this tutorial we use 1 package: 29 | 30 | steem - steem-python library and interaction with Blockchain 31 | 32 | ```python 33 | from steem.blockain import Blockchain 34 | 35 | blockchain = Blockchain() 36 | ``` 37 | 38 | Above we create an instance of Blockchain which will give us the ability to stream the live transactions from the blockchain. 39 | 40 | #### 2. Stream blocks 41 | 42 | Next we create an instance of `stream` and then loop through the steam as transactions are available and print them to the screen. 43 | 44 | ```python 45 | stream = blockchain.stream() 46 | 47 | for post in stream: 48 | print(post) 49 | ``` 50 | 51 | #### 3. Sample result 52 | 53 | ```json 54 | { 55 | "curator": "idx", 56 | "reward": "4.042446 VESTS", 57 | "comment_author": "blackbunny", 58 | "comment_permlink": "6tfv5e", 59 | "_id": "5801d1c99ca7ecd1d4387ebd89d4edab08612b35", 60 | "type": "curation_reward", 61 | "timestamp": "2018-09-21T21:11:02.005Z", 62 | "block_num": 26136919, 63 | "trx_id": "0000000000000000000000000000000000000000" 64 | } 65 | ``` 66 | 67 | 68 | That's it! 69 | 70 | ### To Run the tutorial 71 | 72 | 1. [review dev requirements](getting_started) 73 | 1. clone this repo 74 | 1. `cd tutorials/13_stream_blockchain_transactions` 75 | 1. `pip install -r requirements.txt` 76 | 1. `python index.py` 77 | 1. After a few moments, you should see a prompt for input in terminal screen. 78 | 79 | --- 80 | -------------------------------------------------------------------------------- /_tutorials-recipes/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- -------------------------------------------------------------------------------- /_tutorials-recipes/how-to-serialize-and-sign-using-js.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to serialize and sign Steem transactions using Javascript 3 | position: 1 4 | description: Serialization and signing without additional Steem Javascript libraries. 5 | exclude: true 6 | layout: steem-post 7 | canonical_url: https://steemit.com/steem/@mahdiyari/how-to-serialize-and-sign-steem-transactions-using-javascript-without-steem-javascript-libraries 8 | --- 9 | 10 | {{'@mahdiyari/how-to-serialize-and-sign-steem-transactions-using-javascript-without-steem-javascript-libraries' | steem_post}} 11 | -------------------------------------------------------------------------------- /_tutorials-recipes/mira-performance-tuning.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'MIRA: Performance Tuning' 3 | position: 1 4 | description: Provides a way to get the most performance on specific hardware. 5 | exclude: true 6 | layout: steem-post 7 | canonical_url: https://steemit.com/steemit/@gerbino/mira-performance-tuning 8 | --- 9 | 10 |
11 | 12 |
13 | 14 |
15 | 16 | {{'@gerbino/mira-performance-tuning' | steem_post}} 17 | -------------------------------------------------------------------------------- /_tutorials-recipes/using-multisignatire-accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Using Multisignature Accounts 3 | position: 1 4 | description: How to set up and use multisignature accounts on Steem Blockchain. 5 | exclude: true 6 | layout: steem-post 7 | canonical_url: https://steemit.com/utopian-io/@crokkon/steem-multi-signature-transaction-guide-for-beem-python-1546636997324 8 | --- 9 | 10 | {{'@crokkon/steem-multi-signature-transaction-guide-for-beem-python-1546636997324' | steem_post}} 11 | -------------------------------------------------------------------------------- /_tutorials-recipes/vest-to-steem.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Converting VESTS to STEEM 3 | position: 1 4 | description: How to convert VESTS to STEEM or STEEM POWER 5 | exclude: true 6 | layout: full 7 | --- 8 | 9 | ### Intro 10 | 11 | Steem's has base unit is VESTS and usually user doesn't know about this unit because everything is dynamically calucated and presented in STEEM form for convenience of the user. In this recipe we will talk about how converting is working behind the scenes on all Steem apps. Dynamic Global Properties are used in this recipe to fetch the current values of global blockchain properties. 12 | 13 | ## Steps 14 | 15 | 1. [**Get Dynamic Global Properties**](#get-global) Fetch current values of global blockchain properties 16 | 1. [**Formulate VESTS_TO_STEEM**](#formula) Formulate function that will convert given VESTS to STEEM. 17 | 18 | 19 | #### 1. Get Dynamic Global Properties 20 | 21 | Following method can be used to fetch global values 22 | 23 | ```bash 24 | curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_dynamic_global_properties", "params":[], "id":1}' https://api.steemit.com 25 | ``` 26 | 27 | ##### Example Output 28 | 29 | ```json 30 | { 31 | "id":1, 32 | "jsonrpc":"2.0", 33 | "result":{ 34 | "head_block_number":24238248, 35 | "head_block_id":"0171d8a833dc369abd034b0c67d8725f96df9e5b", 36 | "time":"2018-07-16T22:41:24", 37 | "current_witness":"xeldal", 38 | "total_pow":514415, 39 | "num_pow_witnesses":172, 40 | "virtual_supply":"283434761.199 STEEM", 41 | "current_supply":"271729171.190 STEEM", 42 | "confidential_supply":"0.000 STEEM", 43 | "current_sbd_supply":"15498201.173 SBD", 44 | "confidential_sbd_supply":"0.000 SBD", 45 | "total_vesting_fund_steem":"192913644.627 STEEM", 46 | "total_vesting_shares":"391296886352.617261 VESTS", 47 | "total_reward_fund_steem":"0.000 STEEM", 48 | "total_reward_shares2":"0", 49 | "pending_rewarded_vesting_shares":"379159224.860656 VESTS", 50 | "pending_rewarded_vesting_steem":"185294.019 STEEM", 51 | "sbd_interest_rate":0, 52 | "sbd_print_rate":2933, 53 | "maximum_block_size":65536, 54 | "current_aslot":24315228, 55 | "recent_slots_filled":"340282366920938463463374607431768211400", 56 | "participation_count":128, 57 | "last_irreversible_block_num":24238230, 58 | "vote_power_reserve_rate":10, 59 | "average_block_size":10950, 60 | "current_reserve_ratio":200000000, 61 | "max_virtual_bandwidth":"264241152000000000000" 62 | } 63 | } 64 | ``` 65 | 66 | #### 2. Formulate VESTS_TO_STEEM 67 | 68 | From above results we have everything we need to calculate STEEM from given VESTS value. 69 | 70 | Let's say we have been given `availableVESTS` variable, value in VESTS and we want to convert that to STEEM. By using values from above returned object our formula would be as follows: 71 | 72 | ``` 73 | vestSteem = ( result.total_vesting_fund_steem x availableVESTS ) / result.total_vesting_shares 74 | ``` 75 | 76 | That's it! 77 | -------------------------------------------------------------------------------- /_tutorials-ruby/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_tutorials-ruby/blog_feed.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Blog Feed' 3 | position: 1 4 | description: "This example will output blog details to the terminal for the author specified, limited to five results." 5 | layout: full 6 | --- 7 | Full, runnable src of [Blog Feed](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/01_blog_feed) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | ### Script 13 | 14 | The script parses the creation date, assuming Zulu timezone (AKA UTC). 15 | 16 | The output will be the latest five posts/reblogs for the account specified. If the author is the same as the account specified, it is assumed to be a post by this account. Otherwise, it is assumed to be a reblog. 17 | 18 | It also counts the words in the content body by splitting the text into an array of strings, delimited by whitespace. 19 | 20 | Finally, it creates the canonical URL by combining `parent_permlink`, `author`, and `permlink`. 21 | 22 | ### To Run 23 | 24 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 25 | 26 | ```bash 27 | git clone git@github.com:steemit/devportal-tutorials-rb.git 28 | cd devportal-tutorials-rb/tutorials/01_blog_feed 29 | bundle install 30 | ruby blog_feed.rb steemitblog 31 | ``` 32 | 33 | ### Example Output 34 | 35 | ``` 36 | 2018-03-24 17:30:36 UTC 37 | Post: Happy 2nd Birthday Steem Blockchain 38 | By: steemitblog 39 | Words: 301 40 | https://steemit.com/steem/@steemitblog/happy-2nd-birthday-steem-blockchain 41 | 2018-03-07 20:56:36 UTC 42 | Post: Join Team Steemit at TokenFest! 43 | By: steemitblog 44 | Words: 104 45 | https://steemit.com/steemit/@steemitblog/join-team-steemit-at-tokenfest 46 | 2018-02-27 20:18:36 UTC 47 | Post: Smart Media Token Development 48 | By: steemitblog 49 | Words: 699 50 | https://steemit.com/smt/@steemitblog/smart-media-token-development 51 | 2018-02-25 20:55:24 UTC 52 | Reblog: I filmed this video of @ned @pkattera and @sneak talking about the SMTs and the future of Steemit 53 | By: ruwan 54 | Words: 89 55 | https://steemit.com/steemit/@ruwan/i-filmed-this-video-of-ned-pkattera-and-sneak-talking-about-the-smts-and-the-future-of-steemit 56 | 2018-02-22 17:41:00 UTC 57 | Post: STEEM 및 SBD가 GOPAX에 상장되었습니다 58 | By: steemitblog 59 | Words: 317 60 | https://steemit.com/gopax/@steemitblog/steem-sbd-gopa 61 | ``` 62 | 63 | 64 | --- 65 | -------------------------------------------------------------------------------- /_tutorials-ruby/edit_content_patching.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Edit Content Patching' 3 | position: 12 4 | description: "---" 5 | layout: full 6 | --- 7 | Full, runnable src of [Edit Content Patching](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/12_edit_content_patching) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | title: How to edit a Post 11 | position: 5 12 | exclude: true 13 | layout: main-script 14 | description: Patching changes to a post on Steem. 15 | main_script: tutorials-ruby/edit_content_patching.rb 16 | main_type: ruby 17 | main_script_anchor: Script 18 | --- 19 | 20 | ### Intro 21 | 22 | This tutorial will show a technique for efficiently editing a post by only broadcasting changes to the post body. 23 | 24 | ### Script 25 | 26 | This script will take an existing post and append a new line by broadcasting a `comment` operation containing a `diff` instruction. This instruction will tell the blockchain to append new content to the end of the `body` of the original comment. 27 | 28 | Because this is a live example, we set `broadcast` to `false` so that it only runs if you modify the example and set `broadcast` to `true`. 29 | 30 | As stated earlier, you will need to change `broadcast` to `true`. You can also set other values to test this script on other post: 31 | 32 | * `wif` - The posting key of the author. 33 | * `author` - Name of the account that wrote the post we're modifying. 34 | * `title` - Title of the post. 35 | * `permlink` - Leave this if the `permlink` is derived from the title or set it to the original `permlink` if you want to modify the title independently from the `permlink`. 36 | 37 | ### To Run 38 | 39 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 40 | 41 | ```bash 42 | git clone git@github.com:steemit/devportal-tutorials-rb.git 43 | cd devportal-tutorials-rb/tutorials/12_edit_content_patching 44 | bundle install 45 | ruby edit_content_patching.rb 46 | ``` 47 | 48 | ### Example Output 49 | 50 | ``` 51 | Changes: 52 | @@ -26,8 +26,26 @@ 53 | edited) 54 | +%0AAppended content. 55 | { 56 | "jsonrpc": "2.0", 57 | "result": { 58 | "id": "f327acc1c51d907a9ba9bfac70e6fc9e99ab2865", 59 | "block_num": 23035803, 60 | "trx_num": 0, 61 | "expired": false 62 | }, 63 | "id": 1 64 | } 65 | ``` 66 | 67 | 68 | --- 69 | -------------------------------------------------------------------------------- /_tutorials-ruby/follow_another_user.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Follow Another User' 3 | position: 18 4 | description: "*How to follow/unfollow another user.*" 5 | layout: full 6 | --- 7 | Full, runnable src of [Follow Another User](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/18_follow_another_user) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | This tutorial will take you through the process of following/muting/unfollowing/ummuting an author and checking the follow status of an author. 13 | 14 | ### Sections 15 | 16 | 1. [Follow](#follow) 17 | 1. [Check Follow](#check-follow) 18 | 1. [To Run](#to-run) - Running the example. 19 | 20 | ### Follow 21 | 22 | In the first example script, we can modify the initial configuration then run: 23 | 24 | ```bash 25 | ruby follow.rb 26 | ``` 27 | 28 | Follows (and mutes) are expressed by `custom_json` with `id=follow` (mutes also use `id=follow`). 29 | 30 | Example `custom_json` operation: 31 | 32 | ```json 33 | { 34 | "id": "follow", 35 | "required_auths": [], 36 | "required_posting_auths": ["social"], 37 | "json": "[\"follow\",{\"follower\":\"social\",\"following\":\"alice\",\"what\":[\"blog\"]}]" 38 | } 39 | ``` 40 | 41 | To broadcast this operation, use the posting `wif` and matching account name in `required_posting_auths`. There are three variables required in the `json` field of the above operation: 42 | 43 | 1. `follower` - The specific account that will select the author to follow/unfollow. 44 | 2. `following` - The account/author that the account would like to follow. 45 | 3. `what` - The type of follow operation. This variable can have one of three values: `blog` to follow an author, `ignore` to mute, and an empty string to unfollow/unmute. 46 | 47 | #### Check Follow 48 | 49 | In the second example script: 50 | 51 | ```bash 52 | ruby check_follow.rb 53 | ``` 54 | 55 | The API method we're using here is `condenser.get_following`. We pass the name of the account we're checking. If the account follows more than 1,000 other accounts, we execute `condenser.get_following` multiple times and pass the last followed account we know about to get the next 1,000 (passing the latest `follows.last` each time). 56 | 57 | We also specify `blog` to tell the API method that we're looking for followed, not muted (to locate muted accounts, use `ignore` instead of `blog`). 58 | 59 | ### To Run 60 | 61 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 62 | 63 | ```bash 64 | git clone git@github.com:steemit/devportal-tutorials-rb.git 65 | cd devportal-tutorials-rb/tutorials/18_follow_another_user 66 | bundle install 67 | ruby follow.rb 68 | ``` 69 | 70 | ### Example Output 71 | 72 | ```json 73 | { 74 | "jsonrpc": "2.0", 75 | "result": { 76 | "id": "025688e27999d3aa514f1f0b77c9f8d8dae31d72", 77 | "block_num": 26349355, 78 | "trx_num": 3, 79 | "expired": false 80 | }, 81 | "id": 3 82 | } 83 | ``` 84 | 85 | --- 86 | -------------------------------------------------------------------------------- /_tutorials-ruby/get_follower_and_following_list.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Get Follower And Following List' 3 | position: 19 4 | description: "_How to create a list of followers and accounts that you are following._" 5 | layout: full 6 | --- 7 | Full, runnable src of [Get Follower And Following List](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/19_get_follower_and_following_list) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | This tutorial will take you through the process of requesting either the `follower` or `following` list for an account on the blockchain. 13 | 14 | ## Intro 15 | 16 | In `radiator`, we can request follow results using `condenser_api.get_following` or `condenser_api.get_follows` methods. These methods take the following arguments: 17 | 18 | * `account` - The account for which the follower/following process will be executed. 19 | * `start` - Where in the list to begin getting results. 20 | * `type` - We are going to pass `blog` for all requests to only request follow results (as opposed to mute results, which takes the value: `ignore`). 21 | * `limit` - The number of lines to be returned by the query (`limit`, maximum 1000 per call) 22 | 23 | ## Steps 24 | 25 | 1. [**Configure connection**](#connection) Configuration of `radiator` to communicate with the Steem blockchain 26 | 2. [**Input variables**](#input) Collecting the required inputs via command line arguments 27 | 3. [**Get followers/following**](#query) Get the followers or accounts being followed 28 | 4. [**Display**](#display) Return the array of results to the console 29 | 30 | #### 1. Configure connection 31 | 32 | In the first few lines we initialize the configured library and packages (libraries are described in `Gemfile`): 33 | 34 | ```ruby 35 | require 'rubygems' 36 | require 'bundler/setup' 37 | 38 | Bundler.require 39 | 40 | api = Radiator::Api.new 41 | ``` 42 | 43 | Above, we have `radiator` pointing to the production network. To specify a different full node, e.g.: 44 | 45 | ```ruby 46 | api = Radiator::Api.new(url: 'https://testnet.steemitdev.com') 47 | ``` 48 | 49 | #### 2. Input variables 50 | 51 | Capture the arguments from the command line. 52 | 53 | ```ruby 54 | account = ARGV[0] 55 | type = ARGV[1] || 'following' 56 | limit = (ARGV[2] || '-1').to_i 57 | ``` 58 | 59 | #### 3. Get followers/following 60 | 61 | Depending on the arguments passed, we call the corresponding method and the element name of what we are requesting: 62 | 63 | ```ruby 64 | method = "get_#{type}" 65 | elem = type.sub(/s/, '').to_sym 66 | ``` 67 | 68 | The name of the `elem` value stored corresponds with the result elements we're interested in. For method calls on `get_following`, we want the `following` elements. For method calls on `get_followers`, we want `follower` elements. 69 | 70 | #### 4. Display 71 | 72 | Iterate multiple calls to capture all of the results. 73 | 74 | ```ruby 75 | until count >= result.size 76 | count = result.size 77 | response = api.send(method, account, result.last, what, [limit, 100].max) 78 | abort response.error.message if !!response.error 79 | result += response.result.map(&elem) 80 | result = result.uniq 81 | end 82 | ``` 83 | 84 | ### To Run 85 | 86 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 87 | 88 | ```bash 89 | git clone git@github.com:steemit/devportal-tutorials-rb.git 90 | cd devportal-tutorials-rb/tutorials/19_get_follower_and_following_list 91 | bundle install 92 | ruby get_follow.rb 93 | ``` 94 | 95 | 96 | --- 97 | -------------------------------------------------------------------------------- /_tutorials-ruby/get_post_comments.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Get Post Comments' 3 | position: 7 4 | description: "This example will output the reply details and totals for the post/comment passed as an argument to the script." 5 | layout: full 6 | --- 7 | Full, runnable src of [Get Post Comments](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/07_get_post_comments) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | ### Script 13 | 14 | First, we ask the blockchain for the replies on a post or comment. Then, we grab the authors of those replies and list them, followed by the total comments count. 15 | 16 | ### To Run 17 | 18 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 19 | 20 | ```bash 21 | git clone git@github.com:steemit/devportal-tutorials-rb.git 22 | cd devportal-tutorials-rb/tutorials/07_get_post_comments 23 | bundle install 24 | ruby comments_list.rb https://steemit.com/steem/@steemitblog/dev-portal-update-new-steem-developer-resources 25 | ``` 26 | 27 | ### Example Output 28 | 29 | ``` 30 | Replies by: 31 | shahabshah 32 | mumin007 33 | bigblueleadsled 34 | reseller 35 | latikasha 36 | dannywill 37 | steemitag 38 | sequentialvibe 39 | xplosive 40 | whatsup 41 | evolved08gsr 42 | steevc 43 | mightymicke 44 | marc0o 45 | akintunde 46 | oliverlai 47 | zufrizal 48 | bitcointravel 49 | vsf 50 | badribireuen 51 | Total replies: 20 52 | ``` 53 | 54 | 55 | --- 56 | -------------------------------------------------------------------------------- /_tutorials-ruby/get_posts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Get Posts' 3 | position: 4 4 | description: "This example will output posts depending on which category is provided as the arguments." 5 | layout: full 6 | --- 7 | Full, runnable src of [Get Posts](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/04_get_posts) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | ### Script 13 | 14 | Create a filed called `get_posts_by_category.rb`. 15 | 16 | This script will pick a method to call based on the arguments passed. The expected categories are: 17 | 18 | * trending 19 | * hot 20 | * active 21 | * created 22 | * votes 23 | * promoted 24 | * children 25 | 26 | We will base the name of the API method to execute on the provided argument. Once we know which method to execute, we can build the query options. The defaults for this script is `limit: 10` and `tag: ''`. 27 | 28 | For each post we retrieve, we are going to build up a summary to display the interesting fields. In this case, we're interested in: 29 | 30 | * Creation Timestamp 31 | * Title 32 | * Author 33 | * Net Votes 34 | * Number of replies 35 | * If it's promoted 36 | * Number of words in the body 37 | * Canonical URL 38 | 39 | ### To Run 40 | 41 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 42 | 43 | ```bash 44 | git clone git@github.com:steemit/devportal-tutorials-rb.git 45 | cd devportal-tutorials-rb/tutorials/04_get_posts 46 | bundle install 47 | ruby get_posts_by_category.rb trending 1 steem 48 | ``` 49 | 50 | ### Example Output 51 | 52 | ``` 53 | 2018-05-24 06:38:33 UTC 54 | Post: New Phone App For Steemit - Wow! 55 | By: happymoneyman 56 | Votes: 1087 57 | Replies: 332 58 | Promoted: 0.001 SBD 59 | Words: 190 60 | https://steemit.com/steemit/@happymoneyman/new-phone-app-for-steemit-wow 61 | ``` 62 | 63 | #### Error Handling 64 | 65 | We're checking the result for `error` in case the remote node has an issue to raise. Normally, it will be `nil`, but if it's populated, output `error.message` and exit. 66 | 67 | 68 | 69 | --- 70 | -------------------------------------------------------------------------------- /_tutorials-ruby/get_voters_list_on_post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Get Voters List On Post' 3 | position: 6 4 | description: "This example will output the active vote totals for the post/comment passed as an argument to the script." 5 | layout: full 6 | --- 7 | Full, runnable src of [Get Voters List On Post](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/06_get_voters_list_on_post) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | ### Script 13 | 14 | First, we ask the blockchain for the active votes on a post or comment. Then, we count the `upvotes`, `downvotes`, and `unvotes` (which are votes that have been removed after being cast in a previous transaction). 15 | 16 | Then, we sort the votes by `rshares` to find the top voter. 17 | 18 | ### To Run 19 | 20 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 21 | 22 | ```bash 23 | git clone git@github.com:steemit/devportal-tutorials-rb.git 24 | cd devportal-tutorials-rb/tutorials/06_get_voters_list_on_post 25 | bundle install 26 | ruby voter_list.rb https://steemit.com/steemdev/@steemitdev/announcing-the-steem-developer-portal 27 | ``` 28 | 29 | ### Example Output 30 | 31 | ``` 32 | Upvotes: 231 33 | Downvotes: 1 34 | Unvotes: 0 35 | Total: 232 36 | Top Voter: thejohalfiles 37 | ``` 38 | 39 | 40 | --- 41 | -------------------------------------------------------------------------------- /_tutorials-ruby/getting_started.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Getting Started' 3 | position: 0 4 | description: "To access the Steem blockchain using Ruby, install the Radiator gem: [https://github.com/inertia186/radiator](https://github.com/inertia186/radiator). Full documentation on Radiator api methods are hosted on [rubydoc.info](http://www.rubydoc.info/gems/radiator)." 5 | layout: full 6 | --- 7 | Full, runnable src of [Getting Started](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/00_getting_started) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | ### Setup 13 | 14 | The following is a minimal `Gemfile` for running `.rb` files in these examples. 15 | 16 | Add `gem 'radiator'` to your `Gemfile`. Then install the gem: 17 | 18 | ```bash 19 | bundle install 20 | ``` 21 | 22 | It is also possible to install `radiator` directly with `gem`: 23 | 24 | ```bash 25 | gem install radiator 26 | ``` 27 | 28 | Then, to execute a script without a `Gemfile`, add to the top of your `.rb` files: 29 | 30 | ```ruby 31 | require 'radiator' 32 | ``` 33 | 34 | Then, use the `ruby` command with `radiator` specified: 35 | 36 | ```bash 37 | ruby -r radiator myscript.rb 38 | ``` 39 | 40 | ### Examples 41 | 42 | The tutorials on this site are available within this site's repository. To get a copy, clone this repository, change directory to `devportal/_includes/tutorials-ruby` and do a `bundle install` to install the required local gems. 43 | 44 | From there, you can see all of the `.rb` files referenced on this site. 45 | 46 | ```bash 47 | git clone https://github.com/steemit/devportal.git 48 | cd devportal/_includes/tutorials-ruby/ 49 | bundle install 50 | ``` 51 | 52 | ### Typical-Usage 53 | 54 | Most methods can be accessed by creating an instance of `Radiator::Api`. It is also possible to specify a different node by passing a `url` option. 55 | 56 | Radiator also internally supports failover by specifying the `failover_urls` option. 57 | 58 | To use the defaults: 59 | 60 | ```ruby 61 | api = Radiator::Api.new 62 | ``` 63 | 64 | To override the `url` option: 65 | 66 | ```ruby 67 | api = Radiator::Api.new(url: 'https://rpc.steemliberator.com') 68 | ``` 69 | 70 | To override both `url` and `failover_urls` options: 71 | 72 | ```ruby 73 | options = { 74 | url: 'https://rpc.steemliberator.com', 75 | failover_urls: [ 76 | 'https://gtg.steem.house:8090', 77 | 'https://steemd.minnowsupportproject.org', 78 | 'https://steemd.privex.io', 79 | ] 80 | } 81 | api = Radiator::Api.new(options) 82 | ``` 83 | 84 | ### Next Step 85 | 86 | If you'd like to dive right into the first tutorial, have a look at: [Blog Feed](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/01_blog_feed) 87 | 88 | 89 | --- 90 | -------------------------------------------------------------------------------- /_tutorials-ruby/search_accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Search Accounts' 3 | position: 15 4 | description: "Performing a search on account by names starting with a given input." 5 | layout: full 6 | --- 7 | Full, runnable src of [Search Accounts](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/15_search_accounts) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | This tutorial will return account names matching the input given, up to a specified limit. 13 | 14 | ### Sections 15 | 16 | 1. [Making the api call](#making-the-api-call) - performing the lookup 17 | 1. [Example api call](#example-api-call) - make the call in code 18 | 1. [Example api call using script](#example-api-call-using-script) - using our tutorial script 19 | 1. [Example Output](#example-output) - output from a successful call 20 | 1. [To Run](#to-run) - Running the example. 21 | 22 | ### Making the api call 23 | 24 | To request the a list of accounts starting with a particular lookup pattern, we can use the `lookup_accounts` method: 25 | 26 | ```ruby 27 | api = Radiator::Api.new 28 | 29 | api.lookup_accounts(lower_bound_name, limit) do |accounts| 30 | puts accounts.join(' ') 31 | end 32 | ``` 33 | 34 | Notice, the above example can request up to 1000 accounts as an array. 35 | 36 | #### Example api call 37 | 38 | If we want to get the accounts starting with "alice" ... 39 | 40 | ```ruby 41 | api.lookup_accounts("alice", 10) do |content| ... 42 | ``` 43 | 44 | #### Example api call using script 45 | 46 | And to do the same with our tutorial script, which has its own default limit of 10: 47 | 48 | ```bash 49 | ruby search_accounts.rb alice 50 | ``` 51 | 52 | #### Example Output 53 | 54 | From the example we get the following output from our script: 55 | 56 | ``` 57 | alice alice-22 alice-is alice-labardo alice-mikhaylova alice-n-chains alice-radster alice-sandra alice-thuigh alice-way 58 | ``` 59 | 60 | ### To Run 61 | 62 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 63 | 64 | * `` 65 | * `[limit]` (optional) 66 | 67 | ```bash 68 | git clone git@github.com:steemit/devportal-tutorials-rb.git 69 | cd devportal-tutorials-rb/tutorials/15_search_accounts 70 | bundle install 71 | ruby search_accounts.rb [limit] 72 | ``` 73 | 74 | 75 | --- 76 | -------------------------------------------------------------------------------- /_tutorials-ruby/submit_comment_reply.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Submit Comment Reply' 3 | position: 11 4 | description: "_By the end of this tutorial you should know how to prepare comments for Steem and then submit using Radiator._" 5 | layout: full 6 | --- 7 | Full, runnable src of [Submit Comment Reply](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/11_submit_comment_reply) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | ### Intro 13 | 14 | This example will broadcast a reply to the blockchain using the values provided. To create a post in `ruby`, we will use a `Radiator::Transaction` containing a `comment` operation, which is how all content is stored internally. 15 | 16 | A reply is differentiated from a post by whether or not a `parent_author` exists. When there is no `parent_author`, then it's a post, otherwise it's a comment (like in this example). 17 | 18 | ### Script 19 | 20 | You should change `wif` to the posting key that matches your `author`. This script will pass along the values as a [`comment` operation](https://developers.steem.io/apidefinitions/broadcast-ops#broadcast_ops_comment): 21 | 22 | * `author` - Account name of the author currently replying. 23 | * `permlink` - Value unique to the author 24 | * `parent_author` - The name of the author of the being replied to, in the case of a reply like this example. 25 | * `parent_permlink` - The permlink of the content being replied to, in the case of a reply like this example. 26 | * `title` - Typically empty. 27 | * `body` - The actual content of the post. 28 | * `json_metadata` - JSON containing the `parent_permlink` of the root post as a tags array. 29 | 30 | ### To Run 31 | 32 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 33 | 34 | ```bash 35 | git clone git@github.com:steemit/devportal-tutorials-rb.git 36 | cd devportal-tutorials-rb/tutorials/11_submit_comment_reply 37 | bundle install 38 | ruby submit_comment_reply.rb 39 | ``` 40 | 41 | ### Example Output 42 | 43 | ```json 44 | { 45 | "jsonrpc": "2.0", 46 | "result": { 47 | "id": "3fef14cac921e9baa7b31e43245e5380f3fb4332", 48 | "block_num": 23355115, 49 | "trx_num": 13, 50 | "expired": false 51 | }, 52 | "id": 3 53 | } 54 | ``` 55 | 56 | The response we get after broadcasting the transaction gives us the transaction id ([`3fef14c...`](https://steemd.com/tx/3fef14cac921e9baa7b31e43245e5380f3fb4332)), block number ([`22867626`](https://steemd.com/b/23355115)), and the transaction number of that block (`13`). 57 | 58 | #### Error Handling 59 | 60 | We're checking the result for `error` in case the remote node has an issue to raise. Normally, it will be `nil`, but if it's populated, output `error.message` and exit. 61 | 62 | 63 | --- 64 | -------------------------------------------------------------------------------- /_tutorials-ruby/submit_post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'RB: Submit Post' 3 | position: 10 4 | description: "This example will broadcast a new post to the blockchain using the values provided. To create a post in `ruby`, we will use a `Radiator::Transaction` containing a `comment` operation, which is how all content is stored internally." 5 | layout: full 6 | --- 7 | Full, runnable src of [Submit Post](https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/10_submit_post) can be downloaded as part of the [RB tutorials repository](https://github.com/steemit/devportal-tutorials-rb). 8 |
9 | 10 | 11 | 12 | A post is differentiated from a comment by whether or not a `parent_author` exists. When there is no `parent_author`, then it's a post, otherwise it's a comment. 13 | 14 | ### Script 15 | 16 | You should change `wif` to the posting key that matches your `author`. This script will pass along the values as a [`comment` operation]({{ '/apidefinitions/broadcast-ops#broadcast_ops_comment' | relative_url }}): 17 | 18 | * `author` - Account name of the author currently posting. 19 | * `permlink` - Value unique to the author 20 | * `parent_author` - An empty string, in the case of a root post like this example. 21 | * `parent_permlink` - The first tag, in the case of a root post like this example. 22 | * `title` - Human readable title. 23 | * `body` - The actual content of the post. 24 | * `json_metadata` - JSON containing all of the tags. 25 | 26 | ### To Run 27 | 28 | First, set up your workstation using the steps provided in [Getting Started](https://developers.steem.io/tutorials-ruby/getting_started). Then you can create and execute the script (or clone from this repository): 29 | 30 | ```bash 31 | git clone git@github.com:steemit/devportal-tutorials-rb.git 32 | cd devportal-tutorials-rb/tutorials/10_submit_post 33 | bundle install 34 | ruby submit_a_new_post.rb 35 | ``` 36 | 37 | ### Example Output 38 | 39 | ```json 40 | { 41 | "jsonrpc": "2.0", 42 | "result": { 43 | "id": "768f7f64cee94413da0017ef79f592bb4da86baf", 44 | "block_num": 22867626, 45 | "trx_num": 43, 46 | "expired": false 47 | }, 48 | "id": 1 49 | } 50 | ``` 51 | 52 | The response we get after broadcasting the transaction gives us the transaction id ([`768f7f6...`](https://steemd.com/tx/768f7f64cee94413da0017ef79f592bb4da86baf)), block number ([`22867626`](https://steemd.com/b/22867626)), and the transaction number of that block (`43`). 53 | 54 | #### Error Handling 55 | 56 | We're checking the result for `error` in case the remote node has an issue to raise. Normally, it will be `nil`, but if it's populated, output `error.message` and exit. 57 | 58 | 59 | --- 60 | -------------------------------------------------------------------------------- /_tutorials/_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | position: 4 | type: 5 | description: 6 | --- 7 | -------------------------------------------------------------------------------- /_tutorials/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tutorials 3 | section: Tutorials 4 | exclude: true 5 | --- 6 | {% assign nav = site.data.nav.toc | where: "collection", "tutorials" | first %} 7 |
8 |
9 |

Read, play, and learn Steem.

10 | {% if nav.docs %} 11 | {% assign sorted_nav_docs = nav.docs | sort: "position" %} 12 | {% for nav_doc in sorted_nav_docs %} 13 | {% assign collection = site.collections | where: "id", nav_doc.collection | first %} 14 | {% if collection %} 15 | 16 |

{{ nav_doc.title }}

17 |
    18 | {% assign sorted_collection_docs = collection.docs | sort: "position" %} 19 | {% for doc in sorted_collection_docs %} 20 |
  • 21 | {{ doc.title }} 22 | {{ doc.description | markdownify }} 23 |
  • 24 | {% endfor %} 25 |
26 | {% endif %} 27 | {% endfor %} 28 | {% endif %} 29 |
30 |
31 | -------------------------------------------------------------------------------- /apidefinitions.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: API Docs - API Definitions 3 | section: API Definitions 4 | permalink: /apidefinitions/ 5 | --- 6 | 7 |
8 |
9 |
10 | While the condenser_api.* calls are ready for use, all other appbase methods are currently works in progress and may change, or be unsuitable for production use. 11 |
12 |
13 |
14 | 15 | {% assign sorted_collections = site.collections | where:'title', "API Definitions" %} 16 | {% for collection in sorted_collections %} 17 | {% assign sorted_docs = collection.docs | sort: "position" %} 18 | {% for doc in sorted_docs %} 19 |
20 |

21 | 22 | {{ doc.title }} 23 | {% if doc.type %} 24 | 25 | {% endif %} 26 | 27 |

28 | {% if doc.description %} 29 |

{{doc.description}}

30 | {% endif %} 31 | 32 | {{ doc.content | replace: "
", "
Parameters
" }} 33 |
34 | {% endfor %} 35 | {% endfor %} 36 | -------------------------------------------------------------------------------- /apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/apple-touch-icon.png -------------------------------------------------------------------------------- /css/css/fa-brands.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Brands'; 7 | font-style: normal; 8 | font-weight: normal; 9 | src: url("../webfonts/fa-brands-400.eot"); 10 | src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } 11 | 12 | .fab { 13 | font-family: 'Font Awesome 5 Brands'; } 14 | -------------------------------------------------------------------------------- /css/css/fa-brands.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands} -------------------------------------------------------------------------------- /css/css/fa-regular.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 400; 9 | src: url("../webfonts/fa-regular-400.eot"); 10 | src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } 11 | 12 | .far { 13 | font-family: 'Font Awesome 5 Free'; 14 | font-weight: 400; } 15 | -------------------------------------------------------------------------------- /css/css/fa-regular.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:Font Awesome\ 5 Free;font-weight:400} -------------------------------------------------------------------------------- /css/css/fa-solid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 900; 9 | src: url("../webfonts/fa-solid-900.eot"); 10 | src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } 11 | 12 | .fa, 13 | .fas { 14 | font-family: 'Font Awesome 5 Free'; 15 | font-weight: 900; } 16 | -------------------------------------------------------------------------------- /css/css/fa-solid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:Font Awesome\ 5 Free;font-weight:900} -------------------------------------------------------------------------------- /css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | sitemap: false 4 | --- 5 | 6 | $brand-colour: #4BA2F2; 7 | 8 | $nav-header-height: 100px; 9 | $nav-background-color: #f5f5f5; 10 | $nav-width: 210px; 11 | 12 | $space: 20px; 13 | 14 | $mobile-break: 700px; 15 | 16 | @import "mixins"; 17 | @import "main"; 18 | @import "borland"; 19 | @import "monaki"; 20 | 21 | .highlight { 22 | padding: 5px; 23 | background: #23323E; 24 | } 25 | 26 | pre { 27 | color: white; 28 | } 29 | 30 | .row { 31 | position: relative; 32 | min-height: 1px; 33 | padding-right: 15px; 34 | padding-left: 15px; 35 | } 36 | 37 | .right-code { 38 | margin-top: 110px; 39 | } 40 | 41 | .left-docs { 42 | border-top: 1px solid #eeeeee; 43 | h3:first-child { 44 | padding-top: 40px; 45 | } 46 | } 47 | 48 | .left-docs img { 49 | max-width: 100%; 50 | } 51 | 52 | section.doc-content.introductionwelcome > .left-docs { 53 | border-top: none!important; 54 | } 55 | 56 | 57 | 58 | .main:focus, .doc-content:focus { 59 | outline: none; 60 | } 61 | 62 | /*.hero { 63 | text-align: left; 64 | padding: 0 50px; 65 | height: 110px; 66 | border-bottom: 1px solid #eee; 67 | position: relative; 68 | display: flex; 69 | align-items: center; 70 | justify-content: space-between; 71 | &__img { 72 | 73 | } 74 | &__h1 { 75 | margin-bottom: 0; 76 | } 77 | }*/ 78 | 79 | 80 | header h1 { 81 | height: 60px; 82 | } 83 | 84 | .hero { 85 | padding: 50px 24px 40px; 86 | border-bottom: 1px solid #eee; 87 | &__img { 88 | display: block; 89 | max-width: 100%; 90 | } 91 | &__h1 { 92 | font-size: 2em; 93 | } 94 | } 95 | 96 | 97 | @media (min-width: 700px) { 98 | .hero { 99 | padding: 0px 50px; 100 | height: 63px; 101 | display: flex; 102 | align-items: center; 103 | &__img { 104 | display: none; 105 | } 106 | &__h1 { 107 | margin-bottom: 0; 108 | } 109 | } 110 | } 111 | 112 | 113 | @media (min-width: 1000px) { 114 | 115 | .hero { 116 | text-align: left; 117 | padding: 0 50px; 118 | height: 111px; 119 | 120 | position: relative; 121 | 122 | justify-content: space-between; 123 | &__img { 124 | display: block; 125 | max-width: 100%; 126 | } 127 | } 128 | header h1 { 129 | height: 107px; 130 | } 131 | 132 | } 133 | .footer { 134 | background-color:#3E4956; 135 | border-top: 1px solid #eeeeee; 136 | display:flex; 137 | justify-content: center; 138 | padding:10px; 139 | a:hover, 140 | a:visited { 141 | color: #4BA2F2; 142 | } 143 | 144 | } 145 | .main-nav-section { 146 | .title { 147 | cursor: pointer; 148 | width: 100%; 149 | text-align: left; 150 | border: none; 151 | outline: none; 152 | transition: 0.4s; 153 | } 154 | 155 | &.show-content { 156 | .content { 157 | display: block; 158 | } 159 | } 160 | 161 | .content { 162 | display: none; 163 | overflow: hidden; 164 | } 165 | } 166 | 167 | 168 | .active, .accordion:hover { 169 | /*background-color: #ccc;*/ 170 | } 171 | 172 | .top-of-tutorial-repo-link { 173 | text-transform: lowercase; 174 | .first-word { 175 | text-transform: capitalize; 176 | } 177 | } 178 | 179 | .warn.deprecated { 180 | background: #FD0; 181 | font-weight: bold; 182 | font-size: small; 183 | display:inline-block; 184 | margin-left:5px; 185 | padding:5px; 186 | position: relative; 187 | top:-3px; 188 | } 189 | 190 | .danger { 191 | background: #dc3545; 192 | color: #fff; 193 | font-weight: bold; 194 | padding:5px; 195 | } 196 | 197 | .danger.removed { 198 | font-size: small; 199 | display:inline-block; 200 | margin-left:5px; 201 | position: relative; 202 | top:-3px; 203 | } 204 | -------------------------------------------------------------------------------- /css/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /css/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /css/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /css/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /css/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /css/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /css/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /css/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /css/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /css/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /css/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /css/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/css/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /docs/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'jekyll' 4 | gem 'neatjson' 5 | gem 'rake' 6 | gem 'git' 7 | gem 'steem-ruby' 8 | 9 | group :jekyll_plugins do 10 | gem 'jekyll-seo-tag' 11 | gem 'jekyll-sitemap' 12 | end 13 | -------------------------------------------------------------------------------- /docs/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.5.2) 5 | public_suffix (>= 2.0.2, < 4.0) 6 | bitcoin-ruby (0.0.18) 7 | colorator (1.1.0) 8 | concurrent-ruby (1.0.5) 9 | em-websocket (0.5.1) 10 | eventmachine (>= 0.12.9) 11 | http_parser.rb (~> 0.6.0) 12 | eventmachine (1.2.7) 13 | ffi (1.9.25) 14 | forwardable-extended (2.6.0) 15 | git (1.5.0) 16 | hashie (3.6.0) 17 | http_parser.rb (0.6.0) 18 | i18n (0.9.5) 19 | concurrent-ruby (~> 1.0) 20 | jekyll (3.8.4) 21 | addressable (~> 2.4) 22 | colorator (~> 1.0) 23 | em-websocket (~> 0.5) 24 | i18n (~> 0.7) 25 | jekyll-sass-converter (~> 1.0) 26 | jekyll-watch (~> 2.0) 27 | kramdown (~> 1.14) 28 | liquid (~> 4.0) 29 | mercenary (~> 0.3.3) 30 | pathutil (~> 0.9) 31 | rouge (>= 1.7, < 4) 32 | safe_yaml (~> 1.0) 33 | jekyll-sass-converter (1.5.2) 34 | sass (~> 3.4) 35 | jekyll-seo-tag (2.5.0) 36 | jekyll (~> 3.3) 37 | jekyll-sitemap (1.2.0) 38 | jekyll (~> 3.3) 39 | jekyll-watch (2.0.0) 40 | listen (~> 3.0) 41 | json (2.1.0) 42 | kramdown (1.17.0) 43 | liquid (4.0.1) 44 | listen (3.1.5) 45 | rb-fsevent (~> 0.9, >= 0.9.4) 46 | rb-inotify (~> 0.9, >= 0.9.7) 47 | ruby_dep (~> 1.2) 48 | little-plugger (1.1.4) 49 | logging (2.2.2) 50 | little-plugger (~> 1.1) 51 | multi_json (~> 1.10) 52 | mercenary (0.3.6) 53 | multi_json (1.13.1) 54 | neatjson (0.8.4) 55 | pathutil (0.16.1) 56 | forwardable-extended (~> 2.6) 57 | public_suffix (3.0.3) 58 | rake (12.3.1) 59 | rb-fsevent (0.10.3) 60 | rb-inotify (0.9.10) 61 | ffi (>= 0.5.0, < 2) 62 | rouge (3.3.0) 63 | ruby_dep (1.5.0) 64 | safe_yaml (1.0.4) 65 | sass (3.6.0) 66 | sass-listen (~> 4.0.0) 67 | sass-listen (4.0.0) 68 | rb-fsevent (~> 0.9, >= 0.9.4) 69 | rb-inotify (~> 0.9, >= 0.9.7) 70 | steem-ruby (0.9.3) 71 | bitcoin-ruby (~> 0.0, >= 0.0.18) 72 | ffi (~> 1.9, >= 1.9.23) 73 | hashie (~> 3.5, >= 3.5.7) 74 | json (~> 2.1, >= 2.1.0) 75 | logging (~> 2.2, >= 2.2.0) 76 | 77 | PLATFORMS 78 | ruby 79 | 80 | DEPENDENCIES 81 | git 82 | jekyll 83 | jekyll-seo-tag 84 | jekyll-sitemap 85 | neatjson 86 | rake 87 | steem-ruby 88 | 89 | BUNDLED WITH 90 | 1.16.5 91 | -------------------------------------------------------------------------------- /docs/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 CloudCannon 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/css/css/fa-brands.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Brands'; 7 | font-style: normal; 8 | font-weight: normal; 9 | src: url("../webfonts/fa-brands-400.eot"); 10 | src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } 11 | 12 | .fab { 13 | font-family: 'Font Awesome 5 Brands'; } 14 | -------------------------------------------------------------------------------- /docs/css/css/fa-brands.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands} -------------------------------------------------------------------------------- /docs/css/css/fa-regular.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 400; 9 | src: url("../webfonts/fa-regular-400.eot"); 10 | src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } 11 | 12 | .far { 13 | font-family: 'Font Awesome 5 Free'; 14 | font-weight: 400; } 15 | -------------------------------------------------------------------------------- /docs/css/css/fa-regular.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:Font Awesome\ 5 Free;font-weight:400} -------------------------------------------------------------------------------- /docs/css/css/fa-solid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 900; 9 | src: url("../webfonts/fa-solid-900.eot"); 10 | src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } 11 | 12 | .fa, 13 | .fas { 14 | font-family: 'Font Awesome 5 Free'; 15 | font-weight: 900; } 16 | -------------------------------------------------------------------------------- /docs/css/css/fa-solid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:Font Awesome\ 5 Free;font-weight:900} -------------------------------------------------------------------------------- /docs/css/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /docs/css/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /docs/css/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /docs/css/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /docs/css/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /docs/css/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /docs/css/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /docs/css/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /docs/css/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /docs/css/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /docs/css/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /docs/css/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/css/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/favicon.png -------------------------------------------------------------------------------- /docs/images/emblem.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/images/hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/images/hero.png -------------------------------------------------------------------------------- /docs/images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/images/logo_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Layer 1 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/images/look.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 15 | 18 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/images/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/npm-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/images/services-jussi/kitematic-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/images/services-jussi/kitematic-example.png -------------------------------------------------------------------------------- /docs/images/steemdev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/images/steemdev.png -------------------------------------------------------------------------------- /docs/images/tutorials-recipes/jussi-multiplexer/network-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/images/tutorials-recipes/jussi-multiplexer/network-diagram.png -------------------------------------------------------------------------------- /docs/js/adjust.js: -------------------------------------------------------------------------------- 1 | 2 | function DynamicAlign() { 3 | var $window = $(window); 4 | var windowsize = $window.width(); 5 | if (windowsize > 1000) { 6 | $('section.right-code > p.static-right-section-title').each(function () { 7 | // compute right side 8 | var $text = $(this)[0].innerHTML.replace(/\./g, '').replace(/\s+/g, '-').toLowerCase(); 9 | var $section_id_name = $(this).parent().parent()[0].id; 10 | var $right_position = $(this).position().top - $(this).parent().parent().offset().top; 11 | // compute left side & match difference 12 | var $left_item = $("#" + $section_id_name + " .left-docs" + " h3#" + $text); 13 | if ($left_item) { 14 | var $left_parent = $left_item.parent().parent().offset().top; 15 | var $left_height = $left_item.position().top; 16 | var $left_position = $left_height - $left_parent; 17 | var $difference = $left_position - $right_position; 18 | if ($difference<0) { 19 | $left_item.css('margin-top', Math.abs($difference)); 20 | } else { 21 | $(this).css('margin-top', $difference); 22 | } 23 | 24 | } 25 | }); 26 | } 27 | }; 28 | 29 | window.onload = DynamicAlign; 30 | window.onresize = DynamicAlign; 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/js/search.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | function getQueryVariable(variable) { 3 | var query = window.location.search.substring(1), 4 | vars = query.split("&"); 5 | 6 | for (var i = 0; i < vars.length; i++) { 7 | var pair = vars[i].split("="); 8 | 9 | if (pair[0] === variable) { 10 | return pair[1]; 11 | } 12 | } 13 | } 14 | 15 | function getPreview(query, content, previewLength) { 16 | previewLength = previewLength || (content.length * 2); 17 | 18 | var parts = query.split(" "), 19 | match = content.toLowerCase().indexOf(query.toLowerCase()), 20 | matchLength = query.length, 21 | preview; 22 | 23 | // Find a relevant location in content 24 | for (var i = 0; i < parts.length; i++) { 25 | if (match >= 0) { 26 | break; 27 | } 28 | 29 | match = content.toLowerCase().indexOf(parts[i].toLowerCase()); 30 | matchLength = parts[i].length; 31 | } 32 | 33 | // Create preview 34 | if (match >= 0) { 35 | var start = match - (previewLength / 2), 36 | end = start > 0 ? match + matchLength + (previewLength / 2) : previewLength; 37 | 38 | preview = content.substring(start, end).trim(); 39 | 40 | if (start > 0) { 41 | preview = "..." + preview; 42 | } 43 | 44 | if (end < content.length) { 45 | preview = preview + "..."; 46 | } 47 | 48 | // Highlight query parts 49 | preview = preview.replace(new RegExp("(" + parts.join("|") + ")", "gi"), "$1"); 50 | } else { 51 | // Use start of content if no match found 52 | preview = content.substring(0, previewLength).trim() + (content.length > previewLength ? "..." : ""); 53 | } 54 | 55 | return preview; 56 | } 57 | 58 | function displaySearchResults(results, query) { 59 | var searchResultsEl = document.getElementById("search-results"), 60 | searchProcessEl = document.getElementById("search-process"); 61 | 62 | if (results.length) { 63 | var resultsHTML = ""; 64 | results.forEach(function (result) { 65 | var item = window.data[result.ref], 66 | contentPreview = getPreview(query, item.content, 170), 67 | titlePreview = getPreview(query, item.title); 68 | 69 | resultsHTML += "
  • " + titlePreview + "

    " + contentPreview + "

  • "; 70 | }); 71 | 72 | searchResultsEl.innerHTML = resultsHTML; 73 | searchProcessEl.innerText = "Showing"; 74 | } else { 75 | searchResultsEl.style.display = "none"; 76 | searchProcessEl.innerText = "No"; 77 | } 78 | } 79 | 80 | window.index = lunr(function () { 81 | this.field("id"); 82 | this.field("title", {boost: 10}); 83 | this.field("category"); 84 | this.field("url"); 85 | this.field("content"); 86 | }); 87 | 88 | var query = decodeURIComponent((getQueryVariable("q") || "").replace(/\+/g, "%20")), 89 | searchQueryContainerEl = document.getElementById("search-query-container"), 90 | searchQueryEl = document.getElementById("search-query"), 91 | searchInputEl = document.getElementById("search-input"); 92 | 93 | searchInputEl.value = query; 94 | searchQueryEl.innerText = query; 95 | searchQueryContainerEl.style.display = "inline"; 96 | 97 | for (var key in window.data) { 98 | window.index.add(window.data[key]); 99 | } 100 | 101 | displaySearchResults(window.index.search(query), query); // Hand the results off to be displayed 102 | })(); 103 | -------------------------------------------------------------------------------- /docs/lib/scrape/tutorials_job/javascript.rb: -------------------------------------------------------------------------------- 1 | require 'git' 2 | 3 | module Scrape 4 | module TutorialsJob 5 | class Javascript < Base 6 | def initialize(options = {}) 7 | options[:tutorial_github_url] ||= 'https://github.com/steemit/devportal-tutorials-js.git' 8 | options[:tutorial_github_name] ||= 'devportal-tutorials-js' 9 | options[:tutorial_url] = 'https://github.com/steemit/devportal-tutorials-js' 10 | options[:dest_tutorials_path] ||= '_tutorials-javascript' 11 | 12 | super 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /docs/lib/scrape/tutorials_job/python.rb: -------------------------------------------------------------------------------- 1 | require 'git' 2 | 3 | module Scrape 4 | module TutorialsJob 5 | class Python < Base 6 | def initialize(options = {}) 7 | options[:tutorial_github_url] = 'https://github.com/steemit/devportal-tutorials-py.git' 8 | options[:tutorial_github_name] ||= 'devportal-tutorials-py' 9 | options[:tutorial_url] = 'https://github.com/steemit/devportal-tutorials-py' 10 | options[:dest_tutorials_path] ||= '_tutorials-python' 11 | 12 | super 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /docs/lib/scrape/tutorials_job/ruby.rb: -------------------------------------------------------------------------------- 1 | require 'git' 2 | 3 | module Scrape 4 | module TutorialsJob 5 | class Ruby < Base 6 | def initialize(options = {}) 7 | options[:tutorial_github_url] = 'https://github.com/steemit/devportal-tutorials-rb.git' 8 | options[:tutorial_github_name] ||= 'devportal-tutorials-rb' 9 | options[:tutorial_url] = 'https://github.com/steemit/devportal-tutorials-rb' 10 | options[:dest_tutorials_path] ||= '_tutorials-ruby' 11 | 12 | super 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | Sitemap: https://developers.steem.io/sitemap.xml 2 | -------------------------------------------------------------------------------- /docs/siteicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/siteicon.png -------------------------------------------------------------------------------- /docs/touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/touch-icon.png -------------------------------------------------------------------------------- /docs/unused/accounts.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/unused/accounts.md -------------------------------------------------------------------------------- /docs/unused/authority_and_validation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/unused/authority_and_validation.md -------------------------------------------------------------------------------- /docs/unused/blocks_and_transactions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/unused/blocks_and_transactions.md -------------------------------------------------------------------------------- /docs/unused/globals.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/unused/globals.md -------------------------------------------------------------------------------- /docs/unused/keys.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/unused/keys.md -------------------------------------------------------------------------------- /docs/unused/market.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/docs/unused/market.md -------------------------------------------------------------------------------- /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/favicon.png -------------------------------------------------------------------------------- /images/emblem.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/images/hero.png -------------------------------------------------------------------------------- /images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /images/logo_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Layer 1 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /images/look.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 15 | 18 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /images/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/npm-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /images/services-jussi/kitematic-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/images/services-jussi/kitematic-example.png -------------------------------------------------------------------------------- /images/steemdev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/images/steemdev.png -------------------------------------------------------------------------------- /images/tutorials-recipes/jussi-multiplexer/network-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/images/tutorials-recipes/jussi-multiplexer/network-diagram.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: API Docs 3 | --- 4 | {% assign sorted_nav = site.data.nav.toc | sort: "position" %} 5 | {% for nav in sorted_nav %} 6 | {% unless nav.exclude %} 7 | {% assign col = site.collections | where:"id", nav.collection | first %} 8 | {% if col %} 9 | {% assign sorted_docs = col.docs | sort: "position" %} 10 | {% for doc in sorted_docs %} 11 | {% unless doc.exclude %} 12 |
    13 |
    14 |

    15 | 16 | {{ doc.title }} 17 | {% if doc.type %} 18 | 19 | {% endif %} 20 | 21 |

    22 | {% if doc.description %} 23 |

    {{doc.description}}

    24 | {% endif %} 25 | 26 | {{ doc.content | replace: "
    ", "
    Parameters
    " }} 27 |
    28 |
    29 | {% endunless %} 30 | {% endfor %} 31 | {% endif %} 32 | {% endunless %} 33 | 34 | {% endfor %} 35 | -------------------------------------------------------------------------------- /js/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/js/.gitignore -------------------------------------------------------------------------------- /js/adjust.js: -------------------------------------------------------------------------------- 1 | 2 | function DynamicAlign() { 3 | var $window = $(window); 4 | var windowsize = $window.width(); 5 | if (windowsize > 1000) { 6 | $('section.right-code > p.static-right-section-title').each(function () { 7 | // compute right side 8 | var $text = $(this)[0].innerHTML.replace(/\./g, '').replace(/\s+/g, '-').toLowerCase(); 9 | var $section_id_name = $(this).parent().parent()[0].id; 10 | var $right_position = $(this).position().top - $(this).parent().parent().offset().top; 11 | // compute left side & match difference 12 | var $left_item = $("#" + $section_id_name + " .left-docs" + " h3#" + $text); 13 | if ($left_item) { 14 | var $left_parent = $left_item.parent().parent().offset().top; 15 | var $left_height = $left_item.position().top; 16 | var $left_position = $left_height - $left_parent; 17 | var $difference = $left_position - $right_position; 18 | if ($difference<0) { 19 | $left_item.css('margin-top', Math.abs($difference)); 20 | } else { 21 | $(this).css('margin-top', $difference); 22 | } 23 | 24 | } 25 | }); 26 | } 27 | }; 28 | 29 | window.onload = DynamicAlign; 30 | window.onresize = DynamicAlign; 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /js/search.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | function getQueryVariable(variable) { 3 | var query = window.location.search.substring(1), 4 | vars = query.split("&"); 5 | 6 | for (var i = 0; i < vars.length; i++) { 7 | var pair = vars[i].split("="); 8 | 9 | if (pair[0] === variable) { 10 | return pair[1]; 11 | } 12 | } 13 | } 14 | 15 | function getPreview(query, content, previewLength) { 16 | previewLength = previewLength || (content.length * 2); 17 | 18 | var parts = query.split(" "), 19 | match = content.toLowerCase().indexOf(query.toLowerCase()), 20 | matchLength = query.length, 21 | preview; 22 | 23 | // Find a relevant location in content 24 | for (var i = 0; i < parts.length; i++) { 25 | if (match >= 0) { 26 | break; 27 | } 28 | 29 | match = content.toLowerCase().indexOf(parts[i].toLowerCase()); 30 | matchLength = parts[i].length; 31 | } 32 | 33 | // Create preview 34 | if (match >= 0) { 35 | var start = match - (previewLength / 2), 36 | end = start > 0 ? match + matchLength + (previewLength / 2) : previewLength; 37 | 38 | preview = content.substring(start, end).trim(); 39 | 40 | if (start > 0) { 41 | preview = "..." + preview; 42 | } 43 | 44 | if (end < content.length) { 45 | preview = preview + "..."; 46 | } 47 | 48 | // Highlight query parts 49 | preview = preview.replace(new RegExp("(" + parts.join("|") + ")", "gi"), "$1"); 50 | } else { 51 | // Use start of content if no match found 52 | preview = content.substring(0, previewLength).trim() + (content.length > previewLength ? "..." : ""); 53 | } 54 | 55 | return preview; 56 | } 57 | 58 | function displaySearchResults(results, query) { 59 | var searchResultsEl = document.getElementById("search-results"), 60 | searchProcessEl = document.getElementById("search-process"); 61 | 62 | if (results.length) { 63 | var resultsHTML = ""; 64 | results.forEach(function (result) { 65 | var item = window.data[result.ref], 66 | contentPreview = getPreview(query, item.content, 170), 67 | titlePreview = getPreview(query, item.title); 68 | 69 | resultsHTML += "
  • " + titlePreview + "

    " + contentPreview + "

  • "; 70 | }); 71 | 72 | searchResultsEl.innerHTML = resultsHTML; 73 | searchProcessEl.innerText = "Showing"; 74 | } else { 75 | searchResultsEl.style.display = "none"; 76 | searchProcessEl.innerText = "No"; 77 | } 78 | } 79 | 80 | window.index = lunr(function () { 81 | this.field("id"); 82 | this.field("title", {boost: 10}); 83 | this.field("category"); 84 | this.field("url"); 85 | this.field("content"); 86 | this.field("keywords"); 87 | }); 88 | 89 | var query = decodeURIComponent((getQueryVariable("q") || "").replace(/\+/g, "%20")), 90 | searchQueryContainerEl = document.getElementById("search-query-container"), 91 | searchQueryEl = document.getElementById("search-query"), 92 | searchInputEl = document.getElementById("search-input"); 93 | 94 | searchInputEl.value = query; 95 | searchQueryEl.innerText = query; 96 | searchQueryContainerEl.style.display = "inline"; 97 | 98 | for (var key in window.data) { 99 | window.index.add(window.data[key]); 100 | } 101 | 102 | displaySearchResults(window.index.search(query), query); // Hand the results off to be displayed 103 | })(); 104 | -------------------------------------------------------------------------------- /lib/scrape/tutorials_job/javascript.rb: -------------------------------------------------------------------------------- 1 | require 'git' 2 | 3 | module Scrape 4 | module TutorialsJob 5 | class Javascript < Base 6 | def initialize(options = {}) 7 | options[:tutorial_github_url] ||= 'https://github.com/steemit/devportal-tutorials-js.git' 8 | options[:tutorial_github_name] ||= 'devportal-tutorials-js' 9 | options[:tutorial_url] = 'https://github.com/steemit/devportal-tutorials-js' 10 | options[:dest_tutorials_path] ||= '_tutorials-javascript' 11 | 12 | super 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/scrape/tutorials_job/python.rb: -------------------------------------------------------------------------------- 1 | require 'git' 2 | 3 | module Scrape 4 | module TutorialsJob 5 | class Python < Base 6 | def initialize(options = {}) 7 | options[:tutorial_github_url] = 'https://github.com/steemit/devportal-tutorials-py.git' 8 | options[:tutorial_github_name] ||= 'devportal-tutorials-py' 9 | options[:tutorial_url] = 'https://github.com/steemit/devportal-tutorials-py' 10 | options[:dest_tutorials_path] ||= '_tutorials-python' 11 | 12 | super 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/scrape/tutorials_job/ruby.rb: -------------------------------------------------------------------------------- 1 | require 'git' 2 | 3 | module Scrape 4 | module TutorialsJob 5 | class Ruby < Base 6 | def initialize(options = {}) 7 | options[:tutorial_github_url] = 'https://github.com/steemit/devportal-tutorials-rb.git' 8 | options[:tutorial_github_name] ||= 'devportal-tutorials-rb' 9 | options[:tutorial_url] = 'https://github.com/steemit/devportal-tutorials-rb' 10 | options[:dest_tutorials_path] ||= '_tutorials-ruby' 11 | 12 | super 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /quickstart.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Quickstart 3 | section: Quickstart 4 | layout: default 5 | permalink: /quickstart/ 6 | --- 7 | 8 | {% assign sorted_collections = site.collections | where:'id', "quickstart" %} 9 | {% for collection in sorted_collections %} 10 | {% assign sorted_docs = collection.docs | sort: "position" %} 11 | {% for doc in sorted_docs %} 12 |
    13 |

    14 | 15 | {{ doc.title }} 16 | {% if doc.type %} 17 | 18 | {% endif %} 19 | 20 |

    21 | {% if doc.description %} 22 |

    {{doc.description}}

    23 | {% endif %} 24 | 25 | {{ doc.content | replace: "
    ", "
    Parameters
    " }} 26 |
    27 | {% endfor %} 28 | {% endfor %} 29 | -------------------------------------------------------------------------------- /resources.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Resources 3 | section: Resources 4 | layout: default 5 | permalink: /resources/ 6 | --- 7 | 8 | {% assign sorted_collections = site.collections | where:'id', "resources" %} 9 | {% for collection in sorted_collections %} 10 | {% assign sorted_docs = collection.docs | sort: "position" %} 11 | {% for doc in sorted_docs %} 12 |
    13 |

    14 | 15 | {{ doc.title }} 16 | {% if doc.type %} 17 | 18 | {% endif %} 19 | 20 |

    21 | {% if doc.description %} 22 |

    {{doc.description}}

    23 | {% endif %} 24 | 25 | {{ doc.content | replace: "
    ", "
    Parameters
    " }} 26 |
    27 | {% endfor %} 28 | {% endfor %} 29 | -------------------------------------------------------------------------------- /services.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Services 3 | section: Services 4 | layout: default 5 | permalink: /services/ 6 | --- 7 | 8 | {% assign sorted_collections = site.collections | where:'id', "services" %} 9 | {% for collection in sorted_collections %} 10 | {% assign sorted_docs = collection.docs | sort: "position" %} 11 | {% for doc in sorted_docs %} 12 |
    13 |

    14 | 15 | {{ doc.title }} 16 | {% if doc.type %} 17 | 18 | {% endif %} 19 | 20 |

    21 | {% if doc.description %} 22 |

    {{doc.description}}

    23 | {% endif %} 24 | 25 | {{ doc.content | replace: "
    ", "
    Parameters
    " }} 26 |
    27 | {% endfor %} 28 | {% endfor %} 29 | -------------------------------------------------------------------------------- /siteicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/siteicon.png -------------------------------------------------------------------------------- /touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/touch-icon.png -------------------------------------------------------------------------------- /unused/accounts.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/unused/accounts.md -------------------------------------------------------------------------------- /unused/authority_and_validation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/unused/authority_and_validation.md -------------------------------------------------------------------------------- /unused/blocks_and_transactions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/unused/blocks_and_transactions.md -------------------------------------------------------------------------------- /unused/community.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Community 3 | position: 4 4 | --- 5 | 6 | #### Steemdata 7 | 8 | Mongo database for accessing steem data. 9 | 10 | ``` 11 | Host: mongo0.steemdata.com 12 | Port: 27017 13 | 14 | Database: Steem 15 | Username: steemit 16 | Password: steemit 17 | ``` 18 | 19 | Official site: [steemdata](http://www.steemsql.com/) 20 | 21 | 22 | #### SteemSQL 23 | 24 | Microsoft SQL database for accessing steem data 25 | 26 | Official site: [steemsql](http://www.steemsql.com/) -------------------------------------------------------------------------------- /unused/database_api.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Database API 3 | position: 2 4 | --- 5 | 6 | Subscription examples 7 | 8 | ~~~ javascript 9 | steem.api.setSubscribeCallback(callback, clearFilter, function(err, result) { 10 | console.log(err, result); 11 | }); 12 | ~~~ 13 | {: title="Set Subscribe Callback"} 14 | 15 | ~~~ javascript 16 | steem.api.setPendingTransactionCallback(cb, function(err, result) { 17 | console.log(err, result); 18 | }); 19 | ~~~ 20 | {: title="Set Pending Transaction Callback"} 21 | 22 | ~~~ javascript 23 | steem.api.setBlockAppliedCallback(cb, function(err, result) { 24 | console.log(err, result); 25 | }); 26 | ~~~ 27 | {: title="Set Block Applied Callback"} 28 | 29 | ~~~ javascript 30 | steem.api.cancelAllSubscriptions(function(err, result) { 31 | console.log(err, result); 32 | }); 33 | ~~~ 34 | {: title="Cancel All Subscriptions"} 35 | -------------------------------------------------------------------------------- /unused/docker.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Docker 3 | position: 1 4 | --- 5 | 6 | Just want to get up and running quickly? Try deploying a pre-built dockerized container. Both common binary types are included. 7 | 8 | Just want to get up and running quickly? Try deploying a pre-built 9 | dockerized container. Both common binary types are included. 10 | 11 | #### Dockerized p2p Node 12 | 13 | To run a p2p node (ca. 2GB of memory is required at the moment): 14 | 15 | docker run \ 16 | -d -p 2001:2001 -p 8090:8090 --name steemd-default \ 17 | steemit/steem 18 | 19 | docker logs -f steemd-default # follow along 20 | 21 | #### Dockerized Full Node 22 | 23 | To run a node with *all* the data (e.g. for supporting a content website) 24 | that uses ca. 14GB of memory and growing: 25 | 26 | docker run \ 27 | --env USE_WAY_TOO_MUCH_RAM=1 \ 28 | -d -p 2001:2001 -p 8090:8090 --name steemd-full \ 29 | steemit/steem 30 | 31 | docker logs -f steemd-full 32 | 33 | #### Seed Nodes 34 | 35 | A list of some seed nodes to get you started can be found in 36 | [doc/seednodes.txt](doc/seednodes.txt). 37 | 38 | This same file is baked into the docker images and can be overridden by 39 | setting `STEEMD_SEED_NODES` in the container environment at `docker run` 40 | time to a whitespace delimited list of seed nodes (with port). -------------------------------------------------------------------------------- /unused/globals.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/unused/globals.md -------------------------------------------------------------------------------- /unused/keys.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/unused/keys.md -------------------------------------------------------------------------------- /unused/market.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steemit/devportal/78bffd6aa73a4bb0f5f278ca9f003c7b890a398f/unused/market.md -------------------------------------------------------------------------------- /unused/sbds.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: SBDS 3 | position: 5 4 | --- 5 | 6 | **sbds** is a tool for easily querying the data of the Steem Blockchain. 7 | 8 | While providing direct interfaces to several pluggable storage architectures that may be used for querying the blockchain, sbds may also be used as a lower level API upon which other applications can be built. 9 | 10 | **Docker Hub** 11 | 12 | ``` 13 | docker run -d steemit/sbds 14 | ``` 15 | 16 | **Python 3** 17 | ``` 18 | pip3 install -e git+git@github.com:steemit/sbds.git#egg=sbds 19 | ``` 20 | 21 | **Examples** 22 | 23 | Stream blocks 1 to 3450000 from our dev S3 bucket 24 | ``` 25 | sbds checkpoints get-blocks s3://steemit-dev-sbds-checkpoints/gzipped --start 1 --end 3450000 26 | ``` 27 | 28 | Stream blocks 8000000 to the last block from your local copy of our S3 bucket 29 | ``` 30 | sbds checkpoints get-blocks /home/ubuntu/checkpoints/gzipped --start 8000000 31 | ``` 32 | 33 | Stream all blocks from your local copy of our S3 bucket 34 | 35 | ``` 36 | sbds checkpoints get-blocks /home/ubuntu/checkpoints/gzipped 37 | ``` 38 | 39 | **Routes** 40 | 41 | Coming soon. 42 | -------------------------------------------------------------------------------- /unused/steemd.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Steemd 3 | position: 3 4 | --- -------------------------------------------------------------------------------- /unused/tags.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tags 3 | position: 3 4 | --- 5 | 6 | Tags examples 7 | 8 | ~~~ javascript 9 | steem.api.setSubscribeCallback(callback, clearFilter, function(err, result) { 10 | console.log(err, result); 11 | }); 12 | ~~~ 13 | {: title="Get Trending Tags"} 14 | -------------------------------------------------------------------------------- /unused/tutorials.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tutorials 3 | position: 2 4 | --- 5 | 6 | ##### __steem-py examples__ 7 | Install steem-py: 8 | 9 | ~~~ 10 | $ sudo apt-get install libffi-dev libssl-dev python-dev python3-pip 11 | $ pip3 install steem 12 | ~~~ 13 | 14 | ##### Auto Reply Bot 15 | The most easy auto-reply bot can be coded with just a few lines of code: 16 | 17 | ##### Block Stream 18 | This module allows to stream blocks and individual operations from the blockchain and run bots with a minimum of code. 19 | This example code shows all comments starting at block 1893850. 20 | 21 | 22 | ##### Operation Stream 23 | Example for operation Stream: 24 | 25 | 26 | ##### Decentralized Exchange 27 | Example for decentralized exchange: 28 | 29 | ~~~ python 30 | from steem import Steem 31 | import os 32 | import json 33 | steem = Steem(wif="") 34 | for c in steem.stream_comments(): 35 | if "Anything you want" in c["body"]: 36 | print(c.reply(".. anything you want")) 37 | ~~~ 38 | {: title="Auto Reply Bot"} 39 | 40 | ~~~ python 41 | from steem.blockchain import Blockchain 42 | from pprint import pprint 43 | 44 | for a in blockchain.blocks() 45 | pprint(a) 46 | ~~~ 47 | {: title="Block Stream"} 48 | 49 | ~~~ python 50 | from steem.blockchain import Blockchain 51 | from pprint import pprint 52 | 53 | for a in blockchain.ops() 54 | pprint(a) 55 | ~~~ 56 | {: title="Opereation Stream"} 57 | 58 | ~~~ python 59 | from pprint import pprint 60 | from steem import Steem 61 | from steem.dex import Dex 62 | 63 | steem = Steem() 64 | dex = Dex(steem) 65 | pprint(dex.buy(10, "SBD", 100)) 66 | pprint(dex.sell(10, "SBD", 100)) 67 | pprint(dex.cancel("24432422")) 68 | pprint(dex.returnTicker()) 69 | pprint(dex.return24Volume()) 70 | pprint(dex.returnOrderBook(2)) 71 | pprint(dex.ws.get_order_book(10, api="market_history")) 72 | pprint(dex.returnTradeHistory()) 73 | pprint(dex.returnMarketHistoryBuckets()) 74 | pprint(dex.returnMarketHistory(300)) 75 | pprint(dex.get_lowest_ask()) 76 | pprint(dex.get_higest_bid()) 77 | pprint(dex.transfer(10, "SBD", "fabian", "foobar")) 78 | ~~~ 79 | {: title="Decentralized Exchange"} 80 | 81 | --------------------------------------------------------------------------------