diff --git a/.gitignore b/.gitignore index d23e02d3..c600880f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ dist .DS_Store .claude/settings.local.json +revamp/audit/ # Migration backups (created by revamp/migrate.sh) hedera.backup.* diff --git a/docs.json b/docs.json index e17d4ae2..4a9ac5b1 100644 --- a/docs.json +++ b/docs.json @@ -71,9 +71,8 @@ "footer": { "socials": { "discord": "https://hedera.com/discord", - "facebook": "https://www.facebook.com/hederanetwork", - "linkedin": "https://www.linkedin.com/company/hashgraph", - "medium": "https://medium.com/hashgraph", + "linkedin": "https://www.linkedin.com/company/hedera-network", + "medium": "https://medium.com/hedera", "reddit": "https://www.reddit.com/r/Hedera/", "telegram": "https://t.me/hederahashgraph", "x": "https://X.com/hedera", @@ -81,6 +80,734 @@ } }, "redirects": [ + { + "source": "/hedera/sdks-and-apis/sdks/tokens", + "destination": "/native/tokens" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/associate-tokens-to-an-account", + "destination": "/native/tokens/associate" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/burn-a-token", + "destination": "/native/tokens/burn" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/custom-token-fees", + "destination": "/native/tokens/custom-fees" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/define-a-token", + "destination": "/native/tokens/define" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/delete-a-token", + "destination": "/native/tokens/delete" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/freeze-an-account", + "destination": "/native/tokens/freeze" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/get-account-token-balance", + "destination": "/native/tokens/get-balance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/mint-a-token", + "destination": "/native/tokens/mint" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/pause-a-token", + "destination": "/native/tokens/pause" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/transfer-tokens", + "destination": "/native/tokens/transfer" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/unfreeze-an-account", + "destination": "/native/tokens/unfreeze" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/unpause-a-token", + "destination": "/native/tokens/unpause" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/wipe-a-token", + "destination": "/native/tokens/wipe" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/adjust-an-allowance", + "destination": "/native/accounts/adjust-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/approve-an-allowance", + "destination": "/native/accounts/approve-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/create-an-account", + "destination": "/native/accounts/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/get-account-balance", + "destination": "/native/accounts/get-balance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/get-account-info", + "destination": "/native/accounts/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/transfer-cryptocurrency", + "destination": "/native/accounts/transfer" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/update-an-account", + "destination": "/native/accounts/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-storage/append-to-a-file", + "destination": "/native/files/append" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-storage/create-a-file", + "destination": "/native/files/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/call-a-smart-contract-function-1", + "destination": "/native/smart-contracts/call" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/basic-types/tokensupplytype", + "destination": "/reference/protobuf/basic-types" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/consensus/consensus-service", + "destination": "/reference/protobuf/consensus" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/miscellaneous/transactionreceipt", + "destination": "/reference/protobuf/miscellaneous" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/miscellaneous/transactionresponse", + "destination": "/reference/protobuf/miscellaneous" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/schedule-service/schedulecreate", + "destination": "/reference/protobuf/schedule" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/customfees/fixedfee", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/customfees/royaltyfee", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenfeescheduleupdate", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenfreezeaccount", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenpause", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenwipeaccount", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-consensus-service-api-1", + "destination": "/reference/protobuf/consensus" + }, + { + "source": "/hedera/sdks-and-apis/rest-api/balance", + "destination": "/reference/rest-api/balances" + }, + { + "source": "/hedera/core-concepts/smart-contracts/hedera-services-integration-with-smart-contracts", + "destination": "/evm/hedera-services" + }, + { + "source": "/hedera/core-concepts/smart-contracts/hethers", + "destination": "/evm" + }, + { + "source": "/hedera/core-concepts/smart-contracts/hyperledger-besu-evm", + "destination": "/evm" + }, + { + "source": "/hedera/core-concepts/smart-contracts/solidity-variables-and-opcodes", + "destination": "/evm" + }, + { + "source": "/hedera/core-concepts/smart-contracts/verifying-smart-contracts", + "destination": "/evm/development/verifying" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-smart-contract-using-hardhat", + "destination": "/evm/tools/hardhat/setup" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-smart-contract-using-hardhat-hedera-json-rpc-relay", + "destination": "/evm/tools/hardhat/setup" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-smart-contract-using-remix", + "destination": "/evm/tools/remix" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-subgraph-using-the-graph-and-json-rpc-relay", + "destination": "/evm/integrations/indexing/the-graph" + }, + { + "source": "/hedera/tutorials/smart-contracts/hscs-workshop/hardhat", + "destination": "/evm/tools/hardhat/setup" + }, + { + "source": "/hedera/tutorials/smart-contracts-service/deploy-a-contract-using-the-hedera-token-service", + "destination": "/evm/hedera-services" + }, + { + "source": "/hedera/tutorials/smart-contracts-service/deploy-your-first-smart-contract", + "destination": "/evm/quickstart" + }, + { + "source": "/hedera/tutorials/more-tutorials/getting-started-with-the-hedera-consensus-service-fabric-plugin", + "destination": "/native/tutorials/advanced/hcs-fabric-plugin" + }, + { + "source": "/hedera/tutorials/more-tutorials/json-rpc-connection", + "destination": "/evm/tutorials/intermediate/json-rpc-connections" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hooks-and-policies", + "destination": "/solutions/ai/agent-kit/hooks-and-policies" + }, + { + "source": "/hedera/open-source-solutions/hiero-cli/overview", + "destination": "/solutions/tools/hiero-cli/overview" + }, + { + "source": "/hedera/open-source-solutions/supra-oracle", + "destination": "/evm/integrations/oracles/supra" + }, + { + "source": "/docs/hedera-sdks", + "destination": "/native" + }, + { + "source": "/docs/join-hedera-testnet", + "destination": "/learn/networks/testnet" + }, + { + "source": "/docs/:slug*", + "destination": "/" + }, + { + "source": "/guides/getting-started/environment-set-up", + "destination": "/learn/getting-started" + }, + { + "source": "/guides/resources/tutorials", + "destination": "/native/tutorials" + }, + { + "source": "/hethers/:slug*", + "destination": "/evm" + }, + { + "source": "/hethers", + "destination": "/evm" + }, + { + "source": "/page/:slug*", + "destination": "/" + }, + { + "source": "/hedera/core-concepts/hashgraph-consensus-algorithms", + "destination": "/learn/core-concepts/hashgraph" + }, + { + "source": "/hedera/core-concepts/hashgraph-consensus-algorithms/virtual-voting", + "destination": "/learn/core-concepts/hashgraph/virtual-voting" + }, + { + "source": "/hedera/core-concepts/keys-and-signatures", + "destination": "/learn/core-concepts/keys" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/hedera-mirror-node", + "destination": "/operators/mirror-node" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/one-click-mirror-node-deployment", + "destination": "/operators/mirror-node/one-click-deploy" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/run-your-own-beta-mirror-node", + "destination": "/operators/mirror-node/run-your-own" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/run-your-own-beta-mirror-node/run-your-own-mirror-node-gcs", + "destination": "/operators/mirror-node/run-your-own/gcs" + }, + { + "source": "/hedera/core-concepts/scheduled-transaction", + "destination": "/learn/core-concepts/transactions/scheduled" + }, + { + "source": "/hedera/core-concepts/smart-contracts", + "destination": "/learn/core-concepts/services/smart-contracts" + }, + { + "source": "/hedera/core-concepts/smart-contracts/deploying-smart-contracts", + "destination": "/evm/development/deploying" + }, + { + "source": "/hedera/core-concepts/smart-contracts/gas-and-fees", + "destination": "/evm/development/gas-fees" + }, + { + "source": "/hedera/core-concepts/smart-contracts/json-rpc-relay", + "destination": "/evm/development/json-rpc" + }, + { + "source": "/hedera/core-concepts/smart-contracts/understanding-hederas-evm-differences-and-compatibility", + "destination": "/evm/migration" + }, + { + "source": "/hedera/core-concepts/smart-contracts/understanding-hederas-evm-differences-and-compatibility/for-evm-developers-migrating-to-hedera", + "destination": "/evm/migration/key-differences-overview" + }, + { + "source": "/hedera/core-concepts/tokens/erc-evm-compatible-tokenization", + "destination": "/evm/hedera-services/hybrid/erc-compatibility" + }, + { + "source": "/hedera/core-concepts/tokens/hedera-token-service-hts-native-tokenization", + "destination": "/learn/core-concepts/tokens/hts-overview" + }, + { + "source": "/hedera/core-concepts/tokens/hybrid-hts-+-evm-tokenization", + "destination": "/evm/hedera-services/hybrid" + }, + { + "source": "/hedera/core-concepts/tokens/tokenization-on-hedera", + "destination": "/learn/core-concepts/tokens" + }, + { + "source": "/hedera/core-concepts/transactions-and-queries", + "destination": "/learn/core-concepts/transactions" + }, + { + "source": "/hedera/getting-started-evm-developers/add-hedera-to-metamask", + "destination": "/evm/quickstart/setup-metamask" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-a-smart-contract-using-remix", + "destination": "/evm/quickstart/deploy-with-remix" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-a-smart-contract-with-foundry", + "destination": "/evm/quickstart/deploy-with-foundry" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-a-smart-contract-with-hardhat", + "destination": "/evm/quickstart/deploy-with-hardhat" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-your-first-contract-with-hedera-contract-builder", + "destination": "/evm/quickstart/deploy-with-contract-builder" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/create-a-token", + "destination": "/native/tutorials/tokens/create-first-token" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/create-a-topic", + "destination": "/native/tutorials/consensus/create-first-topic" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/create-an-account", + "destination": "/learn/getting-started/create-portal-account" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/quickstart", + "destination": "/native/quickstart/javascript" + }, + { + "source": "/hedera/networks/mainnet/fees/transaction-records", + "destination": "/learn/networks/mainnet/transaction-records" + }, + { + "source": "/hedera/networks/mainnet/mainnet-nodes", + "destination": "/operators/consensus-node" + }, + { + "source": "/hedera/networks/mainnet/mainnet-nodes/node-requirements", + "destination": "/operators/consensus-node/requirements" + }, + { + "source": "/hedera/networks/release-notes", + "destination": "/learn/release-notes" + }, + { + "source": "/hedera/networks/release-notes/services", + "destination": "/learn/release-notes/services" + }, + { + "source": "/hedera/networks/testnet/testnet-access", + "destination": "/learn/networks/testnet/access" + }, + { + "source": "/hedera/networks/testnet/testnet-nodes", + "destination": "/learn/networks/testnet/nodes" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera", + "destination": "/solutions/ai" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/agent-lab", + "destination": "/solutions/ai/agent-lab" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit", + "destination": "/solutions/ai/agent-kit" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hedera-agent-kit-js/create-js-hooks-and-policies", + "destination": "/solutions/ai/agent-kit/js/create-hooks-and-policies" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hedera-agent-kit-js/create-js-plugins", + "destination": "/solutions/ai/agent-kit/js/create-plugins" + }, + { + "source": "/hedera/open-source-solutions/asset-tokenization-studio-ats", + "destination": "/solutions/tokenization/ats" + }, + { + "source": "/hedera/open-source-solutions/asset-tokenization-studio-ats/web-user-interface-ui", + "destination": "/solutions/tokenization/ats/web-ui" + }, + { + "source": "/hedera/open-source-solutions/interoperability-and-bridging", + "destination": "/evm/integrations/cross-chain" + }, + { + "source": "/hedera/open-source-solutions/oracle-networks", + "destination": "/evm/integrations/oracles" + }, + { + "source": "/hedera/open-source-solutions/oracle-networks/chainlink-oracles", + "destination": "/evm/integrations/oracles/chainlink" + }, + { + "source": "/hedera/open-source-solutions/stablecoin-studio", + "destination": "/solutions/tokenization/stablecoin" + }, + { + "source": "/hedera/open-source-solutions/stablecoin-studio/cli-management", + "destination": "/solutions/tokenization/stablecoin/cli" + }, + { + "source": "/hedera/open-source-solutions/stablecoin-studio/web-ui-application", + "destination": "/solutions/tokenization/stablecoin/web-ui" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/consensus", + "destination": "/reference/protobuf/consensus" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/file-service", + "destination": "/reference/protobuf/file" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-status-api", + "destination": "/reference/status-api" + }, + { + "source": "/hedera/sdks-and-apis/rest-api/smart-contracts", + "destination": "/reference/rest-api/contracts" + }, + { + "source": "/hedera/sdks-and-apis/sdks", + "destination": "/native/fundamentals" + }, + { + "source": "/hedera/sdks-and-apis/sdks/address-book", + "destination": "/native/fundamentals/address-book" + }, + { + "source": "/hedera/sdks-and-apis/sdks/keys/create-a-threshold-key", + "destination": "/native/keys/threshold-key" + }, + { + "source": "/hedera/sdks-and-apis/sdks/keys/generate-a-new-key-pair", + "destination": "/native/keys/generate-key-pair" + }, + { + "source": "/hedera/sdks-and-apis/sdks/pseudorandom-number-generator", + "destination": "/native/prng" + }, + { + "source": "/hedera/sdks-and-apis/sdks/schedule-transaction/create-a-schedule-transaction", + "destination": "/native/scheduled/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/schedule-transaction/get-schedule-info", + "destination": "/native/scheduled/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/schedule-transaction/sign-a-schedule-transaction", + "destination": "/native/scheduled/sign" + }, + { + "source": "/hedera/sdks-and-apis/sdks/set-up-your-local-network", + "destination": "/native/fundamentals/local-network" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar", + "destination": "/native/accounts" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/adjust-an-allowance", + "destination": "/native/accounts/adjust-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/approve-an-allowance", + "destination": "/native/accounts/approve-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-an-account", + "destination": "/native/accounts/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/delete-an-account", + "destination": "/native/accounts/delete" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/errors", + "destination": "/native/accounts/errors" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/get-account-balance", + "destination": "/native/accounts/get-balance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/get-account-info", + "destination": "/native/accounts/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/transfer-cryptocurrency", + "destination": "/native/accounts/transfer" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/update-an-account", + "destination": "/native/accounts/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service", + "destination": "/native/files" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/append-to-a-file", + "destination": "/native/files/append" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/create-a-file", + "destination": "/native/files/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/delete-a-file", + "destination": "/native/files/delete" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/errors", + "destination": "/native/files/errors" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/get-file-contents", + "destination": "/native/files/get-contents" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/get-file-info", + "destination": "/native/files/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/update-a-file", + "destination": "/native/files/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service", + "destination": "/native/consensus" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/create-a-topic", + "destination": "/native/consensus/create-topic" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/delete-a-topic", + "destination": "/native/consensus/delete-topic" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/errors", + "destination": "/native/consensus/errors" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/get-topic-info", + "destination": "/native/consensus/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/get-topic-message", + "destination": "/native/consensus/get-message" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/submit-a-message", + "destination": "/native/consensus/submit-message" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/update-a-topic", + "destination": "/native/consensus/update-topic" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts", + "destination": "/native/smart-contracts" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/call-a-smart-contract-function", + "destination": "/native/smart-contracts/call" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/create-a-smart-contract", + "destination": "/native/smart-contracts/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/ethereum-transaction", + "destination": "/native/smart-contracts/ethereum-transaction" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/get-smart-contract-info", + "destination": "/native/smart-contracts/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/hedera-service-solidity-libraries", + "destination": "/native/smart-contracts/solidity-libraries" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/update-a-smart-contract", + "destination": "/native/smart-contracts/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service", + "destination": "/native/tokens" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/airdrop-a-token", + "destination": "/native/tokens/airdrop" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/cancel-a-token", + "destination": "/native/tokens/cancel" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/claim-a-token", + "destination": "/native/tokens/claim" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/reject-an-airdrop", + "destination": "/native/tokens/reject-airdrop" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/update-nft-metadata", + "destination": "/native/tokens/update-nft-metadata" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions", + "destination": "/native/transactions" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions/create-a-batch-transaction", + "destination": "/native/transactions/batch" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions/get-a-transaction-receipt", + "destination": "/native/transactions/receipt" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions/get-a-transaction-record", + "destination": "/native/transactions/record" + }, + { + "source": "/hedera/tutorials/consensus/submit-your-first-message", + "destination": "/native/tutorials/consensus/submit-first-message" + }, + { + "source": "/hedera/tutorials/demo-applications", + "destination": "/solutions/examples/demos" + }, + { + "source": "/hedera/tutorials/local-node/how-to-set-up-a-hedera-local-node", + "destination": "/native/local-dev/setup-local-node" + }, + { + "source": "/hedera/tutorials/more-tutorials", + "destination": "/native/tutorials/more" + }, + { + "source": "/hedera/tutorials/more-tutorials/get-started-with-the-hedera-consensus-service-fabric-plugin", + "destination": "/native/tutorials/advanced/hcs-fabric-plugin" + }, + { + "source": "/hedera/tutorials/more-tutorials/how-to-create-a-personal-access-token-api-key-on-the-hedera-portal", + "destination": "/native/tutorials/getting-started/create-api-key" + }, + { + "source": "/hedera/tutorials/more-tutorials/schedule-your-first-transaction", + "destination": "/native/tutorials/scheduled/schedule-first" + }, + { + "source": "/hedera/tutorials/smart-contracts", + "destination": "/evm/tutorials" + }, + { + "source": "/hedera/tutorials/smart-contracts/how-to-mint-and-burn-an-erc-721-token-using-hardhat-and-ethers-part-1", + "destination": "/evm/tutorials/advanced/erc721-hardhat/part1-mint-burn" + }, + { + "source": "/hedera/tutorials/smart-contracts/how-to-verify-a-smart-contract-on-hashscan", + "destination": "/evm/tutorials/intermediate/verify-hashscan" + }, + { + "source": "/hedera/tutorials/smart-contracts/hts-x-evm-part-1-how-to-mint-nfts", + "destination": "/evm/tutorials/hedera/hts-evm/part1-mint-nfts" + }, + { + "source": "/hedera/tutorials/starter-projects", + "destination": "/solutions/examples/starters" + }, + { + "source": "/hedera/tutorials/token", + "destination": "/native/tutorials/tokens" + }, + { + "source": "/hedera/tutorials/token/create-and-transfer-your-first-nft", + "destination": "/native/tutorials/tokens/create-transfer-nft" + }, + { + "source": "/hedera/tutorials/token/structure-your-token-metadata-using-json-schema-v2", + "destination": "/native/tutorials/tokens/metadata-schema" + }, { "source": "/hedera/getting-started", "destination": "/learn/getting-started/what-is-hedera" @@ -113,6 +840,14 @@ "source": "/hedera/core-concepts/:slug*", "destination": "/learn/core-concepts/:slug*" }, + { + "source": "/hedera/sdks-and-apis/sdks/:slug*", + "destination": "/native/:slug*" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/:slug*", + "destination": "/reference/protobuf/:slug*" + }, { "source": "/hedera/sdks-and-apis", "destination": "/reference" @@ -201,10 +936,26 @@ "navigation": { "global": { "anchors": [ - {"anchor": "Status", "href": "http://status.hedera.com/", "icon": "signal"}, - {"anchor": "Discord", "href": "https://hedera.com/discord", "icon": "discord"}, - {"anchor": "Playground", "href": "https://portal.hedera.com/playground", "icon": "code"}, - {"anchor": "Blog", "href": "https://hedera.com/blog", "icon": "newspaper"} + { + "anchor": "Status", + "href": "http://status.hedera.com/", + "icon": "signal" + }, + { + "anchor": "Discord", + "href": "https://hedera.com/discord", + "icon": "discord" + }, + { + "anchor": "Playground", + "href": "https://portal.hedera.com/playground", + "icon": "code" + }, + { + "anchor": "Blog", + "href": "https://hedera.com/blog", + "icon": "newspaper" + } ] }, "tabs": [ @@ -1057,13 +1808,10 @@ "pages": [ "operators/consensus-node/index", "operators/consensus-node/deployment", - "operators/consensus-node/monitoring", { "group": "Requirements", "pages": [ "operators/consensus-node/requirements/index", - "operators/consensus-node/requirements/hardware", - "operators/consensus-node/requirements/network", "operators/consensus-node/requirements/faq" ] } diff --git a/evm/development/index.mdx b/evm/development/index.mdx index b3edc0ed..cb563571 100644 --- a/evm/development/index.mdx +++ b/evm/development/index.mdx @@ -1,7 +1,7 @@ --- title: "Smart Contract Development" description: "Everything you need to know about developing smart contracts on Hedera." -icon: "code" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/hts-solidity/create-tokens.mdx b/evm/hedera-services/hts-solidity/create-tokens.mdx index 64b0e246..0952e64b 100644 --- a/evm/hedera-services/hts-solidity/create-tokens.mdx +++ b/evm/hedera-services/hts-solidity/create-tokens.mdx @@ -1,35 +1,167 @@ --- title: "Create Tokens" -description: "Create fungible and non-fungible tokens using the HTS system contract." -icon: "circle-plus" +description: "Create fungible and non-fungible HTS tokens directly from Solidity via the 0x167 system contract." --- -{/* TODO: This page needs content */} +The HTS system contract at `0x167` lets a Solidity contract create native HTS tokens. The resulting token is a real HTS token: same association rules, same mirror node REST responses, same HashScan view as an SDK-created one. You can operate on it through the HTS interface or through ERC-20 / ERC-721 redirects. - - **Coming Soon** — This page is under construction. - +## At a glance -## Overview +| Field | Value | +|---|---| +| Contract address | `0x167` | +| Reference HIPs | [HIP-358 (token creation)](https://hips.hedera.com/hip/hip-358), [HIP-206 (HTS precompile)](https://hips.hedera.com/hip/hip-206) | +| Solidity source | [hiero-contracts/contracts/token-service](https://github.com/hiero-ledger/hiero-contracts/tree/main/contracts/token-service) | +| Key functions | `createFungibleToken`, `createNonFungibleToken`, `createFungibleTokenWithCustomFees`, `createNonFungibleTokenWithCustomFees` | -Create fungible and non-fungible tokens using the HTS system contract. +## Why use this instead of a plain ERC-20? -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +Two practical reasons. -## Need Help? +The first is compliance features. HTS tokens get native support for KYC keys, freeze, pause, wipe, supply caps, and royalty fees, and the network enforces them. If you build the same controls into an ERC-20 contract, you write them yourself and pay gas every time they fire. - - - Join our developer community - - - Explore our repositories +The second is pricing. HTS operations are priced in USD and paid in HBAR by the network. ERC-20 operations are priced in EVM gas, which scales with whatever you put in your contract. + +If you don't need any of that, a plain ERC-20 is simpler and works fine. The choice is per-token; nothing stops you from using both in one app. + +## Required imports + +The helper library is `HederaTokenService.sol`, in the [hiero-contracts repository](https://github.com/hiero-ledger/hiero-contracts). Copy these files into your `contracts/` directory: + +```text +contracts/ +├── HederaTokenService.sol # Wrapper that handles call/response codes +├── IHederaTokenService.sol # Raw interface (function signatures, structs) +├── HederaResponseCodes.sol # Numeric response codes (SUCCESS, INVALID_TOKEN_ID, ...) — from contracts/common/ +├── ExpiryHelper.sol # Builds the Expiry struct +├── FeeHelper.sol # Builds FixedFee, FractionalFee, RoyaltyFee structs +└── KeyHelper.sol # Builds HederaToken.TokenKey entries +``` + +## Example: fungible token + +```solidity +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.22; + +import "./HederaTokenService.sol"; +import "./IHederaTokenService.sol"; +import "./HederaResponseCodes.sol"; +import "./KeyHelper.sol"; +import "./ExpiryHelper.sol"; + +contract TokenFactory is HederaTokenService, KeyHelper, ExpiryHelper { + + event TokenCreated(address tokenAddress); + + function createFungible( + string memory name, + string memory symbol, + int64 initialSupply, + int32 decimals + ) external payable returns (address tokenAddress) { + + // Build the supply key. This contract will be authorized to mint more. + IHederaTokenService.TokenKey[] memory keys = new IHederaTokenService.TokenKey[](1); + keys[0] = getSingleKey( + KeyType.SUPPLY, + KeyValueType.CONTRACT_ID, + address(this) + ); + + IHederaTokenService.HederaToken memory token; + token.name = name; + token.symbol = symbol; + token.treasury = address(this); + token.memo = "created via system contract"; + token.tokenSupplyType = false; // false = infinite supply + token.maxSupply = 0; + token.freezeDefault = false; + token.tokenKeys = keys; + token.expiry = createAutoRenewExpiry(address(this), defaultAutoRenewPeriod); + + // Token creation costs HBAR (rent); forward msg.value to the precompile. + (int responseCode, address created) = HederaTokenService.createFungibleToken( + token, initialSupply, decimals + ); + + require(responseCode == HederaResponseCodes.SUCCESS, "HTS token create failed"); + emit TokenCreated(created); + return created; + } +} +``` + +## Example: non-fungible token + +```solidity +function createNft( + string memory name, + string memory symbol +) external payable returns (address tokenAddress) { + IHederaTokenService.TokenKey[] memory keys = new IHederaTokenService.TokenKey[](1); + keys[0] = getSingleKey(KeyType.SUPPLY, KeyValueType.CONTRACT_ID, address(this)); + + IHederaTokenService.HederaToken memory token; + token.name = name; + token.symbol = symbol; + token.treasury = address(this); + token.tokenSupplyType = true; // true = finite supply + token.maxSupply = 10_000; + token.tokenKeys = keys; + token.expiry = createAutoRenewExpiry(address(this), defaultAutoRenewPeriod); + + (int responseCode, address created) = HederaTokenService.createNonFungibleToken(token); + require(responseCode == HederaResponseCodes.SUCCESS, "HTS NFT create failed"); + return created; +} +``` + +## Paying for it + +Token creation costs HBAR. The caller has to forward enough `msg.value` to cover the `TokenCreate` transaction fee, which buys the token its initial auto-renew period (~92 days). The current base fee is around $1 USD worth of HBAR for both fungible and non-fungible tokens. + +Two important things to know about how Hedera handles the money: + +- **Gas is charged on consumption.** Per HIP-1249, Hedera refunds 100% of unused gas, and the per-transaction limit is 15M (HIP-185). Set a generous gas limit; you only pay for what you actually use. +- **Excess `msg.value` is not refunded.** Anything you forward beyond what the precompile consumes for the `TokenCreate` fee stays in the calling contract's balance. There is no automatic refund to the EOA. + +The practical pattern: compute the exact tinybars via the [Exchange Rate system contract](/evm/hedera-services/system-contracts/exchange-rate) just before the call, or build a refund step into your contract that returns leftover HBAR to `msg.sender` after the precompile call. + +```solidity +// Compute the exact value just before the call, then forward only that amount. +// 1.5 USD in tinycents = 1.5 * 10^8 tinycents. Gives a small safety margin +// over the ~$1 base fee. +uint256 tinybars = IExchangeRate(0x168).tinycentsToTinybars(15 * 10**7); +uint256 wei_ = tinybars * 10**10; // tinybars (8 decimals) -> wei (18 decimals) +TokenFactory(factory).createFungible{value: wei_}("MyToken", "MTK", 1_000_000, 2); +``` + + + Token creation fails with `INSUFFICIENT_PAYER_BALANCE` if `msg.value` doesn't cover the fee. If you can't compute the exact amount, pass extra and refund the leftover from inside your contract. Don't expect Hedera to do it for you. + + +## Token keys + +The `HederaToken.tokenKeys` array decides who can do what to the token. Each entry is a `(keyType, keyValue)` pair: + +| Key | Authorizes | +|---|---| +| `ADMIN` | Updating token properties and rotating other keys | +| `SUPPLY` | Minting and burning | +| `FREEZE` | Freezing and unfreezing accounts | +| `WIPE` | Wiping tokens from accounts | +| `KYC` | Granting and revoking KYC status | +| `PAUSE` | Pausing all token operations | +| `FEE_SCHEDULE` | Updating the custom-fee schedule | +| `METADATA` | Updating NFT serial-number metadata (HIP-657) | + +Build each entry with `KeyHelper.getSingleKey(KeyType.X, KeyValueType.Y, address)`. Common `KeyValueType` values: `CONTRACT_ID` (the contract signs implicitly), `INHERIT_ACCOUNT_KEY` (use the caller's key), `ED25519` / `ECDSA` (provide a raw public key). + +## See also + + + + Full function reference for the HTS precompile, including transfer, mint, burn, freeze, pause, and KYC operations. diff --git a/evm/hedera-services/hts-solidity/index.mdx b/evm/hedera-services/hts-solidity/index.mdx index 674c3ee0..8af5be48 100644 --- a/evm/hedera-services/hts-solidity/index.mdx +++ b/evm/hedera-services/hts-solidity/index.mdx @@ -1,7 +1,7 @@ --- title: "HTS from Solidity" description: "Create and manage Hedera tokens directly from your Solidity smart contracts." -icon: "coins" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/hts-solidity/nft-operations.mdx b/evm/hedera-services/hts-solidity/nft-operations.mdx index 357f4279..8814d2b3 100644 --- a/evm/hedera-services/hts-solidity/nft-operations.mdx +++ b/evm/hedera-services/hts-solidity/nft-operations.mdx @@ -1,7 +1,7 @@ --- title: "NFT Operations" description: "Mint, burn, and transfer NFTs using the HTS system contract." -icon: "image" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/hts-solidity/token-management.mdx b/evm/hedera-services/hts-solidity/token-management.mdx index b15d469d..e3c71a22 100644 --- a/evm/hedera-services/hts-solidity/token-management.mdx +++ b/evm/hedera-services/hts-solidity/token-management.mdx @@ -1,7 +1,7 @@ --- title: "Token Management" description: "Pause, freeze, wipe, and manage token properties from Solidity." -icon: "sliders" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/hts-solidity/transfer-tokens.mdx b/evm/hedera-services/hts-solidity/transfer-tokens.mdx index de00a2ef..dd1db1f6 100644 --- a/evm/hedera-services/hts-solidity/transfer-tokens.mdx +++ b/evm/hedera-services/hts-solidity/transfer-tokens.mdx @@ -1,7 +1,7 @@ --- title: "Transfer Tokens" description: "Transfer HTS tokens between accounts from your smart contracts." -icon: "arrow-right-arrow-left" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/hybrid/hts-vs-erc.mdx b/evm/hedera-services/hybrid/hts-vs-erc.mdx index 10ac4962..6195210b 100644 --- a/evm/hedera-services/hybrid/hts-vs-erc.mdx +++ b/evm/hedera-services/hybrid/hts-vs-erc.mdx @@ -1,7 +1,7 @@ --- title: "HTS vs ERC: When to Use What" description: "Compare native HTS tokens with ERC-20/721 contracts and choose the right approach." -icon: "scale-balanced" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/index.mdx b/evm/hedera-services/index.mdx index 6a583690..b84491d4 100644 --- a/evm/hedera-services/index.mdx +++ b/evm/hedera-services/index.mdx @@ -1,7 +1,7 @@ --- title: "Hedera-Native Features" description: "Access Hedera's unique services directly from your Solidity smart contracts." -icon: "sparkles" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/system-contracts/exchange-rate.mdx b/evm/hedera-services/system-contracts/exchange-rate.mdx index 535d574e..1622ced1 100644 --- a/evm/hedera-services/system-contracts/exchange-rate.mdx +++ b/evm/hedera-services/system-contracts/exchange-rate.mdx @@ -1,35 +1,102 @@ --- title: "Exchange Rate System Contract" -description: "Query HBAR to USD exchange rates directly from your smart contracts." -icon: "dollar-sign" +description: "Query HBAR/USD exchange rates directly from your smart contracts via the 0x168 system contract." --- -{/* TODO: This page needs content */} +The exchange rate system contract exposes the network's active HBAR/USD rate to your EVM contracts. If you want to price something in USD but settle in HBAR, this is what you call. - - **Coming Soon** — This page is under construction. - +## At a glance -## Overview +| Field | Value | +|---|---| +| Contract address | `0x168` | +| Reference HIP | [HIP-475](https://hips.hedera.com/hip/hip-475) | +| Solidity source | [hiero-contracts/contracts/exchange-rate](https://github.com/hiero-ledger/hiero-contracts/tree/main/contracts/exchange-rate) | +| Functions | `tinycentsToTinybars(uint256)`, `tinybarsToTinycents(uint256)` | -Query HBAR to USD exchange rates directly from your smart contracts. +The contract is implemented by consensus nodes, so calls are deterministic and don't depend on an off-chain feed. The rate comes from the network's exchange rate file (`0.0.112`), which is the same source the network uses internally to charge transaction fees. -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +## Why it exists -## Need Help? +Hedera fees are quoted in USD but paid in HBAR at the current network rate. The contract gives Solidity code access to the same conversion. If you want to charge a flat 10 cents, you compute the HBAR amount at call time. No hard-coded prices, no oracle fee. - - - Join our developer community - - - Explore our repositories +Units to keep straight: +- 1 tinycent = 10⁻⁸ US cents = 10⁻¹⁰ USD +- 1 tinybar = 10⁻⁸ HBAR + +## Solidity interface + +```solidity +// SPDX-License-Identifier: Apache-2.0 +pragma solidity >=0.4.9 <0.9.0; + +interface IExchangeRate { + // Given a value in tinycents (10^-8 US cents), returns the equivalent + // value in tinybars at the current network exchange rate. + function tinycentsToTinybars(uint256 tinycents) external returns (uint256); + + // Given a value in tinybars, returns the equivalent value in tinycents + // at the current network exchange rate. + function tinybarsToTinycents(uint256 tinybars) external returns (uint256); +} +``` + +## Example: charge a flat USD fee + +This contract charges $0.10 worth of HBAR per call. The HBAR amount is computed against the live rate, so it doesn't matter if HBAR moves. + +```solidity +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.22; + +interface IExchangeRate { + function tinycentsToTinybars(uint256 tinycents) external returns (uint256); +} + +contract UsdPricedStore { + // The Exchange Rate system contract address. + address constant EXCHANGE_RATE = address(0x168); + + // 10 cents = 10 * 10^8 tinycents = 1_000_000_000. + uint256 constant TEN_CENTS_IN_TINYCENTS = 10 * 10**8; + + event Purchased(address indexed buyer, uint256 paidTinybars); + + function purchase() external payable { + // Ask the network how many tinybars are equivalent to $0.10 right now. + uint256 requiredTinybars = + IExchangeRate(EXCHANGE_RATE).tinycentsToTinybars(TEN_CENTS_IN_TINYCENTS); + + // msg.value is in 18-decimal wei. Convert tinybars (8 decimals) to wei + // by multiplying by 10^10 so the units line up. + uint256 requiredWei = requiredTinybars * 10**10; + require(msg.value >= requiredWei, "insufficient HBAR for $0.10"); + + emit Purchased(msg.sender, requiredTinybars); + } +} +``` + + + `tinycentsToTinybars` returns tinybars (8 decimals). `msg.value` is in wei (18 decimals). You have to multiply by `10**10` to compare them. This is the most common bug when wiring up the precompile. + + +## When to reach for it + +Useful when you need stable USD pricing on-chain: subscription fees, paywalled functions, auction reserve prices, or a guard that rejects transactions above a USD-equivalent cap. Also useful for any contract that wants to mirror Hedera's own fee model (quote in USD, settle in HBAR) instead of building a Chainlink integration. + +## Things to know + +The interface marks both functions as non-view, so calls cost gas even though they read state. Budget for that when batching conversions. + +The rate updates roughly once an hour from the network exchange rate file. It is not a live market feed; for anything that needs second-by-second tracking, layer an oracle on top. + +The rate is what the network uses for fee calculation. It tends to track exchange spot prices closely but isn't guaranteed to match. + +## See also + + + + The token-service precompile at `0x167` for creating, minting, and transferring HTS tokens from Solidity. diff --git a/evm/hedera-services/system-contracts/prng.mdx b/evm/hedera-services/system-contracts/prng.mdx index 1916c50f..a858bcbe 100644 --- a/evm/hedera-services/system-contracts/prng.mdx +++ b/evm/hedera-services/system-contracts/prng.mdx @@ -1,7 +1,7 @@ --- title: "PRNG System Contract" description: "Generate verifiable random numbers in your smart contracts." -icon: "dice" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/hedera-services/why-use-native-services.mdx b/evm/hedera-services/why-use-native-services.mdx index 3aef24f9..7cfb0200 100644 --- a/evm/hedera-services/why-use-native-services.mdx +++ b/evm/hedera-services/why-use-native-services.mdx @@ -1,7 +1,7 @@ --- title: "Why Use Native Services?" description: "Understand the cost and performance benefits of using Hedera's native services vs pure ERC standards." -icon: "scale-balanced" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/index.mdx b/evm/index.mdx index 1961dafd..e315af23 100644 --- a/evm/index.mdx +++ b/evm/index.mdx @@ -4,218 +4,18 @@ description: "Deploy Solidity smart contracts on Hedera using MetaMask, Hardhat, mode: wide --- -
- -{/* ── BROWSE BY SECTION ─────────────────────────────────────────────────── */} -
-

- Browse by section -

-

- Every topic in the EVM Developers tab, organized by area. -

- -
- - -
- -
-
-
Quickstart
-
Set up MetaMask, deploy with Remix, Hardhat, Foundry, or Contract Builder.
-
-
- - -
- -
-
-
Development
-
Creating, compiling, deploying, verifying — gas, rent, traceability, and JSON-RPC.
-
-
- - -
- -
-
-
EVM Differences
-
Key Hedera-vs-Ethereum differences — accounts, decimals, transfers, tooling.
-
-
- - -
- -
-
-
ERC Token Standards
-
ERC-20, ERC-721, ERC-1363, ERC-3643, and WHBAR support.
-
-
- - -
- -
-
-
Hedera-Native Features
-
System contracts, HTS from Solidity, hybrid tokenization, native HCS/HSS.
-
-
- - -
- -
-
-
Tools
-
Hardhat, Foundry, Remix, Contract Builder, Truffle, The Graph.
-
-
- - -
- -
-
-
Tutorials
-
Beginner to advanced — ERC-721 with Hardhat or Foundry, HTS + EVM, HSS + EVM.
-
-
- - -
- -
-
-
Integrations
-
Oracles (Chainlink, Pyth, Supra), cross-chain (LayerZero, CCIP), wallets.
-
-
- - -
- -
-
-
Troubleshooting
-
Common errors, gas estimation, and transaction failure debugging.
-
-
- -
-
+
{/* ── POPULAR QUICKSTARTS ──────────────────────────────────────────────── */} -
-

- Popular quickstarts +
+ -
- - -
+
+ + +
@@ -225,88 +25,58 @@ mode: wide
-
Set Up MetaMask
-
Add Hedera Testnet to MetaMask and fund your wallet.
+
Set Up MetaMask
+
Add Hedera Testnet to MetaMask and fund your wallet.
- -
+ +
-
Get Test HBAR
-
Fund a testnet account from the faucet in under a minute.
+
Get Test HBAR
+
Fund a testnet account from the faucet in under a minute.
- -
+ +
-
Deploy with Hardhat
-
Deploy a Solidity contract to Hedera via Hardhat + JSON-RPC relay.
+
Deploy with Hardhat
+
Deploy a Solidity contract to Hedera via Hardhat + JSON-RPC relay.
- -
+ +
-
Deploy with Foundry
-
Forge, anvil, and cast — use Foundry's full toolchain on Hedera.
+
Deploy with Foundry
+
Forge, anvil, and cast: use Foundry's full toolchain on Hedera.
- -
+ +
-
Deploy with Remix
-
Browser-based Solidity IDE — deploy directly from Remix to Hedera.
+
Deploy with Remix
+
Browser-based Solidity IDE: deploy directly from Remix to Hedera.
- - {/* ── HEDERA-NATIVE FEATURES ──────────────────────────────────────────── */} -
-

- Hedera-native features from Solidity +
+

+ Hedera-native features from Solidity

-

+

Call Hedera's native token, schedule, and account services directly from your Solidity contracts via system contracts.

-
- - -
+
+ + +
-
HTS System Contract
-
Create, mint, transfer, and manage HTS tokens from Solidity with native compliance features.
-
- HTS - Solidity +
HTS System Contract
+
Create, mint, transfer, and manage HTS tokens from Solidity with native compliance features.
+
+ HTS + Solidity
- -
+ +
-
Schedule Service
-
Schedule multi-party transactions that execute when all signers approve.
-
- HSS - Multisig +
Schedule Service
+
Schedule multi-party transactions that execute when all signers approve.
+
+ HSS + Multisig
- -
+ +
-
Exchange Rate
-
On-chain HBAR/USD exchange rate from the network's own oracle.
-
- Oracle - Rates +
Exchange Rate
+
On-chain HBAR/USD exchange rate from the network's own oracle.
+
+ Oracle + Rates
- -
+ +
-
HTS Tokens from Solidity
-
Create, mint, transfer, and burn HTS tokens directly from your contract code.
-
- Tokens - HTS +
HTS Tokens from Solidity
+
Create, mint, transfer, and burn HTS tokens directly from your contract code.
+
+ Tokens + HTS
- -
+ +
-
Hybrid Tokenization
-
Combine ERC standards with HTS to get the best of both worlds — compliance + compatibility.
-
- Hybrid - ERC +
Hybrid Tokenization
+
Combine ERC standards with HTS to get the best of both worlds with compliance plus compatibility.
+
+ Hybrid + ERC
- -
+ +
-
JSON-RPC Relay
-
Use Ethers.js, Hardhat, Foundry, and other EVM tools transparently on Hedera.
-
{/* ── TUTORIALS ──────────────────────────────────────── */} -
-
-

- Step-by-step tutorials +
+ -

- Beginner to advanced — build production-ready contracts on Hedera. +

+ Build production-ready contracts on Hedera from beginner to advanced.

-
- - -
+
+ + +
-
-
Your First Token
-
Create and deploy an ERC-20 token in 15 minutes.
-
- Beginner - ERC-20 +
+
Your First Token
+
Create and deploy an ERC-20 token in 15 minutes.
+
+ Beginner + ERC-20
- -
+ +
-
-
ERC-721 with Hardhat
-
Full 3-part series — mint, burn, access control, upgradeable patterns.
-
- Advanced - NFT +
+
ERC-721 with Hardhat
+
Full 3-part series: mint, burn, access control, upgradeable patterns.
+
+ Advanced + NFT
- -
+ +
-
-
HTS + EVM Tutorial
-
Mint NFTs with HTS from Solidity, then add KYC, pause, freeze, and wipe.
-
{/* ── DEVELOPER TOOLS ──────────────────────────────────────── */} -
-

- Tools & integrations +
+

+ Tools & integrations

-
- - -
+
+ + +
-
Hardhat
-
Setup, testing, mainnet/testnet forking — basic and advanced.
+
Hardhat
+
Setup, testing, mainnet/testnet forking: basic and advanced.
- -
+ +
-
Foundry
-
Forge, anvil, cast — testing and HTS-aware forking.
+
Foundry
+
Forge, anvil, cast: testing and HTS-aware forking.
- -
+ +
-
Remix
-
Browser-based Solidity IDE — write and deploy without local setup.
+
Remix
+
Browser-based Solidity IDE: write and deploy without local setup.
- - {/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Stay connected +
+

+ Stay connected

- diff --git a/evm/integrations/index.mdx b/evm/integrations/index.mdx index c077b7b6..7e0c081d 100644 --- a/evm/integrations/index.mdx +++ b/evm/integrations/index.mdx @@ -1,7 +1,7 @@ --- title: "Integrations" description: "Connect your Hedera dApps with oracles, bridges, wallets, and more." -icon: "plug" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/integrations/indexing/mirror-node.mdx b/evm/integrations/indexing/mirror-node.mdx index 56a95699..91c32c1e 100644 --- a/evm/integrations/indexing/mirror-node.mdx +++ b/evm/integrations/indexing/mirror-node.mdx @@ -1,7 +1,7 @@ --- title: "Mirror Node Queries" description: "Query historical data using Hedera's Mirror Node REST API." -icon: "database" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/integrations/indexing/the-graph.mdx b/evm/integrations/indexing/the-graph.mdx index 7a2fcfdc..3e901859 100644 --- a/evm/integrations/indexing/the-graph.mdx +++ b/evm/integrations/indexing/the-graph.mdx @@ -1,7 +1,7 @@ --- title: "The Graph" description: "Index and query blockchain data using The Graph on Hedera." -icon: "chart-line" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/integrations/wallets/index.mdx b/evm/integrations/wallets/index.mdx index 984216d7..89719359 100644 --- a/evm/integrations/wallets/index.mdx +++ b/evm/integrations/wallets/index.mdx @@ -1,7 +1,7 @@ --- title: "Wallet Integrations" description: "Integrate popular wallets with your Hedera dApp." -icon: "wallet" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/migration/checklist.mdx b/evm/migration/checklist.mdx index 2e63f4bf..55feedff 100644 --- a/evm/migration/checklist.mdx +++ b/evm/migration/checklist.mdx @@ -1,7 +1,7 @@ --- title: "Migration Checklist" description: "A step-by-step checklist for migrating your dApp from Ethereum to Hedera." -icon: "list-check" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/overview/choose-your-path.mdx b/evm/overview/choose-your-path.mdx index f843c1a1..70a5b6c2 100644 --- a/evm/overview/choose-your-path.mdx +++ b/evm/overview/choose-your-path.mdx @@ -1,7 +1,7 @@ --- title: "Choose Your Path" description: "Find the right starting point based on your EVM development experience." -icon: "signs-post" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/overview/evm-on-hedera-explained.mdx b/evm/overview/evm-on-hedera-explained.mdx index 97732446..2dcccac7 100644 --- a/evm/overview/evm-on-hedera-explained.mdx +++ b/evm/overview/evm-on-hedera-explained.mdx @@ -1,7 +1,7 @@ --- title: "EVM on Hedera Explained" description: "Understand how the Ethereum Virtual Machine works on Hedera's unique architecture." -icon: "microchip" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/overview/index.mdx b/evm/overview/index.mdx index b1329b24..87390f75 100644 --- a/evm/overview/index.mdx +++ b/evm/overview/index.mdx @@ -1,7 +1,7 @@ --- title: "EVM on Hedera" description: "Everything you need to know about building with the EVM on Hedera." -icon: "ethereum" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/overview/why-hedera-for-evm.mdx b/evm/overview/why-hedera-for-evm.mdx index c00d09f3..9f554090 100644 --- a/evm/overview/why-hedera-for-evm.mdx +++ b/evm/overview/why-hedera-for-evm.mdx @@ -1,7 +1,7 @@ --- title: "Why Hedera for EVM Developers?" description: "Discover the benefits of deploying smart contracts on Hedera vs other EVM chains." -icon: "lightbulb" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/quickstart/index.mdx b/evm/quickstart/index.mdx index 0fa9464c..e0511c6e 100644 --- a/evm/quickstart/index.mdx +++ b/evm/quickstart/index.mdx @@ -1,7 +1,7 @@ --- title: "Quickstart" description: "Get up and running with smart contracts on Hedera in minutes." -icon: "rocket" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/quickstart/interact-with-contract.mdx b/evm/quickstart/interact-with-contract.mdx index a758da06..24729e35 100644 --- a/evm/quickstart/interact-with-contract.mdx +++ b/evm/quickstart/interact-with-contract.mdx @@ -1,7 +1,7 @@ --- title: "Interact with Your Contract" description: "Learn how to read from and write to your deployed smart contract." -icon: "hand-pointer" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/quickstart/whats-next.mdx b/evm/quickstart/whats-next.mdx index 2b12d66c..78a11d3c 100644 --- a/evm/quickstart/whats-next.mdx +++ b/evm/quickstart/whats-next.mdx @@ -1,7 +1,7 @@ --- title: "What's Next?" description: "Explore advanced topics after deploying your first contract." -icon: "arrow-right" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/tools/contract-builder.mdx b/evm/tools/contract-builder.mdx index a0b8fd70..c6639f4e 100644 --- a/evm/tools/contract-builder.mdx +++ b/evm/tools/contract-builder.mdx @@ -14,7 +14,7 @@ mode: "custom"

- Scaffold, compile, deploy, and verify Solidity contracts on Hedera testnet — all from your browser. No CLI, no local setup. Built in collaboration with Kabila and open source. + Scaffold, compile, deploy, and verify Solidity contracts on Hedera testnet all from your browser with this interactive playground. No CLI, no local setup. Built in collaboration with Kabila and open source.

diff --git a/evm/tools/foundry/testing.mdx b/evm/tools/foundry/testing.mdx index 897a9dad..91979da2 100644 --- a/evm/tools/foundry/testing.mdx +++ b/evm/tools/foundry/testing.mdx @@ -1,7 +1,7 @@ --- title: "Testing with Foundry" description: "Write Solidity tests for your Hedera smart contracts using Foundry." -icon: "vial" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/tools/hardhat/setup.mdx b/evm/tools/hardhat/setup.mdx index 70be6073..f522a8b2 100644 --- a/evm/tools/hardhat/setup.mdx +++ b/evm/tools/hardhat/setup.mdx @@ -1,7 +1,7 @@ --- title: "Hardhat Setup" description: "Configure Hardhat for Hedera development from scratch." -icon: "hammer" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/tools/hardhat/testing.mdx b/evm/tools/hardhat/testing.mdx index 776929bb..1b70c30d 100644 --- a/evm/tools/hardhat/testing.mdx +++ b/evm/tools/hardhat/testing.mdx @@ -1,7 +1,7 @@ --- title: "Testing with Hardhat" description: "Write and run tests for your Hedera smart contracts using Hardhat." -icon: "vial" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/tools/index.mdx b/evm/tools/index.mdx index 401b1ca6..1ff14ef2 100644 --- a/evm/tools/index.mdx +++ b/evm/tools/index.mdx @@ -1,7 +1,6 @@ --- title: "Development Tools" -description: "Tools and frameworks for building, testing, and deploying smart contracts on Hedera." -icon: "wrench" +description: "Tools and frameworks for building smart contracts on Hedera." --- Hedera is fully EVM-compatible, so the same Solidity tooling you'd use on Ethereum works here including Hardhat, Foundry, Remix, ethers.js, web3.js, and so on. Point them at the [JSON-RPC relay](/evm/quickstart/setup-metamask) to use your existing workflow. The pages below cover the tools used most often on Hedera, plus a browser-based contract builder scaffold from the Hedera developer playgrounnd for projects that don't need a local environment. diff --git a/evm/tools/remix.mdx b/evm/tools/remix.mdx index 546b44c3..a1db07ae 100644 --- a/evm/tools/remix.mdx +++ b/evm/tools/remix.mdx @@ -1,35 +1,107 @@ --- title: "Remix IDE" -description: "Use Remix IDE to quickly prototype and deploy contracts on Hedera." -icon: "browser" +description: "Write, compile, and deploy Solidity contracts to Hedera testnet from your browser." --- -{/* TODO: This page needs content */} +Remix is an open-source Solidity IDE that runs in the browser. It compiles, debugs, and deploys without anything installed locally. Because Hedera is EVM-compatible, the same Remix workflow you'd use against Ethereum works against Hedera once MetaMask is pointed at the JSON-RPC relay. - - **Coming Soon** — This page is under construction. - +The rest of this page walks through that workflow end-to-end. -## Overview +## Prerequisites -Use Remix IDE to quickly prototype and deploy contracts on Hedera. + + + Network `Hedera Testnet`, RPC `https://testnet.hashio.io/api`, Chain ID `296`. + + + A small amount of testnet HBAR to pay for deployment. + + + +## Step 1: Open Remix + +Go to [remix.ethereum.org](https://remix.ethereum.org). Accept the default workspace if it asks. The left sidebar gives you a File Explorer, the Solidity Compiler, and the Deploy & Run Transactions panel. + +## Step 2: Write a contract + +In File Explorer, create `contracts/HelloHedera.sol` and paste: + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.22; + +contract HelloHedera { + string public message = "Hello, Hedera!"; + + event MessageUpdated(address indexed by, string newMessage); + + function updateMessage(string memory newMessage) public { + message = newMessage; + emit MessageUpdated(msg.sender, newMessage); + } +} +``` + +## Step 3: Compile + +1. Open the **Solidity Compiler** tab. +2. Set the compiler version to `0.8.22` (or anything that satisfies the `pragma`). +3. Click **Compile HelloHedera.sol**. Green checkmark means success. + + + Turn on **Auto compile** in the compiler settings so Remix recompiles every save. Saves a click on every edit. + + +## Step 4: Connect MetaMask + +1. Switch to the **Deploy & Run Transactions** tab. +2. In the **Environment** dropdown, pick **Injected Provider - MetaMask**. +3. MetaMask asks to connect. Approve. +4. The **Network** field should read `Custom (296) network`. That's Hedera testnet. + +If it shows a different network, switch MetaMask to **Hedera Testnet** from its own network dropdown. + +## Step 5: Deploy + +1. Confirm the **CONTRACT** dropdown shows `HelloHedera`. +2. Click the orange **Deploy** button. +3. MetaMask prompts to confirm the transaction. Review the HBAR gas fee and click **Confirm**. +4. The contract appears under **Deployed Contracts** at the bottom of the panel after a few seconds. + +## Step 6: Interact with the contract + +Expand the deployed contract under **Deployed Contracts**. You get a blue read-only **message** button that returns the current value at no gas cost, and an orange **updateMessage** field that writes a new value (this one costs gas). + +Click **message** to see the initial value. Type something into **updateMessage** and call it. Confirm the MetaMask popup. Click **message** again to see the new value. + +## Step 7: View on HashScan + +Copy the contract address from the **Deployed Contracts** panel and open: + +```text +https://hashscan.io/testnet/contract/ +``` + +HashScan shows the deploy transaction, the bytecode, and any subsequent calls. If you want the source code readable on HashScan, [verify the contract](/evm/development/verifying) with the same Solidity file you used in Remix. + +## When to reach for Remix + +| Use case | Tool | +|---|---| +| Quick prototyping, single contract | Remix | +| Reproducible deploys, tests, scripts | [Hardhat](/evm/tools/hardhat/index) or [Foundry](/evm/tools/foundry/index) | +| Guided UI for ERC-20 / ERC-721 templates | [Contract Builder](/evm/tools/contract-builder) | +| Cross-chain libraries (LayerZero, CCIP) | Hardhat. Remix's import resolution gets shaky | -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +Remix is the right tool when you're learning, poking at one contract, or doing throwaway experiments. Once you want version control, a test suite, or repeatable CI deploys, move to Hardhat or Foundry. -## Need Help? +## See also - - Join our developer community + + Browser-based deploys without writing any Solidity yourself. - - Explore our repositories + + Move your Remix contract into a Hardhat project for tests and CI. diff --git a/evm/troubleshooting/common-errors.mdx b/evm/troubleshooting/common-errors.mdx index 5981bee9..b9524e60 100644 --- a/evm/troubleshooting/common-errors.mdx +++ b/evm/troubleshooting/common-errors.mdx @@ -1,7 +1,7 @@ --- title: "Common Errors" description: "Reference guide for common error codes and their solutions." -icon: "circle-exclamation" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/troubleshooting/gas-estimation.mdx b/evm/troubleshooting/gas-estimation.mdx index 936443a1..6d5b1921 100644 --- a/evm/troubleshooting/gas-estimation.mdx +++ b/evm/troubleshooting/gas-estimation.mdx @@ -1,7 +1,7 @@ --- title: "Gas Estimation Issues" description: "Troubleshoot gas estimation problems in your transactions." -icon: "gas-pump" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/troubleshooting/index.mdx b/evm/troubleshooting/index.mdx index ec03281e..3e5f74dd 100644 --- a/evm/troubleshooting/index.mdx +++ b/evm/troubleshooting/index.mdx @@ -1,35 +1,68 @@ --- title: "Troubleshooting" -description: "Common issues and solutions when developing on Hedera." -icon: "bug" +description: "Diagnose and fix common issues when developing EVM smart contracts on Hedera." --- -{/* TODO: This page needs content */} +Most failures on Hedera fall into one of a few buckets: gas problems, reverts you can't decode, HBAR transfers that don't trigger your contract, decimal mismatches between SDK and EVM, or RPC issues that look like contract bugs but aren't. The sections below cover the patterns that account for most of them. - - **Coming Soon** — This page is under construction. - +## Differences from Ethereum that bite -## Overview +Hedera is EVM-compatible, but a few things behave differently than Ethereum, and they account for most "this should work" tickets. -Common issues and solutions when developing on Hedera. +### Decimal handling: 8 vs 18 -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +The native Hedera ledger uses 8 decimals for HBAR (1 ℏ = 10⁸ tinybars). The JSON-RPC relay scales values up to 18 decimals so they match Ethereum's `wei` convention. Inside an EVM contract, `msg.value`, `balance`, and `gasPrice` all use 18 decimals; the relay handles the conversion. The trap is when you mix native SDK calls and EVM contract calls in the same flow. You have to do the conversion yourself there, and the off-by-`10**10` bug is easy to write. -## Need Help? +```solidity +// Inside a contract, msg.value is in 18-decimal wei (as on Ethereum). +function deposit() external payable { + require(msg.value >= 1 ether, "send at least 1 HBAR"); +} +``` + +### HBAR transfers don't always trigger `receive()` + +On Ethereum, sending ETH to a contract address triggers `receive()` or `fallback()`. On Hedera, a native HAPI `CryptoTransfer` (from an SDK or wallet operating at the Hedera level rather than the EVM level) credits the contract's underlying Hedera account directly. No EVM frame opens, so `receive()` doesn't run. EVM-native paths still behave normally: `call{value: ...}`, `transfer`, and internal CALL frames all invoke `receive()` / `fallback()` as expected. If you want contract logic to execute on the HAPI path, route the deposit through a `payable` call instead: + +```solidity +// This runs the contract's payable function and fires events. +(bool ok, ) = contractAddr.call{value: 1 ether}( + abi.encodeWithSignature("deposit()") +); +require(ok, "deposit failed"); +``` + +The full pattern is on the [Creating Smart Contracts](/evm/development/creating) page. + +### ECDSA vs ED25519 keys + +Hedera supports both ECDSA (secp256k1) and ED25519. The EVM toolchain only handles ECDSA. Accounts created through MetaMask or via the JSON-RPC relay get ECDSA by default; accounts created through the native SDK can get either. ED25519 accounts can still hold HBAR and HTS tokens, but they can't sign EVM transactions. If you plan to interact through the EVM, pick ECDSA at account creation. + +### Gas refund behavior + +Per [HIP-1249](https://hips.hedera.com/#hip-1249) (mirror node [v0.140.0 release notes](/learn/release-notes/mirror-node#v0-140-0)), unused gas is refunded in full, and only the gas you actually consumed is charged. The per-transaction limit remains 15M ([HIP-185](https://hips.hedera.com/#hip-185)). Hedera previously capped gas refunds at 20% of the limit, so setting a generous gas limit could quietly cost you. If you find guidance referencing the 20% cap, it's pre-HIP-1249 and no longer applies. See [Gas and Fees](/evm/development/gas-fees) for the full pricing model, intrinsic gas costs, and how to estimate fees. + +### Historical queries have a retention window + +The relay supports `eth_call` and `eth_getStorageAt` at historical blocks, but only as far back as the mirror node behind it has data. Query a block older than that and the relay returns an error. For deep history, retry against a provider with longer retention (Arkhia, Validation Cloud, Hgraph, QuickNode, thirdweb). + +## Where to ask for help - Join our developer community + `#developer-general` and `#smart-contracts`. Live answers from engineers and the community. - - Explore our repositories + + Tag `hedera-hashgraph`. Better for indexed, searchable Q&A. + + + JSON-RPC relay bugs and feature requests. + + + Look up your transaction by hash to see the consensus-level result. + + + Before filing an issue, look the transaction up on the mirror node. The SDK transaction ID format is `0.0.1234@1700000000.123456789`, but the REST API needs it in URL-safe form: `0.0.1234-1700000000-123456789`. So the full URL is `https://testnet.mirrornode.hedera.com/api/v1/transactions/0.0.1234-1700000000-123456789`. The mirror node tells you the consensus-level result, which is usually more specific than what the relay returns. + diff --git a/evm/troubleshooting/transaction-failures.mdx b/evm/troubleshooting/transaction-failures.mdx index 3e0ba840..4e4d884b 100644 --- a/evm/troubleshooting/transaction-failures.mdx +++ b/evm/troubleshooting/transaction-failures.mdx @@ -1,7 +1,7 @@ --- title: "Transaction Failures" description: "Debug and fix failed transactions on Hedera." -icon: "triangle-exclamation" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/tutorials/beginner/read-contract-data.mdx b/evm/tutorials/beginner/read-contract-data.mdx index d15e162f..b3ca5136 100644 --- a/evm/tutorials/beginner/read-contract-data.mdx +++ b/evm/tutorials/beginner/read-contract-data.mdx @@ -1,7 +1,7 @@ --- title: "Read Contract Data" description: "Learn how to read data from deployed smart contracts." -icon: "magnifying-glass" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/tutorials/beginner/simple-nft.mdx b/evm/tutorials/beginner/simple-nft.mdx index ee4464f7..b488eabd 100644 --- a/evm/tutorials/beginner/simple-nft.mdx +++ b/evm/tutorials/beginner/simple-nft.mdx @@ -1,7 +1,7 @@ --- title: "Create a Simple NFT" description: "Deploy your first NFT collection on Hedera." -icon: "image" +hidden: true --- {/* TODO: This page needs content */} diff --git a/evm/tutorials/beginner/your-first-token.mdx b/evm/tutorials/beginner/your-first-token.mdx index ae6843f3..e97f46bc 100644 --- a/evm/tutorials/beginner/your-first-token.mdx +++ b/evm/tutorials/beginner/your-first-token.mdx @@ -1,35 +1,156 @@ --- title: "Your First Token" -description: "Create and deploy a simple ERC-20 token on Hedera." -icon: "coins" +description: "Deploy and mint an ERC-20 token on Hedera testnet using Hardhat and OpenZeppelin." --- -{/* TODO: This page needs content */} +This walks through deploying a standard ERC-20 token to Hedera testnet using Hardhat. The contract uses OpenZeppelin's audited ERC-20 base, so most of the code is library calls. The workflow is the same one you'd use on any EVM chain; the only Hedera-specific bit is the network config. - - **Coming Soon** — This page is under construction. - + + **Run in your browser:** Skip local setup and try the same example in the [Contract Builder](https://portal.hedera.com/contract-builder/session/0.0.7785355/13): compile, deploy, and mint from your browser in seconds. + -## Overview +## Prerequisites -Create and deploy a simple ERC-20 token on Hedera. + + + Network Name `Hedera Testnet`, RPC `https://testnet.hashio.io/api`, Chain ID `296`. + + + Around 5 HBAR is plenty to cover deployment. + + -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +You also need [Node.js 18 or later](https://nodejs.org) installed locally. -## Need Help? +## Step 1: Scaffold the project - - - Join our developer community - - - Explore our repositories +```bash +mkdir my-first-token && cd my-first-token +npm init -y +npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox +npm install @openzeppelin/contracts dotenv +npx hardhat init # choose: "Create an empty hardhat.config.js" +mkdir contracts scripts +``` + +## Step 2: Write the ERC-20 contract + +Create `contracts/MyToken.sol`: + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.22; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +contract MyToken is ERC20, Ownable { + constructor(address initialOwner) + ERC20("MyToken", "MTK") + Ownable(initialOwner) + { + // Mint 1,000,000 tokens (with 18 decimals) to the deployer. + _mint(initialOwner, 1_000_000 * 10 ** decimals()); + } + + function mint(address to, uint256 amount) public onlyOwner { + _mint(to, amount); + } +} +``` + +The contract inherits OpenZeppelin's `ERC20` and `Ownable`, mints the initial 1,000,000 supply to the deployer in the constructor, and exposes a `mint()` function gated by `onlyOwner` for later minting. + +## Step 3: Configure Hardhat for Hedera testnet + +Create a `.env` file (and add it to `.gitignore`): + +```dotenv +TESTNET_RPC=https://testnet.hashio.io/api +TESTNET_PRIVATE_KEY=0xYOUR_METAMASK_PRIVATE_KEY +``` + + + Use a dedicated dev wallet. Don't put a mainnet private key in a `.env` file you're experimenting with. To get the testnet key from MetaMask: Account → ⋮ → Account details → Show private key. + + +Replace `hardhat.config.js` with: + +```javascript +require("@nomicfoundation/hardhat-toolbox"); +require("dotenv").config(); + +module.exports = { + solidity: "0.8.22", + networks: { + hederaTestnet: { + url: process.env.TESTNET_RPC, + chainId: 296, + accounts: [process.env.TESTNET_PRIVATE_KEY], + }, + }, +}; +``` + +## Step 4: Write the deploy script + +Create `scripts/deploy.js`: + +```javascript +const hre = require("hardhat"); + +async function main() { + const [deployer] = await hre.ethers.getSigners(); + console.log("Deploying with:", deployer.address); + + const MyToken = await hre.ethers.getContractFactory("MyToken"); + const token = await MyToken.deploy(deployer.address); + await token.waitForDeployment(); + + const address = await token.getAddress(); + console.log("MyToken deployed to:", address); + console.log("Initial balance:", (await token.balanceOf(deployer.address)).toString()); +} + +main().catch((err) => { + console.error(err); + process.exitCode = 1; +}); +``` + +## Step 5: Deploy + +```bash +npx hardhat compile +npx hardhat run scripts/deploy.js --network hederaTestnet +``` + +Expected output: + +```text +Deploying with: 0xAbC123... +MyToken deployed to: 0xDeF456... +Initial balance: 1000000000000000000000000 +``` + +That balance figure is `1,000,000 × 10^18`, which is your million tokens with 18 decimals. + +## Step 6: Verify on HashScan + +Open `https://hashscan.io/testnet/contract/`. HashScan picks the contract up automatically and shows its bytecode, the deployer account, and the deploy transaction. + +For source-code-level visibility, follow the [contract verification guide](/evm/development/verifying). + +## Step 7: Add the token to MetaMask + +In MetaMask: **Tokens** tab → **Import tokens**, paste your contract address. Symbol and decimals are auto-filled from the contract. You should now see your full supply in the wallet. + +## What's next + +The token works with any ERC-20-aware tool: DEX listings, wallet imports, indexers, block explorers. + + + + The Hedera-native alternative: create an HTS token with built-in compliance keys (KYC, freeze, pause, wipe) enforced by the network. diff --git a/evm/tutorials/intermediate/events-and-logs.mdx b/evm/tutorials/intermediate/events-and-logs.mdx index 2a9ea29d..c855fe0a 100644 --- a/evm/tutorials/intermediate/events-and-logs.mdx +++ b/evm/tutorials/intermediate/events-and-logs.mdx @@ -1,7 +1,7 @@ --- title: "Events and Logs" description: "Emit and listen to events from your smart contracts." -icon: "bell" +hidden: true --- {/* TODO: This page needs content */} diff --git a/hedera/core-concepts/keys-and-signatures.mdx b/hedera/core-concepts/keys-and-signatures.mdx index 32e7c484..c79f4085 100644 --- a/hedera/core-concepts/keys-and-signatures.mdx +++ b/hedera/core-concepts/keys-and-signatures.mdx @@ -14,7 +14,7 @@ Private keys *can only* be recovered once lost if created with an associated rec - ECDSA accounts should set an **EVM alias** — an EVM address derived from the ECDSA public key. The EVM alias is the rightmost 20 bytes of the 32-byte Keccak-256 hash of the ECDSA public key, calculated in the manner described by the Ethereum Yellow Paper. Note that the recovery ID is not formally part of the public key and is not included in the hash. The EVM address is also commonly known as the public address, and the account ID format is `..` where alias is the EVM address. - The EVM alias enables full compatibility with Solidity smart contracts, `msg.sender` checks, and EVM-based tooling such as MetaMask, Hardhat, and Foundry. -- ECDSA keys work seamlessly with wallets and dApps built for Ethereum-compatible networks. +- ECDSA keys work seamlessly with wallets and dApps built for EVM-compatible networks. For maximum compatibility with Solidity and smart contracts, set the EVM alias when creating an account by using `setECDSAKeyWithAlias()`. This ensures the account's EVM address is derived from its ECDSA public key, so `msg.sender` in a contract resolves correctly to the account's EVM address. diff --git a/hedera/networks/mainnet.mdx b/hedera/networks/mainnet.mdx index edfe8488..b007e010 100644 --- a/hedera/networks/mainnet.mdx +++ b/hedera/networks/mainnet.mdx @@ -12,6 +12,7 @@ Any Hedera account can query data associated with Hedera's services and stored o If you're looking to test your application (or just experiment), please visit [Testnet Access](/hedera/networks/testnet/testnet-access). The Hedera testnet enables developers to prototype and test applications in a simulated mainnet environment that uses test *HBAR* for paying transaction fees. + **Transaction Throttles** Transactions on the Hedera Mainnet are currently throttled. You will receive a `"BUSY"` response if the number of transactions submitted to the network exceeds the threshold value. diff --git a/hedera/networks/release-notes/mirror-node.mdx b/hedera/networks/release-notes/mirror-node.mdx index 841959f2..6bb7d734 100644 --- a/hedera/networks/release-notes/mirror-node.mdx +++ b/hedera/networks/release-notes/mirror-node.mdx @@ -2512,7 +2512,7 @@ The maximum number of rows the REST API can return was changed from 500 to 100. ### Smart Contracts -With Hedera's increased focus on [Smart Contracts](https://hedera.com/blog/hedera-evm-smart-contracts-now-bring-highest-speed-programmability-to-tokenization), we took the time to revamp the mirror node's smart contract support and lay the groundwork for future enhancements. As detailed in the [design document](https://github.com/hashgraph/hedera-mirror-node/blob/main/docs/design/smart-contracts.md), plans include new contract-specific REST APIs and Ethereum-compatible APIs in the future. +With Hedera's increased focus on [Smart Contracts](https://hedera.com/blog/hedera-evm-smart-contracts-now-bring-highest-speed-programmability-to-tokenization), we took the time to revamp the mirror node's smart contract support and lay the groundwork for future enhancements. As detailed in the [design document](https://github.com/hashgraph/hedera-mirror-node/blob/main/docs/design/smart-contracts.md), plans include new contract-specific REST APIs and EVM-compatible APIs in the future. To prepare for that, the database schema and importer were updated to normalize and store all contract-related information, fixing long-standing bugs like not storing contract bytecode and child contracts. The contract table was split from the generic entity table and work was started on making all the entity tables maintain a history of all changes. The REST API now supports searching for and retrieving specific contracts. Below is an example of retrieving a contract: diff --git a/hedera/networks/release-notes/services.mdx b/hedera/networks/release-notes/services.mdx index b25631b0..cfa92fa4 100644 --- a/hedera/networks/release-notes/services.mdx +++ b/hedera/networks/release-notes/services.mdx @@ -1497,7 +1497,7 @@ In addition to the aforementioned features that improve Ethereum compatibility, #### **Summary:** -Release 0.62 represents an important milestone toward making Hedera a highly competitive platform for Ethereum-compatible applications, completes the implementation of HIP-991, and sets up the foundation for streaming the network blocks and state information. +Release 0.62 represents an important milestone toward making Hedera a highly competitive platform for EVM-compatible applications, completes the implementation of HIP-991, and sets up the foundation for streaming the network blocks and state information. ### [Build 0.62.6](https://github.com/hiero-ledger/hiero-consensus-node/releases/tag/v0.62.6) diff --git a/index.mdx b/index.mdx index 9a70ba7c..9b52ebbb 100644 --- a/index.mdx +++ b/index.mdx @@ -7,20 +7,16 @@ mode: "custom" import { PlaygroundShowcase } from '/snippets/showcases/playground-showcase.jsx'; import { QuickstartsShowcase } from '/snippets/showcases/quickstarts-showcase.jsx'; - {/* ═══════════════════════════════════════════════════════════════════════════ HEDERA DOCS LANDING PAGE + Root home page uses `mode: custom` (no side nav), so the "Explore the docs" + directory grid below is the primary navigation entry point — unlike tab + landing pages where the side nav covers that role. ═══════════════════════════════════════════════════════════════════════════ */} -
+
+ {/* ── HERO ──────────────────────────────────────────────── */} -
+

{/* ── EXPLORE THE DOCS ─────────────────────────────────────────────────── */} -
-

- Explore the docs +
+

+ Explore the docs

-

+

The Hedera documentation is organized into seven sections. Pick the one that fits what you're building.

-
+
- -
+ +
-
- Learn -
-
- Fundamentals — accounts, keys, transactions, tokens, hashgraph, and networks. -
+
Learn
+
Fundamentals: accounts, keys, transactions, tokens, hashgraph, and networks.
- -
+ +
-
- EVM Developers -
-
- Deploy Solidity contracts with MetaMask, Hardhat, Foundry, and JSON-RPC relay. -
+
EVM Developers
+
Deploy Solidity contracts with MetaMask, Hardhat, Foundry, and JSON-RPC relay.
- -
+ +
-
- Native SDKs -
-
- JavaScript, Java, and Go SDKs for direct access to Hedera services. -
+
Native SDKs
+
JavaScript, Java, and Go SDKs for direct access to Hedera services.
- -
+ +
-
- Solutions -
-
- Tokenization, AI agents, governance, sustainability, and developer tools. -
+
Solutions
+
Tokenization, AI agents, governance, sustainability, and developer tools.
- -
+ +
-
- Operators -
-
- Run your own mirror node, JSON-RPC relay, or consensus node. -
+
Operators
+
Run your own mirror node, JSON-RPC relay, or consensus node.
- -
+ +
-
- Reference -
-
- REST API, Protobuf, HCS gRPC, Status, and Contract Verification APIs. -
+
Reference
+
REST API, Protobuf, HCS gRPC, Status, and Contract Verification APIs.
- -
+ +
-
- Support -
-
- FAQs, contributing, style guide, glossary, and community resources. -
+
Support
+
FAQs, contributing, style guide, glossary, and community resources.
- - {/* ── POPULAR QUICKSTARTS ──────────────────────────────────────────────── */} -
-
-

- Popular quickstarts + {/* ── BUILD ON HEDERA ──────────────────────────────────────────────────── */} -
-
-

- Build on Hedera +
+ -

- Pick the Hedera service that powers your app — accounts, smart contracts, native tokens, or consensus — then try it in your browser with no setup. +

+ Pick the Hedera service that powers your app: accounts, smart contracts, native tokens, or consensus, then try it in your browser with no setup.

- {/* Services grid — 4 core Hedera services */} -
+
- -
+ +
-
Account Service
-
Create and manage Hedera accounts, keys, staking, and auto-account creation from a public key.
-
- Accounts - HBAR +
Account Service
+
Create and manage Hedera accounts, keys, staking, and auto-account creation from a public key.
+
+ Accounts + HBAR
- -
+ +
-
Smart Contracts
-
EVM-compatible Solidity contracts with access to native Hedera services via system contracts.
-
- Solidity - EVM +
Smart Contracts
+
EVM-compatible Solidity contracts with access to native Hedera services via system contracts.
+
+ Solidity + EVM
- -
+ +
-
Token Service
-
Configure, mint, and manage native fungible and non-fungible tokens with built-in compliance.
-
- HTS - ERC-20 - ERC-721 +
Token Service
+
Configure, mint, and manage native fungible and non-fungible tokens with built-in compliance.
+
+ HTS + ERC-20 + ERC-721
- -
+ +
-
Consensus Service
-
Scalable, real-time audit logs with consensus timestamps. 10k+ TPS at $0.0001 per message.
-
- {/* Subhead before interactive showcase */} -

- Try it live + Try it live

- Run code in the Playground, scaffold a contract, demo an agent, or preview a token mint — no setup. + Run code in the Playground, scaffold a contract, demo an agent, or preview a token mint, no setup.

{/* ── DEVELOPER TOOLS ──────────────────────────────────────────────────── */} -
-
-

- Developer tools & resources +
+ -
+
- - - -
+ +
-
- Network Explorers -
-
- Visualize accounts, tokens, transactions, and contracts on Hedera. -
+
Network Explorers
+
Visualize accounts, tokens, transactions, and contracts on Hedera.
- -
+ +
-
- Solo -
-
- Deploy and operate a Hiero/Hedera network locally with Kubernetes — perfect for development and testing. -
+
Solo
+
Deploy and operate a Hiero/Hedera network locally with Kubernetes, perfect for development and testing.
- -
+ +
-
- MCP Server -
-
- Connect AI assistants like Claude and Cursor to Hedera with the Model Context Protocol server. -
+
MCP Server
+
Connect AI assistants like Claude and Cursor to Hedera with the Model Context Protocol server.
- -
+ +
-
- JSON-RPC Relay -
-
- Ethereum-compatible JSON-RPC endpoint — connect MetaMask, Hardhat, Foundry, and ethers.js to Hedera. -
+
JSON-RPC Relay
+
EVM-compatible JSON-RPC endpoint: connect MetaMask, Hardhat, Foundry, and ethers.js to Hedera.
- -
+ +
-
- Wallet Integration -
-
- Connect Hedera-native and EVM wallets — HashPack, Blade, Kabila, MetaMask, and more. -
+
Wallet Integration
+
Connect Hedera-native and EVM wallets: HashPack, Blade, Kabila, MetaMask, and more.
- - {/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Contributing +
+

+ Contributing

contributing guide{' '} to get involved.

- diff --git a/learn/core-concepts/accounts/account-properties.mdx b/learn/core-concepts/accounts/account-properties.mdx index 84cd00ce..e3fae15a 100644 --- a/learn/core-concepts/accounts/account-properties.mdx +++ b/learn/core-concepts/accounts/account-properties.mdx @@ -66,13 +66,13 @@ All accounts can have an **account number alias.** An account number alias is a This account property is not stored in consensus node state. You will not see this value returned when querying the consensus nodes for the account object and inspecting the account alias field. -The mirror node will calculate the account number alias from the account number. The account number alias is calculated and returned in account REST APIs only when the account does not have an existing account alias. For example, if the account was created through the [auto account creation](/hedera/core-concepts/accounts/auto-account-creation) flow using an account alias the account number alias will not be populated. If the account was normally created then the account alias field will store the account number alias. +The mirror node will calculate the account number alias from the account number. The account number alias is calculated and returned in account REST APIs only when the account does not have an existing account alias. For example, if the account was created through the [auto account creation](/learn/core-concepts/accounts/auto-account-creation) flow using an account alias the account number alias will not be populated. If the account was normally created then the account alias field will store the account number alias.
Account IDAccount Number Alias Example
0.0.10The hex encoding value for 10 is "0a."

000000000000000000000000000000000000000a
### Account Alias -Some Hedera accounts will have an **account alias**. Account aliases are a pointer to the account object in addition to being identified by the account number. Account aliases are assigned to the account when the account is created via the [auto account creation](/hedera/core-concepts/accounts/..#auto-account-creation) flow. The network does not generate the account alias; instead, the user specifies the account alias upon account creation. This property will be null if an account is created through the normal account creation flow. The account aliases are unique and immutable. The account alias ID has the following format `..`. +Some Hedera accounts will have an **account alias**. Account aliases are a pointer to the account object in addition to being identified by the account number. Account aliases are assigned to the account when the account is created via the [auto account creation](/learn/core-concepts/accounts/auto-account-creation) flow. The network does not generate the account alias; instead, the user specifies the account alias upon account creation. This property will be null if an account is created through the normal account creation flow. The account aliases are unique and immutable. The account alias ID has the following format `..`. This format is only acceptable when specified in the `TransferTransaction`, `AccountInfoQuery` and `AccountBalanceQuery`. If this format is used to reference an account in any other transaction type the transaction will not succeed. diff --git a/learn/core-concepts/keys/index.mdx b/learn/core-concepts/keys/index.mdx index 32e7c484..c79f4085 100644 --- a/learn/core-concepts/keys/index.mdx +++ b/learn/core-concepts/keys/index.mdx @@ -14,7 +14,7 @@ Private keys *can only* be recovered once lost if created with an associated rec - ECDSA accounts should set an **EVM alias** — an EVM address derived from the ECDSA public key. The EVM alias is the rightmost 20 bytes of the 32-byte Keccak-256 hash of the ECDSA public key, calculated in the manner described by the Ethereum Yellow Paper. Note that the recovery ID is not formally part of the public key and is not included in the hash. The EVM address is also commonly known as the public address, and the account ID format is `..` where alias is the EVM address. - The EVM alias enables full compatibility with Solidity smart contracts, `msg.sender` checks, and EVM-based tooling such as MetaMask, Hardhat, and Foundry. -- ECDSA keys work seamlessly with wallets and dApps built for Ethereum-compatible networks. +- ECDSA keys work seamlessly with wallets and dApps built for EVM-compatible networks. For maximum compatibility with Solidity and smart contracts, set the EVM alias when creating an account by using `setECDSAKeyWithAlias()`. This ensures the account's EVM address is derived from its ECDSA public key, so `msg.sender` in a contract resolves correctly to the account's EVM address. diff --git a/learn/core-concepts/services/index.mdx b/learn/core-concepts/services/index.mdx index 9a27a26b..70cded77 100644 --- a/learn/core-concepts/services/index.mdx +++ b/learn/core-concepts/services/index.mdx @@ -1,7 +1,7 @@ --- title: "Hedera Services" description: "Overview of Hedera's core services: tokens, consensus, files, and smart contracts." -icon: "grid-2" +hidden: true --- {/* TODO: This page needs content */} diff --git a/learn/getting-started/choose-your-path.mdx b/learn/getting-started/choose-your-path.mdx index d5500f2c..f6989b5f 100644 --- a/learn/getting-started/choose-your-path.mdx +++ b/learn/getting-started/choose-your-path.mdx @@ -16,7 +16,7 @@ Hedera supports two development approaches. Pick the one that matches your backg **What you'll build:** Solidity smart contracts, ERC-20/ERC-721 tokens, dApps with wallet integrations - + You're a backend or enterprise developer, or new to web3. The Hiero SDKs give you direct access to all Hedera services without needing Solidity. @@ -25,7 +25,7 @@ Hedera supports two development approaches. Pick the one that matches your backg **What you'll build:** HBAR transfers, native tokens via HTS, verifiable event streams via HCS - + @@ -52,7 +52,7 @@ Deploy Solidity contracts to Hedera using the tools you already know. Hedera's J - + --- @@ -73,11 +73,11 @@ Use the Hiero SDK in your preferred language to interact with Hedera services di Follow the quickstart for your language: JavaScript, Java, or Go. - [Native SDK Quickstart →](/native/quickstart/index) + [Native SDK Quickstart →](/native/quickstart/javascript) - + --- diff --git a/learn/getting-started/index.mdx b/learn/getting-started/index.mdx index 7fe4d038..aca91455 100644 --- a/learn/getting-started/index.mdx +++ b/learn/getting-started/index.mdx @@ -36,10 +36,10 @@ Welcome to Hedera. This section walks you through everything you need to underst ## Already Know What You Want? - + Deploy Solidity contracts with Hardhat or Foundry. Start here if you know Ethereum. - + Build with the Hiero SDK in JavaScript, Java, or Go. No Solidity required. diff --git a/learn/getting-started/portal-playground.mdx b/learn/getting-started/portal-playground.mdx index bb87f662..36d2932e 100644 --- a/learn/getting-started/portal-playground.mdx +++ b/learn/getting-started/portal-playground.mdx @@ -1,4 +1,67 @@ --- title: "Developer Playground" -url: "https://portal.hedera.com/playground" +mode: "custom" +icon: "code" --- + +
+ + + ← Getting Started + + +

+ Developer Playground +

+ +

+ Try Hedera transactions directly in your browser with this interactive playground. Create accounts, transfer HBAR, mint tokens, and exercise core services on testnet with no SDK install or keys to manage. Built in collaboration with Kabila and open source. +

+ +
+ +
+ +

+ Need more room? Open it full-screen at portal.hedera.com/playground. +

+ +

+ What you can try +

+ +
    +
  • Account operations: create testnet accounts, check balances, and transfer HBAR between accounts.
  • +
  • Token Service: create fungible and non-fungible tokens, associate, mint, and transfer them.
  • +
  • Consensus Service: create topics and submit messages to test ordered, timestamped event flows.
  • +
  • Inspect on HashScan: every transaction links straight to HashScan so you can see the receipt and record.
  • +
+ +

+ Next steps +

+ + + +
diff --git a/learn/getting-started/testnet-faucet.mdx b/learn/getting-started/testnet-faucet.mdx index 4f940707..f892dbe6 100644 --- a/learn/getting-started/testnet-faucet.mdx +++ b/learn/getting-started/testnet-faucet.mdx @@ -1,5 +1,6 @@ --- title: "Hedera Testnet Faucet" +icon: "faucet" --- The Hedera faucet allows you to quickly create and fund a testnet account without creating a developer portal account. The faucet flow auto-creates an account when you enter an EVM wallet address to receive testnet HBAR. diff --git a/learn/getting-started/what-is-hedera.mdx b/learn/getting-started/what-is-hedera.mdx index e8cfe71b..af1f1b2b 100644 --- a/learn/getting-started/what-is-hedera.mdx +++ b/learn/getting-started/what-is-hedera.mdx @@ -41,16 +41,16 @@ For a deeper technical dive, see [Hashgraph Consensus](/learn/core-concepts/hash Hedera offers four native network services, each accessible via the SDK or smart contracts: - + Deploy Solidity contracts using Hardhat, Foundry, or Remix. Full EVM compatibility with Ethereum tooling. - Create and manage fungible tokens and NFTs natively on the network — no smart contract required. + Create and manage fungible tokens and NFTs natively on the network: no smart contract required. - + Publish ordered, timestamped, verifiable messages to a topic. Ideal for audit logs, supply chain, and AI data provenance. - + Store immutable files on the network. Used for smart contract bytecode and configuration data. diff --git a/learn/getting-started/why-hedera.mdx b/learn/getting-started/why-hedera.mdx index 79ae02e7..fdf8a3a8 100644 --- a/learn/getting-started/why-hedera.mdx +++ b/learn/getting-started/why-hedera.mdx @@ -25,7 +25,7 @@ Hedera fees are **fixed in USD** and paid in HBAR at the current exchange rate. - Average transaction fee: **~$0.0001** - Fees are set by the Hedera Governing Council and change infrequently - No fee spikes during network congestion — fees don't fluctuate with demand -- Smart contract execution costs are predictable and published in the [fee schedule](/reference/fees/index) +- Smart contract execution costs are predictable and published in the [fee schedule](/learn/networks/mainnet/fees) This makes Hedera practical for high-volume applications (millions of transactions per month) where gas costs would be prohibitive on other networks. diff --git a/learn/index.mdx b/learn/index.mdx index 52e8d8d9..81060366 100644 --- a/learn/index.mdx +++ b/learn/index.mdx @@ -1,226 +1,77 @@ --- title: "Learn Hedera" -description: "Get started with Hedera — what it is, how it works, and the core concepts behind accounts, tokens, consensus, and smart contracts." +description: "Get started with Hedera: what it is, how it works, and the core concepts behind accounts, tokens, consensus, and smart contracts." mode: wide +icon: "book-arrow-right" --- -
- -{/* ── BROWSE BY SECTION ─────────────────────────────────────────────────── */} - +
{/* ── START HERE ──────────────────────────────────────────────── */} -
-

- Start here +
+

+ Start here

-
+
- -
+ +
-
What is Hedera?
-
The 2-minute introduction to the network and what makes it different.
+
What is Hedera?
+
The 2-minute introduction to the network and what makes it different.
- -
+ +
-
Why Hedera?
-
Predictable fees, fast finality, native services, and enterprise governance.
+
Why Hedera?
+
Predictable fees, fast finality, native services, and enterprise governance.
- -
+ +
-
Choose Your Path
-
EVM developer or native SDK developer — pick the right starting point.
+
Choose Your Path
+
EVM developer or native SDK developer: pick the right starting point.
- -
+ +
-
Testnet Faucet
-
Fund a testnet account in seconds — no real HBAR required.
+
Testnet Faucet
+
Fund a testnet account in seconds: no real HBAR required.
- -
+ +
-
Portal Playground
-
Try Hedera transactions in your browser — no setup required.
+
Portal Playground
+
Try Hedera transactions in your browser: no setup required.
- - {/* ── CORE CONCEPTS ──────────────────────────────────────── */} -
-
-

- Core concepts +
+ -

+

The building blocks behind every Hedera transaction.

-
+
- -
+ +
-
Accounts
-
Creation, auto-creation, properties, network accounts, and hooks.
-
- Accounts - Identity +
Accounts
+
Creation, auto-creation, properties, network accounts, and hooks.
+
+ Accounts + Identity
- -
+ +
-
Keys & Signatures
-
ED25519, ECDSA, key lists, and threshold keys for multi-sig flows.
-
- Keys - Crypto +
Keys & Signatures
+
ED25519, ECDSA, key lists, and threshold keys for multi-sig flows.
+
+ Keys + Crypto
- -
+ +
-
Tokens
-
HTS overview, types, properties, custom fees, and airdrops.
-
- HTS - NFTs +
Tokens
+
HTS overview, types, properties, custom fees, and airdrops.
+
+ HTS + NFTs
- -
+ +
-
Transactions
-
How transactions are formed, signed, scheduled, and submitted.
-
- Transactions - Signing +
Transactions
+
How transactions are formed, signed, scheduled, and submitted.
+
+ Transactions + Signing
- -
+ +
-
Hashgraph Consensus
-
Gossip about gossip and virtual voting — how Hedera reaches consensus.
-
- Consensus - aBFT +
Hashgraph Consensus
+
Gossip about gossip and virtual voting: how Hedera reaches consensus.
+
+ Consensus + aBFT
- -
+ +
-
Staking
-
Earn rewards by staking HBAR to a network node.
-
{/* ── NETWORKS ──────────────────────────────────────── */} -
-

- Pick a network +
+

+ Pick a network

-
+
- -
+ +
-
-
Mainnet
-
Production network — real HBAR, real fees, real users.
-
- Production +
+
Mainnet
+
Production network: real HBAR, real fees, real users.
+
+ Production
- -
+ +
-
-
Testnet
-
Free test HBAR for development — production-equivalent environment.
-
- Testing +
+
Testnet
+
Free test HBAR for development: production-equivalent environment.
+
+ Testing
- -
+ +
-
-
Localnet
-
Run Hedera on your laptop — single-node or multi-node.
-
{/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Stay connected +
+

+ Stay connected

- diff --git a/learn/release-notes/mirror-node.mdx b/learn/release-notes/mirror-node.mdx index 841959f2..6bb7d734 100644 --- a/learn/release-notes/mirror-node.mdx +++ b/learn/release-notes/mirror-node.mdx @@ -2512,7 +2512,7 @@ The maximum number of rows the REST API can return was changed from 500 to 100. ### Smart Contracts -With Hedera's increased focus on [Smart Contracts](https://hedera.com/blog/hedera-evm-smart-contracts-now-bring-highest-speed-programmability-to-tokenization), we took the time to revamp the mirror node's smart contract support and lay the groundwork for future enhancements. As detailed in the [design document](https://github.com/hashgraph/hedera-mirror-node/blob/main/docs/design/smart-contracts.md), plans include new contract-specific REST APIs and Ethereum-compatible APIs in the future. +With Hedera's increased focus on [Smart Contracts](https://hedera.com/blog/hedera-evm-smart-contracts-now-bring-highest-speed-programmability-to-tokenization), we took the time to revamp the mirror node's smart contract support and lay the groundwork for future enhancements. As detailed in the [design document](https://github.com/hashgraph/hedera-mirror-node/blob/main/docs/design/smart-contracts.md), plans include new contract-specific REST APIs and EVM-compatible APIs in the future. To prepare for that, the database schema and importer were updated to normalize and store all contract-related information, fixing long-standing bugs like not storing contract bytecode and child contracts. The contract table was split from the generic entity table and work was started on making all the entity tables maintain a history of all changes. The REST API now supports searching for and retrieving specific contracts. Below is an example of retrieving a contract: diff --git a/native/accounts/create.mdx b/native/accounts/create.mdx index 017b2b4d..30a5df0a 100644 --- a/native/accounts/create.mdx +++ b/native/accounts/create.mdx @@ -2,119 +2,99 @@ title: "Create an account" --- -## Create an account using the account create API +A Hedera account is required to interact with any network service, since every transaction and query fee is paid from an account. You can create a previewnet or testnet account on the [Hedera Developer Portal](https://portal.hedera.com/), or use a third-party wallet to generate a free [mainnet account](/learn/networks/mainnet/access). -A transaction that creates a Hedera account. A Hedera account is required to interact with any of the Hedera network services as you need an account to pay for all associated transaction/query fees. You can visit the [Hedera Developer Portal](https://portal.hedera.com/) to create a previewnet or testnet account. You can also use third-party wallets to generate free [mainnet accounts](/networks/mainnet/mainnet-access). To process an account create transaction, you will need an existing account to pay for the transaction fee. To obtain the new account ID, request the [receipt](/hedera/sdks-and-apis/sdks/transactions/get-a-transaction-receipt) of the transaction. +This page covers programmatic account creation with `AccountCreateTransaction()`. The transaction must be signed and paid for by an existing account. To obtain the new account ID, request the [receipt](/hedera/sdks-and-apis/sdks/transactions/get-a-transaction-receipt) of the transaction. - -When creating a **new account** using the `AccountCreateTransaction()` API you will need an existing account to pay for the associated transaction fee. - +For a complete list of account properties, see the [accounts overview](/hedera/sdks-and-apis/sdks/accounts-and-hbar). --- -## Transaction Fees and Signing +## Transaction fees and signing -- The sender pays for the token association fee and the rent for the first auto-renewal period. -- See the transaction and query [fees](/networks/mainnet/fees) table for the base transaction fee. -- Use the [Hedera fee estimator](https://hedera.com/fees) to estimate your transaction fee cost. - The account paying for the transaction fee is required to sign the transaction. +- The sender also pays the `maxAutoAssociations` fee and the rent for the first auto-renewal period. +- See the transaction and query [fees](/learn/networks/mainnet/fees) table for the base transaction fee. +- Use the [Hedera fee estimator](https://hedera.com/fees) to estimate cost. --- -## Account Properties - - -For a complete list of account properties, see the [accounts overview](/hedera/sdks-and-apis/sdks/accounts-and-hbar). - - ---- - -## Maximum Auto-Associations and Fees - -Accounts have a property, `maxAutoAssociations`, and the property's value determines the maximum number of automatic token associations allowed. +## Constructor -| Property Value | Description | -| :---: | --- | -| `0` | Automatic **token** associations or **token airdrops** are not allowed, and the account must be manually associated with a token. This also applies if the value is less than or equal to `usedAutoAssociations`. | -| `-1` | Unlimited automatic token associations are allowed, and this is the default for accounts created via [auto account creation](../../../core-concepts/accounts/auto-account-creation) and for accounts that began as hollow accounts and are now complete. Accounts with `-1` can receive new tokens without manually associating them. The sender still pays the `maxAutoAssociations` fee and initial rent for each association. | -| `> 0` | If the value is a positive number (number greater than 0), the number of automatic token associations an account can have is limited to that number. | -| Property Value | Description | +| Constructor | Description | |---|---| -| `0` | Automatic token associations or **token airdrops** are not allowed, and the account must be manually associated with a token. This also applies if the value is less than or equal to `usedAutoAssociations`. | -| `-1` | Unlimited automatic token associations are allowed, and this is the default for accounts created via [auto account creation](/sdks-and-apis/sdks/accounts-and-hbar/create-an-account) and for accounts that began as hollow accounts and are now complete. Accounts with `-1` can receive new tokens without manually associating them. The sender still pays the `maxAutoAssociations` fee and initial rent for each association. | -| `> 0` | If the value is a positive number (number greater than 0), the number of automatic token associations an account can have is limited to that number. | +| `new AccountCreateTransaction()` | Initializes the `AccountCreateTransaction` object | - -The sender pays the `maxAutoAssociations` fee and the rent for the first auto-renewal period for the association. This is in addition to the typical transfer fees. This ensures the receiver can receive tokens without association and makes it a smoother transfer process. - - -**Reference**: [HIP-904](https://hips.hedera.com/hip/hip-904) - -#### Methods +## Methods | Method | Type | Requirement | | --- | --- | --- | | `setKey()` | Key | Required | +| `setKeyWithAlias()` | Key | Optional | +| `setKeyWithoutAlias()` | Key | Optional | | `setAlias()` | EvmAddress | Optional | -| `setInitialBalance()` | HBar | Optional | +| `setInitialBalance()` | Hbar | Optional | | `setReceiverSignatureRequired()` | boolean | Optional | | `setMaxAutomaticTokenAssociations()` | int | Optional | | `setStakedAccountId()` | AccountId | Optional | | `setStakedNodeId()` | long | Optional | | `setDeclineStakingReward()` | boolean | Optional | | `setAccountMemo()` | String | Optional | +| `setHighVolume()` | boolean | Optional | | `setAutoRenewPeriod()` | Duration | Disabled | - -**Account Alias** -If an alias is set during account creation, it becomes [immutable](/hedera/support-and-community/glossary#immutability), meaning it cannot be changed. If you plan to update or rotate keys in the future, do not set the alias at the time of initial account creation. The alias can be set after finalizing all key updates. - ---- + + ### EVM address from public key -## Constructor + + -| Constructor | Description | -|---|---| -| `new AccountCreateTransaction()` | Initializes the AccountCreateTransaction object | + Setting an ECDSA-derived EVM address at creation makes the account natively addressable from EVM wallets, JSON-RPC, and Solidity (`msg.sender`). The address is the rightmost 20 bytes of the Keccak-256 hash of the ECDSA public key. Use `setKeyWithAlias()` to enable this behavior, as shown in the [example](#example) below. -## Transaction Properties + **Immutability:** The EVM address is bound to the original ECDSA public key and does **not** change if you later rotate keys via `CryptoUpdateTransaction`. Integrations keyed to that EVM address (smart-contract permissions, address-based access lists) will continue to reference the original address. -| **Method** | **Type** | Requirement | -|---|---|---| -| `setKey()` | Key | Required | -| `setInitialBalance()` | Hbar | Optional | -| `setReceiverSignatureRequired()` | boolean | Optional | -| `setAutoRenewPeriod()` | Duration | Optional | -| `setAccountMemo()` | String | Optional | -| `setMaxAutomaticTokenAssociations()` | int | Optional | -| `setStakedAccountId()` | AccountId | Optional | -| `setStakedNodeId()` | long | Optional | -| `setDeclineStakingReward()` | boolean | Optional | -| `setHighVolume()` | boolean | Optional | + **If key rotation is required:** Use `setKeyWithoutAlias()` instead. The account will fall back to its EVM Address from Account ID (the long-zero form). + + **Recovery model:** If keys are compromised or must be replaced, create a new account with a new ECDSA key, then migrate assets and state. Do not rely on key rotation to preserve the same EVM identity. - - This transaction supports [high-volume entity creation](/hedera/core-concepts/high-volume-entity-creation) - (HIP-1313). Setting `setHighVolume(true)` routes the transaction through dedicated - high-volume throttle capacity with variable-rate pricing. Always pair this with - `setMaxTransactionFee()` to cap your costs. + + #### High-volume entity creation - + This transaction supports [high-volume entity creation](/hedera/core-concepts/high-volume-entity-creation) (HIP-1313). Setting `setHighVolume(true)` routes the transaction through dedicated high-volume throttle capacity with variable-rate pricing. Always pair this with `setMaxTransactionFee()` to cap your costs. + + +### Maximum auto-associations +The `maxAutoAssociations` property determines how many automatic token associations an account allows. -```javascript JavaScript -//Create new ECDSA key -const ecdsaPublicKey = PrivateKey.generateECDSA().publicKey +| Value | Behavior | +| :---: | --- | +| `0` | Automatic token associations and token airdrops are not allowed. Tokens must be manually associated. This also applies when the value is less than or equal to `usedAutoAssociations`. | +| `-1` | Unlimited automatic token associations. This is the default for accounts created via [auto account creation](../../../core-concepts/accounts/auto-account-creation) and for hollow accounts that have been completed. The sender still pays the association fee and initial rent for each new token. | +| `> 0` | Automatic token associations are limited to the specified number. | + +Reference: [HIP-904](https://hips.hedera.com/hip/hip-904). -//Create the transaction +--- + +## Example + + + +```javascript wrap JavaScript +// Create new ECDSA key +const ecdsaPublicKey = PrivateKey.generateECDSA().publicKey; + +// Create the transaction const transaction = new AccountCreateTransaction() + // Sets the EVM Address from Public Key (recommended for EVM compatibility) .setKeyWithAlias(ecdsaPublicKey) - // DO NOT set an alias with your key if you plan to update/rotate keys in the future, Use .setKeyWithoutAlias instead - // .setKeyWithoutAlias(ecdsaPublicKey) + // Use .setKeyWithoutAlias(ecdsaPublicKey) if you plan to rotate keys soon after creation .setInitialBalance(new Hbar(1)); -//Sign the transaction with the client operator private key and submit to a Hedera network +// Sign the transaction with the client operator private key and submit to a Hedera network const txResponse = await transaction.execute(client); //Request the receipt of the transaction @@ -125,22 +105,21 @@ const newAccountId = receipt.accountId; console.log("The new account ID is " + newAccountId); -//v2.0.5 +// v2.84.0 ``` - -```java Java -//Create new ECDSA key +```java wrap Java +// Create new ECDSA key PublicKey ecdsaPublicKey = PrivateKey.generateECDSA().getPublicKey(); -//Create the transaction +// Create the transaction AccountCreateTransaction transaction = new AccountCreateTransaction() + // Sets the EVM Address from Public Key (recommended for EVM compatibility) .setKeyWithAlias(ecdsaPublicKey) - // DO NOT set an alias with your key if you plan to update/rotate keys in the future, Use .setKeyWithoutAlias instead - // .setKeyWithoutAlias(ecdsaPublicKey) + // Use .setKeyWithoutAlias(ecdsaPublicKey) if you plan to rotate keys soon after creation .setInitialBalance(new Hbar(1)); -//Sign the transaction with the client operator private key and submit to a Hedera network +// Sign the transaction with the client operator private key and submit to a Hedera network TransactionResponse txResponse = transaction.execute(client); //Request the receipt of the transaction @@ -150,22 +129,23 @@ TransactionReceipt receipt = txResponse.getReceipt(client); AccountId newAccountId = receipt.accountId; System.out.println("The new account ID is " + newAccountId); -``` +// v2.72.0 +``` -```go Go -//Create new ECDSA key +```go wrap Go +// Create new ECDSA key ecdsaPrivateKey, _ := hedera.PrivateKeyGenerateECDSA() ecdsaPublicKey := ecdsaPrivateKey.PublicKey() -//Create the transaction +// Create the transaction transaction := hedera.NewAccountCreateTransaction(). + // Sets the EVM Address from Public Key (recommended for EVM compatibility) SetKeyWithAlias(ecdsaPublicKey). - // DO NOT set an alias with your key if you plan to update/rotate keys in the future, Use .SetKeyWithoutAlias instead - // SetKeyWithoutAlias(ecdsaPublicKey). + // Use SetKeyWithoutAlias(ecdsaPublicKey) if you plan to rotate keys soon after creation SetInitialBalance(hedera.NewHbar(1)) -//Sign the transaction with the client operator private key and submit to a Hedera network +// Sign the transaction with the client operator private key and submit to a Hedera network txResponse, err := transaction.Execute(client) //Request the receipt of the transaction @@ -175,24 +155,23 @@ receipt, err := txResponse.GetReceipt(client) newAccountId := *receipt.AccountID fmt.Printf("The new account ID is %v\n", newAccountId) -``` +// v2.80.0 +``` -```rust Rust +```rust wrap Rust // Create new ECDSA key let ecdsa_public_key = PrivateKey::generate_ecdsa().public_key(); // Create the transaction let transaction = AccountCreateTransaction::new() + // Sets the EVM Address from Public Key (recommended for EVM compatibility) .key_with_alias(ecdsa_public_key) - // DO NOT set an alias with your key if you plan to update/rotate keys in the future, Use .key_without_alias instead - // .key_without_alias(ecdsa_public_key) - .initial_balance(Hbar::from(1)); + // Use .key_without_alias(ecdsa_public_key) if you plan to rotate keys soon after creation + .initial_balance(Hbar::new(1)); // Sign the transaction with the client operator private key and submit to a Hedera network -let tx_response = transaction - .execute(&client) - .await?; +let tx_response = transaction.execute(&client).await?; // Request the receipt of the transaction let receipt = tx_response.get_receipt(&client).await?; @@ -202,85 +181,49 @@ let new_account_id = receipt.account_id.unwrap(); println!("The new account ID is {}", new_account_id); -// v0.34.0 +// v0.45.0 ``` - - - -## Get Transaction Values - -| Method | Type | Description | -| --- | --- | --- | -| `getKey()` | Key | Returns the public key on the account | -| `getInitialBalance()` | Hbar | Returns the initial balance of the account | -| `getAutoRenewPeriod()` | Duration | Returns the auto renew period on the account | -| `getDeclineStakingReward()` | boolean | Returns whether or not the account declined rewards | -| `getStakedNodeId()` | long | Returns the node ID | -| `getStakedAccountId()` | AccountId | Returns the node account ID | -| `getReceiverSignatureRequired()` | boolean | Returns whether the receiver signature is required or not | -| **Method** | **Type** | Description | -|---|---|---| -| `getKey()` | Key | Returns the public key on the account | -| `getInitialBalance()` | Hbar | Returns the initial balance of the account | -| `getAutoRenewPeriod()` | Duration | Returns the auto renew period on the account | -| `getDeclineStakingReward()` | boolean | Returns whether or not the account declined rewards | -| `getStakedNodeId()` | long | Returns the node ID | -| `getStakedAccountId()` | AccountId | Returns the node account ID | -| `getReceiverSignatureRequired()` | boolean | Returns whether the receiver signature is required or not | -| `getHighVolume()` | boolean | Returns whether this transaction uses [high-volume throttles](/hedera/core-concepts/high-volume-entity-creation) | - - -This transaction supports [high-volume entity creation](/hedera/core-concepts/high-volume-entity-creation) (HIP-1313). Setting `setHighVolume(true)` routes the transaction through dedicated high-volume throttle capacity with variable-rate pricing. Always pair this with `setMaxTransactionFee()` to cap your costs. - - -#### **Account Alias** -If an alias is set during account creation, it becomes [immutable](/hedera/support-and-community/glossary#immutable), meaning it cannot be changed. If you plan to update or rotate keys in the future, do not set the alias at the time of initial account creation. The alias can be set after finalizing all key updates. - +```python Python +# Create new ECDSA key +ecdsa_public_key = PrivateKey.generate_ecdsa().public_key() - +# Create the transaction +transaction = ( + AccountCreateTransaction() + # Sets the EVM Address from Public Key (recommended for EVM compatibility) + .set_key_with_alias(ecdsa_public_key) + # Use .set_key_without_alias(ecdsa_public_key) if you plan to rotate keys soon after creation + .set_initial_balance(Hbar(1)) +) -```javascript JavaScript -//Create an account with 1 HBAR -const transaction = new AccountCreateTransaction() - // The only _required_ property here is `key` - .setKeyWithAlias(newPublicKey) - // Do NOT set an alias if you need to rotate keys in the future. Use .setKeyWithoutAlias instead - // .setKeyWithoutAlias(newPublicKey) - .setInitialBalance(new Hbar(1)); +# Sign the transaction with the client operator private key and submit to a Hedera network +tx_response = transaction.execute(client) -//Return the key on the account -const accountKey = transaction.getKey(); -``` +# Request the receipt of the transaction +receipt = tx_response.get_receipt(client) +# Get the account ID +new_account_id = receipt.account_id -```java Java -//Create an account with 1 hbar -AccountCreateTransaction transaction = new AccountCreateTransaction() - // The only _required_ property here is `key` - .setKeyWithAlias(newPublicKey) - // DO NOT set an alias with your key if you plan to update/rotate keys in the future, Use .setKeyWithoutAlias instead - // .setKeyWithoutAlias(newPublicKey) - .setInitialBalance(new Hbar(1)); +print(f"The new account ID is {new_account_id}") -//Return the key on the account -Key accountKey = transaction.getKey(); +# v0.2.7 ``` -```go Go -//Create an account with 1 hbar -AccountCreateTransaction := hedera.NewAccountCreateTransaction(). - SetKeyWithAlias(newPublicKey). - // DO NOT set an alias with your key if you plan to update/rotate keys in the future, Use .SetKeyWithoutAlias instead - // SetKeyWithoutAlias(newPublicKey). - SetInitialBalance(hedera.NewHbar(1)) - -//Return the key on the account -accountKey, err := AccountCreateTransaction.GetKey() -``` +--- +## Get transaction values - - +| Method | Type | Description | +|---|---|---| +| `getKey()` | Key | Returns the public key on the account | +| `getInitialBalance()` | Hbar | Returns the initial balance of the account | +| `getAutoRenewPeriod()` | Duration | Returns the auto-renew period on the account | +| `getDeclineStakingReward()` | boolean | Returns whether the account declined staking rewards | +| `getStakedNodeId()` | long | Returns the staked node ID | +| `getStakedAccountId()` | AccountId | Returns the staked account ID | +| `getReceiverSignatureRequired()` | boolean | Returns whether the receiver signature is required | +| `getHighVolume()` | boolean | Returns whether this transaction uses [high-volume throttles](/hedera/core-concepts/high-volume-entity-creation) | diff --git a/native/fundamentals/index.mdx b/native/fundamentals/index.mdx index 799fc11a..429a6859 100644 --- a/native/fundamentals/index.mdx +++ b/native/fundamentals/index.mdx @@ -1,276 +1,102 @@ --- title: "SDKs" -description: "Hedera supported and community-maintained SDKs" +description: "Community SDKs, wallets, decentralized identity, and REST options that complement the official Hedera SDKs." --- -There are several options for friendly, language-specific access to the Hedera API and its network services. - -## Consensus Node Code SDKs - -Hedera and the developer community contribute to and maintain Hiero's Consensus Node SDKs across various languages. +Six official SDKs (JavaScript, Java, Go, Swift, Rust, C++) are listed on the [Native SDKs landing page](/native#pick-your-language). This page catalogs community SDKs, wallet integrations, decentralized identity libraries, and REST options that supplement them. - **Note:** The Hiero JavaScript SDK supports React Native with Expo on Android - devices and Android emulators. It does not currently support React Native - Bare. + **React Native:** The JavaScript SDK supports React Native with Expo on Android devices and emulators. React Native Bare is not currently supported. - - - Maintainer: Hiero - - License: Apache 2.0 - - [GITHUB](https://github.com/hashgraph/hedera-sdk-java) - - - - Maintainer: Hiero - - License: Apache 2.0 - - [GITHUB](https://github.com/hashgraph/hedera-sdk-js) - - - - Maintainer: Hiero - - License: Apache 2.0 - - [GITHUB](https://github.com/hashgraph/hedera-sdk-go) - - - - Maintainer: Hiero - - License: Apache 2.0 - - [GITHUB](https://github.com/hashgraph/hedera-sdk-swift) - - - - Maintainer: Hiero - - License: Apache 2.0 - - [GITHUB](https://github.com/hiero-ledger/hiero-sdk-rust) - - - - Maintainer: Hiero - - License: Apache 2.0 - - [GITHUB](https://github.com/hiero-ledger/hiero-sdk-cpp) - - - - -## Development Tools & SDKs - -Hedera and the developer community contribute to and maintain developer tools and SDKs. These can be used to make bootstrapping your own project even easier. +--- -### Hedera Developer Playground +## Try without installing -**_ℹ️ Try the_** [**_Hedera Developer Playground_**](https://portal.hedera.com/playground) **_to explore services, transactions, and queries on your own using the Hedera SDKs._** +Use the [Developer Playground](https://portal.hedera.com/playground) to exercise account, token, and consensus operations on testnet directly from your browser, no SDK install required. -
- - Hedera Developer Playground -

- Hedera Developer Playground -

-
+
+
-### Additional Language Support +

+ Open it full-screen at portal.hedera.com/playground. +

-Build a Hedera-powered application using your favorite language with these community-supported SDKs. - - - - Maintainer: Community +--- - License: Apache 2.0 +## Community language SDKs - [DOCUMENTATION](https://github.com/hiero-ledger/hiero-sdk-python) - [GITHUB](https://github.com/hiero-ledger/hiero-sdk-python) +Community-maintained SDKs that extend Hedera support beyond the six official languages. + + + `pip install hiero-sdk-python`. Community-maintained, Apache 2.0. -### Ecosystem Wallet Support - -If you're building a decentralized application on Hedera that requires wallet connectivity, such as allowing users to connect their [HashPack](https://www.hashpack.app/), [Kabila](https://magic.link/), [Blade](https://sunset.bladewallet.io/), or [MetaMask](https://metamask.io/) wallets, check out the easy-to-implement wallet integration SDKs/tutorials found below. In addition, dApp integration tools for account creation and management, such as [Magic Link](https://magic.link/), make it easy for your users to create an account on Hedera and authenticate themselves in no time. - - - - **[HashPack](https://www.hashpack.app/)** HashConnect - -Maintainer: Community +--- -License: MIT +## Wallet & auth integrations -**[DOCUMENTATION](https://www.hashpack.app/hashconnect)** +Connect end-user wallets and embedded auth flows to your Hedera dApp. + + + Connect to HashPack via the HashConnect protocol. MIT. - - **[Magic Link](https://magic.link)** Wallet SDK - -Maintainer: Community - -License: MIT - -**[DOCUMENTATION](https://magic.link/docs/auth/blockchains/hedera)** - + + Hedera WalletConnect implementation maintained by Kabila. Apache 2.0. - - **[MetaMask](https://metamask.io/)** Integration - -Maintainer: Community - -License: MIT - -**[TUTORIAL](https://docs.hedera.com/hedera/tutorials/more-tutorials/develop-a-hedera-dapp-integrated-with-walletconnect)** - + + Tutorial: build a Hedera dApp that connects to MetaMask via WalletConnect. - - [Kabila](https://www.kabila.app/wallet) WalletConnect - -Maintainer: Community - -License: Apache 2.0 - -**[TUTORIAL](https://github.com/Kabila-Tech/hedera-wallet-connect)** - + + Email/social auth and embedded wallet creation for Hedera. MIT. -### Decentralized Identity SDKs - -Build decentralized identity directly into your Hedera-powered application. Manage [DID Documents](https://www.w3.org/TR/did-core/) & a [Verifiable Credentials](https://www.w3.org/TR/vc-data-model/) registry, abiding by W3C standards, using the Hedera Consensus Service. +--- - - - Maintainer: Hedera - License: Apache 2.0 +## Decentralized identity - [GITHUB](https://github.com/hashgraph/did-sdk-java) +W3C-compliant [DID Documents](https://www.w3.org/TR/did-core/) and a [Verifiable Credentials](https://www.w3.org/TR/vc-data-model/) registry backed by the Hedera Consensus Service. + + + Reference Java implementation. Apache 2.0. - - Maintainer: Hedera - License: Apache 2.0 - - [GITHUB](https://github.com/hashgraph/did-sdk-js) - + + TypeScript-friendly DID and VC management. Apache 2.0. - - Maintainer: Hedera - License: Apache 2.0 - - [GITHUB](https://github.com/hashgraph/did-sdk-python) - + + Python implementation maintained under Hiero. Apache 2.0. -### Serverless SDKs - -Build a Hedera-powered application using your own serverless REST client. - - - - Maintainer: Hedera REST API +--- - License: Apache 2.0 +## REST & serverless - [DOCUMENTATION](https://docs.trust.enterprises/) - [GITHUB](https://github.com/trust-enterprises/hedera-rest-api) +If you'd rather call HTTP than embed an SDK. + + + Serverless REST wrapper around the Hedera API. Apache 2.0. [GitHub](https://github.com/trust-enterprises/hedera-rest-api). - - Maintainer: Hedera REST API - - License: Apache 2.0 - - [DOCUMENTATION](https://docs.trust.enterprises/laravel/working-with-laravel) - [GITHUB](https://github.com/trust-enterprises/hedera-laravel) - + + Laravel bindings on top of the Trust Enterprises REST API. Apache 2.0. [GitHub](https://github.com/trust-enterprises/hedera-laravel). -Want to help contribute or have a project you'd like to see, here? Get in touch in [discord](http://hedera.com/discord) or add a pull request. +--- + +Building something that should live here? Open a PR or drop into [Discord](https://hedera.com/discord). diff --git a/native/index.mdx b/native/index.mdx index 109f73a8..2812871b 100644 --- a/native/index.mdx +++ b/native/index.mdx @@ -1,315 +1,79 @@ --- title: "Native SDKs" -description: "Build on Hedera using the JavaScript, Java, Go, Swift, and Rust SDKs — full access to HTS, HCS, scheduled transactions, smart contracts, and the file service." +description: "Build on Hedera using the JavaScript, Java, Go, Swift, and Rust SDKs: full access to HTS, HCS, scheduled transactions, smart contracts, and the file service." mode: wide --- -
- -{/* ── BROWSE BY SECTION ─────────────────────────────────────────────────── */} -
-

- Browse by section +
+ +{/* ── QUICKSTARTS BY LANGUAGE ──────────────────────────────────────────── */} +
+

+ Pick your language

-

- Every topic in the Native SDKs tab, organized by area. +

+ All Hedera SDKs share the same API surface. Pick the language that fits your stack.

-
- - -
- -
-
-
Quickstart
-
Install the SDK in JavaScript, Java, or Go and send your first transaction.
-
-
- - -
- -
-
-
SDK Fundamentals
-
Client, address book, HBAR types, specialized types, and error handling.
-
-
- - -
- -
-
-
Keys
-
Generate, import, list, threshold, and mnemonic-recover keys.
-
-
- - -
- -
-
-
Transactions
-
Form, sign, submit, batch — plus receipts, records, and multisig.
-
-
- - -
- -
-
-
Accounts
-
Create, update, transfer, allowance, balance, and info queries.
-
-
- - -
- -
-
-
Token Service
-
Define, mint, burn, transfer, airdrop, freeze, pause, wipe — full HTS.
-
-
- - -
- -
-
-
Consensus Service
-
HCS topics — create, update, submit messages, subscribe to mirror nodes.
-
-
- - -
- -
-
-
Scheduled Transactions
-
Multi-party signing — create, sign, get info, and execute on threshold.
-
-
- - -
- -
-
-
Smart Contracts
-
Deploy, call, update — call Solidity contracts from native SDKs.
-
-
+
- -
- + +
+ JS
-
File Service
-
On-network file storage — create, append, update, delete, get contents.
+
JavaScript
+
Node.js and browser. `npm install @hashgraph/sdk`.
- - - -{/* ── QUICKSTARTS BY LANGUAGE ──────────────────────────────────────────── */} -
-

- Pick your language -

-

- All Hedera SDKs share the same API surface — pick the language that fits your stack. -

- -
- - -
- JS + +
+ Swift
-
JavaScript / TypeScript
-
Node.js or browser — npm install @hashgraph/sdk.
+
Swift
+
iOS and macOS via Swift Package Manager.
- -
- + +
+ Rust
-
Java
-
JDK 11+ — Maven or Gradle integration for enterprise apps.
+
Rust
+
`cargo add hedera`. Async-first with Tokio.
- - {/* ── CORE SERVICES SPOTLIGHT ──────────────────────────────────────────── */} -
-

- Native services from the SDK +
+

+ Native services from the SDK

-

- First-class access to every Hedera service — no JSON-RPC layer, no gas auctions, no surprises. +

+ First-class access to every Hedera service, with no JSON-RPC layer, no gas auctions, and no surprises.

-
- - -
+
+ + +
-
Create a Token
-
Fungible or NFT — define properties, supply, and admin keys in one transaction.
-
- HTS - Tokens +
Create a Token
+
Fungible or NFT: define properties, supply, and admin keys in one transaction.
+
+ HTS + Tokens
- -
+ +
-
Submit a Consensus Message
-
Timestamped, ordered, immutable messages on HCS topics for any payload.
-
- HCS - Messaging +
Submit a Consensus Message
+
Timestamped, ordered, immutable messages on HCS topics for any payload.
+
+ HCS + Messaging
- -
+ +
-
Schedule a Transaction
-
Wait for multi-party signatures before executing — built-in multisig coordination.
-
- HSS - Multisig +
Schedule a Transaction
+
Wait for multi-party signatures before executing: built-in multisig coordination.
+
+ HSS + Multisig
- -
+ +
-
Create an Account
-
Generate a new Hedera account in code — fund, query balance, transfer HBAR.
-
- Accounts - HBAR +
Create an Account
+
Generate a new Hedera account in code: fund, query balance, transfer HBAR.
+
+ Accounts + HBAR
- -
+ +
-
Batch Transactions
-
Atomic execution of multiple transactions — all succeed or all fail.
-
- Batch - Atomic +
Batch Transactions
+
Atomic execution of multiple transactions all succeed or all fail.
+
+ Batch + Atomic
- -
+ +
-
Signature Provider
-
Provider, Signer, and Wallet APIs — integrate hardware wallets and HSMs.
-
{/* ── TUTORIALS ──────────────────────────────────────── */} -
-
-

- Step-by-step tutorials +
+ -

- Hands-on SDK guides — from your first token to HSM-backed signing. +

+ Hands-on SDK guides, from your first token to HSM-backed signing.

-
- - -
+
+ + +
-
-
Create Your First Token
-
Mint a fungible HTS token in JavaScript in under 15 minutes.
-
- Beginner - HTS +
+
Create Your First Token
+
Mint a fungible HTS token in JavaScript in under 15 minutes.
+
+ Beginner + HTS
- -
+ +
-
-
Create Your First HCS Topic
-
Submit and subscribe to consensus messages on a topic you control.
-
- HCS - Beginner +
+
Create Your First HCS Topic
+
Submit and subscribe to consensus messages on a topic you control.
+
+ HCS + Beginner
- -
+ +
-
-
HSM-backed Signing
-
Sign transactions with AWS KMS, Azure Key Vault, or GCP KMS.
-
{/* ── LOCAL DEVELOPMENT ──────────────────────────────────────── */} -
-

- Local development +
+

+ Local development

-
- - -
+
+ + +
-
Local Node
-
Run Hedera in Docker — full network on your laptop in minutes.
+
Local Node
+
Run Hedera in Docker: full network on your laptop in minutes.
- -
+ +
-
CLI Tools
-
Hedera CLI via npm — accounts, tokens, topics from your terminal.
+
CLI Tools
+
Hedera CLI via npm: accounts, tokens, topics from your terminal.
- -
+ +
-
Gitpod
-
Cloud dev environment — pre-configured with the SDK and local node.
+
Gitpod
+
Cloud dev environment pre-configured with the SDK and local node.
- - {/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Stay connected +
+

+ Stay connected

- diff --git a/native/integrations/index.mdx b/native/integrations/index.mdx index 17644ad7..ad28ce11 100644 --- a/native/integrations/index.mdx +++ b/native/integrations/index.mdx @@ -1,7 +1,7 @@ --- title: "Integrations" description: "Integrate Hedera with AI agents, wallets, and other tools." -icon: "plug" +hidden: true --- {/* TODO: This page needs content */} diff --git a/native/overview/index.mdx b/native/overview/index.mdx index 78c38fc9..6cc954e8 100644 --- a/native/overview/index.mdx +++ b/native/overview/index.mdx @@ -1,7 +1,7 @@ --- title: "Native SDKs Overview" description: "Build on Hedera using the official JavaScript, Java, Go, and Rust SDKs." -icon: "code" +hidden: true --- {/* TODO: This page needs content */} diff --git a/native/overview/sdk-comparison.mdx b/native/overview/sdk-comparison.mdx index 31436812..2be2d760 100644 --- a/native/overview/sdk-comparison.mdx +++ b/native/overview/sdk-comparison.mdx @@ -1,7 +1,7 @@ --- title: "SDK Comparison" description: "Compare features across JavaScript, Java, Go, and other Hedera SDKs." -icon: "scale-balanced" +hidden: true --- {/* TODO: This page needs content */} diff --git a/native/overview/why-native-sdk.mdx b/native/overview/why-native-sdk.mdx index ee483278..1b51298d 100644 --- a/native/overview/why-native-sdk.mdx +++ b/native/overview/why-native-sdk.mdx @@ -1,7 +1,7 @@ --- title: "Why Use the Native SDKs?" description: "Understand when to use Hedera's native SDKs vs EVM tooling." -icon: "code" +hidden: true --- {/* TODO: This page needs content */} diff --git a/native/quickstart/go.mdx b/native/quickstart/go.mdx index c41280cc..620d6718 100644 --- a/native/quickstart/go.mdx +++ b/native/quickstart/go.mdx @@ -1,35 +1,136 @@ --- title: "Go Quickstart" -description: "Set up and use the Hedera Go SDK." -icon: "golang" +description: "Connect to Hedera testnet from Go, query your balance, and transfer HBAR." --- -{/* TODO: This page needs content */} +This page gets a Go program talking to Hedera testnet: SDK install, operator credentials, balance query, and an HBAR transfer. - - **Coming Soon** — This page is under construction. - +## Prerequisites -## Overview +- Go 1.21 or later +- A Hedera testnet account with ECDSA keys from the [developer portal](https://portal.hedera.com) -Set up and use the Hedera Go SDK. +## Step 1: Initialize the module and install the SDK -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +```bash +mkdir hedera-quickstart && cd hedera-quickstart +go mod init hedera-quickstart +go get github.com/hiero-ledger/hiero-sdk-go/v2@latest +go get github.com/joho/godotenv +``` -## Need Help? +## Step 2: Credentials + +Create a `.env` file (and add it to `.gitignore`): + +```dotenv +OPERATOR_ID=0.0.1234 +OPERATOR_KEY=302d300706052b8104000a032200033456... +``` + +`OPERATOR_ID` is your Hedera account ID. `OPERATOR_KEY` is the DER-encoded ECDSA private key; use the **HEX Encoded Private Key** value from the developer portal. + +## Step 3: Connect, query, transfer + +Create `main.go`: + +```go +package main + +import ( + "fmt" + "log" + "os" + + hedera "github.com/hiero-ledger/hiero-sdk-go/v2/sdk" + "github.com/joho/godotenv" +) + +func main() { + if err := godotenv.Load(); err != nil { + log.Fatalf("failed to load .env: %v", err) + } + + operatorID, err := hedera.AccountIDFromString(os.Getenv("OPERATOR_ID")) + if err != nil { + log.Fatalf("bad OPERATOR_ID: %v", err) + } + + operatorKey, err := hedera.PrivateKeyFromString(os.Getenv("OPERATOR_KEY")) + if err != nil { + log.Fatalf("bad OPERATOR_KEY: %v", err) + } + + // Connect to testnet with the operator as the default payer. + client := hedera.ClientForTestnet() + client.SetOperator(operatorID, operatorKey) + + // 1. Query the operator's balance. + balance, err := hedera.NewAccountBalanceQuery(). + SetAccountID(operatorID). + Execute(client) + if err != nil { + log.Fatalf("balance query failed: %v", err) + } + fmt.Printf("Operator balance: %v\n", balance.Hbars) + + // 2. Transfer 1 HBAR to account 0.0.3. + recipient, _ := hedera.AccountIDFromString("0.0.3") + response, err := hedera.NewTransferTransaction(). + AddHbarTransfer(operatorID, hedera.HbarFrom(-1, hedera.HbarUnits.Hbar)). + AddHbarTransfer(recipient, hedera.HbarFrom(1, hedera.HbarUnits.Hbar)). + Execute(client) + if err != nil { + log.Fatalf("transfer failed: %v", err) + } + + receipt, err := response.GetReceipt(client) + if err != nil { + log.Fatalf("receipt failed: %v", err) + } + + fmt.Printf("Transfer status: %s\n", receipt.Status) + fmt.Printf("Transaction ID: %s\n", response.TransactionID) +} +``` + +## Step 4: Run it + +```bash +go run main.go +``` + +Expected output: + +```text +Operator balance: 10000 ℏ +Transfer status: SUCCESS +Transaction ID: 0.0.1234@1700000000.123456789 +``` + +Look up the transaction on HashScan: + +```text +https://hashscan.io/testnet/transaction/ +``` + +## What's next - - Join our developer community + + Generate a new account programmatically and fund it from your operator. - - Explore our repositories + + Mint a native HTS token with custom supply and decimals. + + + Publish a message to HCS for verifiable, ordered audit logs. + + + Full API reference on GitHub. + + + The four Hiero SDKs (JavaScript, Java, Go, Python) share the same API surface, so code translates almost line-for-line between them. Differences are mostly language-idiomatic. + diff --git a/native/quickstart/index.mdx b/native/quickstart/index.mdx index 97f42c68..6b988fa0 100644 --- a/native/quickstart/index.mdx +++ b/native/quickstart/index.mdx @@ -1,7 +1,7 @@ --- title: "Quickstart" description: "Get started with the Hedera SDK in your preferred language." -icon: "rocket" +hidden: true --- {/* TODO: This page needs content */} diff --git a/native/quickstart/java.mdx b/native/quickstart/java.mdx index bfd9488c..6283dcb3 100644 --- a/native/quickstart/java.mdx +++ b/native/quickstart/java.mdx @@ -1,35 +1,143 @@ --- title: "Java Quickstart" -description: "Set up and use the Hedera Java SDK." -icon: "java" +description: "Connect to Hedera testnet from Java, query your balance, and transfer HBAR." --- -{/* TODO: This page needs content */} +This page gets a Java application talking to Hedera testnet: SDK install, operator credentials, balance query, and an HBAR transfer. - - **Coming Soon** — This page is under construction. - +## Prerequisites -## Overview +- JDK 11 or later +- Maven 3.8+ or Gradle 8+ +- A Hedera testnet account with ECDSA keys from the [developer portal](https://portal.hedera.com) -Set up and use the Hedera Java SDK. +## Step 1: Add the SDK dependency -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +For Maven, add to `pom.xml`: -## Need Help? +```xml + + + com.hedera.hashgraph + sdk + 2.72.0 + + + io.grpc + grpc-netty-shaded + 1.73.0 + + +``` + +For Gradle, add to `build.gradle`: + +```groovy +dependencies { + implementation 'com.hedera.hashgraph:sdk:2.72.0' + implementation 'io.grpc:grpc-netty-shaded:1.73.0' +} +``` + +`grpc-netty-shaded` is the network transport. Without it the SDK compiles, then throws at runtime when you actually try to talk to the network. + +## Step 2: Credentials + +Create a `.env` file in your project root (and add it to `.gitignore`): + +```dotenv +OPERATOR_ID=0.0.1234 +OPERATOR_KEY=302d300706052b8104000a032200033456... +``` + +`OPERATOR_ID` is your Hedera account ID. `OPERATOR_KEY` is the DER-encoded ECDSA private key; use the **HEX Encoded Private Key** value from the developer portal. + +## Step 3: Connect, query, transfer + +Create `src/main/java/HederaQuickstart.java`: + +```java +import com.hedera.hashgraph.sdk.*; +import io.github.cdimascio.dotenv.Dotenv; + +public class HederaQuickstart { + + public static void main(String[] args) throws Exception { + Dotenv env = Dotenv.load(); + AccountId operatorId = AccountId.fromString(env.get("OPERATOR_ID")); + PrivateKey operatorKey = PrivateKey.fromString(env.get("OPERATOR_KEY")); + + // Connect to testnet using the operator account as the default payer. + Client client = Client.forTestnet(); + client.setOperator(operatorId, operatorKey); + + // 1. Query the operator's balance. + Hbar balance = new AccountBalanceQuery() + .setAccountId(operatorId) + .execute(client) + .hbars; + System.out.println("Operator balance: " + balance); + + // 2. Transfer 1 HBAR to account 0.0.3 (a test recipient). + AccountId recipient = AccountId.fromString("0.0.3"); + TransactionResponse response = new TransferTransaction() + .addHbarTransfer(operatorId, Hbar.from(-1)) + .addHbarTransfer(recipient, Hbar.from(1)) + .execute(client); + + TransactionReceipt receipt = response.getReceipt(client); + System.out.println("Transfer status: " + receipt.status); + System.out.println("Transaction ID: " + response.transactionId); + + client.close(); + } +} +``` + +Add a `.env` loader to your dependencies if you don't have one. `io.github.cdimascio:dotenv-java:3.0.0` is the common pick. + +## Step 4: Run it + +```bash +# Maven (package as a JAR with dependencies, then run it) +mvn package +java -cp target/your-artifact-with-dependencies.jar HederaQuickstart + +# Gradle +./gradlew run +``` + +Expected output: + +```text +Operator balance: 10000 ℏ +Transfer status: SUCCESS +Transaction ID: 0.0.1234@1700000000.123456789 +``` + +Look up the transaction on HashScan: + +```text +https://hashscan.io/testnet/transaction/ +``` + +## What's next - - Join our developer community + + Generate a new account programmatically and fund it from your operator. - - Explore our repositories + + Mint a native HTS token with custom supply and decimals. + + + Publish a message to HCS for verifiable, ordered audit logs. + + + Full API reference on GitHub. + + + The four Hiero SDKs (JavaScript, Java, Go, Python) share the same API surface, so code translates almost line-for-line between them. Differences are mostly language-idiomatic. + diff --git a/native/smart-contracts/create.mdx b/native/smart-contracts/create.mdx index 44929d9c..1671a777 100644 --- a/native/smart-contracts/create.mdx +++ b/native/smart-contracts/create.mdx @@ -53,7 +53,6 @@ With [HIP-904](https://hips.hedera.com/hip/hip-904), contracts now support Admin | **Automatic Token Associations** | The maximum number of tokens that this contract can be automatically associated with (i.e., receive air-drops from). | | **Constructor Parameters** | The constructor parameters to pass. | | **Memo** | The memo to be associated with this contract. (max 100 bytes) | -| **Hooks** | Details of [Hiero Hooks](/hedera/core-concepts/accounts/hiero-hooks) to attach immediately after creating this contract. See [Create and Manage Hooks](/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-and-manage-hooks). | ## `ContractCreateFlow()` @@ -198,8 +197,6 @@ Creates a smart contract instance using the file ID of the contract bytecode. | `setAutoRenewAccountId()` | Duration | Optional | | `setMaxAutomaticTokenAssociations()` | int | Optional | -| `addHook()` | [HookCreationDetails](/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-and-manage-hooks) | Optional | -| `setHooks()` | list\<[HookCreationDetails](/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-and-manage-hooks)> | Optional | @@ -275,93 +272,6 @@ fmt.Printf("The new contract ID is %v\n", newContractId) -#### Create a contract with a hook - -This example creates a smart contract with an [account allowance hook](/hedera/core-concepts/accounts/hiero-hooks) attached. The hook's implementing contract must be deployed separately first. - - - -```java Java -// The hook's implementing contract (deployed separately) -ContractId hookContractId = /* ... */; - -// Create hook details -HookCreationDetails hookDetails = new HookCreationDetails() - .setExtensionPoint(HookExtensionPoint.ACCOUNT_ALLOWANCE_HOOK) - .setHookId(1L) - .setEvmHook(new EvmHook().setContractId(hookContractId)) - .setAdminKey(adminKey.getPublicKey()); - -// Create the contract with a hook attached -TransactionResponse txResponse = new ContractCreateTransaction() - .setGas(100_000) - .setBytecodeFileId(bytecodeFileId) - .addHook(hookDetails) - .setMaxTransactionFee(new Hbar(16)) - .execute(client); - -ContractId newContractId = txResponse.getReceipt(client).contractId; -System.out.println("Contract created with hook: " + newContractId); -``` - -```javascript JavaScript -import { - ContractCreateTransaction, - HookCreationDetails, - EvmHook, - HookExtensionPoint, - Long, - Hbar, -} from "@hashgraph/sdk"; - -// The hook's implementing contract (deployed separately) -const hookContractId = /* ... */; - -// Create hook details -const hookDetails = new HookCreationDetails({ - extensionPoint: HookExtensionPoint.ACCOUNT_ALLOWANCE_HOOK, - hookId: Long.fromInt(1), - evmHook: new EvmHook({ contractId: hookContractId }), - adminKey: adminKey.publicKey, -}); - -// Create the contract with a hook attached -const txResponse = await new ContractCreateTransaction() - .setGas(100_000) - .setBytecodeFileId(bytecodeFileId) - .addHook(hookDetails) - .setMaxTransactionFee(new Hbar(16)) - .execute(client); - -const newContractId = (await txResponse.getReceipt(client)).contractId; -console.log("Contract created with hook: " + newContractId); -``` - -```go Go -// The hook's implementing contract (deployed separately) -// hookContractId := ... - -// Create hook details -hookDetails := hook.NewHookCreationDetails(). - SetExtensionPoint(hook.AccountAllowanceHook). - SetHookID(1). - SetEvmHook(hook.NewEvmHook().SetContractID(hookContractId)). - SetAdminKey(adminKey.PublicKey()) - -// Create the contract with a hook attached -txResponse, err := hedera.NewContractCreateTransaction(). - SetGas(100000). - SetBytecodeFileID(bytecodeFileID). - AddHook(hookDetails). - SetMaxTransactionFee(hedera.NewHbar(16)). - Execute(client) - -receipt, err := txResponse.GetReceipt(client) -fmt.Printf("Contract created with hook: %v\n", receipt.ContractID) -``` - - - ## Get transaction values | Method | Type | Requirement | @@ -378,7 +288,6 @@ fmt.Printf("Contract created with hook: %v\n", receipt.ContractID) | `getStakedAccountId()` | AccountId | Optional | | `getAutoRenewAccountId()` | AccountId | Required | | `getAutoRenewPeriod()` | Duration | Required | -| `getHooks()` | list\ | Optional | diff --git a/native/smart-contracts/update.mdx b/native/smart-contracts/update.mdx index 8a9c5b7a..8963c166 100644 --- a/native/smart-contracts/update.mdx +++ b/native/smart-contracts/update.mdx @@ -28,7 +28,6 @@ A transaction that allows you to modify the smart contract entity state like adm | **Auto Renew Account ID** | Indicates the account that will pay the contract's auto-renew fee. If the Auto Renew account id is cleared, then the smart contract's account will be charged the auto-renew fee. | | **Automatic Token Associations** | The maximum number of tokens that this contract can be automatically associated with (i.e., receive air-drops from). | | **Memo** | The new memo to be associated with this contract. | -| **Hooks** | Add or remove [Hiero Hooks](/hedera/core-concepts/accounts/hiero-hooks) from the contract. Deletions are processed before creations, enabling atomic hook replacement. See [Create and Manage Hooks](/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-and-manage-hooks). | ### Methods @@ -45,10 +44,6 @@ A transaction that allows you to modify the smart contract entity state like adm | `setAutoRenewPeriod()` | Duration | Optional | | `setAutoRenewAccountId()` | [AccountId](/hedera/sdks-and-apis/sdks/specialized-types#accountid) | Optional | | `clearAutoRenewAccountId()` | | Optional | -| `addHookToCreate()` | [HookCreationDetails](/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-and-manage-hooks) | Optional | -| `setHooksToCreate()` | list\<[HookCreationDetails](/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-and-manage-hooks)> | Optional | -| `addHookToDelete()` | long | Optional | -| `setHooksToDelete()` | list\ | Optional | ***Note:** The new expiration time must be an instance of type **`Timestamp`**, thus, the **`Timestamp`** object has to be imported from the SDK package. The new expiration time has to be initialized as a new instance of that type.* @@ -141,138 +136,6 @@ fmt.Printf("The transaction consensus status %v\n", transactionStatus) -#### Add hooks to an existing contract - -This example adds an [account allowance hook](/hedera/core-concepts/accounts/hiero-hooks) to an existing smart contract. The hook's implementing contract must be deployed separately first. - - - -```java Java -// Create hook details -HookCreationDetails hookDetails = new HookCreationDetails() - .setExtensionPoint(HookExtensionPoint.ACCOUNT_ALLOWANCE_HOOK) - .setHookId(1L) - .setEvmHook(new EvmHook().setContractId(hookContractId)) - .setAdminKey(adminKey.getPublicKey()); - -// Add the hook to the contract -TransactionResponse txResponse = new ContractUpdateTransaction() - .setContractId(contractId) - .addHookToCreate(hookDetails) - .setMaxTransactionFee(new Hbar(20)) - .freezeWith(client) - .sign(adminKey) - .execute(client); - -TransactionReceipt receipt = txResponse.getReceipt(client); -System.out.println("Hook added to contract: " + receipt.status); -``` - -```javascript JavaScript -import { - ContractUpdateTransaction, - HookCreationDetails, - EvmHook, - HookExtensionPoint, - Long, - Hbar, -} from "@hashgraph/sdk"; - -// Create hook details -const hookDetails = new HookCreationDetails({ - extensionPoint: HookExtensionPoint.ACCOUNT_ALLOWANCE_HOOK, - hookId: Long.fromInt(1), - evmHook: new EvmHook({ contractId: hookContractId }), - adminKey: adminKey.publicKey, -}); - -// Add the hook to the contract -const txResponse = await ( - await new ContractUpdateTransaction() - .setContractId(contractId) - .addHookToCreate(hookDetails) - .setMaxTransactionFee(new Hbar(20)) - .freezeWith(client) - .sign(adminKey) -).execute(client); - -const receipt = await txResponse.getReceipt(client); -console.log("Hook added to contract: " + receipt.status); -``` - -```go Go -// Create hook details -hookDetails := hook.NewHookCreationDetails(). - SetExtensionPoint(hook.AccountAllowanceHook). - SetHookID(1). - SetEvmHook(hook.NewEvmHook().SetContractID(hookContractID)). - SetAdminKey(adminKey.PublicKey()) - -// Add the hook to the contract -txResponse, err := hedera.NewContractUpdateTransaction(). - SetContractID(contractID). - AddHookToCreate(hookDetails). - SetMaxTransactionFee(hedera.NewHbar(20)). - FreezeWith(client). - Sign(adminKey). - Execute(client) - -receipt, err := txResponse.GetReceipt(client) -fmt.Printf("Hook added to contract: %v\n", receipt.Status) -``` - - - -#### Delete hooks from an existing contract - -This example removes a hook by its ID. A hook must have zero storage slots before it can be deleted — clear storage first using [`HookStoreTransaction`](/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-a-hookstore-transaction). - - - -```java Java -TransactionResponse txResponse = new ContractUpdateTransaction() - .setContractId(contractId) - .addHookToDelete(1L) - .setMaxTransactionFee(new Hbar(20)) - .freezeWith(client) - .sign(adminKey) - .execute(client); - -TransactionReceipt receipt = txResponse.getReceipt(client); -System.out.println("Hook deleted from contract: " + receipt.status); -``` - -```javascript JavaScript -import { ContractUpdateTransaction, Long, Hbar } from "@hashgraph/sdk"; - -const txResponse = await ( - await new ContractUpdateTransaction() - .setContractId(contractId) - .addHookToDelete(Long.fromNumber(1)) - .setMaxTransactionFee(new Hbar(20)) - .freezeWith(client) - .sign(adminKey) -).execute(client); - -const receipt = await txResponse.getReceipt(client); -console.log("Hook deleted from contract: " + receipt.status); -``` - -```go Go -txResponse, err := hedera.NewContractUpdateTransaction(). - SetContractID(contractID). - AddHookToDelete(1). - SetMaxTransactionFee(hedera.NewHbar(20)). - FreezeWith(client). - Sign(adminKey). - Execute(client) - -receipt, err := txResponse.GetReceipt(client) -fmt.Printf("Hook deleted from contract: %v\n", receipt.Status) -``` - - - ## Get transaction values | Method | Type | Requirement | @@ -287,8 +150,6 @@ fmt.Printf("Hook deleted from contract: %v\n", receipt.Status) | `getDeclineStakingReward()` | boolean | Optional | | `getAutoRenewAccountId()` | [AccountId](/hedera/sdks-and-apis/sdks/specialized-types#accountid) | Required | | `getAutoRenewPeriod()` | Duration | Required | -| `getHooksToCreate()` | list\ | Optional | -| `getHooksToDelete()` | list\ | Optional | diff --git a/native/tokens/associate.mdx b/native/tokens/associate.mdx index 43fc1718..30687fa9 100644 --- a/native/tokens/associate.mdx +++ b/native/tokens/associate.mdx @@ -47,11 +47,11 @@ There is currently no limit on the number of token IDs that can be associated wi |--------|------|-------------| | `getAccountId()` | AccountId | Returns the account to be associated | | `getTokenIds()` | List<TokenId> | Returns the list of tokens to be associated | -| `getHighVolume()` | boolean | Returns whether this transaction uses [high-volume throttles](/core-concepts/high-volume-entity-creation) | +| `getHighVolume()` | boolean | Returns whether this transaction uses [high-volume throttles](/learn/core-concepts/high-volume-entity-creation#high-volume-throttle-capacity) | - This transaction supports [high-volume entity creation](/hedera/core-concepts/high-volume-entity-creation) + This transaction supports [high-volume entity creation](/learn/core-concepts/high-volume-entity-creation) (HIP-1313). Setting `setHighVolume(true)` routes the transaction through dedicated high-volume throttle capacity with variable-rate pricing for both fungible and NFT mints. Always pair this with `setMaxTransactionFee()` to cap your costs. diff --git a/native/tokens/define.mdx b/native/tokens/define.mdx index 5ebfcbcc..90414d14 100644 --- a/native/tokens/define.mdx +++ b/native/tokens/define.mdx @@ -101,10 +101,10 @@ For non-fungible tokens, the token ID represents an NFT class. Once the token is | `getTokenType()` | TokenType | Returns the token type | | `getSupplyType()` | TokenSupplyType | Returns the supply type | | `getMaxSupply()` | long | Returns the max supply | -| `getHighVolume()` | boolean | Returns whether this transaction uses [high-volume throttles](/core-concepts/high-volume-entity-creation) | +| `getHighVolume()` | boolean | Returns whether this transaction uses [high-volume throttles](/learn/core-concepts/high-volume-entity-creation#high-volume-throttle-capacity) | -This transaction supports [high-volume entity creation](/core-concepts/high-volume-entity-creation) +This transaction supports [high-volume entity creation](/learn/core-concepts/high-volume-entity-creation) (HIP-1313). Setting `setHighVolume(true)` routes the transaction through dedicated high-volume throttle capacity with variable-rate pricing. Always pair this with `setMaxTransactionFee()` to cap your costs. diff --git a/native/tutorials/advanced/hcs-fabric-plugin/virtual-environment.mdx b/native/tutorials/advanced/hcs-fabric-plugin/virtual-environment.mdx index d857287a..3ad12d6d 100644 --- a/native/tutorials/advanced/hcs-fabric-plugin/virtual-environment.mdx +++ b/native/tutorials/advanced/hcs-fabric-plugin/virtual-environment.mdx @@ -1,44 +1,44 @@ ---- -title: "Virtual Environment Setup" ---- - - -Enables developers to run the HCS Hyperledger Fabric sample network using a virtual environment set-up. - -## Requirements - -* [Hedera testnet](/hedera/networks/testnet/testnet-access) account ID and account private key -* [pluggable-hcs repository](https://github.com/hyperledger-labs/pluggable-hcs) -* [Vagrant](https://www.vagrantup.com/downloads.html) -* [Virtual Box](https://www.virtualbox.org/wiki/Downloads) -* Terminal/IDE - -## 1. Open your terminal/IDE and CD to where you would like to clone the fabric-hcs project - -* Clone the **pluggable-hcs** repository and rename the project folder to **fabric** -* Navigate to the **fabric** folder - -``` -git clone https://github.com/hyperledger-labs/pluggable-hcs fabric -cd fabric -``` - -* You should now be in the **fabric** project folder - -## 2. Confirm you are on the master branch - -``` -git branch -``` - -## 3. Navigate to the vagrant folder and start your virtual machine - -``` -cd vagrant -vagrant up -vagrant ssh -``` - -* You should now be back in the **fabric** folder - -Now you have your virtual environment ready to go. Please refer to **step two**: [Build Fabric Binaries and Docker Images](/hedera/tutorials/more-tutorials/get-started-with-the-hedera-consensus-service-fabric-plugin/..#id-2.-build-fabric-binaries-and-docker-images) in the master tutorial to continue. +--- +title: "Virtual Environment Setup" +--- + + +Enables developers to run the HCS Hyperledger Fabric sample network using a virtual environment set-up. + +## Requirements + +* [Hedera testnet](/hedera/networks/testnet/testnet-access) account ID and account private key +* [pluggable-hcs repository](https://github.com/hyperledger-labs/pluggable-hcs) +* [Vagrant](https://www.vagrantup.com/downloads.html) +* [Virtual Box](https://www.virtualbox.org/wiki/Downloads) +* Terminal/IDE + +## 1. Open your terminal/IDE and CD to where you would like to clone the fabric-hcs project + +* Clone the **pluggable-hcs** repository and rename the project folder to **fabric** +* Navigate to the **fabric** folder + +``` +git clone https://github.com/hyperledger-labs/pluggable-hcs fabric +cd fabric +``` + +* You should now be in the **fabric** project folder + +## 2. Confirm you are on the master branch + +``` +git branch +``` + +## 3. Navigate to the vagrant folder and start your virtual machine + +``` +cd vagrant +vagrant up +vagrant ssh +``` + +* You should now be back in the **fabric** folder + +Now you have your virtual environment ready to go. Please refer to **step two**: [Build Fabric Binaries and Docker Images](/native/tutorials/advanced/hcs-fabric-plugin#2-build-fabric-binaries-and-docker-images) in the master tutorial to continue. diff --git a/operators/consensus-node/monitoring.mdx b/operators/consensus-node/monitoring.mdx deleted file mode 100644 index def80538..00000000 --- a/operators/consensus-node/monitoring.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Node Monitoring" -description: "Monitor the health and performance of your Hedera nodes." -icon: "chart-line" ---- - -{/* TODO: This page needs content */} - - - **Coming Soon** — This page is under construction. - - -## Overview - -Monitor the health and performance of your Hedera nodes. - -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} - -## Need Help? - - - - Join our developer community - - - Explore our repositories - - diff --git a/operators/consensus-node/requirements/hardware.mdx b/operators/consensus-node/requirements/hardware.mdx deleted file mode 100644 index 8c7ff96b..00000000 --- a/operators/consensus-node/requirements/hardware.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Hardware Requirements" -description: "Hardware specifications for running a Hedera consensus node." -icon: "microchip" ---- - -{/* TODO: This page needs content */} - - - **Coming Soon** — This page is under construction. - - -## Overview - -Hardware specifications for running a Hedera consensus node. - -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} - -## Need Help? - - - - Join our developer community - - - Explore our repositories - - diff --git a/operators/consensus-node/requirements/network.mdx b/operators/consensus-node/requirements/network.mdx deleted file mode 100644 index 0dd6e3f4..00000000 --- a/operators/consensus-node/requirements/network.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Network Requirements" -description: "Network and connectivity requirements for consensus nodes." -icon: "network-wired" ---- - -{/* TODO: This page needs content */} - - - **Coming Soon** — This page is under construction. - - -## Overview - -Network and connectivity requirements for consensus nodes. - -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} - -## Need Help? - - - - Join our developer community - - - Explore our repositories - - diff --git a/operators/index.mdx b/operators/index.mdx index 01e112bb..344cbef6 100644 --- a/operators/index.mdx +++ b/operators/index.mdx @@ -1,173 +1,54 @@ --- title: "Operators" -description: "Run and operate Hedera infrastructure — mirror nodes, JSON-RPC relay, and consensus nodes." +description: "Run and operate Hedera infrastructure: mirror nodes, JSON-RPC relay, and consensus nodes." mode: wide --- -
- -{/* ── BROWSE BY SECTION ─────────────────────────────────────────────────── */} - +
{/* ── MIRROR NODE ──────────────────────────────────────── */} -
-

- Mirror node operators +
+

+ Mirror node operators

-

+

Mirror nodes stream consensus events from the network and serve them via REST, gRPC, and Web3 APIs.

-
+
- -
+ +
-
Architecture
-
Importer, REST API, gRPC, Web3 — how the mirror node components fit together.
-
- Overview +
Architecture
+
Importer, REST API, gRPC, Web3: how the mirror node components fit together.
+
+ Overview
- -
+ +
-
One-Click Deploy
-
Spin up a mirror node in minutes using the official Helm chart.
-
- Helm - K8s +
One-Click Deploy
+
Spin up a mirror node in minutes using the official Helm chart.
+
+ Helm + K8s
- -
+ +
-
Run Your Own
-
Self-host a mirror node backed by Google Cloud Storage or AWS S3.
-
{/* ── JSON-RPC RELAY ──────────────────────────────────────── */} -
-

- JSON-RPC relay operators +
+

+ JSON-RPC relay operators

-

+

The relay translates Ethereum JSON-RPC requests into Hedera transactions and queries.

-
+
- -
+ +
-
Setup
-
Install and run the relay — local, Docker, or container orchestrator.
+
Setup
+
Install and run the relay: local, Docker, or container orchestrator.
- - {/* ── CONSENSUS NODES ──────────────────────────────────────── */} -
-

- Consensus node operators +
+

+ Consensus node operators

-

- Run a network node — gossip, virtual voting, and the live state of every Hedera service. +

+ Run a network node: gossip, virtual voting, and the live state of every Hedera service.

-
+
- -
+ +
-
-
Deployment
-
Step-by-step procedure for bringing a consensus node online.
-
- Deploy -
-
-
- - -
- -
-
-
Monitoring
-
Metrics, logs, and alerting — what to watch for on a healthy node.
-
- Ops +
+
Deployment
+
Step-by-step procedure for bringing a consensus node online.
+
+ Deploy
- -
+ +
-
-
Requirements
-
Hardware, network, and operational requirements for running a node.
-
{/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Stay connected +
+

+ Stay connected

- diff --git a/operators/json-rpc/configuration.mdx b/operators/json-rpc/configuration.mdx index 5976d036..a30b5fd3 100644 --- a/operators/json-rpc/configuration.mdx +++ b/operators/json-rpc/configuration.mdx @@ -1,35 +1,88 @@ --- title: "JSON-RPC Configuration" -description: "Configure your JSON-RPC relay for optimal performance." -icon: "sliders" +description: "Environment variables and runtime tuning for the Hiero JSON-RPC Relay." --- -{/* TODO: This page needs content */} +The relay is configured through environment variables, typically supplied via a `.env` file at the project root or set directly in the container runtime. The variables below cover the ones you're most likely to need. The relay supports well over a hundred variables in total; for the complete list with defaults, see [`docs/configuration.md`](https://github.com/hiero-ledger/hiero-json-rpc-relay/blob/main/docs/configuration.md) in the repo. - - **Coming Soon** — This page is under construction. - +## Network selection -## Overview +| Variable | Required | Description | +|---|:---:|---| +| `HEDERA_NETWORK` | yes | `mainnet`, `testnet`, `previewnet`, or an IP map for a custom network. | +| `CHAIN_ID` | yes | Hex-encoded chain ID. `0x127` (mainnet, 295), `0x128` (testnet, 296), `0x129` (previewnet, 297), `0x12a` (local node, 298). | +| `MIRROR_NODE_URL` | yes | Base URL of the mirror node REST API the relay reads from. Defaults to `""` (must be set). | -Configure your JSON-RPC relay for optimal performance. +## Operator account -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +| Variable | Required | Description | +|---|:---:|---| +| `OPERATOR_ID_MAIN` | yes | Hedera account ID that pays for relay-issued transactions (e.g. `0.0.1234`). | +| `OPERATOR_KEY_MAIN` | yes | Operator private key in the format specified by `OPERATOR_KEY_FORMAT`. Keep secret. | +| `OPERATOR_KEY_FORMAT` | no | One of `DER`, `HEX_ECDSA`, `HEX_ED25519`. Defaults to `DER`. | -## Need Help? +The operator account pays for the relay's submitted transactions. It does not need a large balance unless you're serving high write volume. - - - Join our developer community - - - Explore our repositories +## Listening interface + +| Variable | Default | Description | +|---|:---:|---| +| `SERVER_PORT` | `7546` | TCP port the HTTP JSON-RPC server listens on. | + +For the WebSocket server, use the `.env.ws.example` template; it ships with its own port and host settings on port `8546` by default. + +## Rate limiting + +IP-based rate limiting is **disabled by default**. Set `RATE_LIMIT_DISABLED=false` to turn it on; the relay then applies three tiers, each covering a different cost class of method. + +| Variable | Default | Description | +|-------|:---:|---| +| `RATE_LIMIT_DISABLED` | `true` | When `true`, IP-based rate limiting is off. Set to `false` to enforce the tier limits below. | +| `TIER_1_RATE_LIMIT` | `100` | Max request count per `LIMIT_DURATION` for the most expensive endpoints. | +| `TIER_2_RATE_LIMIT` | `800` | Max request count per `LIMIT_DURATION` for moderate-cost endpoints. | +| `TIER_3_RATE_LIMIT` | `1600` | Max request count per `LIMIT_DURATION` for cheap static-return endpoints. | +| `LIMIT_DURATION` | `60000` | Window length in milliseconds. | +| `DEFAULT_RATE_LIMIT` | `200` | Fallback request limit for methods not assigned a specific tier. | + +Tune these based on traffic and how much operator HBAR you're willing to spend on writes. + +## Caching + +The relay caches mirror node responses to absorb burst read traffic. + +| Variable | Default | Description | +|---|:---:|---| +| `CACHE_MAX` | `1000` | Maximum number of items the in-memory cache will hold before evicting. | +| `CACHE_TTL` | `3600000` | Default cache TTL in milliseconds (1 hour). | +| `MIRROR_NODE_LIMIT_PARAM` | `100` | Max page size when paginating mirror node lists. | + +For Redis-backed caching across multiple relay instances, see the `REDIS_*` variables in the repo's reference table. + +## Sanity-check a configuration + +After editing variables, restart the relay and confirm chain ID and a simple read both work: + +```bash wrap +docker compose restart +sleep 5 + +# 1. Chain ID matches your CHAIN_ID setting +curl -s -X POST http://localhost:7546 \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}' + +# 2. A balance read against a known account (replace EVM address) +curl -s -X POST http://localhost:7546 \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","id":2,"method":"eth_getBalance","params":["0x0000000000000000000000000000000000000002","latest"]}' +``` + +If both return non-error JSON, the relay is reading from the mirror node correctly. + +## See also + + + + Initial install and Docker Compose bring-up. diff --git a/operators/json-rpc/index.mdx b/operators/json-rpc/index.mdx index 1f30e54e..11ee3f06 100644 --- a/operators/json-rpc/index.mdx +++ b/operators/json-rpc/index.mdx @@ -1,35 +1,53 @@ --- title: "JSON-RPC Relay" -description: "Run your own JSON-RPC relay for EVM compatibility." -icon: "network-wired" +description: "What the Hiero JSON-RPC Relay is, who runs it, and when to host your own." --- -{/* TODO: This page needs content */} +The Hiero JSON-RPC Relay is an open-source service that speaks the Ethereum JSON-RPC protocol on top of the Hedera network. EVM tools (Hardhat, Foundry, Ethers.js, Viem, MetaMask) speak JSON-RPC; Hedera consensus nodes speak gRPC. The relay translates between the two, plus pulls historical state from a mirror node. - - **Coming Soon** — This page is under construction. - +Repository: [`hiero-ledger/hiero-json-rpc-relay`](https://github.com/hiero-ledger/hiero-json-rpc-relay). License: Apache-2.0. -## Overview +## Three ways to get an RPC endpoint -Run your own JSON-RPC relay for EVM compatibility. +For most teams, "running the relay" means picking one of three options based on the use case. -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +| Option | When it fits | Cost | +|---|---|---| +| [Hashio](https://github.com/hiero-ledger/hiero-json-rpc-relay) (free public relay, development use only) | Development, hobby projects, low-volume reads | Free, throttled | +| [Third-party managed provider](/evm/development/json-rpc#community-hosted-json-rpc-relays) (Arkhia, Validation Cloud, Hgraph, QuickNode, thirdweb) | Production traffic with SLAs | Paid, varies by provider | +| Self-hosted | Production workloads where you control config, retention, and rate limits | Infra cost only | -## Need Help? +Hashio is the easiest path for "I just need a testnet endpoint right now." It's _not_ intended for production traffic. + +## Public endpoints + +| Network | Chain ID | Hashio endpoint | +|---|:---:|---| +| Mainnet | `295` | `https://mainnet.hashio.io/api` | +| Testnet | `296` | `https://testnet.hashio.io/api` | +| Previewnet | `297` | `https://previewnet.hashio.io/api` | + +Drop one of these into MetaMask, Hardhat, or Foundry as your RPC URL with the matching chain ID. You're done. For production, replace Hashio with your own relay or a commercial provider. + +## When to run your own + +Self-hosting makes sense when you need any of: + +- Higher throughput than community endpoints throttle to +- Custom rate-limiting rules per consumer +- Tighter control over which mirror node the relay reads from +- An RPC endpoint inside a private VPC, not on the public internet +- Specific log retention, metrics, or audit requirements + +If none of these apply, a managed provider is almost always less operational work. + +## Next steps - - Join our developer community + + Install and run the relay locally or in a container orchestrator. - - Explore our repositories + + Environment variables, chain ID, mirror node URL, caching, rate limits. diff --git a/operators/json-rpc/setup.mdx b/operators/json-rpc/setup.mdx index f78bb52d..78b96428 100644 --- a/operators/json-rpc/setup.mdx +++ b/operators/json-rpc/setup.mdx @@ -1,35 +1,86 @@ --- title: "JSON-RPC Setup" -description: "Step-by-step guide to setting up a JSON-RPC relay." -icon: "wrench" +description: "Install and run the Hiero JSON-RPC Relay locally or in a container orchestrator." --- -{/* TODO: This page needs content */} +This page walks through getting the [Hiero JSON-RPC Relay](https://github.com/hiero-ledger/hiero-json-rpc-relay) running. For an overview of what the relay is and when you'd want to self-host, see the [JSON-RPC Relay overview](/operators/json-rpc/index). - - **Coming Soon** — This page is under construction. - +## Prerequisites -## Overview +- Docker 20.10+ and Docker Compose +- A Hedera account on the network you're targeting (mainnet, testnet, or previewnet) with HBAR to pay for the relay's internal transactions +- The account's ECDSA or ED25519 private key in a format the relay supports (`DER`, `HEX_ECDSA`, or `HEX_ED25519` set via `OPERATOR_KEY_FORMAT`) -Step-by-step guide to setting up a JSON-RPC relay. +You also need access to a mirror node REST endpoint for the same network. The public Hedera-hosted mirror nodes work fine for getting started: -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} +| Network | Mirror node base URL | +|------------|--------------------------------------------| +| Mainnet | `https://mainnet.mirrornode.hedera.com` | +| Testnet | `https://testnet.mirrornode.hedera.com` | +| Previewnet | `https://previewnet.mirrornode.hedera.com` | -## Need Help? +## Run with Docker Compose - - - Join our developer community - - - Explore our repositories +Clone the repo and copy the HTTP example env file: + +```bash +git clone https://github.com/hiero-ledger/hiero-json-rpc-relay.git +cd hiero-json-rpc-relay +cp .env.http.example .env +``` + +The repo ships two env templates: `.env.http.example` for the JSON-RPC HTTP server (what you usually want) and `.env.ws.example` for the WebSocket server. Pick the one that matches the workload, or run both. + +Edit `.env` and set the minimum required values: + +```dotenv wrap +HEDERA_NETWORK=testnet +CHAIN_ID=0x128 # 296 in hex (testnet) +MIRROR_NODE_URL=https://testnet.mirrornode.hedera.com +OPERATOR_ID_MAIN=0.0.1234 +OPERATOR_KEY_MAIN=302d300706052b8104000a0322000334... +OPERATOR_KEY_FORMAT=DER +``` + +Then bring it up: + +```bash +docker compose up -d +``` + +By default the relay listens on port `7546` for HTTP and `8546` for WebSocket. Verify HTTP with a chain-ID call: + +```bash +curl -X POST http://localhost:7546 \ + -H 'Content-Type: application/json' \ + -d '{"jsonrpc":"2.0","id":"1","method":"eth_chainId","params":[null]}' +``` + +Expected response: + +```json +{"jsonrpc":"2.0","id":"1","result":"0x128"} +``` + +`0x128` is `296` in hex, which is Hedera testnet. If you see that, the relay is up and pointed at the right network. + +## Connect MetaMask or Hardhat + +Point your tooling at the relay's URL and the matching chain ID. For a self-hosted relay against testnet: + +| Field | Value | +|---|---| +| RPC URL | `http://:7546` | +| Chain ID | `296` | +| Currency symbol | `HBAR` | +| Block explorer | `https://hashscan.io/testnet` | + +For the full per-EVM-tool wiring, see the [setup guides under EVM Developers](/evm/quickstart/setup-metamask). + +## Next + + + + Tune chain ID, mirror node URL, rate limits, caching, and logging. diff --git a/operators/mirror-node/architecture.mdx b/operators/mirror-node/architecture.mdx index dd24d693..f3e8e242 100644 --- a/operators/mirror-node/architecture.mdx +++ b/operators/mirror-node/architecture.mdx @@ -1,35 +1,85 @@ --- title: "Mirror Node Architecture" -description: "Understand how mirror nodes work and their role in the Hedera network." -icon: "sitemap" +description: "How the Hedera mirror node components fit together: importer, database, REST API, gRPC, and Web3 APIs." --- -{/* TODO: This page needs content */} +A Hedera mirror node is several services that share a PostgreSQL database. Consensus nodes write record and event files (plus sidecar files for richer smart contract data) to cloud object storage. The mirror node pulls those files down, validates them, populates the database, and exposes the data through several APIs. - - **Coming Soon** — This page is under construction. - +Repo: [`hiero-ledger/hiero-mirror-node`](https://github.com/hiero-ledger/hiero-mirror-node). License: Apache-2.0. -## Overview +## Component overview -Understand how mirror nodes work and their role in the Hedera network. +```mermaid +graph TD + CN[Hedera consensus nodes] + BUCKET[GCS or S3 bucket] + IMP[Importer] + DB[(PostgreSQL)] + REST[REST API] + GRPC[gRPC API] + WEB3[Web3 API] + OTHER[GraphQL, REST Java, Rosetta] -{/* -## Content Checklist -- [ ] Write introduction -- [ ] Add code examples -- [ ] Include diagrams if needed -- [ ] Add related links -- [ ] Review and polish -*/} + CN -->|record + event + sidecar files| BUCKET + BUCKET -->|polled and downloaded| IMP + IMP -->|validates and inserts| DB + DB --> REST + DB --> GRPC + DB --> WEB3 + DB --> OTHER +``` -## Need Help? +## The pieces, by role + +### Importer + +The data-ingestion service. Polls the configured cloud bucket (GCS for the Hedera-hosted mirror nodes; S3 is also supported), pulls down each new file, verifies signatures match the network's supermajority, parses contents, and writes rows into PostgreSQL. + +Implemented in Java with Spring Boot. This is the most resource-intensive component because signature verification and high-volume inserts both happen here. Run it via the project's Gradle target (`./gradlew :importer:run`) or the official Docker image. + +### PostgreSQL database + +A single Postgres instance (or cluster, in production) holds every parsed transaction, account state snapshot, token, topic message, smart contract event log, and address book change. Schemas track entity history so callers can read state at a specific consensus timestamp. Default port is `5432`. + +The Hedera-hosted mainnet database is on the order of several terabytes. Self-hosters typically partition by consensus timestamp and prune older partitions to control disk. + +### REST API + +Default port `5551`. Exposes the standard Hedera mirror node endpoints documented under the [Mirror Node REST API](/hedera/sdks-and-apis/rest-api): `GET /api/v1/transactions/{id}`, `/accounts/{id}`, `/tokens/{id}`, `/contracts/{id}`, etc. Read-only, no authentication required, no transaction fees. This is the API most application code talks to. + +### gRPC API + +Default port `5600`. Streams Hedera Consensus Service topic messages as they're imported. Clients subscribe to a topic ID and receive messages in consensus order. SDKs (Java, Go, JavaScript) wrap this through their `TopicMessageQuery` API. + +The public Hedera-hosted gRPC mirror endpoints require TLS and apply per-IP throttling. + +### Web3 API + +Answers the read-side of Ethereum's JSON-RPC: `eth_call`, `eth_getBalance`, `eth_getCode`, `eth_getStorageAt`, `debug_traceTransaction`. The JSON-RPC relay forwards these methods to the Web3 API instead of to consensus nodes, because consensus nodes don't keep historical state. + +Together with the JSON-RPC relay, the Web3 API is what makes EVM tooling work against Hedera. + +### Other services + +The repo also ships GraphQL, REST Java, Rosetta, and Monitor services. They share the same database and are independently deployable; each is its own subdirectory in the repo (`graphql/`, `rest-java/`, `rosetta/`, `monitor/`). Most self-hosters don't run them unless they have a specific reason. + +## How data flows for a single transaction + +1. A client submits a transaction to a consensus node. +2. Consensus nodes reach agreement, assign a consensus timestamp, and execute the transaction. +3. After the record-file close interval, the consensus node uploads the record file, its signature, and any sidecar files to the cloud bucket. +4. The importer pulls the file, verifies signatures, parses the record, writes rows to PostgreSQL. +5. The transaction is now visible at `GET /api/v1/transactions/{id}` and via the gRPC and Web3 APIs. + +End-to-end latency from network consensus to mirror node visibility is usually a few seconds. + +## See also - - Join our developer community + + Full endpoint reference for the REST API surface. - - Explore our repositories + + GCS- or S3-backed deployment guide for hosting your own mirror node. diff --git a/reference/index.mdx b/reference/index.mdx index 5e1894f3..e9b1d934 100644 --- a/reference/index.mdx +++ b/reference/index.mdx @@ -1,309 +1,112 @@ --- title: "Reference" -description: "Complete API and protocol reference — REST, gRPC, Protobuf, and status APIs for every Hedera service." +description: "Complete API and protocol reference: REST, gRPC, Protobuf, and status APIs for every Hedera service." mode: wide --- -
- -{/* ── BROWSE BY API ─────────────────────────────────────────────────── */} - +
{/* ── REST API ENDPOINTS ──────────────────────────────────────── */} -
-
-

- Mirror node REST endpoints +
+ -

+

Query historical and live state of every Hedera entity over plain HTTP.

-
+
- -
+ +
-
Accounts
-
List, query, NFTs, allowances, staking, rewards.
+
Accounts
+
List, query, NFTs, allowances, staking, rewards.
- -
+ +
-
Balances
-
HBAR and token balances at any historical timestamp.
+
Balances
+
HBAR and token balances at any historical timestamp.
- -
+ +
-
Blocks
-
Block-level views over consensus events for EVM compatibility.
+
Blocks
+
Block-level views over consensus events for EVM compatibility.
- -
+ +
-
Tokens
-
HTS token metadata, balances, NFTs, and supply snapshots.
+
Tokens
+
HTS token metadata, balances, NFTs, and supply snapshots.
- -
+ +
-
Topics
-
HCS topic info and historical message retrieval.
+
Topics
+
HCS topic info and historical message retrieval.
- -
+ +
-
Transactions
-
Transaction history, fees, records, and receipts.
+
Transactions
+
Transaction history, fees, records, and receipts.
- -
+ +
-
Contracts
-
Bytecode, state, logs, and call results for deployed contracts.
+
Contracts
+
Bytecode, state, logs, and call results for deployed contracts.
- -
+ +
-
Schedules
-
Pending and executed scheduled transactions.
+
Schedules
+
Pending and executed scheduled transactions.
- - {/* ── PROTOBUF SERVICES ──────────────────────────────────────── */} -
-
-

- Protobuf services +
+ -

- Wire-level definitions every SDK uses under the hood — submit raw transactions yourself. +

+ Wire-level definitions every SDK uses under the hood: submit raw transactions yourself.

-
+
- -
+ +
-
Crypto Service
-
Account create, transfer, allowance, delete — and balance/info queries.
-
- Accounts +
Crypto Service
+
Account create, transfer, allowance, delete, plus balance/info queries.
+
+ Accounts
- -
+ +
-
Token Service
-
HTS create, mint, burn, freeze, KYC, custom fees — full token lifecycle.
-
- HTS +
Token Service
+
HTS create, mint, burn, freeze, KYC, custom fees: full token lifecycle.
+
+ HTS
- -
+ +
-
Consensus Service
-
HCS topic create/update/delete and submit-message protobufs.
-
- HCS +
Consensus Service
+
HCS topic create/update/delete and submit-message protobufs.
+
+ HCS
- -
+ +
-
Smart Contract Service
-
EVM contract create, call, update, get-info, get-bytecode.
-
- EVM +
Smart Contract Service
+
EVM contract create, call, update, get-info, get-bytecode.
+
+ EVM
- -
+ +
-
Schedule Service
-
Multi-party scheduled transactions — create, sign, delete, query.
-
- HSS +
Schedule Service
+
Multi-party scheduled transactions: create, sign, delete, query.
+
+ HSS
- -
+ +
-
File Service
-
File create, append, update, delete and content/info queries.
-
{/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Stay connected +
+

+ Stay connected

- diff --git a/reference/rest-api/index.mdx b/reference/rest-api/index.mdx index 49620936..47d4af82 100644 --- a/reference/rest-api/index.mdx +++ b/reference/rest-api/index.mdx @@ -1,6 +1,6 @@ --- title: "Mirror Node REST API" -sidebarTitle: REST API +sidebarTitle: REST API description: "The mirror node REST API offers the ability to query transaction information." --- diff --git a/revamp/audit-inbound-links.py b/revamp/audit-inbound-links.py new file mode 100755 index 00000000..5094d094 --- /dev/null +++ b/revamp/audit-inbound-links.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python3 +""" +Audit inbound docs links from hedera.com (or any external site) against: + 1. docs.json `redirects` (with :slug* wildcard support) + 2. Actual .mdx files on disk in this repo + +Reports each inbound URL as one of: + OK_FILE — resolves directly to an .mdx file + OK_REDIRECT — matches a redirect rule in docs.json + BROKEN — would 404 (no file, no redirect match) + +Three input modes: + --crawl URL Crawl a live site for links to docs.hedera.com + --grep DIR Grep a local checkout (hedera.com repo) for docs links + --file PATH Read a newline-delimited list of URLs from a file + +Usage examples: + ./audit-inbound-links.py --crawl https://hedera.com --depth 2 + ./audit-inbound-links.py --grep ../hedera.com + ./audit-inbound-links.py --file inbound-links.txt + ./audit-inbound-links.py --file - # read from stdin + +Output: a table on stdout, plus exit 1 if any BROKEN entries are found. +Add --json for machine-readable output. +""" + +from __future__ import annotations + +import argparse +import json +import os +import re +import subprocess +import sys +import urllib.parse +import urllib.request +from collections import deque +from html.parser import HTMLParser +from pathlib import Path + +DOCS_HOST = "docs.hedera.com" +REPO_ROOT = Path(__file__).resolve().parent.parent +DOCS_JSON = REPO_ROOT / "docs.json" + + +# ── Path classification ───────────────────────────────────────────────────── + +def load_redirects() -> list[tuple[re.Pattern, str]]: + """Compile each docs.json redirect source into a regex.""" + with open(DOCS_JSON) as f: + cfg = json.load(f) + compiled = [] + for entry in cfg.get("redirects", []): + src = entry["source"] + dst = entry["destination"] + # Convert Mintlify-style `:slug*` (greedy wildcard) and `:slug` (single segment) + # into anchored regex patterns. After re.escape, `:slug*` becomes `:slug\*` + # (colon is NOT escaped; only `*` is), so match the escaped form. + pattern = re.escape(src) + pattern = re.sub(r":[a-zA-Z_]+\\\*", ".*", pattern) # :slug* -> .* + pattern = re.sub(r":[a-zA-Z_]+", "[^/]+", pattern) # :slug -> single segment + compiled.append((re.compile(f"^{pattern}/?$"), dst)) + return compiled + + +def file_exists_for_path(url_path: str) -> bool: + """Return True if url_path maps to an .mdx file on disk.""" + p = url_path.strip("/").split("?")[0].split("#")[0] + if not p: + p = "index" + candidates = [ + REPO_ROOT / f"{p}.mdx", + REPO_ROOT / p / "index.mdx", + ] + return any(c.exists() for c in candidates) + + +def classify(url_path: str, redirects: list[tuple[re.Pattern, str]]) -> tuple[str, str]: + """Return (status, detail) for a single docs.hedera.com path. + + Order: + 1. Legacy `/hedera/...` paths: prefer a redirect match over the on-disk file, + since the `hedera/` directory is being phased out by the revamp. + 2. Everything else: prefer file on disk, fall back to redirect, else BROKEN. + """ + clean = url_path.split("?")[0].split("#")[0] + is_legacy = clean.startswith("/hedera/") or clean == "/hedera" + + if is_legacy: + for pattern, dst in redirects: + if pattern.match(clean): + return ("OK_REDIRECT", f"→ {dst}") + if file_exists_for_path(clean): + return ("OK_FILE", f"{clean} (legacy, no redirect — add one!)") + return ("BROKEN", clean) + + if file_exists_for_path(clean): + return ("OK_FILE", clean) + for pattern, dst in redirects: + if pattern.match(clean): + return ("OK_REDIRECT", f"→ {dst}") + return ("BROKEN", clean) + + +# ── Input modes ───────────────────────────────────────────────────────────── + +class LinkExtractor(HTMLParser): + def __init__(self) -> None: + super().__init__() + self.hrefs: list[str] = [] + + def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None: + if tag != "a": + return + for k, v in attrs: + if k == "href" and v: + self.hrefs.append(v) + + +def crawl(start_url: str, depth: int, same_host_only: bool = True) -> set[str]: + """BFS crawl, collecting absolute URLs that point at docs.hedera.com.""" + parsed_start = urllib.parse.urlparse(start_url) + start_host = parsed_start.netloc + seen_pages: set[str] = set() + docs_links: set[str] = set() + queue: deque[tuple[str, int]] = deque([(start_url, 0)]) + + while queue: + url, d = queue.popleft() + if url in seen_pages: + continue + seen_pages.add(url) + try: + req = urllib.request.Request(url, headers={"User-Agent": "docs-audit/1.0"}) + with urllib.request.urlopen(req, timeout=15) as resp: + ctype = resp.headers.get("Content-Type", "") + if "html" not in ctype.lower(): + continue + body = resp.read().decode("utf-8", errors="ignore") + except Exception as e: + print(f" ! fetch failed {url}: {e}", file=sys.stderr) + continue + + ex = LinkExtractor() + ex.feed(body) + for href in ex.hrefs: + absolute = urllib.parse.urljoin(url, href) + p = urllib.parse.urlparse(absolute) + if p.netloc == DOCS_HOST: + docs_links.add(absolute) + elif d < depth and (not same_host_only or p.netloc == start_host): + if p.scheme in ("http", "https"): + queue.append((absolute, d + 1)) + return docs_links + + +def grep_repo(dir_path: Path) -> set[str]: + """Grep a local checkout for docs.hedera.com URLs.""" + pat = r"https?://docs\.hedera\.com[^\s\"'<>)]*" + try: + out = subprocess.check_output( + ["grep", "-rEho", pat, str(dir_path)], + stderr=subprocess.DEVNULL, + ).decode("utf-8", errors="ignore") + except subprocess.CalledProcessError: + out = "" + return {line.strip().rstrip(".,;:'\")") for line in out.splitlines() if line.strip()} + + +def read_file(path: str) -> set[str]: + stream = sys.stdin if path == "-" else open(path) + return {line.strip() for line in stream if line.strip() and not line.startswith("#")} + + +# ── Main ──────────────────────────────────────────────────────────────────── + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + src = ap.add_mutually_exclusive_group(required=True) + src.add_argument("--crawl", metavar="URL", help="Crawl a live site for links to docs.hedera.com") + src.add_argument("--grep", metavar="DIR", help="Grep a local checkout for docs.hedera.com URLs") + src.add_argument("--file", metavar="PATH", help="Read URLs from a file (use '-' for stdin)") + ap.add_argument("--depth", type=int, default=2, help="Crawl depth (default 2)") + ap.add_argument("--json", action="store_true", help="Emit JSON instead of a table") + ap.add_argument("--only-broken", action="store_true", help="Print only BROKEN entries") + args = ap.parse_args() + + if args.crawl: + print(f"Crawling {args.crawl} (depth={args.depth})…", file=sys.stderr) + urls = crawl(args.crawl, args.depth) + elif args.grep: + print(f"Grepping {args.grep}…", file=sys.stderr) + urls = grep_repo(Path(args.grep)) + else: + urls = read_file(args.file) + + print(f"Found {len(urls)} unique docs.hedera.com URLs", file=sys.stderr) + + redirects = load_redirects() + results = [] + for url in sorted(urls): + path = urllib.parse.urlparse(url).path or "/" + status, detail = classify(path, redirects) + results.append({"url": url, "path": path, "status": status, "detail": detail}) + + if args.only_broken: + results = [r for r in results if r["status"] == "BROKEN"] + + if args.json: + json.dump(results, sys.stdout, indent=2) + sys.stdout.write("\n") + else: + widths = {"status": 12, "path": 60} + print(f"{'STATUS':<{widths['status']}} {'PATH':<{widths['path']}} DETAIL") + print("-" * (widths["status"] + widths["path"] + 20)) + for r in results: + print(f"{r['status']:<{widths['status']}} {r['path'][:widths['path']]:<{widths['path']}} {r['detail']}") + + counts = {"OK_FILE": 0, "OK_REDIRECT": 0, "BROKEN": 0} + for r in results: + counts[r["status"]] = counts.get(r["status"], 0) + 1 + print("", file=sys.stderr) + print(f"Summary: {counts['OK_FILE']} OK_FILE, {counts['OK_REDIRECT']} OK_REDIRECT, {counts['BROKEN']} BROKEN", file=sys.stderr) + return 1 if counts["BROKEN"] else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/revamp/create-placeholders.sh b/revamp/create-placeholders.sh index 7e23e316..f1243d49 100755 --- a/revamp/create-placeholders.sh +++ b/revamp/create-placeholders.sh @@ -396,21 +396,6 @@ placeholder "operators/json-rpc/configuration.mdx" \ "Configure your JSON-RPC relay for optimal performance." \ "sliders" -placeholder "operators/consensus-node/requirements/hardware.mdx" \ - "Hardware Requirements" \ - "Hardware specifications for running a Hedera consensus node." \ - "microchip" - -placeholder "operators/consensus-node/requirements/network.mdx" \ - "Network Requirements" \ - "Network and connectivity requirements for consensus nodes." \ - "network-wired" - -placeholder "operators/consensus-node/monitoring.mdx" \ - "Node Monitoring" \ - "Monitor the health and performance of your Hedera nodes." \ - "chart-line" - # ============================================================================ # REFERENCE SECTION — New Pages # ============================================================================ diff --git a/revamp/docs.json b/revamp/docs.json index e17d4ae2..4a9ac5b1 100644 --- a/revamp/docs.json +++ b/revamp/docs.json @@ -71,9 +71,8 @@ "footer": { "socials": { "discord": "https://hedera.com/discord", - "facebook": "https://www.facebook.com/hederanetwork", - "linkedin": "https://www.linkedin.com/company/hashgraph", - "medium": "https://medium.com/hashgraph", + "linkedin": "https://www.linkedin.com/company/hedera-network", + "medium": "https://medium.com/hedera", "reddit": "https://www.reddit.com/r/Hedera/", "telegram": "https://t.me/hederahashgraph", "x": "https://X.com/hedera", @@ -81,6 +80,734 @@ } }, "redirects": [ + { + "source": "/hedera/sdks-and-apis/sdks/tokens", + "destination": "/native/tokens" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/associate-tokens-to-an-account", + "destination": "/native/tokens/associate" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/burn-a-token", + "destination": "/native/tokens/burn" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/custom-token-fees", + "destination": "/native/tokens/custom-fees" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/define-a-token", + "destination": "/native/tokens/define" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/delete-a-token", + "destination": "/native/tokens/delete" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/freeze-an-account", + "destination": "/native/tokens/freeze" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/get-account-token-balance", + "destination": "/native/tokens/get-balance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/mint-a-token", + "destination": "/native/tokens/mint" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/pause-a-token", + "destination": "/native/tokens/pause" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/transfer-tokens", + "destination": "/native/tokens/transfer" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/unfreeze-an-account", + "destination": "/native/tokens/unfreeze" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/unpause-a-token", + "destination": "/native/tokens/unpause" + }, + { + "source": "/hedera/sdks-and-apis/sdks/tokens/wipe-a-token", + "destination": "/native/tokens/wipe" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/adjust-an-allowance", + "destination": "/native/accounts/adjust-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/approve-an-allowance", + "destination": "/native/accounts/approve-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/create-an-account", + "destination": "/native/accounts/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/get-account-balance", + "destination": "/native/accounts/get-balance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/get-account-info", + "destination": "/native/accounts/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/transfer-cryptocurrency", + "destination": "/native/accounts/transfer" + }, + { + "source": "/hedera/sdks-and-apis/sdks/cryptocurrency/update-an-account", + "destination": "/native/accounts/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-storage/append-to-a-file", + "destination": "/native/files/append" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-storage/create-a-file", + "destination": "/native/files/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/call-a-smart-contract-function-1", + "destination": "/native/smart-contracts/call" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/basic-types/tokensupplytype", + "destination": "/reference/protobuf/basic-types" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/consensus/consensus-service", + "destination": "/reference/protobuf/consensus" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/miscellaneous/transactionreceipt", + "destination": "/reference/protobuf/miscellaneous" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/miscellaneous/transactionresponse", + "destination": "/reference/protobuf/miscellaneous" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/schedule-service/schedulecreate", + "destination": "/reference/protobuf/schedule" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/customfees/fixedfee", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/customfees/royaltyfee", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenfeescheduleupdate", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenfreezeaccount", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenpause", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service/tokenwipeaccount", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-consensus-service-api-1", + "destination": "/reference/protobuf/consensus" + }, + { + "source": "/hedera/sdks-and-apis/rest-api/balance", + "destination": "/reference/rest-api/balances" + }, + { + "source": "/hedera/core-concepts/smart-contracts/hedera-services-integration-with-smart-contracts", + "destination": "/evm/hedera-services" + }, + { + "source": "/hedera/core-concepts/smart-contracts/hethers", + "destination": "/evm" + }, + { + "source": "/hedera/core-concepts/smart-contracts/hyperledger-besu-evm", + "destination": "/evm" + }, + { + "source": "/hedera/core-concepts/smart-contracts/solidity-variables-and-opcodes", + "destination": "/evm" + }, + { + "source": "/hedera/core-concepts/smart-contracts/verifying-smart-contracts", + "destination": "/evm/development/verifying" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-smart-contract-using-hardhat", + "destination": "/evm/tools/hardhat/setup" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-smart-contract-using-hardhat-hedera-json-rpc-relay", + "destination": "/evm/tools/hardhat/setup" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-smart-contract-using-remix", + "destination": "/evm/tools/remix" + }, + { + "source": "/hedera/tutorials/smart-contracts/deploy-a-subgraph-using-the-graph-and-json-rpc-relay", + "destination": "/evm/integrations/indexing/the-graph" + }, + { + "source": "/hedera/tutorials/smart-contracts/hscs-workshop/hardhat", + "destination": "/evm/tools/hardhat/setup" + }, + { + "source": "/hedera/tutorials/smart-contracts-service/deploy-a-contract-using-the-hedera-token-service", + "destination": "/evm/hedera-services" + }, + { + "source": "/hedera/tutorials/smart-contracts-service/deploy-your-first-smart-contract", + "destination": "/evm/quickstart" + }, + { + "source": "/hedera/tutorials/more-tutorials/getting-started-with-the-hedera-consensus-service-fabric-plugin", + "destination": "/native/tutorials/advanced/hcs-fabric-plugin" + }, + { + "source": "/hedera/tutorials/more-tutorials/json-rpc-connection", + "destination": "/evm/tutorials/intermediate/json-rpc-connections" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hooks-and-policies", + "destination": "/solutions/ai/agent-kit/hooks-and-policies" + }, + { + "source": "/hedera/open-source-solutions/hiero-cli/overview", + "destination": "/solutions/tools/hiero-cli/overview" + }, + { + "source": "/hedera/open-source-solutions/supra-oracle", + "destination": "/evm/integrations/oracles/supra" + }, + { + "source": "/docs/hedera-sdks", + "destination": "/native" + }, + { + "source": "/docs/join-hedera-testnet", + "destination": "/learn/networks/testnet" + }, + { + "source": "/docs/:slug*", + "destination": "/" + }, + { + "source": "/guides/getting-started/environment-set-up", + "destination": "/learn/getting-started" + }, + { + "source": "/guides/resources/tutorials", + "destination": "/native/tutorials" + }, + { + "source": "/hethers/:slug*", + "destination": "/evm" + }, + { + "source": "/hethers", + "destination": "/evm" + }, + { + "source": "/page/:slug*", + "destination": "/" + }, + { + "source": "/hedera/core-concepts/hashgraph-consensus-algorithms", + "destination": "/learn/core-concepts/hashgraph" + }, + { + "source": "/hedera/core-concepts/hashgraph-consensus-algorithms/virtual-voting", + "destination": "/learn/core-concepts/hashgraph/virtual-voting" + }, + { + "source": "/hedera/core-concepts/keys-and-signatures", + "destination": "/learn/core-concepts/keys" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/hedera-mirror-node", + "destination": "/operators/mirror-node" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/one-click-mirror-node-deployment", + "destination": "/operators/mirror-node/one-click-deploy" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/run-your-own-beta-mirror-node", + "destination": "/operators/mirror-node/run-your-own" + }, + { + "source": "/hedera/core-concepts/mirror-nodes/run-your-own-beta-mirror-node/run-your-own-mirror-node-gcs", + "destination": "/operators/mirror-node/run-your-own/gcs" + }, + { + "source": "/hedera/core-concepts/scheduled-transaction", + "destination": "/learn/core-concepts/transactions/scheduled" + }, + { + "source": "/hedera/core-concepts/smart-contracts", + "destination": "/learn/core-concepts/services/smart-contracts" + }, + { + "source": "/hedera/core-concepts/smart-contracts/deploying-smart-contracts", + "destination": "/evm/development/deploying" + }, + { + "source": "/hedera/core-concepts/smart-contracts/gas-and-fees", + "destination": "/evm/development/gas-fees" + }, + { + "source": "/hedera/core-concepts/smart-contracts/json-rpc-relay", + "destination": "/evm/development/json-rpc" + }, + { + "source": "/hedera/core-concepts/smart-contracts/understanding-hederas-evm-differences-and-compatibility", + "destination": "/evm/migration" + }, + { + "source": "/hedera/core-concepts/smart-contracts/understanding-hederas-evm-differences-and-compatibility/for-evm-developers-migrating-to-hedera", + "destination": "/evm/migration/key-differences-overview" + }, + { + "source": "/hedera/core-concepts/tokens/erc-evm-compatible-tokenization", + "destination": "/evm/hedera-services/hybrid/erc-compatibility" + }, + { + "source": "/hedera/core-concepts/tokens/hedera-token-service-hts-native-tokenization", + "destination": "/learn/core-concepts/tokens/hts-overview" + }, + { + "source": "/hedera/core-concepts/tokens/hybrid-hts-+-evm-tokenization", + "destination": "/evm/hedera-services/hybrid" + }, + { + "source": "/hedera/core-concepts/tokens/tokenization-on-hedera", + "destination": "/learn/core-concepts/tokens" + }, + { + "source": "/hedera/core-concepts/transactions-and-queries", + "destination": "/learn/core-concepts/transactions" + }, + { + "source": "/hedera/getting-started-evm-developers/add-hedera-to-metamask", + "destination": "/evm/quickstart/setup-metamask" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-a-smart-contract-using-remix", + "destination": "/evm/quickstart/deploy-with-remix" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-a-smart-contract-with-foundry", + "destination": "/evm/quickstart/deploy-with-foundry" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-a-smart-contract-with-hardhat", + "destination": "/evm/quickstart/deploy-with-hardhat" + }, + { + "source": "/hedera/getting-started-evm-developers/deploy-your-first-contract-with-hedera-contract-builder", + "destination": "/evm/quickstart/deploy-with-contract-builder" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/create-a-token", + "destination": "/native/tutorials/tokens/create-first-token" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/create-a-topic", + "destination": "/native/tutorials/consensus/create-first-topic" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/create-an-account", + "destination": "/learn/getting-started/create-portal-account" + }, + { + "source": "/hedera/getting-started-hedera-native-developers/quickstart", + "destination": "/native/quickstart/javascript" + }, + { + "source": "/hedera/networks/mainnet/fees/transaction-records", + "destination": "/learn/networks/mainnet/transaction-records" + }, + { + "source": "/hedera/networks/mainnet/mainnet-nodes", + "destination": "/operators/consensus-node" + }, + { + "source": "/hedera/networks/mainnet/mainnet-nodes/node-requirements", + "destination": "/operators/consensus-node/requirements" + }, + { + "source": "/hedera/networks/release-notes", + "destination": "/learn/release-notes" + }, + { + "source": "/hedera/networks/release-notes/services", + "destination": "/learn/release-notes/services" + }, + { + "source": "/hedera/networks/testnet/testnet-access", + "destination": "/learn/networks/testnet/access" + }, + { + "source": "/hedera/networks/testnet/testnet-nodes", + "destination": "/learn/networks/testnet/nodes" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera", + "destination": "/solutions/ai" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/agent-lab", + "destination": "/solutions/ai/agent-lab" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit", + "destination": "/solutions/ai/agent-kit" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hedera-agent-kit-js/create-js-hooks-and-policies", + "destination": "/solutions/ai/agent-kit/js/create-hooks-and-policies" + }, + { + "source": "/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hedera-agent-kit-js/create-js-plugins", + "destination": "/solutions/ai/agent-kit/js/create-plugins" + }, + { + "source": "/hedera/open-source-solutions/asset-tokenization-studio-ats", + "destination": "/solutions/tokenization/ats" + }, + { + "source": "/hedera/open-source-solutions/asset-tokenization-studio-ats/web-user-interface-ui", + "destination": "/solutions/tokenization/ats/web-ui" + }, + { + "source": "/hedera/open-source-solutions/interoperability-and-bridging", + "destination": "/evm/integrations/cross-chain" + }, + { + "source": "/hedera/open-source-solutions/oracle-networks", + "destination": "/evm/integrations/oracles" + }, + { + "source": "/hedera/open-source-solutions/oracle-networks/chainlink-oracles", + "destination": "/evm/integrations/oracles/chainlink" + }, + { + "source": "/hedera/open-source-solutions/stablecoin-studio", + "destination": "/solutions/tokenization/stablecoin" + }, + { + "source": "/hedera/open-source-solutions/stablecoin-studio/cli-management", + "destination": "/solutions/tokenization/stablecoin/cli" + }, + { + "source": "/hedera/open-source-solutions/stablecoin-studio/web-ui-application", + "destination": "/solutions/tokenization/stablecoin/web-ui" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/consensus", + "destination": "/reference/protobuf/consensus" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/file-service", + "destination": "/reference/protobuf/file" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/token-service", + "destination": "/reference/protobuf/token" + }, + { + "source": "/hedera/sdks-and-apis/hedera-status-api", + "destination": "/reference/status-api" + }, + { + "source": "/hedera/sdks-and-apis/rest-api/smart-contracts", + "destination": "/reference/rest-api/contracts" + }, + { + "source": "/hedera/sdks-and-apis/sdks", + "destination": "/native/fundamentals" + }, + { + "source": "/hedera/sdks-and-apis/sdks/address-book", + "destination": "/native/fundamentals/address-book" + }, + { + "source": "/hedera/sdks-and-apis/sdks/keys/create-a-threshold-key", + "destination": "/native/keys/threshold-key" + }, + { + "source": "/hedera/sdks-and-apis/sdks/keys/generate-a-new-key-pair", + "destination": "/native/keys/generate-key-pair" + }, + { + "source": "/hedera/sdks-and-apis/sdks/pseudorandom-number-generator", + "destination": "/native/prng" + }, + { + "source": "/hedera/sdks-and-apis/sdks/schedule-transaction/create-a-schedule-transaction", + "destination": "/native/scheduled/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/schedule-transaction/get-schedule-info", + "destination": "/native/scheduled/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/schedule-transaction/sign-a-schedule-transaction", + "destination": "/native/scheduled/sign" + }, + { + "source": "/hedera/sdks-and-apis/sdks/set-up-your-local-network", + "destination": "/native/fundamentals/local-network" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar", + "destination": "/native/accounts" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/adjust-an-allowance", + "destination": "/native/accounts/adjust-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/approve-an-allowance", + "destination": "/native/accounts/approve-allowance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/create-an-account", + "destination": "/native/accounts/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/delete-an-account", + "destination": "/native/accounts/delete" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/errors", + "destination": "/native/accounts/errors" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/get-account-balance", + "destination": "/native/accounts/get-balance" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/get-account-info", + "destination": "/native/accounts/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/transfer-cryptocurrency", + "destination": "/native/accounts/transfer" + }, + { + "source": "/hedera/sdks-and-apis/sdks/accounts-and-hbar/update-an-account", + "destination": "/native/accounts/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service", + "destination": "/native/files" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/append-to-a-file", + "destination": "/native/files/append" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/create-a-file", + "destination": "/native/files/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/delete-a-file", + "destination": "/native/files/delete" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/errors", + "destination": "/native/files/errors" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/get-file-contents", + "destination": "/native/files/get-contents" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/get-file-info", + "destination": "/native/files/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/file-service/update-a-file", + "destination": "/native/files/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service", + "destination": "/native/consensus" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/create-a-topic", + "destination": "/native/consensus/create-topic" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/delete-a-topic", + "destination": "/native/consensus/delete-topic" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/errors", + "destination": "/native/consensus/errors" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/get-topic-info", + "destination": "/native/consensus/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/get-topic-message", + "destination": "/native/consensus/get-message" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/submit-a-message", + "destination": "/native/consensus/submit-message" + }, + { + "source": "/hedera/sdks-and-apis/sdks/consensus-service/update-a-topic", + "destination": "/native/consensus/update-topic" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts", + "destination": "/native/smart-contracts" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/call-a-smart-contract-function", + "destination": "/native/smart-contracts/call" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/create-a-smart-contract", + "destination": "/native/smart-contracts/create" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/ethereum-transaction", + "destination": "/native/smart-contracts/ethereum-transaction" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/get-smart-contract-info", + "destination": "/native/smart-contracts/get-info" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/hedera-service-solidity-libraries", + "destination": "/native/smart-contracts/solidity-libraries" + }, + { + "source": "/hedera/sdks-and-apis/sdks/smart-contracts/update-a-smart-contract", + "destination": "/native/smart-contracts/update" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service", + "destination": "/native/tokens" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/airdrop-a-token", + "destination": "/native/tokens/airdrop" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/cancel-a-token", + "destination": "/native/tokens/cancel" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/claim-a-token", + "destination": "/native/tokens/claim" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/reject-an-airdrop", + "destination": "/native/tokens/reject-airdrop" + }, + { + "source": "/hedera/sdks-and-apis/sdks/token-service/update-nft-metadata", + "destination": "/native/tokens/update-nft-metadata" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions", + "destination": "/native/transactions" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions/create-a-batch-transaction", + "destination": "/native/transactions/batch" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions/get-a-transaction-receipt", + "destination": "/native/transactions/receipt" + }, + { + "source": "/hedera/sdks-and-apis/sdks/transactions/get-a-transaction-record", + "destination": "/native/transactions/record" + }, + { + "source": "/hedera/tutorials/consensus/submit-your-first-message", + "destination": "/native/tutorials/consensus/submit-first-message" + }, + { + "source": "/hedera/tutorials/demo-applications", + "destination": "/solutions/examples/demos" + }, + { + "source": "/hedera/tutorials/local-node/how-to-set-up-a-hedera-local-node", + "destination": "/native/local-dev/setup-local-node" + }, + { + "source": "/hedera/tutorials/more-tutorials", + "destination": "/native/tutorials/more" + }, + { + "source": "/hedera/tutorials/more-tutorials/get-started-with-the-hedera-consensus-service-fabric-plugin", + "destination": "/native/tutorials/advanced/hcs-fabric-plugin" + }, + { + "source": "/hedera/tutorials/more-tutorials/how-to-create-a-personal-access-token-api-key-on-the-hedera-portal", + "destination": "/native/tutorials/getting-started/create-api-key" + }, + { + "source": "/hedera/tutorials/more-tutorials/schedule-your-first-transaction", + "destination": "/native/tutorials/scheduled/schedule-first" + }, + { + "source": "/hedera/tutorials/smart-contracts", + "destination": "/evm/tutorials" + }, + { + "source": "/hedera/tutorials/smart-contracts/how-to-mint-and-burn-an-erc-721-token-using-hardhat-and-ethers-part-1", + "destination": "/evm/tutorials/advanced/erc721-hardhat/part1-mint-burn" + }, + { + "source": "/hedera/tutorials/smart-contracts/how-to-verify-a-smart-contract-on-hashscan", + "destination": "/evm/tutorials/intermediate/verify-hashscan" + }, + { + "source": "/hedera/tutorials/smart-contracts/hts-x-evm-part-1-how-to-mint-nfts", + "destination": "/evm/tutorials/hedera/hts-evm/part1-mint-nfts" + }, + { + "source": "/hedera/tutorials/starter-projects", + "destination": "/solutions/examples/starters" + }, + { + "source": "/hedera/tutorials/token", + "destination": "/native/tutorials/tokens" + }, + { + "source": "/hedera/tutorials/token/create-and-transfer-your-first-nft", + "destination": "/native/tutorials/tokens/create-transfer-nft" + }, + { + "source": "/hedera/tutorials/token/structure-your-token-metadata-using-json-schema-v2", + "destination": "/native/tutorials/tokens/metadata-schema" + }, { "source": "/hedera/getting-started", "destination": "/learn/getting-started/what-is-hedera" @@ -113,6 +840,14 @@ "source": "/hedera/core-concepts/:slug*", "destination": "/learn/core-concepts/:slug*" }, + { + "source": "/hedera/sdks-and-apis/sdks/:slug*", + "destination": "/native/:slug*" + }, + { + "source": "/hedera/sdks-and-apis/hedera-api/:slug*", + "destination": "/reference/protobuf/:slug*" + }, { "source": "/hedera/sdks-and-apis", "destination": "/reference" @@ -201,10 +936,26 @@ "navigation": { "global": { "anchors": [ - {"anchor": "Status", "href": "http://status.hedera.com/", "icon": "signal"}, - {"anchor": "Discord", "href": "https://hedera.com/discord", "icon": "discord"}, - {"anchor": "Playground", "href": "https://portal.hedera.com/playground", "icon": "code"}, - {"anchor": "Blog", "href": "https://hedera.com/blog", "icon": "newspaper"} + { + "anchor": "Status", + "href": "http://status.hedera.com/", + "icon": "signal" + }, + { + "anchor": "Discord", + "href": "https://hedera.com/discord", + "icon": "discord" + }, + { + "anchor": "Playground", + "href": "https://portal.hedera.com/playground", + "icon": "code" + }, + { + "anchor": "Blog", + "href": "https://hedera.com/blog", + "icon": "newspaper" + } ] }, "tabs": [ @@ -1057,13 +1808,10 @@ "pages": [ "operators/consensus-node/index", "operators/consensus-node/deployment", - "operators/consensus-node/monitoring", { "group": "Requirements", "pages": [ "operators/consensus-node/requirements/index", - "operators/consensus-node/requirements/hardware", - "operators/consensus-node/requirements/network", "operators/consensus-node/requirements/faq" ] } diff --git a/revamp/protected-pages.txt b/revamp/protected-pages.txt index 66728845..3c8a00ea 100644 --- a/revamp/protected-pages.txt +++ b/revamp/protected-pages.txt @@ -35,3 +35,35 @@ # ============================================================================ 5966193496764b1af59a57379b99fd810a29ef27|hedera/readme.mdx|learn/index.mdx|Revamped as Learn tab landing page — links updated to 7-tab structure; source is old root README with hedera/ links + +# ── Pages authored/edited directly on dev (not derived from hedera/ source) ── +# Added when real content + fixes were written directly into the 7-tab structure. +# migrate.sh skips these; it warns (PROTECTED-CHANGED) if the hedera/ source later changes. +ef7e54659c8767385437e690f20ad53bbdf2dd9f|hedera/getting-started-evm-developers.mdx|evm/index.mdx|Edited directly on dev; preserve over hedera/ source +c8dd09f40c8d2a33f8ece82ae7df239ec109e5e2|hedera/open-source-solutions/hedera-contract-builder.mdx|evm/tools/contract-builder.mdx|Edited directly on dev; preserve over hedera/ source +84cd00ce37f6599ff532d4c414027b40427a6bcd|hedera/core-concepts/accounts/account-properties.mdx|learn/core-concepts/accounts/account-properties.mdx|Edited directly on dev; preserve over hedera/ source +bb87f662971e3525264236528e92ac36369ddad1|hedera/getting-started-hedera-native-developers/portal-hedera-com-playground.mdx|learn/getting-started/portal-playground.mdx|Edited directly on dev; preserve over hedera/ source +017b2b4dfca46e61e76d781763c5ddb6ff48abbc|hedera/sdks-and-apis/sdks/accounts-and-hbar/create-an-account.mdx|native/accounts/create.mdx|Edited directly on dev; preserve over hedera/ source +3f72bf3db6c2021aad07e02ee0adf5975c8156ed|hedera/sdks-and-apis/sdks.mdx|native/fundamentals/index.mdx|Edited directly on dev; preserve over hedera/ source +37af2ad049890eb07f791227816b73922b4e36ca|hedera/getting-started-hedera-native-developers.mdx|native/index.mdx|Edited directly on dev; preserve over hedera/ source +44929d9c0f04b939b44c93a83476b3f41eedad75|hedera/sdks-and-apis/sdks/smart-contracts/create-a-smart-contract.mdx|native/smart-contracts/create.mdx|Edited directly on dev; preserve over hedera/ source +8a9c5b7a2cb4620fe469bab7980b90b697eb9e6f|hedera/sdks-and-apis/sdks/smart-contracts/update-a-smart-contract.mdx|native/smart-contracts/update.mdx|Edited directly on dev; preserve over hedera/ source +43fc1718ada7947fcbfe63b4aef45e67e50909a3|hedera/sdks-and-apis/sdks/token-service/associate-tokens-to-an-account.mdx|native/tokens/associate.mdx|Edited directly on dev; preserve over hedera/ source +5ebfcbcc0698e9150380fa385784347ce24e68dd|hedera/sdks-and-apis/sdks/token-service/define-a-token.mdx|native/tokens/define.mdx|Edited directly on dev; preserve over hedera/ source +d857287a4cf8414d7663e17a484edda43d72ffdd|hedera/tutorials/more-tutorials/get-started-with-the-hedera-consensus-service-fabric-plugin/virtual-environment-set-up.mdx|native/tutorials/advanced/hcs-fabric-plugin/virtual-environment.mdx|Edited directly on dev; preserve over hedera/ source +dd3f94ff167617bdcd90af7998f2531e5d5314f4|hedera/sdks-and-apis.mdx|reference/index.mdx|Edited directly on dev; preserve over hedera/ source +476026cb66ad859392fbecf62bc9ec50e5ae272f|hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit.mdx|solutions/ai/agent-kit/index.mdx|Edited directly on dev; preserve over hedera/ source +4330efde1a1c84ea958415ff744a69211631e769|hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hedera-agent-kit-py/quickstart.mdx|solutions/ai/agent-kit/python/quickstart.mdx|Edited directly on dev; preserve over hedera/ source +c129d68fc56212110a70cdf2bdba99061380f604|hedera/open-source-solutions/hashiodao/governance-token-dao.mdx|solutions/governance/hashiodao/governance-token-dao.mdx|Edited directly on dev; preserve over hedera/ source +7eae7158568176f721cfae1894b74db47aeb3775|hedera/open-source-solutions/hashiodao/multisig-dao.mdx|solutions/governance/hashiodao/multisig-dao.mdx|Edited directly on dev; preserve over hedera/ source +2eea53f0c606040fb9f1d76f7835600cecf31918|hedera/open-source-solutions/hashiodao/nft-dao.mdx|solutions/governance/hashiodao/nft-dao.mdx|Edited directly on dev; preserve over hedera/ source +f25cb9b80ba7c0f86dbba534ab258dcc58d09e99|hedera/open-source-solutions.mdx|solutions/index.mdx|Edited directly on dev; preserve over hedera/ source +f741646ed2bf5c6f91d9c8a552a55b3c60f62816|hedera/open-source-solutions/asset-tokenization-studio-ats/frequently-asked-questions-faqs.mdx|solutions/tokenization/ats/faq.mdx|Edited directly on dev; preserve over hedera/ source +b6534ef550ef21aba2ed939136083f1b3e237b5c|hedera/open-source-solutions/nft-studio.mdx|solutions/tokenization/nft-studio/index.mdx|Edited directly on dev; preserve over hedera/ source +896f6b0d3f6d7745f946752e308e2fb96e514b45|hedera/support-and-community/contributing-guide/style-guide/language-and-grammar.mdx|support/contributing/style-guide/language-grammar.mdx|Edited directly on dev; preserve over hedera/ source +042b72111d33e350ab88c985ae7423f03586d5cf|hedera/faqs/getting-started.mdx|support/faq/getting-started.mdx|Edited directly on dev; preserve over hedera/ source +4e702c88f071d1fad1c10880735387685eb5f2d7|hedera/faqs/network-governance.mdx|support/faq/governance.mdx|Edited directly on dev; preserve over hedera/ source +abc403e8edc126e54e7c27e93695813c67a66a56|hedera/faqs/hbar.mdx|support/faq/hbar.mdx|Edited directly on dev; preserve over hedera/ source +6b2bb5480b8e947b07e331e6ed3a5665157ae6ae|hedera/support-and-community/glossary.mdx|support/glossary.mdx|Edited directly on dev; preserve over hedera/ source +9b88b6f5b46e16b2856781dfa9219bc16cc2b8b9|hedera/support-and-community.mdx|support/index.mdx|Edited directly on dev; preserve over hedera/ source +4f9407079dcd49a8414bff76484ba2d10c730347|hedera/getting-started-evm-developers/hedera-testnet-faucet.mdx|learn/getting-started/testnet-faucet.mdx|Edited directly on dev; preserve over hedera/ source (also feeds evm/quickstart/get-test-hbar.mdx) diff --git a/snippets/showcases/playground-showcase.jsx b/snippets/showcases/playground-showcase.jsx index dfa1d7ba..9c06bcf3 100644 --- a/snippets/showcases/playground-showcase.jsx +++ b/snippets/showcases/playground-showcase.jsx @@ -26,7 +26,7 @@ export const PlaygroundShowcase = () => { items: [ { icon: 'play', title: 'Developer Playground', - desc: 'Run real Hedera transactions in your browser — no setup.', + desc: 'Run real Hedera transactions in your browser, no setup.', href: 'https://portal.hedera.com/playground', preview: { kind: 'embed', url: 'https://portal.hedera.com/playground', label: 'portal.hedera.com/playground' } }, @@ -222,13 +222,9 @@ export const PlaygroundShowcase = () => {
)} - {/* Two-column body — left list fixed-ish, right preview takes the rest */} -
+ {/* Two-column body — left list fixed-ish, right preview takes the rest. + Responsive: single column on mobile, side-by-side at ≥768px (see style.css). */} +
{/* Left: item list */}
{tab.items.map((it, i) => { diff --git a/snippets/showcases/quickstarts-showcase.jsx b/snippets/showcases/quickstarts-showcase.jsx index a36515bb..24e645b1 100644 --- a/snippets/showcases/quickstarts-showcase.jsx +++ b/snippets/showcases/quickstarts-showcase.jsx @@ -23,7 +23,7 @@ export const QuickstartsShowcase = () => { items: [ { icon: ICON.play, title: 'Getting started', desc: 'Set up an account, get testnet HBAR, and run your first transaction.', href: '/learn/getting-started/index' }, { icon: ICON.coin, title: 'Testnet faucet', desc: 'Fund your testnet account with free HBAR to start building.', href: '/learn/getting-started/testnet-faucet' }, - { icon: ICON.wrench, title: 'Choose your path', desc: 'EVM vs native SDK — pick the right starting point for what you’re building.', href: '/learn/getting-started/choose-your-path' }, + { icon: ICON.wrench, title: 'Choose your path', desc: 'EVM vs native SDK: pick the right starting point for what you’re building.', href: '/learn/getting-started/choose-your-path' }, { icon: ICON.coin, title: 'Quickstart', desc: 'Install the JavaScript SDK and submit your first transaction.', href: '/native/quickstart/javascript' }, { icon: ICON.fox, title: 'MetaMask setup', desc: 'Connect MetaMask to the Hedera EVM JSON-RPC relay.', href: '/evm/quickstart/setup-metamask' } ] @@ -66,7 +66,7 @@ export const QuickstartsShowcase = () => { {/* Cards grid — fixed 2 columns */}
{TABS[tabIdx].items.map((it) => ( diff --git a/solutions/ai/agent-kit/index.mdx b/solutions/ai/agent-kit/index.mdx index 5c19433f..20f37d2e 100644 --- a/solutions/ai/agent-kit/index.mdx +++ b/solutions/ai/agent-kit/index.mdx @@ -19,10 +19,10 @@ or build backend systems that leverage AI for on-chain operations. The Agent Kit is available in two languages and provides different tools: - + Build with TypeScript/JavaScript using npm - + Build with Python using pip diff --git a/solutions/ai/agent-kit/js/plugins.mdx b/solutions/ai/agent-kit/js/plugins.mdx index acf6da0c..436b7d02 100644 --- a/solutions/ai/agent-kit/js/plugins.mdx +++ b/solutions/ai/agent-kit/js/plugins.mdx @@ -254,7 +254,7 @@ if (toolCall) { ## Publish and Register Your Plugin -See [How To: Publish & Register Your Plugin](/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hedera-agent-kit-js/how-to-publish-plugin) for instructions on creating, publishing, and registering your plugin with the Hedera Agent Kit ecosystem. +See [How To: Publish & Register Your Plugin](/solutions/ai/agent-kit/js/create-plugins) for instructions on creating, publishing, and registering your plugin with the Hedera Agent Kit ecosystem. --- diff --git a/solutions/ai/agent-kit/python/quickstart.mdx b/solutions/ai/agent-kit/python/quickstart.mdx index 4330efde..20dd28ec 100644 --- a/solutions/ai/agent-kit/python/quickstart.mdx +++ b/solutions/ai/agent-kit/python/quickstart.mdx @@ -9,7 +9,7 @@ Build LLM-powered applications that interact with the Hedera Network using Pytho This is the **Python edition** of the [Hedera Agent Kit](https://github.com/hashgraph/hedera-agent-kit-py), providing a flexible and extensible framework for building AI-powered Hedera agents. -> **Note**: See also the [JavaScript SDK documentation](/hedera/open-source-solutions/ai-studio-on-hedera/hedera-ai-agent-kit/hedera-agent-kit-js) for the JS/TypeScript version. +> **Note**: See also the [JavaScript SDK documentation](/solutions/ai/agent-kit/js/quickstart) for the JS/TypeScript version. The Hedera Agent Kit (Python) provides: diff --git a/solutions/examples/index.mdx b/solutions/examples/index.mdx index d822a659..98b4cb4a 100644 --- a/solutions/examples/index.mdx +++ b/solutions/examples/index.mdx @@ -1,7 +1,7 @@ --- title: "Examples & Demos" description: "Sample applications, starter projects, and demos built on Hedera." -icon: "flask" +hidden: true --- {/* TODO: This page needs content */} diff --git a/solutions/governance/hashiodao/governance-token-dao.mdx b/solutions/governance/hashiodao/governance-token-dao.mdx index c129d68f..776c7454 100644 --- a/solutions/governance/hashiodao/governance-token-dao.mdx +++ b/solutions/governance/hashiodao/governance-token-dao.mdx @@ -1,106 +1,106 @@ ---- -title: "Governance Token DAO" ---- - - -## Token DAO Creation - -[After creating and funding a Hedera account](/hedera/open-source-solutions/hashiodao/..#getting-started-with-hashiodao), navigate to the HashioDAO web application dashboard and connect your wallet. Once your wallet is connected, click **Create a new DAO** and this will guide you through a series of setup steps where you will define the details of your DAO including name and governance type. - - - - - -Read and and accept the disclaimer and click **Next**. - - - - - -Define the details of your DAO by filling out each field. These details are important because it creates your DAO's public profile and how the community will be identified. - - - - - -*** - -## Governance Models - -Choose the governance model that works best with your organizations's goals. There are three models to choose from: governance token, multisig, and NFT. - - - - - -The **`createDAO()`** function is called on the [FTDaoFactory](https://github.com/hashgraph/hedera-accelerator-defi-dex/blob/main/contracts/dao/FTDAOFactory.sol) factory contract when you create a token DAO. This initiates a new DAO treasury smart contract based on the parameters you set for you token. These parameters will be set in the next step. - -*** - -## Define Governance Token and Voting Details - -Define the DAO's governance token and voting details. You have the option to create a new governance token or use an existing one. For the purposes of this tutorial, we will create a new one. Define the details for your new governance token: - - - - - -Once you click **Create Token** and approve the transaction in your wallet a Governor smart contract is deployed for managing proposals, voting, and executing decisions. This contract streamlines proposal handling and ensures a fair voting process based on community consensus. This transaction will also generate a token ID for your governance token. - - - - - -Set the voting quorum percentage, voting duration, and delay period for votes. To avoid delays, starting with a low quorum percentage is recommended. This can adjusted over time as the community's needs change. - - -DAOs set their quorum percentage depending on their goals and needs. If the quorum is set too high, decisions are only made with a large number of participation from the members. If the quorum is set low, this allows more flexibility in decision making and the chances of proposals being approved would be higher than with a higher quorum. - - - - - - - -Be cautious when depositing governance tokens in to the treasury. Since the treasury does not have voting rights, depositing a large portion of your governance tokens may result in being locked out of creating and voting on proposals and accessing treasury funds. Always check that these allocations don't limit your ability to reach a voting quorum. - - -*** - -## Review and Submit to Create New DAO - -Review the DAO details, governance type, and submit the transaction. Approve the DAO creation transaction in your wallet to proceed. - - - - - -Your new DAO should show up on the HashioDAO dashboard once the transaction is approved and confirmed. If the DAO was successfully creation, a "Created new public Governance Token DAO \_\_\_\_" message will pop-up on the top-right corner of your browser (see below for example). - - - - - -Lastly, send in some HBAR to the treasury to finish setting up the DAO by clicking on the **Deposit** button under the **Assets** tab. Approve the transaction in your wallet. - - -When a DAO is created, its financial resources are managed through the DAO treasury smart contract. This contract facilitates the distribution of funds by allowing transactions to be initiated by the admin. In this structure, the role of the admin is fulfilled by the voting (Governor*)* contract. - - - - - - -*** - -## Conclusion and Additional Resources - -Congrats on successfully creating your first DAO using the governance token model! In this guide, you defined and customized the details of the new DAO, governance token, and voting processes. Happy DAO creating! - -➡ [**HashioDAO Repository**](https://github.com/hashgraph/hedera-accelerator-defi-dex-ui) - -➡ [**HashScan Network Explorer**](https://hashscan.io/testnet/dashboard) - -➡ [**HashioDAO Web Application**](https://hashiodao.swirldslabs.com/) - -**➡** [**What is a Goverance Token?**](https://blockchainjournal.com/glossary/what-is-a-governance-token/) +--- +title: "Governance Token DAO" +--- + + +## Token DAO Creation + +[After creating and funding a Hedera account](/native/tutorials/getting-started/create-fund-account), navigate to the HashioDAO web application dashboard and connect your wallet. Once your wallet is connected, click **Create a new DAO** and this will guide you through a series of setup steps where you will define the details of your DAO including name and governance type. + + + + + +Read and and accept the disclaimer and click **Next**. + + + + + +Define the details of your DAO by filling out each field. These details are important because it creates your DAO's public profile and how the community will be identified. + + + + + +*** + +## Governance Models + +Choose the governance model that works best with your organizations's goals. There are three models to choose from: governance token, multisig, and NFT. + + + + + +The **`createDAO()`** function is called on the [FTDaoFactory](https://github.com/hashgraph/hedera-accelerator-defi-dex/blob/main/contracts/dao/FTDAOFactory.sol) factory contract when you create a token DAO. This initiates a new DAO treasury smart contract based on the parameters you set for you token. These parameters will be set in the next step. + +*** + +## Define Governance Token and Voting Details + +Define the DAO's governance token and voting details. You have the option to create a new governance token or use an existing one. For the purposes of this tutorial, we will create a new one. Define the details for your new governance token: + + + + + +Once you click **Create Token** and approve the transaction in your wallet a Governor smart contract is deployed for managing proposals, voting, and executing decisions. This contract streamlines proposal handling and ensures a fair voting process based on community consensus. This transaction will also generate a token ID for your governance token. + + + + + +Set the voting quorum percentage, voting duration, and delay period for votes. To avoid delays, starting with a low quorum percentage is recommended. This can adjusted over time as the community's needs change. + + +DAOs set their quorum percentage depending on their goals and needs. If the quorum is set too high, decisions are only made with a large number of participation from the members. If the quorum is set low, this allows more flexibility in decision making and the chances of proposals being approved would be higher than with a higher quorum. + + + + + + + +Be cautious when depositing governance tokens in to the treasury. Since the treasury does not have voting rights, depositing a large portion of your governance tokens may result in being locked out of creating and voting on proposals and accessing treasury funds. Always check that these allocations don't limit your ability to reach a voting quorum. + + +*** + +## Review and Submit to Create New DAO + +Review the DAO details, governance type, and submit the transaction. Approve the DAO creation transaction in your wallet to proceed. + + + + + +Your new DAO should show up on the HashioDAO dashboard once the transaction is approved and confirmed. If the DAO was successfully creation, a "Created new public Governance Token DAO \_\_\_\_" message will pop-up on the top-right corner of your browser (see below for example). + + + + + +Lastly, send in some HBAR to the treasury to finish setting up the DAO by clicking on the **Deposit** button under the **Assets** tab. Approve the transaction in your wallet. + + +When a DAO is created, its financial resources are managed through the DAO treasury smart contract. This contract facilitates the distribution of funds by allowing transactions to be initiated by the admin. In this structure, the role of the admin is fulfilled by the voting (Governor*)* contract. + + + + + + +*** + +## Conclusion and Additional Resources + +Congrats on successfully creating your first DAO using the governance token model! In this guide, you defined and customized the details of the new DAO, governance token, and voting processes. Happy DAO creating! + +➡ [**HashioDAO Repository**](https://github.com/hashgraph/hedera-accelerator-defi-dex-ui) + +➡ [**HashScan Network Explorer**](https://hashscan.io/testnet/dashboard) + +➡ [**HashioDAO Web Application**](https://hashiodao.swirldslabs.com/) + +**➡** [**What is a Goverance Token?**](https://blockchainjournal.com/glossary/what-is-a-governance-token/) diff --git a/solutions/governance/hashiodao/multisig-dao.mdx b/solutions/governance/hashiodao/multisig-dao.mdx index 7eae7158..f61a4e0a 100644 --- a/solutions/governance/hashiodao/multisig-dao.mdx +++ b/solutions/governance/hashiodao/multisig-dao.mdx @@ -1,80 +1,80 @@ ---- -title: "Multisig DAO" ---- - - -## Multisig DAO Creation - -[After creating and funding a Hedera account](/hedera/open-source-solutions/hashiodao/..#getting-started-with-hashiodao), navigate to the HashioDAO web application dashboard and connect your wallet. Once your wallet is connected, click **Create a new DAO** and this will guide you through a series of setup steps where you will define the details of your DAO including name and governance type. - - - - - -Read and and accept the disclaimer and click **Next**. - - - - - -Define the details of your DAO by filling out each field. These details are important because it creates your DAO's public profile and how the community will be identified. - - - - - -*** - -## Governance Models - -Choose the governance model that works best with your organizations's goals. There are three models to choose from: governance token, multisig, and NFT. - - - - - -The **`createDAO()`** function is called on the [MultisigDaoFactory](https://github.com/hashgraph/hedera-accelerator-defi-dex/blob/main/contracts/dao/MultisigDAOFactory.sol) factory contract when you create a multisig DAO. This initiates a new DAO treasury smart contract based on the parameters you set for you token. These parameters will be set in the next step. - -*** - -## Set Admin Account - -Setting an admin account ID designates the account as the primary administrator responsible for initiating transactions and managing the multisig wallet. - - - - - -*** - -## Define Threshold - -Define the threshold. This is the minimum number of signers required before executing transactions. - - - - - -*** - -## Review and Submit to Create DAO - -Review the DAO details, governance type, and submit the transaction. Approve the DAO creation transaction in your wallet to proceed. - - - - - -*** - -## Conclusion and Additional Resources - -Congrats on successfully creating your first DAO using the multisig model! In this guide, you defined and customized the details of the new DAO, including specifying the admin account and threshold for authorizing transactions. Happy DAO creating! - -➡ [**HashioDAO Repository**](https://github.com/hashgraph/hedera-accelerator-defi-dex-ui) - -➡ [**HashScan Network Explorer**](https://hashscan.io/testnet/dashboard) - -➡ [**HashioDAO Web Application**](https://hashiodao.swirldslabs.com/) - -➡ [**Gnosis Safe Governance Docs**](https://safe.global/governance) +--- +title: "Multisig DAO" +--- + + +## Multisig DAO Creation + +[After creating and funding a Hedera account](/native/tutorials/getting-started/create-fund-account), navigate to the HashioDAO web application dashboard and connect your wallet. Once your wallet is connected, click **Create a new DAO** and this will guide you through a series of setup steps where you will define the details of your DAO including name and governance type. + + + + + +Read and and accept the disclaimer and click **Next**. + + + + + +Define the details of your DAO by filling out each field. These details are important because it creates your DAO's public profile and how the community will be identified. + + + + + +*** + +## Governance Models + +Choose the governance model that works best with your organizations's goals. There are three models to choose from: governance token, multisig, and NFT. + + + + + +The **`createDAO()`** function is called on the [MultisigDaoFactory](https://github.com/hashgraph/hedera-accelerator-defi-dex/blob/main/contracts/dao/MultisigDAOFactory.sol) factory contract when you create a multisig DAO. This initiates a new DAO treasury smart contract based on the parameters you set for you token. These parameters will be set in the next step. + +*** + +## Set Admin Account + +Setting an admin account ID designates the account as the primary administrator responsible for initiating transactions and managing the multisig wallet. + + + + + +*** + +## Define Threshold + +Define the threshold. This is the minimum number of signers required before executing transactions. + + + + + +*** + +## Review and Submit to Create DAO + +Review the DAO details, governance type, and submit the transaction. Approve the DAO creation transaction in your wallet to proceed. + + + + + +*** + +## Conclusion and Additional Resources + +Congrats on successfully creating your first DAO using the multisig model! In this guide, you defined and customized the details of the new DAO, including specifying the admin account and threshold for authorizing transactions. Happy DAO creating! + +➡ [**HashioDAO Repository**](https://github.com/hashgraph/hedera-accelerator-defi-dex-ui) + +➡ [**HashScan Network Explorer**](https://hashscan.io/testnet/dashboard) + +➡ [**HashioDAO Web Application**](https://hashiodao.swirldslabs.com/) + +➡ [**Gnosis Safe Governance Docs**](https://safe.global/governance) diff --git a/solutions/governance/hashiodao/nft-dao.mdx b/solutions/governance/hashiodao/nft-dao.mdx index 2eea53f0..9a69dd48 100644 --- a/solutions/governance/hashiodao/nft-dao.mdx +++ b/solutions/governance/hashiodao/nft-dao.mdx @@ -1,104 +1,104 @@ ---- -title: "NFT DAO" ---- - - -## NFT DAO Creation - -[After creating and funding a Hedera account](/hedera/open-source-solutions/hashiodao/..#getting-started-with-hashiodao), navigate to the HashioDAO web application dashboard and connect your wallet. Once your wallet is connected, click **Create a new DAO** and this will guide you through a series of setup steps where you will define the details of your DAO including name and governance type. - - - - - -Read and and accept the disclaimer and click **Next**. - - - - - -Define the details of your DAO by filling out each field. These details are important because it creates your DAO's public profile and how the community will be identified. - - - - - -*** - -## Governance Models - -Choose the governance model that works best with your organizations's goals. There are three models to choose from: governance token, multisig, and NFT. - - - - - -The **`createDAO()`** function is called on the [NFTDaoFactory](https://github.com/hashgraph/hedera-accelerator-defi-dex/blob/main/contracts/dao/NFTDAOFactory.sol) factory contract when you create an NFT DAO. This initiates a new DAO treasury smart contract based on the parameters you set for you token. These parameters will be set in the next step. - -*** - -## Define NFT and Voting Details - -Define the DAO's NFT and voting details. You have the option to create a new governance token or use an existing one. For the purposes of this tutorial, we will create a new one. Define the details for your new governance token: - - - - - -Once you click **Create Token** and approve the transaction in your wallet a Governor smart contract is deployed for managing proposals, voting, and executing decisions. This contract streamlines proposal handling and ensures a fair voting process based on community consensus. This transaction will also generate a token ID for your governance token. - - - - - -Set the voting quorum percentage, voting duration, and delay period for votes. To avoid delays, starting with a low quorum percentage is recommended. This can adjusted over time as the community's needs change. - - -DAOs set their quorum percentage depending on their goals and needs. If the quorum is set too high, decisions are only made with a large number of participation from the members. If the quorum is set low, this allows more flexibility in decision making and the chances of proposals being approved would be higher than with a higher quorum. - - - - - - -Be cautious when depositing governance tokens into the treasury since it does not have voting rights. If you deposit a large portion it could lock you out of proposal creation, voting, and treasury access. - -*** - -## Review and Submit to Create New DAO - -Review the DAO details, governance type, and submit the transaction. Approve the DAO creation transaction in your wallet to proceed. - - - - - -*** - -## Mint and Deposit NFT - -Once your DAO is created, you need to mint the NFT and deposit to the treasury to finish setting up. Click the **Mint NFT** button, enter the NFT URL, and click the **Mint NFT Tokens** button. - - - - - - -When a DAO is created, its financial resources are managed through the DAO treasury smart contract. This contract facilitates the distribution of funds by allowing transactions to be initiated by the admin. In this structure, the role of the admin is fulfilled by the voting (Governor*)* contract. - - -When the "Successfully minted NFT tokens" window pops up, click on the **Deposit** button and select the NFT and serial number from dropdown, and **Deposit Fund**. - - - - - -*** - -## Conclusion and Additional Resources - -Congrats on successfully creating your first DAO using the NFT governance model! In this guide, you defined and customized the details of the new DAO, including minting governance NFTs. Happy DAO creating! - -➡ [**HashioDAO Repository**](https://github.com/hashgraph/hedera-accelerator-defi-dex-ui) - -➡ [**HashScan Network Explorer**](https://hashscan.io/testnet/dashboard) +--- +title: "NFT DAO" +--- + + +## NFT DAO Creation + +[After creating and funding a Hedera account](/native/tutorials/getting-started/create-fund-account), navigate to the HashioDAO web application dashboard and connect your wallet. Once your wallet is connected, click **Create a new DAO** and this will guide you through a series of setup steps where you will define the details of your DAO including name and governance type. + + + + + +Read and and accept the disclaimer and click **Next**. + + + + + +Define the details of your DAO by filling out each field. These details are important because it creates your DAO's public profile and how the community will be identified. + + + + + +*** + +## Governance Models + +Choose the governance model that works best with your organizations's goals. There are three models to choose from: governance token, multisig, and NFT. + + + + + +The **`createDAO()`** function is called on the [NFTDaoFactory](https://github.com/hashgraph/hedera-accelerator-defi-dex/blob/main/contracts/dao/NFTDAOFactory.sol) factory contract when you create an NFT DAO. This initiates a new DAO treasury smart contract based on the parameters you set for you token. These parameters will be set in the next step. + +*** + +## Define NFT and Voting Details + +Define the DAO's NFT and voting details. You have the option to create a new governance token or use an existing one. For the purposes of this tutorial, we will create a new one. Define the details for your new governance token: + + + + + +Once you click **Create Token** and approve the transaction in your wallet a Governor smart contract is deployed for managing proposals, voting, and executing decisions. This contract streamlines proposal handling and ensures a fair voting process based on community consensus. This transaction will also generate a token ID for your governance token. + + + + + +Set the voting quorum percentage, voting duration, and delay period for votes. To avoid delays, starting with a low quorum percentage is recommended. This can adjusted over time as the community's needs change. + + +DAOs set their quorum percentage depending on their goals and needs. If the quorum is set too high, decisions are only made with a large number of participation from the members. If the quorum is set low, this allows more flexibility in decision making and the chances of proposals being approved would be higher than with a higher quorum. + + + + + + +Be cautious when depositing governance tokens into the treasury since it does not have voting rights. If you deposit a large portion it could lock you out of proposal creation, voting, and treasury access. + +*** + +## Review and Submit to Create New DAO + +Review the DAO details, governance type, and submit the transaction. Approve the DAO creation transaction in your wallet to proceed. + + + + + +*** + +## Mint and Deposit NFT + +Once your DAO is created, you need to mint the NFT and deposit to the treasury to finish setting up. Click the **Mint NFT** button, enter the NFT URL, and click the **Mint NFT Tokens** button. + + + + + + +When a DAO is created, its financial resources are managed through the DAO treasury smart contract. This contract facilitates the distribution of funds by allowing transactions to be initiated by the admin. In this structure, the role of the admin is fulfilled by the voting (Governor*)* contract. + + +When the "Successfully minted NFT tokens" window pops up, click on the **Deposit** button and select the NFT and serial number from dropdown, and **Deposit Fund**. + + + + + +*** + +## Conclusion and Additional Resources + +Congrats on successfully creating your first DAO using the NFT governance model! In this guide, you defined and customized the details of the new DAO, including minting governance NFTs. Happy DAO creating! + +➡ [**HashioDAO Repository**](https://github.com/hashgraph/hedera-accelerator-defi-dex-ui) + +➡ [**HashScan Network Explorer**](https://hashscan.io/testnet/dashboard) diff --git a/solutions/governance/index.mdx b/solutions/governance/index.mdx index 9ed8fcb2..a8b71407 100644 --- a/solutions/governance/index.mdx +++ b/solutions/governance/index.mdx @@ -1,7 +1,7 @@ --- title: "Governance" description: "Build decentralized governance solutions on Hedera." -icon: "landmark" +hidden: true --- {/* TODO: This page needs content */} diff --git a/solutions/index.mdx b/solutions/index.mdx index 7c5d1e67..2926bef6 100644 --- a/solutions/index.mdx +++ b/solutions/index.mdx @@ -1,158 +1,24 @@ --- title: "Open-Source Solutions" -icon: "lightbulb" description: "Open-source studios and toolkits for tokenization, AI agents, governance, sustainability, and developer tooling on Hedera." mode: wide --- -
- -{/* ── BROWSE BY SECTION ─────────────────────────────────────────────────── */} - +
{/* ── STUDIOS SPOTLIGHT ──────────────────────────────────────── */}
-

- Hedera Studios + Hedera Studios

@@ -180,7 +46,7 @@ mode: wide

Asset Tokenization Studio
-
Issue security tokens, equities, and real-world assets — full lifecycle.
+
Issue security tokens, equities, and real-world assets: full lifecycle.
RWA Compliance @@ -214,7 +80,7 @@ mode: wide
NFT Studio
-
Tools for NFT creators — airdrop verifier, metadata validator, rarity inspector.
+
Tools for NFT creators: airdrop verifier, metadata validator, rarity inspector.
NFT Metadata @@ -231,7 +97,7 @@ mode: wide
AI Studio
-
Build, test, and ship Hedera-powered AI agents — Agent Lab, Agent Kit, ElizaOS, and more.
+
Build, test, and ship Hedera-powered AI agents: Agent Lab, Agent Kit, ElizaOS, and more.
AI Agents @@ -242,99 +108,55 @@ mode: wide
{/* ── AI + AGENTS ──────────────────────────────────────── */} -
-
-

- AI & Agents +
+ -

+

Build autonomous agents and AI-powered tools with native Hedera integration.

-
+
- -
+ +
-
-
Agent Lab
-
Visual playground for building, testing, and demoing Hedera agents.
-
- Playground +
+
Agent Lab
+
Visual playground for building, testing, and demoing Hedera agents.
+
+ Playground
- -
+ +
-
-
Agent Kit
-
SDK for AI agents that transact on Hedera — JS and Python with plugin system.
-
- JS - Python +
+
Agent Kit
+
SDK for AI agents that transact on Hedera: JS and Python with plugin system.
+
+ JS + Python
- -
+ +
-
-{/* ── TOOLS ──────────────────────────────────────── */} -
-

- Developer tools +{/* ── DEVELOPER TOOLS ──────────────────────────────────────── */} +
+

+ Developer tools

-
+
- -
+ +
-
Developer Playground
-
Run Hedera transactions from your browser — no setup needed.
+
Developer Playground
+
Run Hedera transactions from your browser, no setup needed.
- -
+ +
-
Hiero CLI
-
Plugin-based command-line interface for accounts, tokens, topics, and contracts.
+
Hiero CLI
+
Plugin-based command-line interface for accounts, tokens, topics, and contracts.
- -
+ +
-
Wallet Snap
-
MetaMask Snap that adds full Hedera support to existing browser wallets.
+
Wallet Snap
+
MetaMask Snap that adds full Hedera support to existing browser wallets.
- - {/* ── EXAMPLES ──────────────────────────────────────── */} -
-

- Examples +
+

+ Examples

-
+
- -
+ +
-
Demos
-
Reference apps showcasing Hedera-powered flows.
+
Demos
+
Reference apps showcasing Hedera-powered flows.
- -
+ +
-
Starters
-
Production-ready template projects to clone and customize.
+
Starters
+
Production-ready template projects to clone and customize.
- - {/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Stay connected +
+

+ Stay connected

- diff --git a/solutions/sustainability/index.mdx b/solutions/sustainability/index.mdx index b9eb66fb..9fd3a1f9 100644 --- a/solutions/sustainability/index.mdx +++ b/solutions/sustainability/index.mdx @@ -1,7 +1,7 @@ --- title: "Sustainability" description: "Environmental sustainability solutions built on Hedera." -icon: "leaf" +hidden: true --- {/* TODO: This page needs content */} diff --git a/solutions/tokenization/ats/faq.mdx b/solutions/tokenization/ats/faq.mdx index f741646e..48bf215d 100644 --- a/solutions/tokenization/ats/faq.mdx +++ b/solutions/tokenization/ats/faq.mdx @@ -1,71 +1,71 @@ ---- -title: "Frequently Asked Questions (FAQs)" ---- - - - - -Check out the public [GitHub repo](https://github.com/hashgraph/asset-tokenization-studio) for the full source code. Alternatively, you can try out the[ interactive sandbox (demo)](https://tokenization-studio.hedera.com/) to explore the Asset Tokenization Studio (ATS) features. - - - - -Asset tokenization converts[ real-world assets (RWAs)](/hedera/support-and-community/glossary#real-world-asset-rwa) like real estate, equities, bonds, or commodities into [digital tokens](/hedera/support-and-community/glossary#digital-token) on a blockchain or other distributed ledger technology (DLT). This allows for [fractional ownership](/hedera/support-and-community/glossary#fractional-ownership), greater liquidity, and easier transferability, making these assets accessible to a wider range of investors. - - - - -A [security token](/hedera/support-and-community/glossary#security-token) represents ownership in a real-world asset and must comply with securities regulations. It often offers benefits like dividends or voting rights. [Digital security](/hedera/support-and-community/glossary#security-token) is a broader term referring to the digital form of any security, regardless of whether it's on a blockchain. It encompasses all forms of digital representations of securities, including those on traditional databases, not just those issued as tokens on a distributed ledger technology (DLT). - - - - -[Asset Tokenization Studio (ATS)](/hedera/open-source-solutions/asset-tokenization-studio-ats/..#how-asset-tokenization-studio-ats-works) is Hedera's open-source solution designed to simplify creating, managing, and operating tokenized assets. It provides open-source tools and templates to streamline tokenization for assets like equity, debt, or real estate, with built-in compliance controls. - - - - -You can tokenize various assets, including real estate, equities, bonds, and commodities. ATS supports different asset classes, enabling issuers to define terms and ensure regulatory compliance. - - - - -In ATS, tokenization involves defining the asset's characteristics, setting up compliance rules, and generating digital securities on the Hedera network. Once created, these tokens can be issued and traded on the blockchain or other forms of distributed ledgers, with ATS managing the entire lifecycle. - - - - -Asset Tokenization Studio integrates compliance features such as KYC/AML checks, approval lists/blocklists for eligible investors, and role-based permissions. It also supports SEC Regulations D (506-b, 506-c) and Regulation S, ensuring that tokenized securities comply with key regulatory frameworks. - - - - -Yes, Asset Tokenization Studio is designed with flexibility in mind and can be extended to support additional functionalities and regulatory requirements for new jurisdictions in the future. Future updates aim to enhance the platform’s capabilities to meet the evolving needs of issuers and investors. - - - - -Yes, the smart contracts used by Asset Tokenization Studio are audited by [A&D Forensics](https://adforensics.com.ng/audit-services/) to ensure their security and reliability. This auditing process helps protect the platform and its users from potential vulnerabilities, ensuring a secure tokenization environment. The full audit report can be found [here](https://github.com/hashgraph/asset-tokenization-studio/blob/main/Smart%20Contracts%20Audit%20Report.pdf). - - - - -Yes, ATS allows certain [updates to tokenized assets using proxy contracts](/hedera/open-source-solutions/asset-tokenization-studio-ats/..#in-depth-architecture-of-ats). This design pattern allows you to change the logic or functionality of the token without altering the underlying asset data. When an update is needed, the proxy contract can point to a new logic contract (resolver) that defines the new rules or behaviors. - - - - -Yes, Asset Tokenization Studio supports optional integration with [ERC-3643](https://docs.hedera.com/hedera/support-and-community/glossary#erc-3643), a standard for permissioned tokens that enables compliance with securities regulations through on-chain compliance rules and identity verification. During bond or equity creation, issuers can configure ERC-3643 by specifying a Compliance ID (the smart contract enforcing regulatory rules) and an Identity Registry ID (the contract managing investor identities and compliance status). This integration allows ATS to work seamlessly with existing ERC-3643 compliance infrastructure for enhanced regulatory compliance. - - - - -External Management Lists in Asset Tokenization Studio allow issuers to integrate with external smart contracts for enhanced control and compliance. These include External Pause Lists (for emergency token operation pauses), External Control Lists (for additional governance capabilities), and External KYC Lists (for third-party identity verification). Issuers can select multiple contracts from each list type during the creation process, enabling sophisticated multi-party control structures and integration with external compliance providers. - - - - - -Asset Tokenization Studio supports wallets compatible with the Hedera network, including [MetaMask](https://metamask.io/) and [HashPack](https://www.hashpack.app/). This allows users to easily interact with their tokenized assets through secure wallet integrations. - - +--- +title: "Frequently Asked Questions (FAQs)" +--- + + + + +Check out the public [GitHub repo](https://github.com/hashgraph/asset-tokenization-studio) for the full source code. Alternatively, you can try out the[ interactive sandbox (demo)](https://tokenization-studio.hedera.com/) to explore the Asset Tokenization Studio (ATS) features. + + + + +Asset tokenization converts[ real-world assets (RWAs)](/hedera/support-and-community/glossary#real-world-asset-rwa) like real estate, equities, bonds, or commodities into [digital tokens](/hedera/support-and-community/glossary#digital-token) on a blockchain or other distributed ledger technology (DLT). This allows for [fractional ownership](/hedera/support-and-community/glossary#fractional-ownership), greater liquidity, and easier transferability, making these assets accessible to a wider range of investors. + + + + +A [security token](/hedera/support-and-community/glossary#security-token) represents ownership in a real-world asset and must comply with securities regulations. It often offers benefits like dividends or voting rights. [Digital security](/hedera/support-and-community/glossary#security-token) is a broader term referring to the digital form of any security, regardless of whether it's on a blockchain. It encompasses all forms of digital representations of securities, including those on traditional databases, not just those issued as tokens on a distributed ledger technology (DLT). + + + + +[Asset Tokenization Studio (ATS)](/solutions/tokenization/ats#how-asset-tokenization-studio-ats-works) is Hedera's open-source solution designed to simplify creating, managing, and operating tokenized assets. It provides open-source tools and templates to streamline tokenization for assets like equity, debt, or real estate, with built-in compliance controls. + + + + +You can tokenize various assets, including real estate, equities, bonds, and commodities. ATS supports different asset classes, enabling issuers to define terms and ensure regulatory compliance. + + + + +In ATS, tokenization involves defining the asset's characteristics, setting up compliance rules, and generating digital securities on the Hedera network. Once created, these tokens can be issued and traded on the blockchain or other forms of distributed ledgers, with ATS managing the entire lifecycle. + + + + +Asset Tokenization Studio integrates compliance features such as KYC/AML checks, approval lists/blocklists for eligible investors, and role-based permissions. It also supports SEC Regulations D (506-b, 506-c) and Regulation S, ensuring that tokenized securities comply with key regulatory frameworks. + + + + +Yes, Asset Tokenization Studio is designed with flexibility in mind and can be extended to support additional functionalities and regulatory requirements for new jurisdictions in the future. Future updates aim to enhance the platform’s capabilities to meet the evolving needs of issuers and investors. + + + + +Yes, the smart contracts used by Asset Tokenization Studio are audited by [A&D Forensics](https://adforensics.com.ng/audit-services/) to ensure their security and reliability. This auditing process helps protect the platform and its users from potential vulnerabilities, ensuring a secure tokenization environment. The full audit report can be found [here](https://github.com/hashgraph/asset-tokenization-studio/blob/main/Smart%20Contracts%20Audit%20Report.pdf). + + + + +Yes, ATS allows certain [updates to tokenized assets using proxy contracts](/solutions/tokenization/ats#in-depth-architecture-of-ats). This design pattern allows you to change the logic or functionality of the token without altering the underlying asset data. When an update is needed, the proxy contract can point to a new logic contract (resolver) that defines the new rules or behaviors. + + + + +Yes, Asset Tokenization Studio supports optional integration with [ERC-3643](https://docs.hedera.com/hedera/support-and-community/glossary#erc-3643), a standard for permissioned tokens that enables compliance with securities regulations through on-chain compliance rules and identity verification. During bond or equity creation, issuers can configure ERC-3643 by specifying a Compliance ID (the smart contract enforcing regulatory rules) and an Identity Registry ID (the contract managing investor identities and compliance status). This integration allows ATS to work seamlessly with existing ERC-3643 compliance infrastructure for enhanced regulatory compliance. + + + + +External Management Lists in Asset Tokenization Studio allow issuers to integrate with external smart contracts for enhanced control and compliance. These include External Pause Lists (for emergency token operation pauses), External Control Lists (for additional governance capabilities), and External KYC Lists (for third-party identity verification). Issuers can select multiple contracts from each list type during the creation process, enabling sophisticated multi-party control structures and integration with external compliance providers. + + + + + +Asset Tokenization Studio supports wallets compatible with the Hedera network, including [MetaMask](https://metamask.io/) and [HashPack](https://www.hashpack.app/). This allows users to easily interact with their tokenized assets through secure wallet integrations. + + diff --git a/solutions/tokenization/ats/quickstart.mdx b/solutions/tokenization/ats/quickstart.mdx index 5c9f258b..1da1f7ab 100644 --- a/solutions/tokenization/ats/quickstart.mdx +++ b/solutions/tokenization/ats/quickstart.mdx @@ -1,7 +1,7 @@ --- title: "ATS Quickstart" description: "Get started with Asset Tokenization Studio in minutes." -icon: "rocket" +hidden: true --- {/* TODO: This page needs content */} diff --git a/solutions/tokenization/index.mdx b/solutions/tokenization/index.mdx index c6f8383c..1a7227c8 100644 --- a/solutions/tokenization/index.mdx +++ b/solutions/tokenization/index.mdx @@ -1,7 +1,7 @@ --- title: "Tokenization Solutions" description: "Tools and frameworks for tokenizing real-world and digital assets on Hedera." -icon: "coins" +hidden: true --- {/* TODO: This page needs content */} diff --git a/solutions/tokenization/nft-studio/index.mdx b/solutions/tokenization/nft-studio/index.mdx index ecbda81e..9e241e7e 100644 --- a/solutions/tokenization/nft-studio/index.mdx +++ b/solutions/tokenization/nft-studio/index.mdx @@ -7,41 +7,14 @@ title: NFT Studio NFT Studio is a free, open-source toolkit that makes it easier to create and manage NFTs on the Hedera network. Whether you’re creating, checking, analyzing, or organizing NFTs, NFT Studio offers a set of tools to help you through every step of the process. The Hedera network ensures that NFTs are secure, can scale as needed, and are cost-effective, making it a great choice for developers and creators at any point in their NFT projects. - - Learn how NFT Studio simplifies NFT creation and management. + + Open the live demo and experiment with every tool directly. - -{" "} - - - Explore all available tools for creating, analyzing, and organizing NFTs. - - -{" "} - - - Open the live demo and experiment with NFT Studio tools directly. - - -{" "} - - - Check out the open-source TypeScript SDK for developers. - - - - See walkthroughs and tutorials on how NFT Studio works. + + The open-source TypeScript SDK behind every tool in the studio. + + + Walkthroughs and tutorials covering each NFT Studio tool. @@ -55,15 +28,7 @@ NFT Studio operates through a powerful [TypeScript SDK](https://github.com/hashg - Calculate rarity, assess risk, and ensure NFT security. - Compile token holder lists, verify airdrops, and manage your community. - + --- @@ -75,79 +40,55 @@ NFT Studio's tools are designed to enhance every aspect of your NFT creation and - Verifies which accounts are eligible to receive a specified token through an airdrop. - [Try Demo](/hedera/open-source-solutions/nft-studio/airdrop-list-verifier) · [Open Tool](https://nft-studio.hashgraph.com/airdrop-list-verifier/) · [View Source](https://github.com/hedera-dev/airdrop-verifier) + Check which accounts are eligible to receive a specified token through an airdrop. + [Open Tool](https://nft-studio.hashgraph.com/airdrop-list-verifier/) · [View Source](https://github.com/hedera-dev/airdrop-verifier) + + + Validate NFT metadata against [HIP-412](https://hips.hedera.com/hip/hip-412) standards. + [Open Tool](https://nft-studio.hashgraph.com/metadata-validator/) · [View Source](https://github.com/hedera-dev/metadata-validator) + + + Analyze unique traits within NFT collections to generate rarity scores and insights. + [Open Tool](https://nft-studio.hashgraph.com/nft-rarity-inspector/) · [View Source](https://github.com/hedera-dev/rarity-inspector) + + + Compile account lists by token holdings and ownership duration. + [Open Tool](https://nft-studio.hashgraph.com/token-holders-list-builder/) · [View Source](https://github.com/hedera-dev/token-holders-list-builder) + + + Evaluate token risk on the Hedera network based on properties like Admin Key and KYC Key. + [Open Tool](https://nft-studio.hashgraph.com/nft-risk-calculator/) · [View Source](https://github.com/hedera-dev/risk-calculator-for-hedera-tokens) - -{" "} - - - Validates NFT metadata against [HIP-412](https://hips.hedera.com/hip/hip-412) - standards. [Try - Demo](/hedera/open-source-solutions/nft-studio/metadata-validator) · [Open - Tool](https://nft-studio.hashgraph.com/metadata-validator/) · [View - Source](https://github.com/hedera-dev/metadata-validator) - - -{" "} - - - Analyzes unique traits within NFT collections to generate rarity scores and - insights. [Try - Demo](/hedera/open-source-solutions/nft-studio/nft-rarity-inspector) · [Open - Tool](https://nft-studio.hashgraph.com/nft-rarity-inspector/) · [View - Source](https://github.com/hedera-dev/rarity-inspector) - - -{" "} - - - Compiles account lists by token holdings and ownership duration. [Try - Demo](/hedera/open-source-solutions/nft-studio/nft-token-holders-list-builder) - · [Open Tool](https://nft-studio.hashgraph.com/token-holders-list-builder/) · - [View Source](https://github.com/hedera-dev/token-holders-list-builder) - - -{" "} - - - Evaluates token risk on the Hedera network based on properties like Admin Key - and KYC Key. [Try - Demo](/hedera/open-source-solutions/nft-studio/nft-risk-calculator) · [Open - Tool](https://nft-studio.hashgraph.com/nft-risk-calculator/) · [View - Source](https://github.com/hedera-dev/risk-calculator-for-hedera-tokens) - - - Captures and filters token distribution snapshots for holders. - [Try Demo](/hedera/open-source-solutions/nft-studio/token-balance-snapshot) · [Open Tool](https://nft-studio.hashgraph.com/snapshot-tool/) · [View Source](https://github.com/hedera-dev/balance-snapshot) + Capture and filter token distribution snapshots for holders. + [Open Tool](https://nft-studio.hashgraph.com/snapshot-tool/) · [View Source](https://github.com/hedera-dev/balance-snapshot) diff --git a/solutions/tools/index.mdx b/solutions/tools/index.mdx index eeedd866..f9b1237e 100644 --- a/solutions/tools/index.mdx +++ b/solutions/tools/index.mdx @@ -1,7 +1,7 @@ --- title: "Developer Tools" description: "Open-source tools for building on Hedera." -icon: "wrench" +hidden: true --- {/* TODO: This page needs content */} diff --git a/style.css b/style.css index 4a57faa3..e34b5c13 100644 --- a/style.css +++ b/style.css @@ -84,6 +84,10 @@ strong, b, font-size: 14px !important; line-height: 20px !important; font-weight: 400 !important; + color: var(--landing-pill-fg) !important; + background: var(--landing-pill-bg) !important; + border: 1px solid var(--landing-pill-border) !important; + text-decoration: none !important; transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease !important; } @@ -100,6 +104,200 @@ strong, b, color: #ffffff !important; } +/* ========================= + Landing page layout primitives + Used by the 8 tab landing pages (index.mdx, learn/, evm/, native/, + operators/, reference/, solutions/, support/). + ========================= */ +.landing-container { + max-width: 1200px; + margin: 0 auto; + padding: 0 24px; +} + +.landing-section { + padding: 48px 0; + border-bottom: 1px solid var(--landing-border); +} +.landing-section:last-of-type { + border-bottom: none; +} + +.landing-section-heading { + font-size: clamp(1.375rem, 2.5vw, 1.75rem); + font-weight: 500; + margin: 0 0 6px; + letter-spacing: -0.015em; + color: var(--landing-fg-primary); +} +.landing-section-heading a { + color: inherit; + text-decoration: none; +} + +.landing-section-description { + font-size: 0.9375rem; + color: var(--landing-fg-tertiary); + margin: 0 0 28px; + max-width: 540px; + line-height: 1.55; +} + +.landing-section-heading-row { + display: flex; + justify-content: space-between; + align-items: baseline; + margin-bottom: 6px; +} +.landing-section-heading-row .landing-section-heading { + margin: 0; +} + +.landing-see-all { + font-size: 0.8125rem; + color: #8259EF; + text-decoration: none; + font-weight: 500; + white-space: nowrap; +} + +.landing-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 12px; +} +.landing-grid--wide { + grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); +} +.landing-grid--loose { + gap: 16px; +} + +.landing-card { + display: flex; + align-items: flex-start; + gap: 14px; + padding: 18px; + border-radius: 10px; + border: 1px solid var(--landing-border); + text-decoration: none; + background-color: var(--landing-card-bg); + transition: border-color 0.15s ease, background-color 0.15s ease; +} +.landing-card:hover { + border-color: rgba(130, 89, 239, 0.4); +} + +.landing-card-icon { + width: 36px; + height: 36px; + border-radius: 8px; + background: var(--landing-card-icon-bg); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.landing-card-title { + font-weight: 500; + font-size: 0.875rem; + color: var(--landing-fg-primary); + margin-bottom: 4px; +} + +.landing-card-desc { + font-size: 0.8125rem; + color: var(--landing-fg-tertiary); + line-height: 1.45; +} + +.landing-card-stacked { + display: block; + padding: 20px; + border-radius: 10px; + border: 1px solid var(--landing-border); + text-decoration: none; + background-color: var(--landing-card-bg); + transition: border-color 0.15s ease, background-color 0.15s ease; +} +.landing-card-stacked:hover { + border-color: rgba(130, 89, 239, 0.4); +} +.landing-card-stacked .landing-card-icon { + margin-bottom: 14px; +} +.landing-card-stacked .landing-card-title { + margin-bottom: 6px; +} +.landing-card-stacked .landing-card-desc { + margin-bottom: 14px; +} + +.landing-media-card { + display: block; + border-radius: 10px; + border: 1px solid var(--landing-border); + text-decoration: none; + overflow: hidden; + background-color: var(--landing-card-bg); + transition: border-color 0.15s ease; +} +.landing-media-card:hover { + border-color: rgba(130, 89, 239, 0.4); +} +.landing-media-card-hero { + height: 120px; + background: linear-gradient(135deg, rgba(130, 89, 239, 0.55) 0%, rgba(0, 49, 255, 0.5) 100%); + display: flex; + align-items: center; + justify-content: center; +} +.landing-media-card-body { + padding: 16px; +} +.landing-media-card-body .landing-card-title { + margin-bottom: 6px; +} +.landing-media-card-body .landing-card-desc { + margin-bottom: 14px; +} + +.landing-tag-group { + display: flex; + gap: 6px; + flex-wrap: wrap; +} +.landing-tag { + font-size: 0.6875rem; + padding: 2px 8px; + border-radius: 999px; + border: 1px solid rgba(130, 89, 239, 0.25); + color: rgba(130, 89, 239, 0.85); +} + +.landing-footer { + padding: 40px 0 24px; +} + +.landing-footer-heading { + font-size: clamp(1.125rem, 2vw, 1.375rem); + font-weight: 500; + margin: 0 0 12px; + letter-spacing: -0.01em; + color: var(--landing-fg-primary); +} +.landing-footer-heading a { + color: inherit; + text-decoration: none; +} + +.landing-pill-group { + display: flex; + gap: 10px; + flex-wrap: wrap; +} + /* ========================= Site-wide gradient background — light mode Uses pale tints of the Hedera brand gradient @@ -111,13 +309,10 @@ html, body { min-height: 100vh; } -/* Make Mintlify's wrapper containers transparent in light mode - so the body gradient shows through */ -html:not(.dark):not([data-theme='dark']) main, -html:not(.dark):not([data-theme='dark']) #__next, -html:not(.dark):not([data-theme='dark']) #__next > div, -html:not(.dark):not([data-theme='dark']) [class*="bg-background"], -html:not(.dark):not([data-theme='dark']) [class*="bg-white"] { +/* Make Mintlify's fixed full-page background layer transparent in light mode + so the body gradient shows through. Scoped to the -z-10 layer only so the + mobile drawer, navbar, search box, and other UI keep their solid backgrounds. */ +html:not(.dark):not([data-theme='dark']) [class*="-z-10"][class*="bg-background"] { background-color: transparent !important; } @@ -280,6 +475,20 @@ nav.text-sm a[href*="hackathon"] svg { filter: brightness(0) invert(1) !important; } +/* Playground showcase — single column on mobile, list + preview side-by-side at ≥768px */ +.playground-grid { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 16px; + align-items: start; +} + +@media (min-width: 768px) { + .playground-grid { + grid-template-columns: minmax(280px, 380px) minmax(0, 1fr); + } +} + /* Hiero CLI feature coverage heatmap (feature-coverage-gap-report.mdx) */ .hiero-cli-coverage-heatmap-wrap { margin: 1.5rem 0; diff --git a/support/contributing/style-guide/language-grammar.mdx b/support/contributing/style-guide/language-grammar.mdx index 896f6b0d..5b47ae09 100644 --- a/support/contributing/style-guide/language-grammar.mdx +++ b/support/contributing/style-guide/language-grammar.mdx @@ -231,8 +231,8 @@ Do not confuse "that" with "which". "That" is used to introduce a restrictive re * ✅ Recommended use of "that": Hedera creates products that are exclusive to web3. * ❌ Not recommended use of "that": Hedera creates products that are exclusive to web3. -* ✅ Recommended use of "which": Hedera's dashboard is customisable, which allows users to customize it as per their needs. -* ❌ Recommended (not using "which"): Hedera's dashboard is customisable for the users. +* ✅ Recommended use of "which": Hedera's dashboard is customizable, which allows users to customize it as per their needs. +* ❌ Recommended (not using "which"): Hedera's dashboard is customizable for the users. When referring to a person, use "who" rather than "that". diff --git a/support/faq/getting-started.mdx b/support/faq/getting-started.mdx index 042b7211..7eb0d74b 100644 --- a/support/faq/getting-started.mdx +++ b/support/faq/getting-started.mdx @@ -23,9 +23,9 @@ title: "Getting Started" - If you already have an active profile, please visit the Hedera Developer Portal login at: https://portal.hedera.com/ + If you already have an active profile, please visit the [Hedera Developer Portal login](https://portal.hedera.com/) page. - If you haven't created a profile for the Hedera Developer Portal, you can create one here: https://portal.hedera.com/register + If you haven't created a profile for the Hedera Developer Portal, you can [create one here](https://portal.hedera.com/register). @@ -50,25 +50,25 @@ title: "Getting Started" **DEVELOPMENT ACCOUNT:** - Go to the Hedera Portal to create an account on testnet and use that for development (it's free and you don't need to buy hbar). If/when you need a mainnet account (where transactions cost real hbar), it's best to create that mainnet account through one of the supported wallets here: https://hedera.com/account-creation + Go to the Hedera Portal to create an account on testnet and use that for development (it's free and you don't need to buy hbar). If/when you need a mainnet account (where transactions cost real hbar), it's best to create that mainnet account through one of the [supported wallets](https://hedera.com/account-creation). **EXAMPLES & DOCUMENTATION:** - We have SDKs for Java, Javascript, Go, and .NET. There are examples in the GitHub repositories for the SDKs. Technical documentation is here: https://docs.hedera.com + We have SDKs for Java, Javascript, Go, and .NET. There are examples in the GitHub repositories for the SDKs. [Technical documentation](/) is available online. **HELP FROM HEDERA & COMMUNITY:** - Reach out any time to the [Discord](http://hedera.com/discord) community of developers and Hedera employees here: https://hedera.com/[Discord](http://hedera.com/discord) + Reach out any time to the community of developers and Hedera/Hashgraph team members in the [Hedera Discord server](http://hedera.com/discord). **ADDITIONAL LEARNING RESOURCES:** - * Get Started Portal: https://hedera.com/get-started - * Learning Center: https://hedera.com/learning/what-is-hedera-hashgraph - * Whitepapers: https://hedera.com/papers + * [Get Started](https://hedera.com/get-started) + * [Learning Center](https://hedera.com/learning/what-is-hedera-hashgraph) + * [Whitepapers](https://hedera.com/papers) - Please visit https://www.hedera.com/buying-guide/ for a list of known third-party wallets across mobile (iOS / Android), desktop, hardware, and custodial, which support HBAR cryptocurrency and instant Hedera account creation. + Please visit the [Hedera buying guide](https://www.hedera.com/buying-guide/) for a list of known third-party wallets across mobile (iOS / Android), desktop, hardware, and custodial, which support HBAR cryptocurrency and instant Hedera account creation. Hedera does not endorse or recommend any specific wallet provider. @@ -76,17 +76,17 @@ title: "Getting Started" Yes, many applications are currently deployed on the Hedera mainnet, generating millions of transactions per day. However, we recommend starting application development on the Hedera testnet, before migrating to the mainnet. - To get started building on the Hedera testnet or mainnet, please visit the official developer documentation: https://docs.hedera.com/ + To get started building on the Hedera testnet or mainnet, please visit the [official developer documentation](/). - The Hedera developer quick-start guide can be found here: https://docs.hedera.com/#getting-started + The Hedera developer [quick-start guide](/#getting-started) is also available. The Hedera mainnet supports developers using all of Hedera's network services. - The network services on the Hedera mainnet are throttled: https://docs.hedera.com/hedera/networks/mainnet + The network services on the Hedera mainnet are [throttled](/hedera/networks/mainnet). - The Hedera developer quick-start guide can be found here: https://docs.hedera.com/#getting-started + The Hedera developer [quick-start guide](/#getting-started) is also available. @@ -94,7 +94,7 @@ title: "Getting Started" Anticipated maintenance activities include adding additional nodes to the network and updating the core software running on mainnet (beta) nodes. The network's consensus state will remain unchanged in the case of any downtime or network failures, and any transactions sent to the network during periods of downtime will be rejected. - The status of Hedera's mainnet and testnets is publicly available at https://status.hedera.com/ + The status of Hedera's mainnet and testnets is publicly available at [status.hedera.com](https://status.hedera.com/). @@ -106,33 +106,33 @@ title: "Getting Started" To start building and testing your application on the Hedera testnet, you'll need to create a Hedera account. - **Step 1**: Create a Hedera Developer Portal profile at https://portal.hedera.com/register/ and confirm your email address. + **Step 1**: Create a [Hedera Developer Portal profile](https://portal.hedera.com/register/) and confirm your email address. **Step 2**: After logging into the Hedera Developer Portal, select "Testnet" from the network drop-down menu. **Step 3**: Click or tap the "Create Account" button to generate your public / private key pair and account ID for use with the Hedera SDK — the public / private key and Hedera account ID will appear in a moment. - **Step 4**: Start building on the Hedera Testnet by visiting the official documentation and selecting your language: https://docs.hedera.com/#getting-started + **Step 4**: Start building on the Hedera Testnet by visiting the [official documentation](/#getting-started) and selecting your language. You'll first need to follow these instructions to create an account on the Hedera testnet. - After you've created your account, visit the official documentation and select your language to get started building: https://docs.hedera.com/#getting-started + After you've created your account, visit the [official documentation](/#getting-started) and select your language to get started building. The Hedera testnet supports developers using all of Hedera's network services. - The network services on the Hedera testnet are throttled: https://docs.hedera.com/hedera/networks/testnet + The network services on the Hedera testnet are [throttled](/hedera/networks/testnet). - The Hedera developer quick-start guide can be found here: https://docs.hedera.com/#getting-started + The Hedera developer [quick-start guide](/#getting-started) is also available. Applications built on Hedera testnets require testnet cryptocurrency to utilize the Hedera services for application development. Testnet cryptocurrency does not have any value. - Fees on the Hedera testnet are the same as the mainnet; you can find the fee schedule and estimator, here: https://www.hedera.com/fees/ + Fees on the Hedera testnet are the same as the mainnet; you can find the [fee schedule and estimator](https://www.hedera.com/fees/) here. @@ -147,39 +147,39 @@ title: "Getting Started" The Hedera previewnet is designed to offer developers in the Hedera community early exposure to features coming down the pipe. It's not always stable and accounts / data are likely to be lost when the network codebase is upgraded. - As of right now, you'll need to use the latest version of the SDK in the language of your choice to interact with the previewnet. You can find all of the Hedera SDKs in our documentation, here: https://docs.hedera.com/hedera/sdks-and-apis/sdks#sdks + As of right now, you'll need to use the latest version of the SDK in the language of your choice to interact with the previewnet. You can find all of the Hedera SDKs in our [documentation](/hedera/sdks-and-apis/sdks#sdks). - The source of truth for Hedera network, mirror node, and planned network upgrades for Hedera's mainnet, testnet, and, now, previewnet, will always be available at https://status.hedera.com/ + The source of truth for Hedera network, mirror node, and planned network upgrades for Hedera's mainnet, testnet, and, now, previewnet, will always be available at [status.hedera.com](https://status.hedera.com/). The Hedera previewnet supports developers using all of Hedera's network services — it will be the first to support any up-and-coming services, as well. - The network services on the Hedera previewnet are throttled: https://docs.hedera.com/hedera/networks/testnet#overview + The network services on the Hedera previewnet are [throttled](/hedera/networks/testnet#overview). - The Hedera developer quick-start guide can be found here: https://docs.hedera.com/#getting-started + The Hedera developer [quick-start guide](/#getting-started) is also available. - You'll first need to follow these instructions to create an account on the Hedera Previewnet. + First, follow [these instructions](/support/faq/getting-started#how-do-i-create-an-account-on-the-hedera-previewnet) to create a previewnet account in the developer portal. - After you've created your account, visit the official documentation and select your language to get started building: https://docs.hedera.com/#getting-started + Once your accounts are ready, head to [Getting Started](/learn/getting-started) to begin building. - To start building and testing your application on the Hedera previewnet, you'll need to create a Hedera account. + To build and test your application on the Hedera previewnet, you'll need a Hedera account. Here's how to create one: - **Step 1**: Create a Hedera Developer Portal profile at https://portal.hedera.com/register/ and confirm your email address. + **Step 1**: Create a [Hedera Developer Portal profile](https://portal.hedera.com/register/) and confirm your email address. - **Step 2**: After logging into the Hedera Developer Portal, select "Previewnet" from the network drop-down menu. + **Step 2**: Log in to the portal and select "Previewnet" from the network drop-down menu. - **Step 3**: Click or tap the "Create Account" button to generate your public / private key pair and account ID for use with the Hedera SDK — the public / private key and Hedera account ID will appear in a moment. + **Step 3**: Click "Create Account" to generate your public/private key pair and account ID. They'll appear in a moment for use with the Hedera SDK. - **Step 4**: Start building on the Hedera Previewnet by visiting the official documentation and selecting your language: https://docs.hedera.com/#getting-started + **Step 4**: [Start here](/learn/getting-started) and start building on previewnet. - To create a login for the Hedera Portal, please visit: https://portal.hedera.com/register + To create a login for the Hedera Portal, please [visit the registration page](https://portal.hedera.com/register). We recommend keeping your login credentials in a password manager, such as 1Password or LastPass. Hedera has no affiliation and does not endorse any particular password manager, however, so your use of a third-party password manager is at your own risk. diff --git a/support/faq/governance.mdx b/support/faq/governance.mdx index 4e702c88..6c6177cd 100644 --- a/support/faq/governance.mdx +++ b/support/faq/governance.mdx @@ -8,7 +8,7 @@ title: "Network Governance" - The status of the Hedera mainnet and testnets are publicly available at https://status.hedera.com/ + The status of the Hedera mainnet and testnets are publicly available at [status.hedera.com](https://status.hedera.com/). During the mainnet beta period, it is expected that the network will experience very brief periods of scheduled downtime for maintenance. @@ -18,13 +18,13 @@ title: "Network Governance" To ensure the availability of Hedera's services to all participants, API calls for all previewnet, testnet, and mainnet network services are throttled. - You can find the latest information about network throttles for the mainnet and testnets in the documentation: [mainnet throttled](https://docs.hedera.com/hedera/networks/mainnet#main-network-throttles), [testnet throttle](https://docs.hedera.com/hedera/networks/testnet#test-network-throttles). + You can find the latest information about network throttles for the mainnet and testnets in the documentation: [mainnet throttled](/hedera/networks/mainnet#main-network-throttles), [testnet throttle](/hedera/networks/testnet#test-network-throttles). Initially, only Council members will run network nodes. The plan is to expand the ability to host nodes over time, starting with other trusted organizations and, eventually, anyone who can meet basic requirements for bandwidth, CPU, and storage. We expect to eventually have a huge diversity of nodes around the world, run by ordinary people, some of whom might choose to remain anonymous. - You can learn more about Hedera's path to decentralization by watching this webinar with hashgraph inventor, Dr. Leemon Baird: https://www.youtube.com/watch?v=QTNNYeSks-s + You can learn more about Hedera's path to decentralization by watching [this webinar](https://www.youtube.com/watch?v=QTNNYeSks-s) with hashgraph inventor, Dr. Leemon Baird. @@ -32,7 +32,7 @@ title: "Network Governance" - The Hedera mirror node source code can be found [here](https://github.com/hiero-ledger/hiero-mirror-node) and documentation can be found [here](https://docs.hedera.com/hedera/core-concepts/mirror-nodes). + The Hedera mirror node source code can be found [here](https://github.com/hiero-ledger/hiero-mirror-node) and documentation can be found [here](/hedera/core-concepts/mirror-nodes). @@ -54,7 +54,7 @@ title: "Network Governance" The platform continues to evolve with planned developments including additional wallet integrations, state proofs, mirror node improvements, reconfiguration capabilities, and expanded node hosting eligibility. Eventually, Hedera intends to allow anyone to run a node and implement HBAR staking and proxy-staking mechanisms. - For more information on Hedera's path to further decentralization, see the webinar available at: https://www.youtube.com/watch?v=QTNNYeSks-s&feature=youtu.be + For more information on Hedera's path to further decentralization, see the [webinar](https://www.youtube.com/watch?v=QTNNYeSks-s&feature=youtu.be). @@ -66,7 +66,7 @@ title: "Network Governance" - The status of Hedera's mainnet and testnet is publicly available at https://status.hedera.com/ + The status of Hedera's mainnet and testnet is publicly available at [status.hedera.com](https://status.hedera.com/). @@ -78,11 +78,11 @@ title: "Network Governance" - A fee schedule overview and fee estimator can be found here: https://www.hedera.com/fees + A [fee schedule overview and fee estimator](https://www.hedera.com/fees) is available. - Hedera charges fees for network services based on the type of transaction and resource usage. Detailed fee information can be found at https://www.hedera.com/fees + Hedera charges fees for network services based on the type of transaction and resource usage. [Detailed fee information](https://www.hedera.com/fees) is available. @@ -94,7 +94,7 @@ title: "Network Governance" - The determination of fees reflect the burden a particular transaction places on the network – particularly the amount of bandwidth, CPU/GPU, RAM, and hard drive storage that a transaction or query consumes. The greater the consumption, the greater the fee. Additionally, because the above resources vary in their scarcity, transactions that use proportionally more of a scarce resource will pay proportionally more. . + The determination of fees reflect the burden a particular transaction places on the network – particularly the amount of bandwidth, CPU/GPU, RAM, and hard drive storage that a transaction or query consumes. The greater the consumption, the greater the fee. Additionally, because the above resources vary in their scarcity, transactions that use proportionally more of a scarce resource will pay proportionally more. @@ -146,16 +146,16 @@ title: "Network Governance" Hedera offers developers the ability to utilize the following services: [Hedera Token Service](https://hedera.com/token-service), [Hedera Smart Contract](https://hedera.com/smart-contract), and [Hedera Consensus Service](https://hedera.com/consensus-service). - Get started at the [Hedera Docs](https://docs.hedera.com/) + Get started at the [Hedera Docs](/) Hedera supports smart contracts written in the Solidity™ language. Existing EVM-compatible smart contracts can be deployed and run on Hedera without modification. Hedera continues to focus on EVM compatibility rather than introducing alternative smart contract languages. - In addition to smart contracts, developers can build applications that run on servers, desktops, or mobile devices and interact with Hedera network services through the Hedera APIs. These applications use the [Consensus Node Code SDKs](https://docs.hedera.com/hedera/sdks-and-apis/sdks#consensus-node-code-sdks), which are officially supported in multiple languages, including JavaScript, Java, Go, Swift, Python, Rust, and C++. + In addition to smart contracts, developers can build applications that run on servers, desktops, or mobile devices and interact with Hedera network services through the Hedera APIs. These applications use the [Consensus Node Code SDKs](/hedera/sdks-and-apis/sdks#consensus-node-code-sdks), which are officially supported in multiple languages, including JavaScript, Java, Go, Swift, Python, Rust, and C++. - + No, as the only public network implementation of the Hashgraph consensus algorithm, Hedera will not fork. @@ -182,7 +182,7 @@ title: "Network Governance" Queries have an associated payment transaction that will compensate the particular node that processes and responds to the query. The value of this payment transaction will go from the client sending the query to the node in question. To determine an appropriate value for this payment, a client can first send a version of the query but stipulate it desires not the actual response, but rather just the cost for that query. This type of `COST_ANSWER` query is free to the client. - The client can take the returned `COST_ANSWER` value and insert it as the value of the payment transaction for a real query.This payment transaction will also have an associated transaction fee - distinct from the value of the payment itself. The net cost to the client for a query is then the sum of the payment value (which goes from client to the node) and the transaction fee for the payment transaction (which goes from client to the node & network). + The client can take the returned `COST_ANSWER` value and insert it as the value of the payment transaction for a real query. This payment transaction will also have an associated transaction fee - distinct from the value of the payment itself. The net cost to the client for a query is then the sum of the payment value (which goes from client to the node) and the transaction fee for the payment transaction (which goes from client to the node & network). Clients should be aware that the full value of a payment transaction for a query will be processed - there is no protection against overpayment as there is for transactions. @@ -200,7 +200,7 @@ title: "Network Governance" - Solidity gas is converted to Hedera transaction fees based on the current fee schedule. The gas consumed by smart contract execution is calculated and then converted to HBAR using the network's fee structure. Refer to the Smart Contracts [Gas and Fees documentation](https://docs.hedera.com/hedera/core-concepts/smart-contracts/gas-and-fees) for more details. + Solidity gas is converted to Hedera transaction fees based on the current fee schedule. The gas consumed by smart contract execution is calculated and then converted to HBAR using the network's fee structure. Refer to the Smart Contracts [Gas and Fees documentation](/hedera/core-concepts/smart-contracts/gas-and-fees) for more details. @@ -214,11 +214,11 @@ title: "Network Governance" A query is processed by a single node and not forwarded to the rest of the network (like a transaction) for processing into consensus state. To compensate that particular node for the costs of processing a query, the query contains an embedded payment transaction. The node processing the query submits that embedded payment transaction to the network in order to receive its node fee. - Note that the client will pay the full amount that they stipulate for this payment transaction - there is no protection against overpayment as for transactions. Before sending a a query with a payment transaction, clients can first ask a node for the approriate value of this payment - and so guard against overpayment. + Note that the client will pay the full amount that they stipulate for this payment transaction - there is no protection against overpayment as for transactions. Before sending a query with a payment transaction, clients can first ask a node for the appropriate value of this payment - and so guard against overpayment. - When a transaction is processed into consensus, nodes automatically create both a receipt and a record for the transaction and store both for 3 minutes. Clients can query for either receiptor record to obtain confirmation that the transaction successfully reached consensus. As receipts are small and persisted for a short period of time, their impact on the network is not overly burdensome. Consequently, Hedera decided to price a query for a receipt for a transaction as free. Records carry more information than receipts and, depending on what triggers their creation, may be persisted for a longer period of time than 3 minutes. Consequently, there is a small cost to the client that queries for the record for a transaction. + When a transaction is processed into consensus, nodes automatically create both a receipt and a record for the transaction and store both for 3 minutes. Clients can query for either receipt or record to obtain confirmation that the transaction successfully reached consensus. As receipts are small and persisted for a short period of time, their impact on the network is not overly burdensome. Consequently, Hedera decided to price a query for a receipt for a transaction as free. Records carry more information than receipts and, depending on what triggers their creation, may be persisted for a longer period of time than 3 minutes. Consequently, there is a small cost to the client that queries for the record for a transaction. @@ -238,7 +238,7 @@ title: "Network Governance" The transaction fee paid during contract creation includes storage costs for an initial period, determined by the `auto_renew_period` (typically 30–90 days). Although contracts are assigned an `expirationTime`, the system does not currently charge renewal fees or remove contracts upon expiration. Consequently, deployed smart contracts remain on the ledger indefinitely without additional charges or risk of deletion due to non-payment. This behavior may evolve as Hedera implements its long-term strategy for sustainable storage management. - [Learn more about smart contract rent →](https://docs.hedera.com/hedera/core-concepts/smart-contracts/smart-contract-rent) + [Learn more about smart contract rent →](/hedera/core-concepts/smart-contracts/smart-contract-rent) @@ -264,7 +264,7 @@ title: "Network Governance" The network is designed so that, if account rent enforcement is enabled in the future, renewal fees would be charged to the account’s balance or to a designated auto-renew account, and accounts without sufficient balance could eventually expire and be deleted. - [Learn more about auto-renewal →](https://docs.hedera.com/hedera/core-concepts/smart-contracts/smart-contract-rent#contract-auto-renewal). + [Learn more about auto-renewal →](/hedera/core-concepts/smart-contracts/smart-contract-rent#contract-auto-renewal). @@ -289,7 +289,7 @@ title: "Network Governance" Mirror Node fee estimation endpoint. - + Hedera transaction and query fees are denominated in **USD** and paid in **HBAR**. Specifically, fees are defined in `tinycents` (`10⁸ tinycents` = 1 cent USD) in the fee schedule stored in system file `0.0.113`. The network regularly updates the USD-to-HBAR exchange rate based on current market rates, subject to a defined minimum exchange rate. This model is designed to keep fees predictable in USD terms, even though the amount paid in HBAR may vary over time. By using a minimum exchange rate, the network limits how much the HBAR-denominated fee can increase during periods of significant price volatility. diff --git a/support/faq/hbar.mdx b/support/faq/hbar.mdx index abc403e8..974c8732 100644 --- a/support/faq/hbar.mdx +++ b/support/faq/hbar.mdx @@ -4,6 +4,6 @@ title: "HBAR" - The official [HBAR](https://docs.hedera.com/hedera/sdks-and-apis/sdks/hbars) cryptocurrency denominations include tinybar (the smallest unit, where 1 HBAR = 100,000,000 tinybars), microbar, millibar, and HBAR. These denominations allow for precise transaction amounts and fee calculations. + The official [HBAR](/hedera/sdks-and-apis/sdks/hbars) cryptocurrency denominations include tinybar (the smallest unit, where 1 HBAR = 100,000,000 tinybars), microbar, millibar, and HBAR. These denominations allow for precise transaction amounts and fee calculations. diff --git a/support/faq/index.mdx b/support/faq/index.mdx index 4141ab8f..6cb53b8b 100644 --- a/support/faq/index.mdx +++ b/support/faq/index.mdx @@ -1,7 +1,7 @@ --- title: "Frequently Asked Questions" description: "Common questions about Hedera, HBAR, and the developer ecosystem." -icon: "circle-question" +hidden: true --- {/* TODO: This page needs content */} diff --git a/support/glossary.mdx b/support/glossary.mdx index 6b2bb548..f7eaa43f 100644 --- a/support/glossary.mdx +++ b/support/glossary.mdx @@ -267,9 +267,9 @@ Custody refers to the secure storage of digital assets by a specialized provider --- -A fundamental concept in [distributed ledger technology](#distributed-ledger-technology-dlt) that refer to the distribution of power and decision-making across a network or system rather than being controlled by a single entity or authority. Decentralization is a key feature that allows for trustless and transparent transactions without intermediaries. +A fundamental concept in [distributed ledger technology](#distributed-ledger-technology-dlt) that refers to the distribution of power and decision-making across a network or system rather than being controlled by a single entity or authority. Decentralization is a key feature that allows for trustless and transparent transactions without intermediaries. -Hedera, for example, is governed by a decentralized council of diverse organizations. A distributed network of nodes processes transactions on the Hedera Network, and the source code for the Hedera protocol is open review. +Hedera, for example, is governed by a decentralized council of diverse organizations, transactions are processed by a distributed network of nodes, and the source code is open source and available for public review. ### **Decentralized Application (DApp)** @@ -355,7 +355,7 @@ A technology that allows the existence of distributed ledgers, such as blockchai --- -A portion of a company's earnings distributed to shareholders. In asset tokenization, [security tokens ](#security-token)can include embedded rights to dividends, enabling digital securites holders to receive payouts automatically via [smart contracts](#smart-contract). +A portion of a company's earnings distributed to shareholders. In asset tokenization, [security tokens ](#security-token)can include embedded rights to dividends, enabling digital securities holders to receive payouts automatically via [smart contracts](#smart-contract). ### Double Spend Problem @@ -463,7 +463,7 @@ Under the hood, when an EVM-compatible tool interacts with an HTS token's facade --- -The principle that all transactions on a distributed ledger should be treated equally, without preferential treatment and describes the consistency of records for the transaction queue of a ledger. Transactions in fair order are recorded on a ledger consistent with the order in which they are transmitted. +The principle that all transactions on a distributed ledger should be treated equally without preferential treatment and describes the consistency of records for the transaction queue of a ledger. Transactions in fair order are recorded on a ledger consistent with the order in which they are transmitted. ### Fallback Fee @@ -549,7 +549,7 @@ The first block of data that is processed and validated to form a new blockchain --- -The history of how events are related to each other through their parent hashes in a hashgraph. It expresses itself as a [directed acyclic graph](#directed-acyclic-graph-dag), a graph of hashes, or a hashgraph. The hashgraph records the history of how members communicated and grow directionally over time as more gossip syncs take place and events are created. All members keep a local copy of the hashgraph, which updates as members sync with one another. +The history of how events are related to each other through their parent hashes in a hashgraph. It expresses itself as a [directed acyclic graph](#directed-acyclic-graph-dag), a graph of hashes, or a hashgraph. The hashgraph records the history of how members communicate and grows directionally over time as more gossip syncs take place and events are created. All members keep a local copy of the hashgraph, which updates as members sync with one another. ### Gossip Protocol @@ -728,7 +728,7 @@ The ease of buying or selling an asset in the market without impacting its price --- -A collection of shared cryptocurrency coins/tokens locked under a smart contract, ensuring liquidity that allows participants to trade easily. They are used for trading in [decentralized exchanges (DEX)](#decentralized-exchange-dex), and for providing liquidity to [decentralized financed (DeFi) protocols](#decentralized-finance-defi), which makes them an important part of yield farming. +A collection of shared cryptocurrency coins/tokens locked under a smart contract, ensuring liquidity that allows participants to trade easily. They are used for trading in [decentralized exchanges (DEX)](#decentralized-exchange-dex), and for providing liquidity to [decentralized finance (DeFi) protocols](#decentralized-finance-defi), which makes them an important part of yield farming. ## M @@ -969,7 +969,7 @@ A simplified version of dank sharding aimed at improving data availability witho --- -A smart contract that acts as an intermediary layer wrapped around each [security token](#security-token), directing operations to the main logic contract and allowing for upgrades and modifications. In the context of asset tokenization, proxy contracts are used to update [digital securities](#digital-security) without disrupting their operation. If the rules or functions of a token need to change (e.g., due to new regulations), the proxy can be updated via the [resolver contract](#resolver-contract) to point to a new logic contract. This allows all assets to be updated without interrupting their operation. Learn more in the context of asset tokenzation [here](/hedera/open-source-solutions/asset-tokenization-studio-ats#in-depth-architecture-of-ats). +A smart contract that acts as an intermediary layer wrapped around each [security token](#security-token), directing operations to the main logic contract and allowing for upgrades and modifications. In the context of asset tokenization, proxy contracts are used to update [digital securities](#digital-security) without disrupting their operation. If the rules or functions of a token need to change (e.g., due to new regulations), the proxy can be updated via the [resolver contract](#resolver-contract) to point to a new logic contract. This allows all assets to be updated without interrupting their operation. Learn more in the context of asset tokenization [here](/hedera/open-source-solutions/asset-tokenization-studio-ats#in-depth-architecture-of-ats). ### Public Key diff --git a/support/index.mdx b/support/index.mdx index ea573985..9785e280 100644 --- a/support/index.mdx +++ b/support/index.mdx @@ -4,207 +4,53 @@ description: "FAQs, contributing guides, glossary, brand guidelines, and links t mode: wide --- -
- -{/* ── BROWSE BY SECTION ─────────────────────────────────────────────────── */} - +
{/* ── POPULAR FAQS ──────────────────────────────────────── */} -
-

- Popular FAQs +
+ -
+
- -
+ +
-
Getting Started
-
First-time setup, accounts, wallets, and the developer portal.
+
Getting Started
+
First-time setup, accounts, wallets, and the developer portal.
- -
+ +
-
HBAR
-
Supply, fees, transfers, and where to buy HBAR.
+
HBAR
+
Supply, fees, transfers, and where to buy HBAR.
- -
+ +
-
Governance
-
The Hedera Council, governance model, and how decisions are made.
+
Governance
+
The Hedera Council, governance model, and how decisions are made.
- - {/* ── CONTRIBUTING ──────────────────────────────────────── */} -
-
-

- Contribute +
+ -

- Help improve the docs — file issues, open PRs, propose Hedera Improvement Proposals, or submit demos. +

+ Help improve the docs by filing issues, opening PRs, proposing Hedera Improvement Proposals, or submitting demos.

-
+
- -
+ +
-
Creating Issues
-
Report bugs and request features — what to include and where to file.
-
- Bugs +
Creating Issues
+
Report bugs and request features: what to include and where to file.
+
+ Bugs
- -
+ +
-
Pull Requests
-
How to propose, format, and ship docs changes.
-
- Git +
Pull Requests
+
How to propose, format, and ship docs changes.
+
+ Git
- -
+ +
-
HIPs
-
Hedera Improvement Proposals — propose changes to the protocol.
-
- Protocol +
HIPs
+
Hedera Improvement Proposals: propose changes to the protocol.
+
+ Protocol
- -
+ +
-
Style Guide
-
Language, grammar, formatting, and terminology rules for docs.
-
- Writing +
Style Guide
+
Language, grammar, formatting, and terminology rules for docs.
+
+ Writing
- -
+ +
-
Submit a Demo
-
Show off something you built — get featured in the examples library.
-
- Showcase +
Submit a Demo
+
Show off something you built. Get featured in the examples library.
+
+ Showcase
- -
+ +
-
Bug Bounty
-
Report security vulnerabilities and earn rewards through the bounty program.
-
{/* ── COMMUNITY ──────────────────────────────────────── */} -
-

- Community & resources +
+

+ Community & resources

-
+
- -
+ +
-
Discord
-
Real-time chat with Hedera developers and engineers.
+
Discord
+
Real-time chat with Hedera developers and engineers.
- -
+ +
-
GitHub
-
Hashgraph and Hiero open-source organizations.
+
GitHub
+
Hashgraph and Hiero open-source organizations.
- -
+ +
-
Stack Overflow
-
Searchable Q&A tagged hedera-hashgraph.
+
Stack Overflow
+
Searchable Q&A tagged hedera-hashgraph.
- -
+ +
-
Hedera Help
-
Help center for account, wallet, and product-level support tickets.
+
Hedera Help
+
Help center for account, wallet, and product-level support tickets.
- -
+ +
-
Technical Blog
-
Engineering deep-dives and release announcements.
+
Technical Blog
+
Engineering deep-dives and release announcements.
- - {/* ── FOOTER ───────────────────────────────────────────────────────────── */} -
-

- Stay connected +