diff --git a/search-index.json b/search-index.json index e3d2647dad..bd6d5234b9 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"CATs","u":"/academy-cat/","b":["Chia Academy","Primitives"]},{"i":15,"t":"DIDs","u":"/academy-did/","b":["Chia Academy","Primitives"]},{"i":29,"t":"Academy Home","u":"/academy-home/","b":["Chia Academy","Chia Academy Intro"]},{"i":35,"t":"NFTs","u":"/academy-nft/","b":["Chia Academy","Primitives"]},{"i":49,"t":"Chia Burn Address","u":"/addresses/","b":["Docs","Learn More","Coin Set Model"]},{"i":51,"t":"Offers","u":"/academy-offers/","b":["Chia Academy","Primitives"]},{"i":65,"t":"Architecture Overview","u":"/architecture-overview/","b":["Docs","Learn More","Architecture"]},{"i":67,"t":"Academy Overview","u":"/academy-overview/","b":["Chia Academy","Chia Academy Intro"]},{"i":85,"t":"ASICs HW VDF","u":"/asic-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":95,"t":"Block Format","u":"/block-format/","b":["Docs","Learn More","Consensus","Block Validation"]},{"i":108,"t":"How New Blocks are Formed","u":"/block-formation-basics/","b":["Chia Academy","Blockchain Basics Overview"]},{"i":122,"t":"Block Rewards","u":"/block-rewards/","b":["Docs","Learn More","Consensus","Block Validation"]},{"i":134,"t":"Block Validation","u":"/block-validation/","b":["Docs","Learn More","Consensus","Block Validation"]},{"i":148,"t":"BLS Keys","u":"/bls-keys/","b":["Docs","Learn More","Keys"]},{"i":154,"t":"CAT Admin CLI","u":"/cat-admin-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":164,"t":"XCH Bridge Guide","u":"/bridge-guide/","b":["Docs","Getting Started"]},{"i":183,"t":"Check if Things are Working","u":"/check-if-things-are-working/","b":[]},{"i":185,"t":"Challenges & Plot Filters","u":"/challenges-plot-filters/","b":["Chia Academy","Plotting & Farming"]},{"i":199,"t":"Checking Farm Health","u":"/checking-farm-health/","b":["Docs","Troubleshooting"]},{"i":218,"t":"Key Management","u":"/chia-key-management/","b":["Docs","Advanced User Docs","Reference Client"]},{"i":224,"t":"Storage - Chia Farming Workload Analysis","u":"/chia-farming-workload/","b":["Docs","Learn More","Resources"]},{"i":256,"t":"Chia Protocol","u":"/chia-protocol/","b":["Docs","Learn More","Protocol"]},{"i":258,"t":"Inner Puzzles","u":"/chialisp-inner-puzzle/","b":["Chia Academy","Chialisp Overview"]},{"i":274,"t":"Intro to Chialisp","u":"/chialisp-intro/","b":["Chia Academy","Chialisp Overview"]},{"i":290,"t":"Signatures","u":"/chialisp-signatures/","b":["Chia Academy","Chialisp Overview"]},{"i":306,"t":"Smart Coins","u":"/chialisp-smart-coin/","b":["Chia Academy","Chialisp Overview"]},{"i":322,"t":"CLVM vs EVM","u":"/clvm-vs-evm/","b":["Docs","Learn More","Coin Set Model"]},{"i":326,"t":"CLI Commands Reference","u":"/cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":367,"t":"Clawback","u":"/clawback-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":381,"t":"Coin Selection","u":"/coin-selection/","b":["Docs","Advanced User Docs","Reference Client"]},{"i":383,"t":"Coin Set Intro","u":"/coin-set-intro/","b":["Docs","Learn More","Coin Set Model"]},{"i":401,"t":"Coin Set vs Account Model","u":"/coin-set-vs-account/","b":["Docs","Learn More","Coin Set Model"]},{"i":423,"t":"Coin Set vs UTXO Model","u":"/coin-set-vs-utxo/","b":["Docs","Learn More","Coin Set Model"]},{"i":431,"t":"Security","u":"/coin-set-security/","b":["Docs","Learn More","Coin Set Model"]},{"i":445,"t":"Conditions","u":"/conditions/","b":["Docs","Learn More","Coin Set Model"]},{"i":447,"t":"Coin-Set Model Intro","u":"/coinset-basics/","b":["Chia Academy","Blockchain Basics Overview"]},{"i":461,"t":"Costs","u":"/coin-set-costs/","b":["Docs","Learn More","Coin Set Model"]},{"i":483,"t":"Analysis","u":"/consensus-analysis/","b":["Docs","Learn More","Consensus"]},{"i":494,"t":"Challenges","u":"/consensus-challenges/","b":["Docs","Learn More","Consensus","Chains"]},{"i":498,"t":"How Chia Consensus Works","u":"/consensus-basics/","b":["Chia Academy","Blockchain Basics Overview"]},{"i":512,"t":"Attacks and Countermeasures","u":"/consensus-attacks/","b":["Docs","Learn More","Consensus"]},{"i":535,"t":"Foliage","u":"/consensus-foliage/","b":["Docs","Learn More","Consensus","Chains"]},{"i":539,"t":"Forks","u":"/consensus-forks/","b":["Docs","Learn More","Consensus"]},{"i":541,"t":"Consensus Introduction","u":"/consensus-intro/","b":["Docs","Learn More","Consensus"]},{"i":543,"t":"Multiple Blocks","u":"/consensus-multiple-blocks/","b":["Docs","Learn More","Consensus","Chains"]},{"i":545,"t":"0 - Constants, Variables and Notation","u":"/constants-variables-notation/","b":["Docs","Learn More","Green Paper"]},{"i":552,"t":"Intro to Cryptocurrencies","u":"/cryptocurrency-intro/","b":["Docs","Learn More","Resources"]},{"i":565,"t":"Using Github for Chia Contributions","u":"/contribution/using-github/","b":["Docs","Contributing"]},{"i":580,"t":"Prefarm Audit Tutorial","u":"/custody/prefarm-audit-tutorial/","b":["Dev Guides","Tutorials","Custody Tool"]},{"i":588,"t":"Custody Tool","u":"/custody-tool/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":641,"t":"DAO Known Issues","u":"/dao-known-issues/","b":["Dev Guides","Primitives","DAOs"]},{"i":649,"t":"DAO RPCs","u":"/dao-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":680,"t":"DAO CLI","u":"/dao-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":717,"t":"DAO CLI Guide","u":"/dao-cli-guide/","b":["Dev Guides","Primitives","DAOs"]},{"i":745,"t":"Dev Guides Home","u":"/dev-guides-home/","b":["Dev Guides","Crash Course"]},{"i":755,"t":"Daemon RPC","u":"/daemon-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":828,"t":"DataLayer CLI","u":"/datalayer-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":877,"t":"DID CLI","u":"/did-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":898,"t":"Chia Docs Home","u":"/docs-home/","b":["Docs","Getting Started"]},{"i":910,"t":"Epoch and Difficulty","u":"/epoch-and-difficulty/","b":["Docs","Learn More","Consensus","Chains"]},{"i":914,"t":"Farmers","u":"/farmer-architecture/","b":["Docs","Learn More","Architecture"]},{"i":916,"t":"DID RPC","u":"/did-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":955,"t":"Farmer RPC","u":"/farmer-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":985,"t":"Compressed Plot Farming","u":"/farming-compressed-plots/","b":["Docs","Advanced User Docs","Farming"]},{"i":992,"t":"Farming Hardware Considerations","u":"/farming-considerations/","b":["Docs","Advanced User Docs","Farming"]},{"i":994,"t":"Farming Basics","u":"/farming-basics/","b":["Docs","Advanced User Docs","Farming"]},{"i":1002,"t":"Farming FAQ","u":"/farming-faq/","b":["Docs","Troubleshooting"]},{"i":1007,"t":"How to harvest on other machines that are not your main machine","u":"/farming-on-many-machines/","b":["Docs","Advanced User Docs","Farming"]},{"i":1025,"t":"Dual Farming","u":"/farming/dual-farming-testnet-mainnet/","b":["Docs","Advanced User Docs","Farming"]},{"i":1033,"t":"Farming Overview","u":"/farming-overview/","b":["Chia Academy","Plotting & Farming"]},{"i":1047,"t":"Creating your first Plot","u":"/first-plot/","b":["Chia Academy","Plotting & Farming"]},{"i":1059,"t":"Full Nodes","u":"/full-node-architecture/","b":["Docs","Learn More","Architecture"]},{"i":1061,"t":"Beginner's Guide to Farming","u":"/farming-guide/","b":["Docs","Getting Started"]},{"i":1091,"t":"Wallet Guide","u":"/getting-started/wallet-guide/","b":["Docs","Getting Started"]},{"i":1121,"t":"Green Paper","u":"/green-paper-abstract/","b":["Docs","Learn More","Green Paper"]},{"i":1126,"t":"The Great Chia Glossary","u":"/glossary/","b":["Docs","Learn More","Resources"]},{"i":1128,"t":"FAQ","u":"/faq/","b":["Docs","Learn More","Resources"]},{"i":1471,"t":"References","u":"/green-paper-references/","b":["Docs","Learn More","Green Paper"]},{"i":1475,"t":"1. Intro to Chialisp","u":"/guides/","b":[]},{"i":1477,"t":"Announcements, Oracles","u":"/guides/announcements-oracles-video-series/","b":["Dev Guides","Video Series"]},{"i":1479,"t":"Basic structure of an app using chia","u":"/guides/application-structure-tutorial/","b":["Dev Guides","Tutorials"]},{"i":1483,"t":"CAT Creation Tutorial","u":"/guides/cat-creation-tutorial/","b":["Dev Guides","Primitives","CAT Guide"]},{"i":1505,"t":"CAT2 Intro and FAQ","u":"/guides/cat2-intro/","b":["Dev Guides","Primitives","CAT Guide","CAT2 Upgrade"]},{"i":1518,"t":"A - Building Blocks: PoSpace, VDFs and Signatures","u":"/green-paper-appendix/","b":["Docs","Learn More","Green Paper"]},{"i":1537,"t":"CAT1 Snapshot Generation","u":"/guides/cat2-snapshot/","b":["Dev Guides","Primitives","CAT Guide","CAT2 Upgrade"]},{"i":1549,"t":"Condition Morphing","u":"/guides/chialisp-condition-morphing/","b":[]},{"i":1551,"t":"5. BLS Signatures","u":"/guides/chialisp-bls-signatures/","b":[]},{"i":1553,"t":"Currying","u":"/guides/chialisp-currying/","b":[]},{"i":1555,"t":"4. First Smart Coin","u":"/guides/chialisp-first-smart-coin/","b":[]},{"i":1557,"t":"Inner Puzzles","u":"/guides/chialisp-inner-puzzles/","b":[]},{"i":1559,"t":"3. Testnet Setup","u":"/guides/chialisp-testnet-setup/","b":[]},{"i":1561,"t":"CAT2 Token Reissuance","u":"/guides/cat2-issuance/","b":["Dev Guides","Primitives","CAT Guide","CAT2 Upgrade"]},{"i":1573,"t":"2. Using Modules","u":"/guides/chialisp-using-modules/","b":[]},{"i":1575,"t":"Coin Lifecycle and Testing","u":"/guides/coin-lifecycle-and-testing-video-series/","b":["Dev Guides","Video Series"]},{"i":1587,"t":"RPC Coin Spend","u":"/guides/coin-spend-rpc-tutorial/","b":["Dev Guides","Tutorials"]},{"i":1601,"t":"Clawback User Guide","u":"/guides/clawback-user-guide/","b":["Dev Guides","Primitives","Clawback"]},{"i":1619,"t":"Clawback Primitive Guide","u":"/guides/clawback-primitive-guide/","b":["Dev Guides","Primitives","Clawback"]},{"i":1648,"t":"CR-CAT Creation Tutorial","u":"/guides/cr-CAT-tutorial/","b":["Dev Guides","Primitives","CAT Guide"]},{"i":1684,"t":"CATs, Offers and NFTs","u":"/guides/crash-course/cats-offers-nfts/","b":["Dev Guides","Crash Course"]},{"i":1708,"t":"Chialisp","u":"/guides/crash-course/chialisp/","b":[]},{"i":1728,"t":"Chialisp","u":"/guides/crash-course/intro-to-chialisp/","b":["Dev Guides","Crash Course"]},{"i":1756,"t":"Inner Puzzles","u":"/guides/crash-course/inner-puzzles/","b":["Dev Guides","Crash Course"]},{"i":1781,"t":"1 - Introduction","u":"/green-paper-introduction/","b":["Docs","Learn More","Green Paper"]},{"i":1807,"t":"Introduction","u":"/guides/crash-course/introduction/","b":["Dev Guides","Crash Course"]},{"i":1825,"t":"Custody Tool Description","u":"/guides/custody-tool-description/","b":["Dev Guides","Tutorials","Custody Tool"]},{"i":1851,"t":"Smart Coins","u":"/guides/crash-course/smart-coins/","b":["Dev Guides","Crash Course"]},{"i":1883,"t":"Custom Puzzle Lock","u":"/guides/custom-puzzle-lock-tutorial/","b":["Dev Guides","Tutorials"]},{"i":1902,"t":"Chialisp and TypeScript","u":"/guides/crash-course/chialisp-and-typescript/","b":["Dev Guides","Crash Course"]},{"i":1942,"t":"DataLayer Permissions","u":"/guides/datalayer-permissions/","b":["Dev Guides","Primitives","DataLayer™"]},{"i":1971,"t":"Signatures","u":"/guides/crash-course/signatures/","b":["Dev Guides","Crash Course"]},{"i":1999,"t":"Developing Applications","u":"/guides/developing-applications-video-series/","b":["Dev Guides","Video Series"]},{"i":2001,"t":"Multiple Issuance CAT","u":"/guides/multiple-issuance-cat-video-series/","b":["Dev Guides","Video Series"]},{"i":2003,"t":"DataLayer User Guide","u":"/guides/datalayer-user-guide/","b":["Dev Guides","Primitives","DataLayer™"]},{"i":2028,"t":"NFT Bulk Minting Tool","u":"/guides/nft-bulk-mint/","b":["Dev Guides","Primitives","NFT Guide"]},{"i":2041,"t":"Minting NFTs With CLI","u":"/guides/nft-cli/","b":["Dev Guides","Primitives","NFT Guide"]},{"i":2059,"t":"NFT Introduction","u":"/guides/nft-intro/","b":["Dev Guides","Primitives","NFT Guide"]},{"i":2088,"t":"Custody Tool User Guide","u":"/guides/custody-tool-user-guide/","b":["Dev Guides","Tutorials","Custody Tool"]},{"i":2128,"t":"Observer Wallet Guide","u":"/guides/observer-wallet-guide/","b":["Dev Guides","Tutorials"]},{"i":2138,"t":"Offers tutorial (GUI)","u":"/guides/offers-gui-tutorial/","b":["Dev Guides","Primitives","Offers"]},{"i":2140,"t":"Programming in Chialisp","u":"/guides/programming-chialisp-video-series/","b":["Dev Guides","Video Series"]},{"i":2142,"t":"Seeder User Guide","u":"/guides/seeder-user-guide/","b":["Dev Guides","Tutorials"]},{"i":2160,"t":"Security, Arguments, Signing","u":"/guides/security-arguments-signing-video-series/","b":["Dev Guides","Video Series"]},{"i":2162,"t":"Offers tutorial (CLI)","u":"/guides/offers-cli-tutorial/","b":["Dev Guides","Primitives","Offers"]},{"i":2200,"t":"Simulator User Guide","u":"/guides/simulator-user-guide/","b":["Dev Guides","Tutorials"]},{"i":2226,"t":"Single Issuance CAT","u":"/guides/single-issuance-cat-video-series/","b":["Dev Guides","Video Series"]},{"i":2228,"t":"Minting NFTs With RPC","u":"/guides/nft-rpc/","b":["Dev Guides","Primitives","NFT Guide"]},{"i":2252,"t":"Singleton Contracts","u":"/guides/singleton-contracts-video-series/","b":["Dev Guides","Video Series"]},{"i":2254,"t":"Tools and Setup","u":"/guides/tools-and-setup-video-series/","b":["Dev Guides","Video Series"]},{"i":2258,"t":"Why Chia is Great","u":"/guides/why-chia-is-great-video-series/","b":["Dev Guides","Video Series"]},{"i":2260,"t":"State, Coins, Announcements","u":"/guides/state-coins-announcements-video-series/","b":["Dev Guides","Video Series"]},{"i":2262,"t":"Harvester Algorithm","u":"/harvester-algorithm/","b":["Docs","Learn More","Consensus","Chains"]},{"i":2264,"t":"Harvesters","u":"/harvester-architecture/","b":["Docs","Learn More","Architecture"]},{"i":2266,"t":"State","u":"/guides/crash-course/state/","b":["Dev Guides","Crash Course"]},{"i":2289,"t":"4 - Hash and VDF chains","u":"/hash-and-vdf-chains/","b":["Docs","Learn More","Green Paper"]},{"i":2297,"t":"Setup","u":"/headless-node/","b":["Docs","Advanced User Docs","Reference Client"]},{"i":2320,"t":"Harvester Protocol","u":"/harvester-protocol/","b":["Docs","Learn More","Protocol"]},{"i":2336,"t":"Harvester RPC","u":"/harvester-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":2352,"t":"Introduction to Chia","u":"/introduction/","b":["Docs","Getting Started"]},{"i":2362,"t":"K Sizes","u":"/k-sizes/","b":["Docs","Learn More","Resources"]},{"i":2371,"t":"Light Clients","u":"/light-clients/","b":["Docs","Learn More","Consensus","Block Validation"]},{"i":2375,"t":"Logging Reference","u":"/logging-reference/","b":[]},{"i":2377,"t":"Architecture","u":"/key-architecture/","b":["Docs","Learn More","Keys"]},{"i":2379,"t":"Mempool","u":"/mempool/","b":["Docs","Learn More","Architecture"]},{"i":2399,"t":"Moving Plots","u":"/moving-plots/","b":["Docs","Advanced User Docs","Plotting"]},{"i":2414,"t":"2 - Longest-Chain Protocols from Efficient Proof Systems","u":"/longest-chain-protocols/","b":["Docs","Learn More","Green Paper"]},{"i":2424,"t":"Advanced Installation","u":"/installation/","b":["Docs","Advanced User Docs"]},{"i":2460,"t":"FAQ","u":"/new-proof-faq/","b":["Docs","Learn More","Consensus","New Proof Format"]},{"i":2488,"t":"Farming Requirements","u":"/new-proof-farming-requirements/","b":["Docs","Learn More","Consensus","New Proof Format"]},{"i":2494,"t":"Networking Protocol","u":"/networking-protocol/","b":["Docs","Learn More","Protocol"]},{"i":2512,"t":"Technical Details","u":"/new-proof-details/","b":["Docs","Learn More","Consensus","New Proof Format"]},{"i":2539,"t":"Technical Overview","u":"/new-proof-technical-overview/","b":["Docs","Learn More","Consensus","New Proof Format"]},{"i":2549,"t":"Plotting Requirements","u":"/new-proof-plotting-requirements/","b":["Docs","Learn More","Consensus","New Proof Format"]},{"i":2560,"t":"Timeline","u":"/new-proof-timeline/","b":["Docs","Learn More","Consensus","New Proof Format"]},{"i":2562,"t":"Introduction","u":"/new-proof-introduction/","b":["Docs","Learn More","Consensus","New Proof Format"]},{"i":2565,"t":"Node Syncing","u":"/node-syncing/","b":[]},{"i":2567,"t":"Offer CLI","u":"/offer-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":2578,"t":"Verifiable Credentials Guide","u":"/guides/verifiable-credentials-guide/","b":["Dev Guides","Primitives"]},{"i":2612,"t":"Overflow Blocks and Weight","u":"/overflow-blocks/","b":["Docs","Learn More","Consensus","Chains"]},{"i":2619,"t":"Password Protected Keys","u":"/passphrases-protected-keys/","b":["Docs","Advanced User Docs","Reference Client"]},{"i":2637,"t":"Offer RPC","u":"/offer-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":2658,"t":"Plot IDs","u":"/plot-ids/","b":["Docs","Learn More","Keys"]},{"i":2660,"t":"Plot Public Keys","u":"/plot-public-keys/","b":["Docs","Learn More","Keys"]},{"i":2668,"t":"Peer Protocol","u":"/peer-protocol/","b":["Docs","Learn More","Protocol"]},{"i":2720,"t":"Plotting Basics","u":"/plotting-basics/","b":["Docs","Advanced User Docs","Plotting"]},{"i":2736,"t":"Plotters","u":"/plotters-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":2763,"t":"Plotting FAQ","u":"/plotting-faq/","b":["Docs","Advanced User Docs","Plotting"]},{"i":2775,"t":"Plotting Hardware","u":"/plotting-hardware/","b":["Docs","Advanced User Docs","Plotting"]},{"i":2797,"t":"Plotting Setup","u":"/plotting-setup/","b":[]},{"i":2805,"t":"How To Plot","u":"/plotting-how-to/","b":["Docs","Advanced User Docs","Plotting"]},{"i":2822,"t":"NFT CLI","u":"/nft-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":2842,"t":"Plotting Software","u":"/plotting-software/","b":["Docs","Advanced User Docs","Plotting"]},{"i":2865,"t":"Pools","u":"/pool-architecture/","b":["Docs","Learn More","Architecture"]},{"i":2867,"t":"Summary","u":"/pool-protocol/","b":["Docs","Learn More","Protocol","Pool Protocol"]},{"i":2889,"t":"Pool Farming","u":"/pool-farming/","b":["Docs","Advanced User Docs","Farming"]},{"i":2994,"t":"Pools","u":"/pools/","b":["Chia Academy","Plotting & Farming"]},{"i":3008,"t":"Primitives Overview","u":"/primitives-overview/","b":["Chia Academy","Primitives"]},{"i":3022,"t":"11.2 Chia Pool Protocol 1.0 Specification","u":"/pool-protocol-specification/","b":["Docs","Learn More","Protocol","Pool Protocol"]},{"i":3058,"t":"Proof of Space","u":"/proof-of-space/","b":["Docs","Learn More","Consensus"]},{"i":3066,"t":"Proof of Time (VDFs)","u":"/proof-of-time/","b":["Docs","Learn More","Consensus"]},{"i":3070,"t":"Reference Farming Hardware - Farming at Any Level","u":"/reference-farming-hardware/","b":["Docs","Advanced User Docs","Farming"]},{"i":3085,"t":"3 - Rational Attackers","u":"/rational-attackers/","b":["Docs","Learn More","Green Paper"]},{"i":3105,"t":"Chia Blockchain Security Intro","u":"/security-basics/","b":["Chia Academy","Blockchain Basics Overview"]},{"i":3119,"t":"References","u":"/references/","b":["Docs","Learn More","Resources"]},{"i":3128,"t":"Serialization Protocol","u":"/serialization-protocol/","b":["Docs","Learn More","Protocol"]},{"i":3140,"t":"RPC Overview","u":"/rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":3154,"t":"Signage and Infusion Points","u":"/signage-and-infusion-points/","b":["Docs","Learn More","Consensus","Chains"]},{"i":3160,"t":"Choosing a compression level","u":"/plotting-compression/","b":["Docs","Advanced User Docs","Plotting"]},{"i":3170,"t":"Simulator RPC Reference","u":"/simulator-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":3192,"t":"6 - Recovering from 51% Attacks and Dynamic Availability","u":"/recovering-from-51-percent-attacks/","b":["Docs","Learn More","Green Paper"]},{"i":3216,"t":"Spend Bundles","u":"/spend-bundles/","b":["Docs","Learn More","Coin Set Model"]},{"i":3226,"t":"Testnets","u":"/testnets/","b":["Docs","Advanced User Docs"]},{"i":3251,"t":"FIO","u":"/storage-benchmarks/","b":["Docs","Learn More","Resources"]},{"i":3261,"t":"Simulator CLI Reference","u":"/simulator-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":3279,"t":"SSD Endurance","u":"/ssd-endurance/","b":["Docs","Advanced User Docs","Plotting"]},{"i":3290,"t":"Three VDF Chains","u":"/three-vdf-chains/","b":["Docs","Learn More","Consensus","Chains"]},{"i":3294,"t":"Timelord Algorithm","u":"/timelord-algorithm/","b":["Docs","Learn More","Consensus"]},{"i":3296,"t":"Chia Academy Program and Contest Terms and Conditions","u":"/timelord-contest-rules/","b":["Docs","Learn More","Resources","Timelord Contest"]},{"i":3327,"t":"What are Timelords","u":"/timelord-basics/","b":["Chia Academy","Blockchain Basics Overview"]},{"i":3341,"t":"Timelord Contest Overview","u":"/timelord-contest/","b":["Docs","Learn More","Resources","Timelord Contest"]},{"i":3365,"t":"Check if Things are Working","u":"/troubleshooting/check-if-things-are-working/","b":["Docs","Troubleshooting"]},{"i":3386,"t":"Timelords","u":"/timelord-architecture/","b":["Docs","Learn More","Architecture"]},{"i":3400,"t":"Locating Keys","u":"/troubleshooting/locating-keys/","b":["Docs","Troubleshooting"]},{"i":3412,"t":"Timelords","u":"/timelord-install/","b":["Docs","Advanced User Docs"]},{"i":3443,"t":"Timelords","u":"/troubleshooting/timelords/","b":["Docs","Troubleshooting"]},{"i":3453,"t":"Node Syncing","u":"/troubleshooting/node-syncing/","b":["Docs","Troubleshooting"]},{"i":3465,"t":"Using the Chia GUI","u":"/using-the-gui/","b":["Docs","Getting Started"]},{"i":3480,"t":"5 - The Chia\\textsf{Chia}Chia Blockchain","u":"/the-chia-blockchain/","b":["Docs","Learn More","Green Paper"]},{"i":3501,"t":"Verifiable Credentials","u":"/vc-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":3516,"t":"Wallets","u":"/wallet-architecture/","b":["Docs","Learn More","Architecture"]},{"i":3518,"t":"Wallet Protocol","u":"/wallet-protocol/","b":["Docs","Learn More","Protocol"]},{"i":3579,"t":"Verifiable Credentials RPCs","u":"/vc-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":3598,"t":"CAT Commands","u":"/walletconnect-cats/","b":["Docs","Advanced User Docs","WalletConnect"]},{"i":3608,"t":"General Commands","u":"/walletconnect-commands/","b":["Docs","Advanced User Docs","WalletConnect"]},{"i":3658,"t":"WalletConnect Developer Guide","u":"/walletconnect-developer-guide/","b":["Dev Guides","Tutorials","WalletConnect"]},{"i":3663,"t":"Wallet CLI","u":"/wallet-cli/","b":["Docs","Advanced User Docs","CLI Reference"]},{"i":3704,"t":"DID Commands","u":"/walletconnect-dids/","b":["Docs","Advanced User Docs","WalletConnect"]},{"i":3710,"t":"Offer Commands","u":"/walletconnect-offers/","b":["Docs","Advanced User Docs","WalletConnect"]},{"i":3735,"t":"NFT Commands","u":"/walletconnect-nfts/","b":["Docs","Advanced User Docs","WalletConnect"]},{"i":3752,"t":"WalletConnect User Guide","u":"/walletconnect-user-guide/","b":["Dev Guides","Tutorials","WalletConnect"]},{"i":3772,"t":"DataLayer RPC","u":"/datalayer-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":3854,"t":"Logging Reference","u":"/troubleshooting/logging-reference/","b":["Docs","Troubleshooting"]},{"i":3878,"t":"NFT RPC","u":"/nft-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":3911,"t":"Full Node RPC","u":"/full-node-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]},{"i":3973,"t":"Wallet RPC","u":"/wallet-rpc/","b":["Docs","Advanced User Docs","RPC Reference"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,4.293]],["t/15",[1,6.566]],["t/29",[2,4.451,3,4.451]],["t/35",[4,4.147]],["t/49",[5,2.415,6,4.524,7,4.524]],["t/51",[8,4.457]],["t/65",[9,4.811,10,3.636]],["t/67",[2,4.451,10,3.636]],["t/85",[11,4.524,12,4.524,13,3.351]],["t/95",[14,3.636,15,5.357]],["t/108",[14,3.071,16,4.524,17,4.524]],["t/122",[14,3.636,18,5.357]],["t/134",[14,3.636,19,5.357]],["t/148",[20,4.811,21,3.968]],["t/154",[0,2.958,22,4.524,23,2.609]],["t/164",[24,4.524,25,4.524,26,2.415]],["t/183",[27,3.759,28,4.062,29,3.759]],["t/185",[30,4.062,31,2.54,32,4.524]],["t/199",[27,3.759,33,2.609,34,4.524]],["t/218",[21,3.968,35,5.357]],["t/224",[5,1.842,33,1.99,36,3.45,37,3.45,38,3.099]],["t/256",[5,2.86,39,3.502]],["t/258",[40,4.451,41,4.182]],["t/274",[42,3.636,43,3.789]],["t/290",[44,5.126]],["t/306",[45,4.451,46,3.179]],["t/322",[47,4.524,48,3.759,49,4.524]],["t/326",[23,2.609,50,3.2,51,2.958]],["t/367",[52,5.455]],["t/381",[46,3.179,53,5.357]],["t/383",[42,3.071,46,2.685,54,3.532]],["t/401",[46,2.048,48,2.867,54,2.694,55,3.45,56,2.867]],["t/423",[46,2.048,48,2.867,54,2.694,56,2.867,57,3.45]],["t/431",[58,5.455]],["t/445",[59,5.455]],["t/447",[42,2.657,46,2.323,54,3.056,56,3.253]],["t/461",[60,6.566]],["t/483",[38,5.896]],["t/494",[30,5.896]],["t/498",[5,2.415,29,3.759,61,4.062]],["t/512",[62,4.451,63,5.357]],["t/535",[64,6.566]],["t/539",[65,6.566]],["t/541",[61,4.811,66,3.789]],["t/543",[14,3.636,67,4.811]],["t/545",[68,3.516,69,3.915,70,3.915,71,3.915]],["t/552",[42,3.636,72,5.357]],["t/565",[5,2.09,73,3.056,74,3.915,75,3.915]],["t/580",[76,4.524,77,4.524,78,3.351]],["t/588",[79,4.451,80,3.968]],["t/641",[81,3.532,82,4.524,83,4.524]],["t/649",[81,4.182,84,2.86]],["t/680",[23,3.09,81,4.182]],["t/717",[23,2.609,26,2.415,81,3.532]],["t/745",[3,3.759,26,2.415,85,4.524]],["t/755",[84,2.86,86,5.357]],["t/828",[23,3.09,87,4.182]],["t/877",[23,3.787]],["t/898",[3,3.759,5,2.415,88,4.524]],["t/910",[89,5.357,90,5.357]],["t/914",[91,5.896]],["t/916",[84,3.506]],["t/955",[84,2.86,91,4.811]],["t/985",[31,2.54,33,2.609,92,4.062]],["t/992",[33,2.609,93,3.759,94,4.524]],["t/994",[33,3.09,95,4.451]],["t/1002",[33,3.09,96,3.968]],["t/1007",[97,2.9,98,5.778,99,3.915]],["t/1025",[33,3.09,100,5.357]],["t/1033",[10,3.636,33,3.09]],["t/1047",[31,2.54,101,4.524,102,4.062]],["t/1059",[103,4.811,104,4.182]],["t/1061",[26,2.09,33,2.258,105,3.915,106,3.915]],["t/1091",[26,2.86,107,3.789]],["t/1121",[108,5.357,109,5.357]],["t/1126",[5,2.415,110,4.062,111,4.524]],["t/1128",[96,4.863]],["t/1471",[51,4.293]],["t/1475",[42,3.071,43,3.2,112,3.759]],["t/1477",[113,4.811,114,5.357]],["t/1479",[5,1.842,73,2.694,95,2.867,115,3.45,116,3.45]],["t/1483",[0,2.958,78,3.351,117,4.062]],["t/1505",[42,3.071,96,3.351,118,4.062]],["t/1518",[13,2.556,14,2.342,44,2.694,119,3.45,120,3.45]],["t/1537",[121,4.524,122,4.524,123,4.062]],["t/1549",[59,4.451,124,5.357]],["t/1551",[20,4.062,44,3.532,125,4.062]],["t/1553",[126,6.566]],["t/1555",[45,3.253,46,2.323,102,3.516,127,3.516]],["t/1557",[40,4.451,41,4.182]],["t/1559",[128,4.062,129,4.062,130,3.532]],["t/1561",[118,4.062,131,4.524,132,4.524]],["t/1573",[73,3.532,133,3.759,134,4.524]],["t/1575",[46,2.685,135,4.524,136,4.524]],["t/1587",[46,2.685,84,2.415,137,4.062]],["t/1601",[26,2.415,52,3.759,138,3.2]],["t/1619",[26,2.415,52,3.759,139,4.062]],["t/1648",[0,2.56,78,2.9,117,3.516,140,3.915]],["t/1684",[0,2.958,4,2.857,8,3.071]],["t/1708",[43,4.644]],["t/1728",[43,4.644]],["t/1756",[40,4.451,41,4.182]],["t/1781",[66,3.789,112,4.451]],["t/1807",[66,4.644]],["t/1825",[79,3.759,80,3.351,141,4.524]],["t/1851",[45,4.451,46,3.179]],["t/1883",[41,3.532,142,4.524,143,4.524]],["t/1902",[43,3.789,144,5.357]],["t/1942",[87,4.182,145,5.357]],["t/1971",[44,5.126]],["t/1999",[146,4.811,147,5.357]],["t/2001",[0,2.958,67,4.062,148,4.062]],["t/2003",[26,2.415,87,3.532,138,3.2]],["t/2028",[4,2.473,80,2.9,149,3.915,150,3.253]],["t/2041",[4,2.857,23,2.609,150,3.759]],["t/2059",[4,3.383,66,3.789]],["t/2088",[26,2.09,79,3.253,80,2.9,138,2.769]],["t/2128",[26,2.415,107,3.2,151,4.524]],["t/2138",[8,3.071,78,3.351,152,4.062]],["t/2140",[43,3.789,153,4.811]],["t/2142",[26,2.415,138,3.2,154,4.524]],["t/2160",[58,3.759,155,4.524,156,4.524]],["t/2162",[8,3.071,23,2.609,78,3.351]],["t/2200",[26,2.415,138,3.2,157,3.759]],["t/2226",[0,2.958,148,4.062,158,4.524]],["t/2228",[4,2.857,84,2.415,150,3.759]],["t/2252",[159,5.357,160,5.357]],["t/2254",[80,3.968,130,4.182]],["t/2258",[5,2.86,110,4.811]],["t/2260",[46,2.685,113,4.062,161,4.062]],["t/2262",[97,3.968,162,4.811]],["t/2264",[97,4.863]],["t/2266",[161,5.896]],["t/2289",[13,2.9,127,3.516,163,3.915,164,3.253]],["t/2297",[130,5.126]],["t/2320",[39,3.502,97,3.968]],["t/2336",[84,2.86,97,3.968]],["t/2352",[5,2.86,66,3.789]],["t/2362",[165,5.357,166,5.357]],["t/2371",[167,5.357,168,5.357]],["t/2375",[51,3.502,169,4.811]],["t/2377",[9,5.896]],["t/2379",[170,6.566]],["t/2399",[31,3.008,171,5.357]],["t/2414",[39,1.823,133,2.317,164,2.317,172,2.789,173,2.789,174,2.317,175,2.789]],["t/2424",[176,5.357,177,5.357]],["t/2460",[96,4.863]],["t/2488",[33,3.09,178,4.811]],["t/2494",[39,3.502,179,5.357]],["t/2512",[180,4.811,181,5.357]],["t/2539",[10,3.636,180,4.811]],["t/2549",[31,3.008,178,4.811]],["t/2560",[182,6.566]],["t/2562",[66,4.644]],["t/2565",[104,4.182,183,4.811]],["t/2567",[8,3.636,23,3.09]],["t/2578",[26,2.415,184,3.759,185,3.759]],["t/2612",[14,3.071,186,4.524,187,4.524]],["t/2619",[21,3.351,188,4.524,189,4.524]],["t/2637",[8,3.636,84,2.86]],["t/2658",[31,3.008,190,5.357]],["t/2660",[21,3.351,31,2.54,191,4.524]],["t/2668",[39,3.502,192,5.357]],["t/2720",[31,3.008,95,4.451]],["t/2736",[193,6.566]],["t/2763",[31,3.008,96,3.968]],["t/2775",[31,3.008,93,4.451]],["t/2797",[31,3.008,130,4.182]],["t/2805",[31,3.687]],["t/2822",[4,3.383,23,3.09]],["t/2842",[31,3.008,194,5.357]],["t/2865",[195,5.126]],["t/2867",[196,6.566]],["t/2889",[33,3.09,195,4.182]],["t/2994",[195,5.126]],["t/3008",[10,3.636,139,4.811]],["t/3022",[5,1.359,39,1.664,68,2.285,112,2.115,133,2.115,195,1.987,197,2.545,198,2.545]],["t/3058",[174,4.451,199,5.357]],["t/3066",[13,3.351,174,3.759,200,4.524]],["t/3070",[33,3.032,51,2.256,93,2.867,201,3.099]],["t/3085",[62,3.759,128,4.062,202,4.524]],["t/3105",[5,2.09,42,2.657,58,3.253,203,3.516]],["t/3119",[51,4.293]],["t/3128",[39,3.502,204,5.357]],["t/3140",[10,3.636,84,2.86]],["t/3154",[205,4.524,206,4.524,207,4.524]],["t/3160",[92,4.062,201,4.062,208,4.524]],["t/3170",[51,2.958,84,2.415,157,3.759]],["t/3192",[62,2.563,209,3.085,210,3.085,211,3.085,212,3.085,213,3.085]],["t/3216",[137,4.811,214,5.357]],["t/3226",[129,5.896]],["t/3251",[215,6.566]],["t/3261",[23,2.609,51,2.958,157,3.759]],["t/3279",[216,5.357,217,5.357]],["t/3290",[13,3.351,164,3.759,218,4.524]],["t/3294",[162,4.811,219,3.789]],["t/3296",[2,2.563,5,1.647,59,2.563,153,2.77,220,2.77,221,3.085]],["t/3327",[219,4.644]],["t/3341",[10,3.071,219,3.2,220,4.062]],["t/3365",[27,3.759,28,4.062,29,3.759]],["t/3386",[219,4.644]],["t/3400",[21,3.968,222,5.357]],["t/3412",[219,4.644]],["t/3443",[219,4.644]],["t/3453",[104,4.182,183,4.811]],["t/3465",[5,2.415,73,3.532,152,4.062]],["t/3480",[5,3.168,125,2.77,203,2.77,223,3.085]],["t/3501",[184,4.451,185,4.451]],["t/3516",[107,4.644]],["t/3518",[39,3.502,107,3.789]],["t/3579",[84,2.415,184,3.759,185,3.759]],["t/3598",[0,3.502,50,3.789]],["t/3608",[50,3.789,123,4.811]],["t/3658",[26,2.415,146,4.062,224,4.062]],["t/3663",[23,3.09,107,3.789]],["t/3704",[50,4.644]],["t/3710",[8,3.636,50,3.789]],["t/3735",[4,3.383,50,3.789]],["t/3752",[26,2.415,138,3.2,224,4.062]],["t/3772",[84,2.86,87,4.182]],["t/3854",[51,3.502,169,4.811]],["t/3878",[4,3.383,84,2.86]],["t/3911",[84,2.415,103,4.062,104,3.532]],["t/3973",[84,2.86,107,3.789]]],"invertedIndex":[["0",{"_index":68,"t":{"545":{"position":[[0,1]]},"3022":{"position":[[26,1]]}}}],["1",{"_index":112,"t":{"1475":{"position":[[0,1]]},"1781":{"position":[[0,1]]},"3022":{"position":[[24,1]]}}}],["11",{"_index":197,"t":{"3022":{"position":[[0,2]]}}}],["2",{"_index":133,"t":{"1573":{"position":[[0,1]]},"2414":{"position":[[0,1]]},"3022":{"position":[[3,1]]}}}],["3",{"_index":128,"t":{"1559":{"position":[[0,1]]},"3085":{"position":[[0,1]]}}}],["4",{"_index":127,"t":{"1555":{"position":[[0,1]]},"2289":{"position":[[0,1]]}}}],["5",{"_index":125,"t":{"1551":{"position":[[0,1]]},"3480":{"position":[[0,1]]}}}],["51",{"_index":211,"t":{"3192":{"position":[[20,2]]}}}],["6",{"_index":209,"t":{"3192":{"position":[[0,1]]}}}],["academi",{"_index":2,"t":{"29":{"position":[[0,7]]},"67":{"position":[[0,7]]},"3296":{"position":[[5,7]]}}}],["account",{"_index":55,"t":{"401":{"position":[[12,7]]}}}],["address",{"_index":7,"t":{"49":{"position":[[10,7]]}}}],["admin",{"_index":22,"t":{"154":{"position":[[4,5]]}}}],["advanc",{"_index":176,"t":{"2424":{"position":[[0,8]]}}}],["algorithm",{"_index":162,"t":{"2262":{"position":[[10,9]]},"3294":{"position":[[9,9]]}}}],["analysi",{"_index":38,"t":{"224":{"position":[[32,8]]},"483":{"position":[[0,8]]}}}],["announc",{"_index":113,"t":{"1477":{"position":[[0,13]]},"2260":{"position":[[14,13]]}}}],["app",{"_index":116,"t":{"1479":{"position":[[22,3]]}}}],["applic",{"_index":147,"t":{"1999":{"position":[[11,12]]}}}],["architectur",{"_index":9,"t":{"65":{"position":[[0,12]]},"2377":{"position":[[0,12]]}}}],["argument",{"_index":155,"t":{"2160":{"position":[[10,9]]}}}],["asic",{"_index":11,"t":{"85":{"position":[[0,5]]}}}],["attack",{"_index":62,"t":{"512":{"position":[[0,7]]},"3085":{"position":[[13,9]]},"3192":{"position":[[24,7]]}}}],["audit",{"_index":77,"t":{"580":{"position":[[8,5]]}}}],["avail",{"_index":213,"t":{"3192":{"position":[[44,12]]}}}],["basic",{"_index":95,"t":{"994":{"position":[[8,6]]},"1479":{"position":[[0,5]]},"2720":{"position":[[9,6]]}}}],["beginn",{"_index":105,"t":{"1061":{"position":[[0,8]]}}}],["bl",{"_index":20,"t":{"148":{"position":[[0,3]]},"1551":{"position":[[3,3]]}}}],["block",{"_index":14,"t":{"95":{"position":[[0,5]]},"108":{"position":[[8,6]]},"122":{"position":[[0,5]]},"134":{"position":[[0,5]]},"543":{"position":[[9,6]]},"1518":{"position":[[13,6]]},"2612":{"position":[[9,6]]}}}],["blockchain",{"_index":203,"t":{"3105":{"position":[[5,10]]},"3480":{"position":[[30,10]]}}}],["bridg",{"_index":25,"t":{"164":{"position":[[4,6]]}}}],["build",{"_index":119,"t":{"1518":{"position":[[4,8]]}}}],["bulk",{"_index":149,"t":{"2028":{"position":[[4,4]]}}}],["bundl",{"_index":214,"t":{"3216":{"position":[[6,7]]}}}],["burn",{"_index":6,"t":{"49":{"position":[[5,4]]}}}],["cat",{"_index":0,"t":{"1":{"position":[[0,4]]},"154":{"position":[[0,3]]},"1483":{"position":[[0,3]]},"1648":{"position":[[3,3]]},"1684":{"position":[[0,4]]},"2001":{"position":[[18,3]]},"2226":{"position":[[16,3]]},"3598":{"position":[[0,3]]}}}],["cat1",{"_index":121,"t":{"1537":{"position":[[0,4]]}}}],["cat2",{"_index":118,"t":{"1505":{"position":[[0,4]]},"1561":{"position":[[0,4]]}}}],["chain",{"_index":164,"t":{"2289":{"position":[[17,6]]},"2414":{"position":[[12,5]]},"3290":{"position":[[10,6]]}}}],["challeng",{"_index":30,"t":{"185":{"position":[[0,10]]},"494":{"position":[[0,10]]}}}],["check",{"_index":27,"t":{"183":{"position":[[0,5]]},"199":{"position":[[0,8]]},"3365":{"position":[[0,5]]}}}],["chia",{"_index":5,"t":{"49":{"position":[[0,4]]},"224":{"position":[[10,4]]},"256":{"position":[[0,4]]},"498":{"position":[[4,4]]},"565":{"position":[[17,4]]},"898":{"position":[[0,4]]},"1126":{"position":[[10,4]]},"1479":{"position":[[32,4]]},"2258":{"position":[[4,4]]},"2352":{"position":[[16,4]]},"3022":{"position":[[5,4]]},"3105":{"position":[[0,4]]},"3296":{"position":[[0,4]]},"3465":{"position":[[10,4]]},"3480":{"position":[[8,4],[20,4],[25,4]]}}}],["chialisp",{"_index":43,"t":{"274":{"position":[[9,8]]},"1475":{"position":[[12,8]]},"1708":{"position":[[0,8]]},"1728":{"position":[[0,8]]},"1902":{"position":[[0,8]]},"2140":{"position":[[15,8]]}}}],["choos",{"_index":208,"t":{"3160":{"position":[[0,8]]}}}],["clawback",{"_index":52,"t":{"367":{"position":[[0,8]]},"1601":{"position":[[0,8]]},"1619":{"position":[[0,8]]}}}],["cli",{"_index":23,"t":{"154":{"position":[[10,3]]},"326":{"position":[[0,3]]},"680":{"position":[[4,3]]},"717":{"position":[[4,3]]},"828":{"position":[[10,3]]},"877":{"position":[[4,3]]},"2041":{"position":[[18,3]]},"2162":{"position":[[17,3]]},"2567":{"position":[[6,3]]},"2822":{"position":[[4,3]]},"3261":{"position":[[10,3]]},"3663":{"position":[[7,3]]}}}],["client",{"_index":168,"t":{"2371":{"position":[[6,7]]}}}],["clvm",{"_index":47,"t":{"322":{"position":[[0,4]]}}}],["coin",{"_index":46,"t":{"306":{"position":[[6,5]]},"381":{"position":[[0,4]]},"383":{"position":[[0,4]]},"401":{"position":[[0,4]]},"423":{"position":[[0,4]]},"447":{"position":[[0,4]]},"1555":{"position":[[15,4]]},"1575":{"position":[[0,4]]},"1587":{"position":[[4,4]]},"1851":{"position":[[6,5]]},"2260":{"position":[[7,5]]}}}],["command",{"_index":50,"t":{"326":{"position":[[4,8]]},"3598":{"position":[[4,8]]},"3608":{"position":[[8,8]]},"3704":{"position":[[4,8]]},"3710":{"position":[[6,8]]},"3735":{"position":[[4,8]]}}}],["compress",{"_index":92,"t":{"985":{"position":[[0,10]]},"3160":{"position":[[11,11]]}}}],["condit",{"_index":59,"t":{"445":{"position":[[0,10]]},"1549":{"position":[[0,9]]},"3296":{"position":[[43,10]]}}}],["consensu",{"_index":61,"t":{"498":{"position":[[9,9]]},"541":{"position":[[0,9]]}}}],["consider",{"_index":94,"t":{"992":{"position":[[17,14]]}}}],["constant",{"_index":69,"t":{"545":{"position":[[4,9]]}}}],["contest",{"_index":220,"t":{"3296":{"position":[[25,7]]},"3341":{"position":[[9,7]]}}}],["contract",{"_index":160,"t":{"2252":{"position":[[10,9]]}}}],["contribut",{"_index":75,"t":{"565":{"position":[[22,13]]}}}],["cost",{"_index":60,"t":{"461":{"position":[[0,5]]}}}],["countermeasur",{"_index":63,"t":{"512":{"position":[[12,15]]}}}],["cr",{"_index":140,"t":{"1648":{"position":[[0,2]]}}}],["creat",{"_index":101,"t":{"1047":{"position":[[0,8]]}}}],["creation",{"_index":117,"t":{"1483":{"position":[[4,8]]},"1648":{"position":[[7,8]]}}}],["credenti",{"_index":185,"t":{"2578":{"position":[[11,11]]},"3501":{"position":[[11,11]]},"3579":{"position":[[11,11]]}}}],["cryptocurr",{"_index":72,"t":{"552":{"position":[[9,16]]}}}],["curri",{"_index":126,"t":{"1553":{"position":[[0,8]]}}}],["custodi",{"_index":79,"t":{"588":{"position":[[0,7]]},"1825":{"position":[[0,7]]},"2088":{"position":[[0,7]]}}}],["custom",{"_index":142,"t":{"1883":{"position":[[0,6]]}}}],["daemon",{"_index":86,"t":{"755":{"position":[[0,6]]}}}],["dao",{"_index":81,"t":{"641":{"position":[[0,3]]},"649":{"position":[[0,3]]},"680":{"position":[[0,3]]},"717":{"position":[[0,3]]}}}],["datalay",{"_index":87,"t":{"828":{"position":[[0,9]]},"1942":{"position":[[0,9]]},"2003":{"position":[[0,9]]},"3772":{"position":[[0,9]]}}}],["descript",{"_index":141,"t":{"1825":{"position":[[13,11]]}}}],["detail",{"_index":181,"t":{"2512":{"position":[[10,7]]}}}],["dev",{"_index":85,"t":{"745":{"position":[[0,3]]}}}],["develop",{"_index":146,"t":{"1999":{"position":[[0,10]]},"3658":{"position":[[14,9]]}}}],["did",{"_index":1,"t":{"15":{"position":[[0,4]]}}}],["difficulti",{"_index":90,"t":{"910":{"position":[[10,10]]}}}],["doc",{"_index":88,"t":{"898":{"position":[[5,4]]}}}],["dual",{"_index":100,"t":{"1025":{"position":[[0,4]]}}}],["dynam",{"_index":212,"t":{"3192":{"position":[[36,7]]}}}],["effici",{"_index":173,"t":{"2414":{"position":[[33,9]]}}}],["endur",{"_index":217,"t":{"3279":{"position":[[4,9]]}}}],["epoch",{"_index":89,"t":{"910":{"position":[[0,5]]}}}],["evm",{"_index":49,"t":{"322":{"position":[[8,3]]}}}],["faq",{"_index":96,"t":{"1002":{"position":[[8,3]]},"1128":{"position":[[0,3]]},"1505":{"position":[[15,3]]},"2460":{"position":[[0,3]]},"2763":{"position":[[9,3]]}}}],["farm",{"_index":33,"t":{"199":{"position":[[9,4]]},"224":{"position":[[15,7]]},"985":{"position":[[16,7]]},"992":{"position":[[0,7]]},"994":{"position":[[0,7]]},"1002":{"position":[[0,7]]},"1025":{"position":[[5,7]]},"1033":{"position":[[0,7]]},"1061":{"position":[[20,7]]},"2488":{"position":[[0,7]]},"2889":{"position":[[5,7]]},"3070":{"position":[[10,7],[29,7]]}}}],["farmer",{"_index":91,"t":{"914":{"position":[[0,7]]},"955":{"position":[[0,6]]}}}],["filter",{"_index":32,"t":{"185":{"position":[[18,7]]}}}],["fio",{"_index":215,"t":{"3251":{"position":[[0,3]]}}}],["first",{"_index":102,"t":{"1047":{"position":[[14,5]]},"1555":{"position":[[3,5]]}}}],["foliag",{"_index":64,"t":{"535":{"position":[[0,7]]}}}],["fork",{"_index":65,"t":{"539":{"position":[[0,5]]}}}],["form",{"_index":17,"t":{"108":{"position":[[19,6]]}}}],["format",{"_index":15,"t":{"95":{"position":[[6,6]]}}}],["full",{"_index":103,"t":{"1059":{"position":[[0,4]]},"3911":{"position":[[0,4]]}}}],["gener",{"_index":123,"t":{"1537":{"position":[[14,10]]},"3608":{"position":[[0,7]]}}}],["github",{"_index":74,"t":{"565":{"position":[[6,6]]}}}],["glossari",{"_index":111,"t":{"1126":{"position":[[15,8]]}}}],["great",{"_index":110,"t":{"1126":{"position":[[4,5]]},"2258":{"position":[[12,5]]}}}],["green",{"_index":108,"t":{"1121":{"position":[[0,5]]}}}],["gui",{"_index":152,"t":{"2138":{"position":[[17,3]]},"3465":{"position":[[15,3]]}}}],["guid",{"_index":26,"t":{"164":{"position":[[11,5]]},"717":{"position":[[8,5]]},"745":{"position":[[4,6]]},"1061":{"position":[[11,5]]},"1091":{"position":[[7,5]]},"1601":{"position":[[14,5]]},"1619":{"position":[[19,5]]},"2003":{"position":[[15,5]]},"2088":{"position":[[18,5]]},"2128":{"position":[[16,5]]},"2142":{"position":[[12,5]]},"2200":{"position":[[15,5]]},"2578":{"position":[[23,5]]},"3658":{"position":[[24,5]]},"3752":{"position":[[19,5]]}}}],["hardwar",{"_index":93,"t":{"992":{"position":[[8,8]]},"2775":{"position":[[9,8]]},"3070":{"position":[[18,8]]}}}],["harvest",{"_index":97,"t":{"1007":{"position":[[7,7]]},"2262":{"position":[[0,9]]},"2264":{"position":[[0,10]]},"2320":{"position":[[0,9]]},"2336":{"position":[[0,9]]}}}],["hash",{"_index":163,"t":{"2289":{"position":[[4,4]]}}}],["health",{"_index":34,"t":{"199":{"position":[[14,6]]}}}],["home",{"_index":3,"t":{"29":{"position":[[8,4]]},"745":{"position":[[11,4]]},"898":{"position":[[10,4]]}}}],["hw",{"_index":12,"t":{"85":{"position":[[6,2]]}}}],["id",{"_index":190,"t":{"2658":{"position":[[5,3]]}}}],["infus",{"_index":206,"t":{"3154":{"position":[[12,8]]}}}],["inner",{"_index":40,"t":{"258":{"position":[[0,5]]},"1557":{"position":[[0,5]]},"1756":{"position":[[0,5]]}}}],["instal",{"_index":177,"t":{"2424":{"position":[[9,12]]}}}],["intro",{"_index":42,"t":{"274":{"position":[[0,5]]},"383":{"position":[[9,5]]},"447":{"position":[[15,5]]},"552":{"position":[[0,5]]},"1475":{"position":[[3,5]]},"1505":{"position":[[5,5]]},"3105":{"position":[[25,5]]}}}],["introduct",{"_index":66,"t":{"541":{"position":[[10,12]]},"1781":{"position":[[4,12]]},"1807":{"position":[[0,12]]},"2059":{"position":[[4,12]]},"2352":{"position":[[0,12]]},"2562":{"position":[[0,12]]}}}],["issu",{"_index":83,"t":{"641":{"position":[[10,6]]}}}],["issuanc",{"_index":148,"t":{"2001":{"position":[[9,8]]},"2226":{"position":[[7,8]]}}}],["k",{"_index":165,"t":{"2362":{"position":[[0,1]]}}}],["key",{"_index":21,"t":{"148":{"position":[[4,4]]},"218":{"position":[[0,3]]},"2619":{"position":[[19,4]]},"2660":{"position":[[12,4]]},"3400":{"position":[[9,4]]}}}],["known",{"_index":82,"t":{"641":{"position":[[4,5]]}}}],["level",{"_index":201,"t":{"3070":{"position":[[44,5]]},"3160":{"position":[[23,5]]}}}],["lifecycl",{"_index":135,"t":{"1575":{"position":[[5,9]]}}}],["light",{"_index":167,"t":{"2371":{"position":[[0,5]]}}}],["locat",{"_index":222,"t":{"3400":{"position":[[0,8]]}}}],["lock",{"_index":143,"t":{"1883":{"position":[[14,4]]}}}],["log",{"_index":169,"t":{"2375":{"position":[[0,7]]},"3854":{"position":[[0,7]]}}}],["longest",{"_index":172,"t":{"2414":{"position":[[4,7]]}}}],["machin",{"_index":98,"t":{"1007":{"position":[[24,8],[56,7]]}}}],["main",{"_index":99,"t":{"1007":{"position":[[51,4]]}}}],["manag",{"_index":35,"t":{"218":{"position":[[4,10]]}}}],["mempool",{"_index":170,"t":{"2379":{"position":[[0,7]]}}}],["mint",{"_index":150,"t":{"2028":{"position":[[9,7]]},"2041":{"position":[[0,7]]},"2228":{"position":[[0,7]]}}}],["model",{"_index":56,"t":{"401":{"position":[[20,5]]},"423":{"position":[[17,5]]},"447":{"position":[[9,5]]}}}],["modul",{"_index":134,"t":{"1573":{"position":[[9,7]]}}}],["morph",{"_index":124,"t":{"1549":{"position":[[10,8]]}}}],["move",{"_index":171,"t":{"2399":{"position":[[0,6]]}}}],["multipl",{"_index":67,"t":{"543":{"position":[[0,8]]},"2001":{"position":[[0,8]]}}}],["network",{"_index":179,"t":{"2494":{"position":[[0,10]]}}}],["new",{"_index":16,"t":{"108":{"position":[[4,3]]}}}],["nft",{"_index":4,"t":{"35":{"position":[[0,4]]},"1684":{"position":[[17,4]]},"2028":{"position":[[0,3]]},"2041":{"position":[[8,4]]},"2059":{"position":[[0,3]]},"2228":{"position":[[8,4]]},"2822":{"position":[[0,3]]},"3735":{"position":[[0,3]]},"3878":{"position":[[0,3]]}}}],["node",{"_index":104,"t":{"1059":{"position":[[5,5]]},"2565":{"position":[[0,4]]},"3453":{"position":[[0,4]]},"3911":{"position":[[5,4]]}}}],["notat",{"_index":71,"t":{"545":{"position":[[29,8]]}}}],["observ",{"_index":151,"t":{"2128":{"position":[[0,8]]}}}],["offer",{"_index":8,"t":{"51":{"position":[[0,6]]},"1684":{"position":[[6,6]]},"2138":{"position":[[0,6]]},"2162":{"position":[[0,6]]},"2567":{"position":[[0,5]]},"2637":{"position":[[0,5]]},"3710":{"position":[[0,5]]}}}],["oracl",{"_index":114,"t":{"1477":{"position":[[15,7]]}}}],["overflow",{"_index":186,"t":{"2612":{"position":[[0,8]]}}}],["overview",{"_index":10,"t":{"65":{"position":[[13,8]]},"67":{"position":[[8,8]]},"1033":{"position":[[8,8]]},"2539":{"position":[[10,8]]},"3008":{"position":[[11,8]]},"3140":{"position":[[4,8]]},"3341":{"position":[[17,8]]}}}],["paper",{"_index":109,"t":{"1121":{"position":[[6,5]]}}}],["password",{"_index":188,"t":{"2619":{"position":[[0,8]]}}}],["peer",{"_index":192,"t":{"2668":{"position":[[0,4]]}}}],["permiss",{"_index":145,"t":{"1942":{"position":[[10,11]]}}}],["plot",{"_index":31,"t":{"185":{"position":[[13,4]]},"985":{"position":[[11,4]]},"1047":{"position":[[20,4]]},"2399":{"position":[[7,5]]},"2549":{"position":[[0,8]]},"2658":{"position":[[0,4]]},"2660":{"position":[[0,4]]},"2720":{"position":[[0,8]]},"2763":{"position":[[0,8]]},"2775":{"position":[[0,8]]},"2797":{"position":[[0,8]]},"2805":{"position":[[7,4]]},"2842":{"position":[[0,8]]}}}],["plotter",{"_index":193,"t":{"2736":{"position":[[0,8]]}}}],["point",{"_index":207,"t":{"3154":{"position":[[21,6]]}}}],["pool",{"_index":195,"t":{"2865":{"position":[[0,5]]},"2889":{"position":[[0,4]]},"2994":{"position":[[0,5]]},"3022":{"position":[[10,4]]}}}],["pospac",{"_index":120,"t":{"1518":{"position":[[21,7]]}}}],["prefarm",{"_index":76,"t":{"580":{"position":[[0,7]]}}}],["primit",{"_index":139,"t":{"1619":{"position":[[9,9]]},"3008":{"position":[[0,10]]}}}],["program",{"_index":153,"t":{"2140":{"position":[[0,11]]},"3296":{"position":[[13,7]]}}}],["proof",{"_index":174,"t":{"2414":{"position":[[43,5]]},"3058":{"position":[[0,5]]},"3066":{"position":[[0,5]]}}}],["protect",{"_index":189,"t":{"2619":{"position":[[9,9]]}}}],["protocol",{"_index":39,"t":{"256":{"position":[[5,8]]},"2320":{"position":[[10,8]]},"2414":{"position":[[18,9]]},"2494":{"position":[[11,8]]},"2668":{"position":[[5,8]]},"3022":{"position":[[15,8]]},"3128":{"position":[[14,8]]},"3518":{"position":[[7,8]]}}}],["public",{"_index":191,"t":{"2660":{"position":[[5,6]]}}}],["puzzl",{"_index":41,"t":{"258":{"position":[[6,7]]},"1557":{"position":[[6,7]]},"1756":{"position":[[6,7]]},"1883":{"position":[[7,6]]}}}],["ration",{"_index":202,"t":{"3085":{"position":[[4,8]]}}}],["recov",{"_index":210,"t":{"3192":{"position":[[4,10]]}}}],["refer",{"_index":51,"t":{"326":{"position":[[13,9]]},"1471":{"position":[[0,10]]},"2375":{"position":[[8,9]]},"3070":{"position":[[0,9]]},"3119":{"position":[[0,10]]},"3170":{"position":[[14,9]]},"3261":{"position":[[14,9]]},"3854":{"position":[[8,9]]}}}],["reissuanc",{"_index":132,"t":{"1561":{"position":[[11,10]]}}}],["requir",{"_index":178,"t":{"2488":{"position":[[8,12]]},"2549":{"position":[[9,12]]}}}],["reward",{"_index":18,"t":{"122":{"position":[[6,7]]}}}],["rpc",{"_index":84,"t":{"649":{"position":[[4,4]]},"755":{"position":[[7,3]]},"916":{"position":[[4,3]]},"955":{"position":[[7,3]]},"1587":{"position":[[0,3]]},"2228":{"position":[[18,3]]},"2336":{"position":[[10,3]]},"2637":{"position":[[6,3]]},"3140":{"position":[[0,3]]},"3170":{"position":[[10,3]]},"3579":{"position":[[23,4]]},"3772":{"position":[[10,3]]},"3878":{"position":[[4,3]]},"3911":{"position":[[10,3]]},"3973":{"position":[[7,3]]}}}],["s",{"_index":106,"t":{"1061":{"position":[[9,1]]}}}],["secur",{"_index":58,"t":{"431":{"position":[[0,8]]},"2160":{"position":[[0,8]]},"3105":{"position":[[16,8]]}}}],["seeder",{"_index":154,"t":{"2142":{"position":[[0,6]]}}}],["select",{"_index":53,"t":{"381":{"position":[[5,9]]}}}],["serial",{"_index":204,"t":{"3128":{"position":[[0,13]]}}}],["set",{"_index":54,"t":{"383":{"position":[[5,3]]},"401":{"position":[[5,3]]},"423":{"position":[[5,3]]},"447":{"position":[[5,3]]}}}],["setup",{"_index":130,"t":{"1559":{"position":[[11,5]]},"2254":{"position":[[10,5]]},"2297":{"position":[[0,5]]},"2797":{"position":[[9,5]]}}}],["sign",{"_index":156,"t":{"2160":{"position":[[21,7]]}}}],["signag",{"_index":205,"t":{"3154":{"position":[[0,7]]}}}],["signatur",{"_index":44,"t":{"290":{"position":[[0,10]]},"1518":{"position":[[39,10]]},"1551":{"position":[[7,10]]},"1971":{"position":[[0,10]]}}}],["simul",{"_index":157,"t":{"2200":{"position":[[0,9]]},"3170":{"position":[[0,9]]},"3261":{"position":[[0,9]]}}}],["singl",{"_index":158,"t":{"2226":{"position":[[0,6]]}}}],["singleton",{"_index":159,"t":{"2252":{"position":[[0,9]]}}}],["size",{"_index":166,"t":{"2362":{"position":[[2,5]]}}}],["smart",{"_index":45,"t":{"306":{"position":[[0,5]]},"1555":{"position":[[9,5]]},"1851":{"position":[[0,5]]}}}],["snapshot",{"_index":122,"t":{"1537":{"position":[[5,8]]}}}],["softwar",{"_index":194,"t":{"2842":{"position":[[9,8]]}}}],["space",{"_index":199,"t":{"3058":{"position":[[9,5]]}}}],["specif",{"_index":198,"t":{"3022":{"position":[[28,13]]}}}],["spend",{"_index":137,"t":{"1587":{"position":[[9,5]]},"3216":{"position":[[0,5]]}}}],["ssd",{"_index":216,"t":{"3279":{"position":[[0,3]]}}}],["state",{"_index":161,"t":{"2260":{"position":[[0,5]]},"2266":{"position":[[0,5]]}}}],["storag",{"_index":36,"t":{"224":{"position":[[0,7]]}}}],["structur",{"_index":115,"t":{"1479":{"position":[[6,9]]}}}],["summari",{"_index":196,"t":{"2867":{"position":[[0,7]]}}}],["sync",{"_index":183,"t":{"2565":{"position":[[5,7]]},"3453":{"position":[[5,7]]}}}],["system",{"_index":175,"t":{"2414":{"position":[[49,7]]}}}],["technic",{"_index":180,"t":{"2512":{"position":[[0,9]]},"2539":{"position":[[0,9]]}}}],["term",{"_index":221,"t":{"3296":{"position":[[33,5]]}}}],["test",{"_index":136,"t":{"1575":{"position":[[19,7]]}}}],["testnet",{"_index":129,"t":{"1559":{"position":[[3,7]]},"3226":{"position":[[0,8]]}}}],["textsf",{"_index":223,"t":{"3480":{"position":[[13,6]]}}}],["thing",{"_index":28,"t":{"183":{"position":[[9,6]]},"3365":{"position":[[9,6]]}}}],["three",{"_index":218,"t":{"3290":{"position":[[0,5]]}}}],["time",{"_index":200,"t":{"3066":{"position":[[9,4]]}}}],["timelin",{"_index":182,"t":{"2560":{"position":[[0,8]]}}}],["timelord",{"_index":219,"t":{"3294":{"position":[[0,8]]},"3327":{"position":[[9,9]]},"3341":{"position":[[0,8]]},"3386":{"position":[[0,9]]},"3412":{"position":[[0,9]]},"3443":{"position":[[0,9]]}}}],["token",{"_index":131,"t":{"1561":{"position":[[5,5]]}}}],["tool",{"_index":80,"t":{"588":{"position":[[8,4]]},"1825":{"position":[[8,4]]},"2028":{"position":[[17,4]]},"2088":{"position":[[8,4]]},"2254":{"position":[[0,5]]}}}],["tutori",{"_index":78,"t":{"580":{"position":[[14,8]]},"1483":{"position":[[13,8]]},"1648":{"position":[[16,8]]},"2138":{"position":[[7,8]]},"2162":{"position":[[7,8]]}}}],["typescript",{"_index":144,"t":{"1902":{"position":[[13,10]]}}}],["us",{"_index":73,"t":{"565":{"position":[[0,5]]},"1479":{"position":[[26,5]]},"1573":{"position":[[3,5]]},"3465":{"position":[[0,5]]}}}],["user",{"_index":138,"t":{"1601":{"position":[[9,4]]},"2003":{"position":[[10,4]]},"2088":{"position":[[13,4]]},"2142":{"position":[[7,4]]},"2200":{"position":[[10,4]]},"3752":{"position":[[14,4]]}}}],["utxo",{"_index":57,"t":{"423":{"position":[[12,4]]}}}],["valid",{"_index":19,"t":{"134":{"position":[[6,10]]}}}],["variabl",{"_index":70,"t":{"545":{"position":[[15,9]]}}}],["vdf",{"_index":13,"t":{"85":{"position":[[9,3]]},"1518":{"position":[[30,4]]},"2289":{"position":[[13,3]]},"3066":{"position":[[15,4]]},"3290":{"position":[[6,3]]}}}],["verifi",{"_index":184,"t":{"2578":{"position":[[0,10]]},"3501":{"position":[[0,10]]},"3579":{"position":[[0,10]]}}}],["vs",{"_index":48,"t":{"322":{"position":[[5,2]]},"401":{"position":[[9,2]]},"423":{"position":[[9,2]]}}}],["wallet",{"_index":107,"t":{"1091":{"position":[[0,6]]},"2128":{"position":[[9,6]]},"3516":{"position":[[0,7]]},"3518":{"position":[[0,6]]},"3663":{"position":[[0,6]]},"3973":{"position":[[0,6]]}}}],["walletconnect",{"_index":224,"t":{"3658":{"position":[[0,13]]},"3752":{"position":[[0,13]]}}}],["weight",{"_index":187,"t":{"2612":{"position":[[20,6]]}}}],["work",{"_index":29,"t":{"183":{"position":[[20,7]]},"498":{"position":[[19,5]]},"3365":{"position":[[20,7]]}}}],["workload",{"_index":37,"t":{"224":{"position":[[23,8]]}}}],["xch",{"_index":24,"t":{"164":{"position":[[0,3]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"Learning objectives","u":"/academy-cat/","h":"#learning-objectives","p":1},{"i":5,"t":"Content","u":"/academy-cat/","h":"#content","p":1},{"i":6,"t":"Script","u":"/academy-cat/","h":"#script","p":1},{"i":8,"t":"Common gotchas","u":"/academy-cat/","h":"#common-gotchas","p":1},{"i":10,"t":"Knowledge check","u":"/academy-cat/","h":"#knowledge-check","p":1},{"i":12,"t":"Additional resources","u":"/academy-cat/","h":"#additional-resources","p":1},{"i":13,"t":"Links","u":"/academy-cat/","h":"#links","p":1},{"i":17,"t":"Learning objectives","u":"/academy-did/","h":"#learning-objectives","p":15},{"i":19,"t":"Content","u":"/academy-did/","h":"#content","p":15},{"i":20,"t":"Script","u":"/academy-did/","h":"#script","p":15},{"i":22,"t":"Common gotchas","u":"/academy-did/","h":"#common-gotchas","p":15},{"i":24,"t":"Knowledge check","u":"/academy-did/","h":"#knowledge-check","p":15},{"i":26,"t":"Additional resources","u":"/academy-did/","h":"#additional-resources","p":15},{"i":27,"t":"Links","u":"/academy-did/","h":"#links","p":15},{"i":31,"t":"Courses","u":"/academy-home/","h":"#courses","p":29},{"i":33,"t":"How the courses work","u":"/academy-home/","h":"#how-the-courses-work","p":29},{"i":37,"t":"Learning objectives","u":"/academy-nft/","h":"#learning-objectives","p":35},{"i":39,"t":"Content","u":"/academy-nft/","h":"#content","p":35},{"i":40,"t":"Script","u":"/academy-nft/","h":"#script","p":35},{"i":42,"t":"Common gotchas","u":"/academy-nft/","h":"#common-gotchas","p":35},{"i":44,"t":"Knowledge check","u":"/academy-nft/","h":"#knowledge-check","p":35},{"i":46,"t":"Additional resources","u":"/academy-nft/","h":"#additional-resources","p":35},{"i":47,"t":"Links","u":"/academy-nft/","h":"#links","p":35},{"i":53,"t":"Learning objectives","u":"/academy-offers/","h":"#learning-objectives","p":51},{"i":55,"t":"Content","u":"/academy-offers/","h":"#content","p":51},{"i":56,"t":"Script","u":"/academy-offers/","h":"#script","p":51},{"i":58,"t":"Common gotchas","u":"/academy-offers/","h":"#common-gotchas","p":51},{"i":60,"t":"Knowledge check","u":"/academy-offers/","h":"#knowledge-check","p":51},{"i":62,"t":"Additional resources","u":"/academy-offers/","h":"#additional-resources","p":51},{"i":63,"t":"Links","u":"/academy-offers/","h":"#links","p":51},{"i":69,"t":"Lesson title","u":"/academy-overview/","h":"#lesson-title","p":67},{"i":71,"t":"Learning objectives","u":"/academy-overview/","h":"#learning-objectives","p":67},{"i":73,"t":"Content","u":"/academy-overview/","h":"#content","p":67},{"i":75,"t":"Script","u":"/academy-overview/","h":"#script","p":67},{"i":77,"t":"Common gotchas","u":"/academy-overview/","h":"#common-gotchas","p":67},{"i":79,"t":"Knowledge check","u":"/academy-overview/","h":"#knowledge-check","p":67},{"i":81,"t":"Additional resources","u":"/academy-overview/","h":"#additional-resources","p":67},{"i":83,"t":"Runnable Chialisp and clvm plugins","u":"/academy-overview/","h":"#runnable-chialisp-and-clvm-plugins","p":67},{"i":86,"t":"Reference","u":"/asic-cli/","h":"#reference","p":85},{"i":87,"t":"hw_vdf_client","u":"/asic-cli/","h":"#hw_vdf_client","p":85},{"i":89,"t":"Troubleshooting a Timelord","u":"/asic-cli/","h":"#troubleshooting-a-timelord","p":85},{"i":91,"t":"Timelord support","u":"/asic-cli/","h":"#timelord-support","p":85},{"i":93,"t":"Timelord FAQ","u":"/asic-cli/","h":"#timelord-faq","p":85},{"i":96,"t":"Full Block","u":"/block-format/","h":"#full-block","p":95},{"i":98,"t":"transactions_generator update","u":"/block-format/","h":"#transactions_generator-update","p":95},{"i":100,"t":"When","u":"/block-format/","h":"#when","p":95},{"i":102,"t":"Why","u":"/block-format/","h":"#why","p":95},{"i":104,"t":"Where","u":"/block-format/","h":"#where","p":95},{"i":106,"t":"What","u":"/block-format/","h":"#what","p":95},{"i":110,"t":"Learning objectives","u":"/block-formation-basics/","h":"#learning-objectives","p":108},{"i":112,"t":"Content","u":"/block-formation-basics/","h":"#content","p":108},{"i":113,"t":"Script","u":"/block-formation-basics/","h":"#script","p":108},{"i":115,"t":"Common gotchas","u":"/block-formation-basics/","h":"#common-gotchas","p":108},{"i":117,"t":"Knowledge check","u":"/block-formation-basics/","h":"#knowledge-check","p":108},{"i":119,"t":"Additional resources","u":"/block-formation-basics/","h":"#additional-resources","p":108},{"i":120,"t":"Links","u":"/block-formation-basics/","h":"#links","p":108},{"i":124,"t":"Strategic Reserve (pre-farm)","u":"/block-rewards/","h":"#strategic-reserve-pre-farm","p":122},{"i":126,"t":"Halvings","u":"/block-rewards/","h":"#halvings","p":122},{"i":128,"t":"Reward claims","u":"/block-rewards/","h":"#reward-claims","p":122},{"i":130,"t":"Farmer vs Pool reward","u":"/block-rewards/","h":"#farmer-vs-pool-reward","p":122},{"i":132,"t":"Rewards schedule","u":"/block-rewards/","h":"#rewards-schedule","p":122},{"i":136,"t":"Full Sync vs Normal Operation","u":"/block-validation/","h":"#full-sync-vs-normal-operation","p":134},{"i":138,"t":"Full Sync","u":"/block-validation/","h":"#full-sync","p":134},{"i":140,"t":"Normal Operation","u":"/block-validation/","h":"#normal-operation","p":134},{"i":142,"t":"Block Validation Steps","u":"/block-validation/","h":"#block-validation-steps","p":134},{"i":144,"t":"Header Validation","u":"/block-validation/","h":"#header-validation","p":134},{"i":146,"t":"Body Validation","u":"/block-validation/","h":"#body-validation","p":134},{"i":150,"t":"Difference between Chia and EIP-2333","u":"/bls-keys/","h":"#difference-between-chia-and-eip-2333","p":148},{"i":152,"t":"Non-Observer vs Observer Keys","u":"/bls-keys/","h":"#non-observer-vs-observer-keys","p":148},{"i":155,"t":"Intro","u":"/cat-admin-cli/","h":"#intro","p":154},{"i":157,"t":"Reference","u":"/cat-admin-cli/","h":"#reference","p":154},{"i":158,"t":"cats","u":"/cat-admin-cli/","h":"#cats","p":154},{"i":160,"t":"secure_the_bag","u":"/cat-admin-cli/","h":"#secure_the_bag","p":154},{"i":162,"t":"unwind_the_bag","u":"/cat-admin-cli/","h":"#unwind_the_bag","p":154},{"i":165,"t":"Intro","u":"/bridge-guide/","h":"#intro","p":164},{"i":167,"t":"The Warp.green Bridge","u":"/bridge-guide/","h":"#the-warpgreen-bridge","p":164},{"i":169,"t":"Set up MetaMask","u":"/bridge-guide/","h":"#set-up-metamask","p":164},{"i":171,"t":"Set up a Chia wallet","u":"/bridge-guide/","h":"#set-up-a-chia-wallet","p":164},{"i":173,"t":"Connect your wallets to the bridge","u":"/bridge-guide/","h":"#connect-your-wallets-to-the-bridge","p":164},{"i":175,"t":"Connect your ETH wallet","u":"/bridge-guide/","h":"#connect-your-eth-wallet","p":164},{"i":177,"t":"Connect your Chia wallet","u":"/bridge-guide/","h":"#connect-your-chia-wallet","p":164},{"i":179,"t":"Initiate the transfer","u":"/bridge-guide/","h":"#initiate-the-transfer","p":164},{"i":181,"t":"Complete the transfer","u":"/bridge-guide/","h":"#complete-the-transfer","p":164},{"i":187,"t":"Learning objectives","u":"/challenges-plot-filters/","h":"#learning-objectives","p":185},{"i":189,"t":"Content","u":"/challenges-plot-filters/","h":"#content","p":185},{"i":190,"t":"Script","u":"/challenges-plot-filters/","h":"#script","p":185},{"i":192,"t":"Common gotchas","u":"/challenges-plot-filters/","h":"#common-gotchas","p":185},{"i":194,"t":"Knowledge check","u":"/challenges-plot-filters/","h":"#knowledge-check","p":185},{"i":196,"t":"Additional resources","u":"/challenges-plot-filters/","h":"#additional-resources","p":185},{"i":197,"t":"Links","u":"/challenges-plot-filters/","h":"#links","p":185},{"i":201,"t":"GUI health","u":"/checking-farm-health/","h":"#gui-health","p":199},{"i":203,"t":"Farm panel","u":"/checking-farm-health/","h":"#farm-panel","p":199},{"i":205,"t":"Harvest panel","u":"/checking-farm-health/","h":"#harvest-panel","p":199},{"i":207,"t":"CLI Health","u":"/checking-farm-health/","h":"#cli-health","p":199},{"i":208,"t":"Check if your farm thinks it's farming","u":"/checking-farm-health/","h":"#check-if-your-farm-thinks-its-farming","p":199},{"i":210,"t":"Change the log level output","u":"/checking-farm-health/","h":"#change-the-log-level-output","p":199},{"i":212,"t":"Check if your plots are passing the filter","u":"/checking-farm-health/","h":"#check-if-your-plots-are-passing-the-filter","p":199},{"i":214,"t":"Checking for proofs","u":"/checking-farm-health/","h":"#checking-for-proofs","p":199},{"i":216,"t":"Can a Double NAT scenario impact my farm's ability to send valid proofs to the network?","u":"/checking-farm-health/","h":"#can-a-double-nat-scenario-impact-my-farms-ability-to-send-valid-proofs-to-the-network","p":199},{"i":220,"t":"1 key (default)","u":"/chia-key-management/","h":"#1-key-default","p":218},{"i":222,"t":"2 Keys (farming key + cold storage key)","u":"/chia-key-management/","h":"#2-keys-farming-key--cold-storage-key","p":218},{"i":226,"t":"Abstract","u":"/chia-farming-workload/","h":"#abstract","p":224},{"i":228,"t":"Proof of space verification","u":"/chia-farming-workload/","h":"#proof-of-space-verification","p":224},{"i":230,"t":"Storage workload profile","u":"/chia-farming-workload/","h":"#storage-workload-profile","p":224},{"i":232,"t":"Average IO Size per request","u":"/chia-farming-workload/","h":"#average-io-size-per-request","p":224},{"i":234,"t":"Calculated data read and disk bandwidth","u":"/chia-farming-workload/","h":"#calculated-data-read-and-disk-bandwidth","p":224},{"i":236,"t":"Hard drive rated workloads","u":"/chia-farming-workload/","h":"#hard-drive-rated-workloads","p":224},{"i":238,"t":"Measured data","u":"/chia-farming-workload/","h":"#measured-data","p":224},{"i":240,"t":"Measurement tools","u":"/chia-farming-workload/","h":"#measurement-tools","p":224},{"i":242,"t":"System configuration","u":"/chia-farming-workload/","h":"#system-configuration","p":224},{"i":244,"t":"Data durability, uncorrectable bit error rate, and Chia farming","u":"/chia-farming-workload/","h":"#data-durability-uncorrectable-bit-error-rate-and-chia-farming","p":224},{"i":246,"t":"UBER of standard storage devices","u":"/chia-farming-workload/","h":"#uber-of-standard-storage-devices","p":224},{"i":248,"t":"UBER in Chia","u":"/chia-farming-workload/","h":"#uber-in-chia","p":224},{"i":250,"t":"What happens when an error occurs?","u":"/chia-farming-workload/","h":"#what-happens-when-an-error-occurs","p":224},{"i":252,"t":"Summary","u":"/chia-farming-workload/","h":"#summary","p":224},{"i":254,"t":"Resources","u":"/chia-farming-workload/","h":"#resources","p":224},{"i":260,"t":"Learning objectives","u":"/chialisp-inner-puzzle/","h":"#learning-objectives","p":258},{"i":262,"t":"Content","u":"/chialisp-inner-puzzle/","h":"#content","p":258},{"i":263,"t":"Script","u":"/chialisp-inner-puzzle/","h":"#script","p":258},{"i":265,"t":"Common gotchas","u":"/chialisp-inner-puzzle/","h":"#common-gotchas","p":258},{"i":267,"t":"Knowledge check","u":"/chialisp-inner-puzzle/","h":"#knowledge-check","p":258},{"i":269,"t":"Additional resources","u":"/chialisp-inner-puzzle/","h":"#additional-resources","p":258},{"i":270,"t":"Runnable Chialisp and clvm plugins","u":"/chialisp-inner-puzzle/","h":"#runnable-chialisp-and-clvm-plugins","p":258},{"i":272,"t":"Links","u":"/chialisp-inner-puzzle/","h":"#links","p":258},{"i":276,"t":"Learning objectives","u":"/chialisp-intro/","h":"#learning-objectives","p":274},{"i":278,"t":"Content","u":"/chialisp-intro/","h":"#content","p":274},{"i":279,"t":"Script","u":"/chialisp-intro/","h":"#script","p":274},{"i":281,"t":"Common gotchas","u":"/chialisp-intro/","h":"#common-gotchas","p":274},{"i":283,"t":"Knowledge check","u":"/chialisp-intro/","h":"#knowledge-check","p":274},{"i":285,"t":"Additional resources","u":"/chialisp-intro/","h":"#additional-resources","p":274},{"i":286,"t":"Runnable Chialisp and clvm plugins","u":"/chialisp-intro/","h":"#runnable-chialisp-and-clvm-plugins","p":274},{"i":288,"t":"Links","u":"/chialisp-intro/","h":"#links","p":274},{"i":292,"t":"Learning objectives","u":"/chialisp-signatures/","h":"#learning-objectives","p":290},{"i":294,"t":"Content","u":"/chialisp-signatures/","h":"#content","p":290},{"i":295,"t":"Script","u":"/chialisp-signatures/","h":"#script","p":290},{"i":297,"t":"Common gotchas","u":"/chialisp-signatures/","h":"#common-gotchas","p":290},{"i":299,"t":"Knowledge check","u":"/chialisp-signatures/","h":"#knowledge-check","p":290},{"i":301,"t":"Additional resources","u":"/chialisp-signatures/","h":"#additional-resources","p":290},{"i":302,"t":"Runnable Chialisp and clvm plugins","u":"/chialisp-signatures/","h":"#runnable-chialisp-and-clvm-plugins","p":290},{"i":304,"t":"Links","u":"/chialisp-signatures/","h":"#links","p":290},{"i":308,"t":"Learning objectives","u":"/chialisp-smart-coin/","h":"#learning-objectives","p":306},{"i":310,"t":"Content","u":"/chialisp-smart-coin/","h":"#content","p":306},{"i":311,"t":"Script","u":"/chialisp-smart-coin/","h":"#script","p":306},{"i":313,"t":"Common gotchas","u":"/chialisp-smart-coin/","h":"#common-gotchas","p":306},{"i":315,"t":"Knowledge check","u":"/chialisp-smart-coin/","h":"#knowledge-check","p":306},{"i":317,"t":"Additional resources","u":"/chialisp-smart-coin/","h":"#additional-resources","p":306},{"i":318,"t":"Runnable Chialisp and clvm plugins","u":"/chialisp-smart-coin/","h":"#runnable-chialisp-and-clvm-plugins","p":306},{"i":320,"t":"Links","u":"/chialisp-smart-coin/","h":"#links","p":306},{"i":324,"t":"Comparison","u":"/clvm-vs-evm/","h":"#comparison","p":322},{"i":328,"t":"Locate the chia binary executable","u":"/cli/","h":"","p":326},{"i":329,"t":"Mac","u":"/cli/","h":"#mac","p":326},{"i":331,"t":"Windows","u":"/cli/","h":"#windows","p":326},{"i":333,"t":"init","u":"/cli/","h":"","p":326},{"i":335,"t":"start","u":"/cli/","h":"","p":326},{"i":337,"t":"plotters","u":"/cli/","h":"","p":326},{"i":339,"t":"plotnft","u":"/cli/","h":"#plotnft","p":326},{"i":341,"t":"Plots check","u":"/cli/","h":"#plots-check","p":326},{"i":343,"t":"db","u":"/cli/","h":"","p":326},{"i":344,"t":"upgrade","u":"/cli/","h":"#upgrade","p":326},{"i":346,"t":"backup","u":"/cli/","h":"#backup","p":326},{"i":348,"t":"validate","u":"/cli/","h":"#validate","p":326},{"i":350,"t":"keys","u":"/cli/","h":"","p":326},{"i":351,"t":"derive","u":"/cli/","h":"#derive","p":326},{"i":353,"t":"child-key","u":"/cli/","h":"#child-key","p":326},{"i":355,"t":"search","u":"/cli/","h":"#search","p":326},{"i":357,"t":"wallet-address","u":"/cli/","h":"#wallet-address","p":326},{"i":359,"t":"DID","u":"/cli/","h":"","p":326},{"i":361,"t":"NFT","u":"/cli/","h":"","p":326},{"i":363,"t":"Other commands (not all are fully documented)","u":"/cli/","h":"","p":326},{"i":365,"t":"Checking Logs and Status","u":"/cli/","h":"#checking-logs-and-status","p":326},{"i":368,"t":"Intro","u":"/clawback-cli/","h":"#intro","p":367},{"i":370,"t":"Reference","u":"/clawback-cli/","h":"#reference","p":367},{"i":371,"t":"clawback","u":"/clawback-cli/","h":"#clawback","p":367},{"i":373,"t":"claim","u":"/clawback-cli/","h":"#claim","p":367},{"i":375,"t":"claw","u":"/clawback-cli/","h":"#claw","p":367},{"i":377,"t":"create","u":"/clawback-cli/","h":"#create","p":367},{"i":379,"t":"show","u":"/clawback-cli/","h":"#show","p":367},{"i":385,"t":"Key Features","u":"/coin-set-intro/","h":"#key-features","p":383},{"i":387,"t":"Blockchain","u":"/coin-set-intro/","h":"#blockchain","p":383},{"i":389,"t":"Puzzles","u":"/coin-set-intro/","h":"#puzzles","p":383},{"i":391,"t":"Spends","u":"/coin-set-intro/","h":"#spends","p":383},{"i":393,"t":"Value Added and Spent","u":"/coin-set-intro/","h":"#value-added-and-spent","p":383},{"i":395,"t":"Account Model vs Coin Set Model","u":"/coin-set-intro/","h":"#account-model-vs-coin-set-model","p":383},{"i":397,"t":"Benefits of the Account Model","u":"/coin-set-intro/","h":"#benefits-of-the-account-model","p":383},{"i":399,"t":"Benefits of the Coin Set Model","u":"/coin-set-intro/","h":"#benefits-of-the-coin-set-model","p":383},{"i":403,"t":"Ethereum's account model","u":"/coin-set-vs-account/","h":"#ethereums-account-model","p":401},{"i":405,"t":"Chia's coin set model","u":"/coin-set-vs-account/","h":"#chias-coin-set-model","p":401},{"i":407,"t":"Advantages of the account model","u":"/coin-set-vs-account/","h":"#advantages-of-the-account-model","p":401},{"i":408,"t":"Monetary fungibility","u":"/coin-set-vs-account/","h":"#monetary-fungibility","p":401},{"i":410,"t":"Ease of programming","u":"/coin-set-vs-account/","h":"#ease-of-programming","p":401},{"i":412,"t":"Advantages of the coin set model","u":"/coin-set-vs-account/","h":"#advantages-of-the-coin-set-model","p":401},{"i":413,"t":"Scalability","u":"/coin-set-vs-account/","h":"#scalability","p":401},{"i":415,"t":"Privacy","u":"/coin-set-vs-account/","h":"#privacy","p":401},{"i":417,"t":"Determinism","u":"/coin-set-vs-account/","h":"#determinism","p":401},{"i":419,"t":"Sandboxing","u":"/coin-set-vs-account/","h":"#sandboxing","p":401},{"i":421,"t":"Database size","u":"/coin-set-vs-account/","h":"#database-size","p":401},{"i":425,"t":"First class objects","u":"/coin-set-vs-utxo/","h":"#first-class-objects","p":423},{"i":427,"t":"Transaction/coin processing","u":"/coin-set-vs-utxo/","h":"#transactioncoin-processing","p":423},{"i":429,"t":"Signature type","u":"/coin-set-vs-utxo/","h":"#signature-type","p":423},{"i":433,"t":"Signing the Solution","u":"/coin-set-security/","h":"#signing","p":431},{"i":435,"t":"Asserting Coin Information","u":"/coin-set-security/","h":"#asserting","p":431},{"i":437,"t":"Replay Attacks","u":"/coin-set-security/","h":"#replay","p":431},{"i":439,"t":"\"Flash Loan from God\" Attack","u":"/coin-set-security/","h":"#flash-loans","p":431},{"i":441,"t":"Puzzle and Solution Reveals","u":"/coin-set-security/","h":"#reveals","p":431},{"i":443,"t":"Conclusion","u":"/coin-set-security/","h":"#conclusion","p":431},{"i":449,"t":"Learning objectives","u":"/coinset-basics/","h":"#learning-objectives","p":447},{"i":451,"t":"Content","u":"/coinset-basics/","h":"#content","p":447},{"i":452,"t":"Script","u":"/coinset-basics/","h":"#script","p":447},{"i":454,"t":"Common gotchas","u":"/coinset-basics/","h":"#common-gotchas","p":447},{"i":456,"t":"Knowledge check","u":"/coinset-basics/","h":"#knowledge-check","p":447},{"i":458,"t":"Additional resources","u":"/coinset-basics/","h":"#additional-resources","p":447},{"i":459,"t":"Links","u":"/coinset-basics/","h":"#links","p":447},{"i":463,"t":"Cost Calculation","u":"/coin-set-costs/","h":"#cost-calculation","p":461},{"i":465,"t":"Minimum Specs - Farming","u":"/coin-set-costs/","h":"#farming-spec","p":461},{"i":467,"t":"Minimum Specs - Syncing","u":"/coin-set-costs/","h":"#syncing-specs","p":461},{"i":469,"t":"Maximum Block Cost","u":"/coin-set-costs/","h":"#max-block-cost","p":461},{"i":471,"t":"Generator Cost","u":"/coin-set-costs/","h":"#generator-cost","p":461},{"i":473,"t":"Generator Program Size","u":"/coin-set-costs/","h":"#generator-size","p":461},{"i":475,"t":"Generator Program Coins","u":"/coin-set-costs/","h":"#generator-program-coins","p":461},{"i":477,"t":"Maximum Cost Per Block","u":"/coin-set-costs/","h":"#maximum-cost-per-block","p":461},{"i":479,"t":"Maximum Block Size","u":"/coin-set-costs/","h":"#maximum-block-size","p":461},{"i":481,"t":"Estimated Transaction Costs","u":"/coin-set-costs/","h":"#estimated-transaction-costs","p":461},{"i":484,"t":"Safety","u":"/consensus-analysis/","h":"#safety","p":483},{"i":486,"t":"Liveness","u":"/consensus-analysis/","h":"#liveness","p":483},{"i":488,"t":"Comparison to Nakamoto PoW","u":"/consensus-analysis/","h":"#comparison-to-nakamoto-pow","p":483},{"i":490,"t":"Comparison to Proof of Stake","u":"/consensus-analysis/","h":"#comparison-to-proof-of-stake","p":483},{"i":492,"t":"Comparison to BFT consensus algorithms","u":"/consensus-analysis/","h":"#comparison-to-bft-consensus-algorithms","p":483},{"i":496,"t":"Genesis Challenge","u":"/consensus-challenges/","h":"#genesis-challenge","p":494},{"i":500,"t":"Learning objectives","u":"/consensus-basics/","h":"#learning-objectives","p":498},{"i":502,"t":"Content","u":"/consensus-basics/","h":"#content","p":498},{"i":503,"t":"Script","u":"/consensus-basics/","h":"#script","p":498},{"i":505,"t":"Common gotchas","u":"/consensus-basics/","h":"#common-gotchas","p":498},{"i":507,"t":"Knowledge check","u":"/consensus-basics/","h":"#knowledge-check","p":498},{"i":509,"t":"Additional resources","u":"/consensus-basics/","h":"#additional-resources","p":498},{"i":510,"t":"Links","u":"/consensus-basics/","h":"#links","p":498},{"i":513,"t":"Majority Attack","u":"/consensus-attacks/","h":"#majority","p":512},{"i":515,"t":"Extending Many Chains","u":"/consensus-attacks/","h":"#many-chains","p":512},{"i":517,"t":"Global Hard Drive Space","u":"/consensus-attacks/","h":"#space","p":512},{"i":519,"t":"100% Attack","u":"/consensus-attacks/","h":"#100-percent","p":512},{"i":521,"t":"Short Range Replotting Attack","u":"/consensus-attacks/","h":"#replotting","p":512},{"i":523,"t":"Faster Timelord (But Not 51% Attack)","u":"/consensus-attacks/","h":"#faster-timelord","p":512},{"i":525,"t":"Selfish Farming","u":"/consensus-attacks/","h":"#selfish-farming","p":512},{"i":527,"t":"Farmer Bribe Trunk Attack","u":"/consensus-attacks/","h":"#bribe-trunk","p":512},{"i":529,"t":"Farmer Bribe Foliage Re-Org Attack","u":"/consensus-attacks/","h":"#bribe-foliage","p":512},{"i":531,"t":"Orphaning Transaction Blocks for Fees","u":"/consensus-attacks/","h":"#orphaning","p":512},{"i":533,"t":"Orphan Rate","u":"/consensus-attacks/","h":"#orphan-rate","p":512},{"i":537,"t":"Transaction Block Time","u":"/consensus-foliage/","h":"#transaction-block-time","p":535},{"i":546,"t":"0.1 Important Constants","u":"/constants-variables-notation/","h":"#01-important-constants","p":545},{"i":548,"t":"0.2 Important Variables","u":"/constants-variables-notation/","h":"#02-important-variables","p":545},{"i":550,"t":"0.3 Boxes","u":"/constants-variables-notation/","h":"#03-boxes","p":545},{"i":553,"t":"What is a Cryptocurrency?","u":"/cryptocurrency-intro/","h":"#what-is-a-cryptocurrency","p":552},{"i":555,"t":"How do Cryptocurrencies Work?","u":"/cryptocurrency-intro/","h":"#how-do-cryptocurrencies-work","p":552},{"i":557,"t":"Authentication","u":"/cryptocurrency-intro/","h":"#authentication","p":552},{"i":559,"t":"Double Spending","u":"/cryptocurrency-intro/","h":"#double-spending","p":552},{"i":561,"t":"Blockchain","u":"/cryptocurrency-intro/","h":"#blockchain","p":552},{"i":563,"t":"Beyond Proof of Work","u":"/cryptocurrency-intro/","h":"#beyond-proof-of-work","p":552},{"i":566,"t":"Using GitHub","u":"/contribution/using-github/","h":"#using-github","p":565},{"i":568,"t":"Create a Github Account","u":"/contribution/using-github/","h":"#create-a-github-account","p":565},{"i":570,"t":"Installing Github Desktop","u":"/contribution/using-github/","h":"#installing-github-desktop","p":565},{"i":572,"t":"Forking a Repository","u":"/contribution/using-github/","h":"#forking-a-repository","p":565},{"i":574,"t":"Setup Commit Signing","u":"/contribution/using-github/","h":"#setup-commit-signing","p":565},{"i":576,"t":"Making a Pull Request","u":"/contribution/using-github/","h":"#making-a-pull-request","p":565},{"i":578,"t":"Contribution support","u":"/contribution/using-github/","h":"#contribution-support","p":565},{"i":582,"t":"Prefarm Audit with the Internal Custody Tool","u":"/custody/prefarm-audit-tutorial/","h":"#prefarm-audit-with-the-internal-custody-tool","p":580},{"i":584,"t":"Prefarm Audit with Block Records","u":"/custody/prefarm-audit-tutorial/","h":"#prefarm-audit-with-block-records","p":580},{"i":586,"t":"Further reading","u":"/custody/prefarm-audit-tutorial/","h":"#further-reading","p":580},{"i":589,"t":"Intro","u":"/custody-tool/","h":"#intro","p":588},{"i":591,"t":"Reference","u":"/custody-tool/","h":"#reference","p":588},{"i":592,"t":"audit","u":"/custody-tool/","h":"#audit","p":588},{"i":594,"t":"clawback","u":"/custody-tool/","h":"#clawback","p":588},{"i":596,"t":"complete","u":"/custody-tool/","h":"#complete","p":588},{"i":598,"t":"derive_root","u":"/custody-tool/","h":"#derive_root","p":588},{"i":600,"t":"examine_spend","u":"/custody-tool/","h":"#examine_spend","p":588},{"i":602,"t":"export_config","u":"/custody-tool/","h":"#export_config","p":588},{"i":604,"t":"increase_security_level","u":"/custody-tool/","h":"#increase_security_level","p":588},{"i":606,"t":"init","u":"/custody-tool/","h":"#init","p":588},{"i":608,"t":"launch_singleton","u":"/custody-tool/","h":"#launch_singleton","p":588},{"i":610,"t":"p2_address","u":"/custody-tool/","h":"#p2_address","p":588},{"i":612,"t":"payment","u":"/custody-tool/","h":"#payment","p":588},{"i":614,"t":"push_tx","u":"/custody-tool/","h":"#push_tx","p":588},{"i":616,"t":"show","u":"/custody-tool/","h":"#show","p":588},{"i":618,"t":"start_rekey","u":"/custody-tool/","h":"#start_rekey","p":588},{"i":620,"t":"sync","u":"/custody-tool/","h":"#sync","p":588},{"i":622,"t":"update_config","u":"/custody-tool/","h":"#update_config","p":588},{"i":624,"t":"which_pubkeys","u":"/custody-tool/","h":"#which_pubkeys","p":588},{"i":626,"t":"HSM CLI commands and reference","u":"/custody-tool/","h":"#hsm-cli-commands-and-reference","p":588},{"i":628,"t":"Reference","u":"/custody-tool/","h":"#reference-1","p":588},{"i":629,"t":"hsmgen","u":"/custody-tool/","h":"#hsmgen","p":588},{"i":631,"t":"hsmpk","u":"/custody-tool/","h":"#hsmpk","p":588},{"i":633,"t":"hsms","u":"/custody-tool/","h":"#hsms","p":588},{"i":635,"t":"hsmmerge","u":"/custody-tool/","h":"#hsmmerge","p":588},{"i":637,"t":"hsm_dump_sb","u":"/custody-tool/","h":"#hsm_dump_sb","p":588},{"i":639,"t":"hsm_test_spend","u":"/custody-tool/","h":"#hsm_test_spend","p":588},{"i":643,"t":"Proposal Spam","u":"/dao-known-issues/","h":"#proposal-spam","p":641},{"i":645,"t":"Fake Proposals to lock DAO CATs","u":"/dao-known-issues/","h":"#fake-proposals-to-lock-dao-cats","p":641},{"i":647,"t":"Changing a DAO's settings","u":"/dao-known-issues/","h":"#changing-a-daos-settings","p":641},{"i":651,"t":"Reference","u":"/dao-rpc/","h":"#reference","p":649},{"i":652,"t":"dao_add_funds_to_treasury","u":"/dao-rpc/","h":"#dao_add_funds_to_treasury","p":649},{"i":654,"t":"dao_adjust_filter_level","u":"/dao-rpc/","h":"#dao_adjust_filter_level","p":649},{"i":656,"t":"dao_close_proposal","u":"/dao-rpc/","h":"#dao_close_proposal","p":649},{"i":658,"t":"dao_create_proposal","u":"/dao-rpc/","h":"#dao_create_proposal","p":649},{"i":660,"t":"dao_exit_lockup","u":"/dao-rpc/","h":"#dao_exit_lockup","p":649},{"i":662,"t":"dao_free_coins_from_finished_proposals","u":"/dao-rpc/","h":"#dao_free_coins_from_finished_proposals","p":649},{"i":664,"t":"dao_get_proposals","u":"/dao-rpc/","h":"#dao_get_proposals","p":649},{"i":666,"t":"dao_get_proposal_state","u":"/dao-rpc/","h":"#dao_get_proposal_state","p":649},{"i":668,"t":"dao_get_rules","u":"/dao-rpc/","h":"#dao_get_rules","p":649},{"i":670,"t":"dao_get_treasury_balance","u":"/dao-rpc/","h":"#dao_get_treasury_balance","p":649},{"i":672,"t":"dao_get_treasury_id","u":"/dao-rpc/","h":"#dao_get_treasury_id","p":649},{"i":674,"t":"dao_parse_proposal","u":"/dao-rpc/","h":"#dao_parse_proposal","p":649},{"i":676,"t":"dao_send_to_lockup","u":"/dao-rpc/","h":"#dao_send_to_lockup","p":649},{"i":678,"t":"dao_vote_on_proposal","u":"/dao-rpc/","h":"#dao_vote_on_proposal","p":649},{"i":682,"t":"Reference","u":"/dao-cli/","h":"#reference","p":680},{"i":683,"t":"add","u":"/dao-cli/","h":"#add","p":680},{"i":685,"t":"add_funds","u":"/dao-cli/","h":"#add_funds","p":680},{"i":687,"t":"balance","u":"/dao-cli/","h":"#balance","p":680},{"i":689,"t":"close_proposal","u":"/dao-cli/","h":"#close_proposal","p":680},{"i":691,"t":"create","u":"/dao-cli/","h":"#create","p":680},{"i":693,"t":"create_proposal","u":"/dao-cli/","h":"#create_proposal","p":680},{"i":695,"t":"mint","u":"/dao-cli/","h":"#mint","p":680},{"i":697,"t":"spend","u":"/dao-cli/","h":"#spend","p":680},{"i":699,"t":"update","u":"/dao-cli/","h":"#update","p":680},{"i":701,"t":"exit_lockup","u":"/dao-cli/","h":"#exit_lockup","p":680},{"i":703,"t":"get_id","u":"/dao-cli/","h":"#get_id","p":680},{"i":705,"t":"list_proposals","u":"/dao-cli/","h":"#list_proposals","p":680},{"i":707,"t":"lockup_coins","u":"/dao-cli/","h":"#lockup_coins","p":680},{"i":709,"t":"release_coins","u":"/dao-cli/","h":"#release_coins","p":680},{"i":711,"t":"rules","u":"/dao-cli/","h":"#rules","p":680},{"i":713,"t":"show_proposal","u":"/dao-cli/","h":"#show_proposal","p":680},{"i":715,"t":"vote","u":"/dao-cli/","h":"#vote","p":680},{"i":719,"t":"Intro","u":"/dao-cli-guide/","h":"#intro","p":717},{"i":721,"t":"About","u":"/dao-cli-guide/","h":"#about","p":717},{"i":723,"t":"Guide","u":"/dao-cli-guide/","h":"#guide","p":717},{"i":725,"t":"Create a DAO","u":"/dao-cli-guide/","h":"#create-a-dao","p":717},{"i":727,"t":"Fund a DAO","u":"/dao-cli-guide/","h":"#fund-a-dao","p":717},{"i":729,"t":"Join a DAO","u":"/dao-cli-guide/","h":"#join-a-dao","p":717},{"i":731,"t":"Lock up coins","u":"/dao-cli-guide/","h":"#lock-up-coins","p":717},{"i":733,"t":"Create a spend proposal","u":"/dao-cli-guide/","h":"#create-a-spend-proposal","p":717},{"i":735,"t":"Vote on a proposal","u":"/dao-cli-guide/","h":"#vote-on-a-proposal","p":717},{"i":737,"t":"Close a proposal","u":"/dao-cli-guide/","h":"#close-a-proposal","p":717},{"i":739,"t":"Mint new CATs","u":"/dao-cli-guide/","h":"#mint-new-cats","p":717},{"i":741,"t":"Change a DAO's rules","u":"/dao-cli-guide/","h":"#change-a-daos-rules","p":717},{"i":743,"t":"Failed proposal example","u":"/dao-cli-guide/","h":"#failed-proposal-example","p":717},{"i":747,"t":"Chia Crash Course","u":"/dev-guides-home/","h":"#chia-crash-course","p":745},{"i":749,"t":"Primitives","u":"/dev-guides-home/","h":"#primitives","p":745},{"i":751,"t":"Tutorials","u":"/dev-guides-home/","h":"#tutorials","p":745},{"i":753,"t":"Video Series","u":"/dev-guides-home/","h":"#video-series","p":745},{"i":757,"t":"wscat usage","u":"/daemon-rpc/","h":"#wscat-usage","p":755},{"i":759,"t":"Daemon Server RPCs","u":"/daemon-rpc/","h":"#daemon-server-rpcs","p":755},{"i":760,"t":"exit","u":"/daemon-rpc/","h":"#exit","p":755},{"i":762,"t":"get_routes","u":"/daemon-rpc/","h":"#get_routes","p":755},{"i":764,"t":"get_status","u":"/daemon-rpc/","h":"#get_status","p":755},{"i":766,"t":"get_version","u":"/daemon-rpc/","h":"#get_version","p":755},{"i":768,"t":"get_wallet_addresses","u":"/daemon-rpc/","h":"#get_wallet_addresses","p":755},{"i":770,"t":"is_keyring_locked","u":"/daemon-rpc/","h":"#is_keyring_locked","p":755},{"i":772,"t":"is_running","u":"/daemon-rpc/","h":"#is_running","p":755},{"i":774,"t":"keyring_status","u":"/daemon-rpc/","h":"#keyring_status","p":755},{"i":776,"t":"register_service","u":"/daemon-rpc/","h":"#register_service","p":755},{"i":778,"t":"remove_keyring_passphrase","u":"/daemon-rpc/","h":"#remove_keyring_passphrase","p":755},{"i":780,"t":"running_services","u":"/daemon-rpc/","h":"#running_services","p":755},{"i":782,"t":"set_keyring_passphrase","u":"/daemon-rpc/","h":"#set_keyring_passphrase","p":755},{"i":784,"t":"start_service","u":"/daemon-rpc/","h":"#start_service","p":755},{"i":786,"t":"stop_service","u":"/daemon-rpc/","h":"#stop_service","p":755},{"i":788,"t":"unlock_keyring","u":"/daemon-rpc/","h":"#unlock_keyring","p":755},{"i":790,"t":"validate_keyring_passphrase","u":"/daemon-rpc/","h":"#validate_keyring_passphrase","p":755},{"i":792,"t":"Plotter RPCs","u":"/daemon-rpc/","h":"#plotter-rpcs","p":755},{"i":793,"t":"get_keys_for_plotting","u":"/daemon-rpc/","h":"#get_keys_for_plotting","p":755},{"i":795,"t":"get_plotters","u":"/daemon-rpc/","h":"#get_plotters","p":755},{"i":797,"t":"start_plotting","u":"/daemon-rpc/","h":"#start_plotting","p":755},{"i":799,"t":"stop_plotting","u":"/daemon-rpc/","h":"#stop_plotting","p":755},{"i":801,"t":"Keychain Server RPCs","u":"/daemon-rpc/","h":"#keychain-server-rpcs","p":755},{"i":802,"t":"add_private_key","u":"/daemon-rpc/","h":"#add_private_key","p":755},{"i":804,"t":"check_keys","u":"/daemon-rpc/","h":"#check_keys","p":755},{"i":806,"t":"delete_all_keys","u":"/daemon-rpc/","h":"#delete_all_keys","p":755},{"i":808,"t":"delete_key_by_fingerprint","u":"/daemon-rpc/","h":"#delete_key_by_fingerprint","p":755},{"i":810,"t":"get_all_private_keys","u":"/daemon-rpc/","h":"#get_all_private_keys","p":755},{"i":812,"t":"get_first_private_key","u":"/daemon-rpc/","h":"#get_first_private_key","p":755},{"i":814,"t":"get_key_for_fingerprint","u":"/daemon-rpc/","h":"#get_key_for_fingerprint","p":755},{"i":816,"t":"get_key","u":"/daemon-rpc/","h":"#get_key","p":755},{"i":818,"t":"get_keys","u":"/daemon-rpc/","h":"#get_keys","p":755},{"i":820,"t":"get_public_key","u":"/daemon-rpc/","h":"#get_public_key","p":755},{"i":822,"t":"get_public_keys","u":"/daemon-rpc/","h":"#get_public_keys","p":755},{"i":824,"t":"set_label","u":"/daemon-rpc/","h":"#set_label","p":755},{"i":826,"t":"delete_label","u":"/daemon-rpc/","h":"#delete_label","p":755},{"i":830,"t":"Reference","u":"/datalayer-cli/","h":"#reference","p":828},{"i":831,"t":"add_mirror","u":"/datalayer-cli/","h":"#add_mirror","p":828},{"i":833,"t":"add_missing_files","u":"/datalayer-cli/","h":"#add_missing_files","p":828},{"i":835,"t":"clear_pending_roots","u":"/datalayer-cli/","h":"#clear_pending_roots","p":828},{"i":837,"t":"create_data_store","u":"/datalayer-cli/","h":"#create_data_store","p":828},{"i":839,"t":"delete_mirror","u":"/datalayer-cli/","h":"#delete_mirror","p":828},{"i":841,"t":"get_keys","u":"/datalayer-cli/","h":"#get_keys","p":828},{"i":843,"t":"get_keys_values","u":"/datalayer-cli/","h":"#get_keys_values","p":828},{"i":845,"t":"get_kv_diff","u":"/datalayer-cli/","h":"#get_kv_diff","p":828},{"i":847,"t":"get_mirrors","u":"/datalayer-cli/","h":"#get_mirrors","p":828},{"i":849,"t":"get_owned_stores","u":"/datalayer-cli/","h":"#get_owned_stores","p":828},{"i":851,"t":"get_proof","u":"/datalayer-cli/","h":"#get_proof","p":828},{"i":853,"t":"get_root","u":"/datalayer-cli/","h":"#get_root","p":828},{"i":855,"t":"get_root_history","u":"/datalayer-cli/","h":"#get_root_history","p":828},{"i":857,"t":"get_subscriptions","u":"/datalayer-cli/","h":"#get_subscriptions","p":828},{"i":859,"t":"get_sync_status","u":"/datalayer-cli/","h":"#get_sync_status","p":828},{"i":861,"t":"get_value","u":"/datalayer-cli/","h":"#get_value","p":828},{"i":863,"t":"plugins","u":"/datalayer-cli/","h":"#plugins","p":828},{"i":865,"t":"remove_subscription","u":"/datalayer-cli/","h":"#remove_subscription","p":828},{"i":867,"t":"subscribe","u":"/datalayer-cli/","h":"#subscribe","p":828},{"i":869,"t":"unsubscribe","u":"/datalayer-cli/","h":"#unsubscribe","p":828},{"i":871,"t":"update_data_store","u":"/datalayer-cli/","h":"#update_data_store","p":828},{"i":873,"t":"verify_proof","u":"/datalayer-cli/","h":"#verify_proof","p":828},{"i":875,"t":"wallet_log_in","u":"/datalayer-cli/","h":"#wallet_log_in","p":828},{"i":879,"t":"Reference","u":"/did-cli/","h":"#reference","p":877},{"i":880,"t":"create","u":"/did-cli/","h":"#create","p":877},{"i":882,"t":"find_lost","u":"/did-cli/","h":"#find_lost","p":877},{"i":884,"t":"get_details","u":"/did-cli/","h":"#get_details","p":877},{"i":886,"t":"get_did","u":"/did-cli/","h":"#get_did","p":877},{"i":888,"t":"message_spend","u":"/did-cli/","h":"#message_spend","p":877},{"i":890,"t":"set_name","u":"/did-cli/","h":"#set_name","p":877},{"i":892,"t":"sign_message","u":"/did-cli/","h":"#sign_message","p":877},{"i":894,"t":"transfer","u":"/did-cli/","h":"#transfer","p":877},{"i":896,"t":"update_metadata","u":"/did-cli/","h":"#update_metadata","p":877},{"i":900,"t":"Beginner Install and Usage Docs","u":"/docs-home/","h":"#beginner-install-and-usage-docs","p":898},{"i":902,"t":"Advanced Install and Usage Docs","u":"/docs-home/","h":"#advanced-install-and-usage-docs","p":898},{"i":904,"t":"Troubleshooting the Chia Reference Client","u":"/docs-home/","h":"#troubleshooting-the-chia-reference-client","p":898},{"i":906,"t":"Learn About Chia, Primitives, and the Reference Client","u":"/docs-home/","h":"#learn-about-chia-primitives-and-the-reference-client","p":898},{"i":908,"t":"Develop with Chia Primitives","u":"/docs-home/","h":"#develop-with-chia-primitives","p":898},{"i":912,"t":"Sub Epochs","u":"/epoch-and-difficulty/","h":"#sub-epochs","p":910},{"i":918,"t":"Reference","u":"/did-rpc/","h":"#reference","p":916},{"i":919,"t":"create_new_wallet","u":"/did-rpc/","h":"#create_new_wallet","p":916},{"i":921,"t":"did_create_attest","u":"/did-rpc/","h":"#did_create_attest","p":916},{"i":923,"t":"did_create_backup_file","u":"/did-rpc/","h":"#did_create_backup_file","p":916},{"i":925,"t":"did_find_lost_did","u":"/did-rpc/","h":"#did_find_lost_did","p":916},{"i":927,"t":"did_get_current_coin_info","u":"/did-rpc/","h":"#did_get_current_coin_info","p":916},{"i":929,"t":"did_get_did","u":"/did-rpc/","h":"#did_get_did","p":916},{"i":931,"t":"did_get_info","u":"/did-rpc/","h":"#did_get_info","p":916},{"i":933,"t":"did_get_information_needed_for_recovery","u":"/did-rpc/","h":"#did_get_information_needed_for_recovery","p":916},{"i":935,"t":"did_get_metadata","u":"/did-rpc/","h":"#did_get_metadata","p":916},{"i":937,"t":"did_get_pubkey","u":"/did-rpc/","h":"#did_get_pubkey","p":916},{"i":939,"t":"did_get_recovery_list","u":"/did-rpc/","h":"#did_get_recovery_list","p":916},{"i":941,"t":"did_get_wallet_name","u":"/did-rpc/","h":"#did_get_wallet_name","p":916},{"i":943,"t":"did_message_spend","u":"/did-rpc/","h":"#did_message_spend","p":916},{"i":945,"t":"did_recovery_spend","u":"/did-rpc/","h":"#did_recovery_spend","p":916},{"i":947,"t":"did_set_wallet_name","u":"/did-rpc/","h":"#did_set_wallet_name","p":916},{"i":949,"t":"did_transfer_did","u":"/did-rpc/","h":"#did_transfer_did","p":916},{"i":951,"t":"did_update_metadata","u":"/did-rpc/","h":"#did_update_metadata","p":916},{"i":953,"t":"did_update_recovery_ids","u":"/did-rpc/","h":"#did_update_recovery_ids","p":916},{"i":957,"t":"get_harvesters","u":"/farmer-rpc/","h":"#get_harvesters","p":955},{"i":959,"t":"get_harvesters_summary","u":"/farmer-rpc/","h":"#get_harvesters_summary","p":955},{"i":961,"t":"get_harvester_plots_duplicates","u":"/farmer-rpc/","h":"#get_harvester_plots_duplicates","p":955},{"i":963,"t":"get_harvester_plots_invalid","u":"/farmer-rpc/","h":"#get_harvester_plots_invalid","p":955},{"i":965,"t":"get_harvester_plots_keys_missing","u":"/farmer-rpc/","h":"#get_harvester_plots_keys_missing","p":955},{"i":967,"t":"get_harvester_plots_valid","u":"/farmer-rpc/","h":"#get_harvester_plots_valid","p":955},{"i":969,"t":"get_pool_login_link","u":"/farmer-rpc/","h":"#get_pool_login_link","p":955},{"i":971,"t":"get_pool_state","u":"/farmer-rpc/","h":"#get_pool_state","p":955},{"i":973,"t":"get_reward_targets","u":"/farmer-rpc/","h":"#get_reward_targets","p":955},{"i":975,"t":"get_routes","u":"/farmer-rpc/","h":"#get_routes","p":955},{"i":977,"t":"get_signage_point","u":"/farmer-rpc/","h":"#get_signage_point","p":955},{"i":979,"t":"get_signage_points","u":"/farmer-rpc/","h":"#get_signage_points","p":955},{"i":981,"t":"set_payout_instructions","u":"/farmer-rpc/","h":"#set_payout_instructions","p":955},{"i":983,"t":"set_reward_targets","u":"/farmer-rpc/","h":"#set_reward_targets","p":955},{"i":987,"t":"Enable compressed plot support","u":"/farming-compressed-plots/","h":"#enable-compressed-plot-support","p":985},{"i":988,"t":"GUI","u":"/farming-compressed-plots/","h":"#gui","p":985},{"i":990,"t":"CLI","u":"/farming-compressed-plots/","h":"#cli","p":985},{"i":996,"t":"Estimated Time to Win","u":"/farming-basics/","h":"#estimated-time-to-win","p":994},{"i":998,"t":"Pooling to the Rescue","u":"/farming-basics/","h":"#pooling-to-the-rescue","p":994},{"i":1000,"t":"Block Reward","u":"/farming-basics/","h":"#block-reward","p":994},{"i":1003,"t":"How to tell if Chia Farming is Working?","u":"/farming-faq/","h":"#how-to-tell-if-chia-farming-is-working","p":1002},{"i":1005,"t":"What is Normal Information in a Log File?","u":"/farming-faq/","h":"#what-is-normal-information-in-a-log-file","p":1002},{"i":1009,"t":"Prerequisites","u":"/farming-on-many-machines/","h":"#prerequisites","p":1007},{"i":1011,"t":"Setup Steps","u":"/farming-on-many-machines/","h":"#setup-steps","p":1007},{"i":1013,"t":"Good Security Practices on Many Machines","u":"/farming-on-many-machines/","h":"#good-security-practices-on-many-machines","p":1007},{"i":1015,"t":"Keep Your Keys Separate","u":"/farming-on-many-machines/","h":"#keep-your-keys-separate","p":1007},{"i":1017,"t":"Keep Your Wallet Separate","u":"/farming-on-many-machines/","h":"#keep-your-wallet-separate","p":1007},{"i":1019,"t":"How to Find Your Keys","u":"/farming-on-many-machines/","h":"#how-to-find-your-keys","p":1007},{"i":1021,"t":"Using CLI","u":"/farming-on-many-machines/","h":"#using-cli","p":1007},{"i":1023,"t":"Using the GUI","u":"/farming-on-many-machines/","h":"#using-the-gui","p":1007},{"i":1027,"t":"Set Up Mainnet Installation","u":"/farming/dual-farming-testnet-mainnet/","h":"#set-up-mainnet-installation","p":1025},{"i":1029,"t":"Set Up Testnet Installation","u":"/farming/dual-farming-testnet-mainnet/","h":"#set-up-testnet-installation","p":1025},{"i":1031,"t":"Swapping between mainnet and testnet","u":"/farming/dual-farming-testnet-mainnet/","h":"#swapping-between-mainnet-and-testnet","p":1025},{"i":1035,"t":"Learning objectives","u":"/farming-overview/","h":"#learning-objectives","p":1033},{"i":1037,"t":"Content","u":"/farming-overview/","h":"#content","p":1033},{"i":1038,"t":"Script","u":"/farming-overview/","h":"#script","p":1033},{"i":1040,"t":"Common gotchas","u":"/farming-overview/","h":"#common-gotchas","p":1033},{"i":1042,"t":"Knowledge check","u":"/farming-overview/","h":"#knowledge-check","p":1033},{"i":1044,"t":"Additional resources","u":"/farming-overview/","h":"#additional-resources","p":1033},{"i":1045,"t":"Links","u":"/farming-overview/","h":"#links","p":1033},{"i":1049,"t":"Learning objectives","u":"/first-plot/","h":"#learning-objectives","p":1047},{"i":1051,"t":"Content","u":"/first-plot/","h":"#content","p":1047},{"i":1052,"t":"Common gotchas","u":"/first-plot/","h":"#common-gotchas","p":1047},{"i":1054,"t":"Knowledge check","u":"/first-plot/","h":"#knowledge-check","p":1047},{"i":1056,"t":"Additional resources","u":"/first-plot/","h":"#additional-resources","p":1047},{"i":1057,"t":"Links","u":"/first-plot/","h":"#links","p":1047},{"i":1063,"t":"Obtain hardware","u":"/farming-guide/","h":"#obtain-hardware","p":1061},{"i":1065,"t":"Computer","u":"/farming-guide/","h":"#computer","p":1061},{"i":1067,"t":"Plot storage","u":"/farming-guide/","h":"#plot-storage","p":1061},{"i":1069,"t":"Database SSD","u":"/farming-guide/","h":"#database-ssd","p":1061},{"i":1071,"t":"Install Chia","u":"/farming-guide/","h":"#install-chia","p":1061},{"i":1073,"t":"Run and configure Chia","u":"/farming-guide/","h":"#run-and-configure-chia","p":1061},{"i":1075,"t":"Create a wallet","u":"/farming-guide/","h":"#create-a-wallet","p":1061},{"i":1077,"t":"Fund your wallet","u":"/farming-guide/","h":"#fund-your-wallet","p":1061},{"i":1079,"t":"Sync your node","u":"/farming-guide/","h":"#sync-your-node","p":1061},{"i":1081,"t":"Join a pool","u":"/farming-guide/","h":"#join-a-pool","p":1061},{"i":1083,"t":"Create a plot","u":"/farming-guide/","h":"#create-a-plot","p":1061},{"i":1085,"t":"Start farming","u":"/farming-guide/","h":"#start-farming","p":1061},{"i":1087,"t":"Next steps","u":"/farming-guide/","h":"#next-steps","p":1061},{"i":1089,"t":"How to Get Help","u":"/farming-guide/","h":"#how-to-get-help","p":1061},{"i":1093,"t":"Install Chia","u":"/getting-started/wallet-guide/","h":"#install-chia","p":1091},{"i":1095,"t":"Run and configure Chia","u":"/getting-started/wallet-guide/","h":"#run-and-configure-chia","p":1091},{"i":1097,"t":"Create a wallet","u":"/getting-started/wallet-guide/","h":"#create-a-wallet","p":1091},{"i":1099,"t":"Use the Chia Wallet","u":"/getting-started/wallet-guide/","h":"#use-the-chia-wallet","p":1091},{"i":1101,"t":"Add a new CAT","u":"/getting-started/wallet-guide/","h":"#add-a-new-cat","p":1091},{"i":1103,"t":"Create an XCH-CAT offer","u":"/getting-started/wallet-guide/","h":"#create-an-xch-cat-offer","p":1091},{"i":1105,"t":"Accept an offer","u":"/getting-started/wallet-guide/","h":"#accept-an-offer","p":1091},{"i":1107,"t":"Cancel an offer","u":"/getting-started/wallet-guide/","h":"#cancel-an-offer","p":1091},{"i":1109,"t":"NFT Offers","u":"/getting-started/wallet-guide/","h":"#nft-offers","p":1091},{"i":1111,"t":"NFT Swaps","u":"/getting-started/wallet-guide/","h":"#nft-swaps","p":1091},{"i":1113,"t":"Offer notifications","u":"/getting-started/wallet-guide/","h":"#offer-notifications","p":1091},{"i":1115,"t":"Default expiration time","u":"/getting-started/wallet-guide/","h":"#default-expiration-time","p":1091},{"i":1117,"t":"Potential issues","u":"/getting-started/wallet-guide/","h":"#potential-issues","p":1091},{"i":1119,"t":"Further reading","u":"/getting-started/wallet-guide/","h":"#further-reading","p":1091},{"i":1122,"t":"Abstract","u":"/green-paper-abstract/","h":"#abstract","p":1121},{"i":1124,"t":"Precursor Consensus Green Paper","u":"/green-paper-abstract/","h":"#precursor-consensus-green-paper","p":1121},{"i":1129,"t":"General","u":"/faq/","h":"#general","p":1128},{"i":1130,"t":"What are harvesters, farmers, full nodes, and timelords?","u":"/faq/","h":"#what-are-harvesters-farmers-full-nodes-and-timelords","p":1128},{"i":1132,"t":"What is a proof of space?","u":"/faq/","h":"#what-is-a-proof-of-space","p":1128},{"i":1134,"t":"What is a VDF/proof of time?","u":"/faq/","h":"#what-is-a-vdfproof-of-time","p":1128},{"i":1136,"t":"What is a genesis challenge?","u":"/faq/","h":"#what-is-a-genesis-challenge","p":1128},{"i":1138,"t":"What is XCH, TXCH, and mojos?","u":"/faq/","h":"#what-is-xch-txch-and-mojos","p":1128},{"i":1140,"t":"Chia vs XCH vs mojo vs chia","u":"/faq/","h":"#chia-vs-xch-vs-mojo-vs-chia","p":1128},{"i":1142,"t":"How do I sign up for the Chia email newsletter?","u":"/faq/","h":"#how-do-i-sign-up-for-the-chia-email-newsletter","p":1128},{"i":1144,"t":"What are the rules and guidelines around using Chia's trademarks and copyrighted materials on my own site or project?","u":"/faq/","h":"#what-are-the-rules-and-guidelines-around-using-chias-trademarks-and-copyrighted-materials-on-my-own-site-or-project","p":1128},{"i":1146,"t":"How do I contact Chia with more questions?","u":"/faq/","h":"#how-do-i-contact-chia-with-more-questions","p":1128},{"i":1148,"t":"Will the average person be able to use Chia as a payment instrument?","u":"/faq/","h":"#will-the-average-person-be-able-to-use-chia-as-a-payment-instrument","p":1128},{"i":1150,"t":"Why are you named Chia?","u":"/faq/","h":"#why-are-you-named-chia","p":1128},{"i":1152,"t":"Is the value of Chia going to be as volatile as other cryptocurrencies?","u":"/faq/","h":"#is-the-value-of-chia-going-to-be-as-volatile-as-other-cryptocurrencies","p":1128},{"i":1154,"t":"Why does Chia run competitions?","u":"/faq/","h":"#why-does-chia-run-competitions","p":1128},{"i":1156,"t":"Where has Chia advanced the state of the art in applied cryptography?","u":"/faq/","h":"#where-has-chia-advanced-the-state-of-the-art-in-applied-cryptography","p":1128},{"i":1158,"t":"Does Chia use Bitcoin's code?","u":"/faq/","h":"#does-chia-use-bitcoins-code","p":1128},{"i":1160,"t":"Isn't Bitcoin good enough?","u":"/faq/","h":"#isnt-bitcoin-good-enough","p":1128},{"i":1162,"t":"What is Chia's inflation?","u":"/faq/","h":"#what-is-chias-inflation","p":1128},{"i":1164,"t":"Where is the Chia source code?","u":"/faq/","h":"#where-is-the-chia-source-code","p":1128},{"i":1166,"t":"When did Chia launch mainnet?","u":"/faq/","h":"#when-did-chia-launch-mainnet","p":1128},{"i":1168,"t":"What is the Chia Strategic Reserve?","u":"/faq/","h":"#what-is-the-chia-strategic-reserve","p":1128},{"i":1170,"t":"Did Chia have an ICO?","u":"/faq/","h":"#did-chia-have-an-ico","p":1128},{"i":1172,"t":"Why do I want to farm Chia?","u":"/faq/","h":"#why-do-i-want-to-farm-chia","p":1128},{"i":1174,"t":"What is the Chia Network Strategy?","u":"/faq/","h":"#what-is-the-chia-network-strategy","p":1128},{"i":1176,"t":"Where can I learn more about the technical details of your consensus algorithm?","u":"/faq/","h":"#where-can-i-learn-more-about-the-technical-details-of-your-consensus-algorithm","p":1128},{"i":1178,"t":"What is the difference between mining and farming?","u":"/faq/","h":"#what-is-the-difference-between-mining-and-farming","p":1128},{"i":1180,"t":"Where can I learn more about Chialisp?","u":"/faq/","h":"#where-can-i-learn-more-about-chialisp","p":1128},{"i":1182,"t":"Why is Chia better?","u":"/faq/","h":"#why-is-chia-better","p":1128},{"i":1184,"t":"What is Proof of Space and Time?","u":"/faq/","h":"#what-is-proof-of-space-and-time","p":1128},{"i":1186,"t":"What is Chialisp?","u":"/faq/","h":"#what-is-chialisp","p":1128},{"i":1188,"t":"How does Proof of Space and Proof of Time work?","u":"/faq/","h":"#how-does-proof-of-space-and-proof-of-time-work","p":1128},{"i":1190,"t":"Where can I get answers to questions about running Chia?","u":"/faq/","h":"#where-can-i-get-answers-to-questions-about-running-chia","p":1128},{"i":1192,"t":"What is Chia?","u":"/faq/","h":"#what-is-chia","p":1128},{"i":1194,"t":"What is the official Chia Network DID used for NFTs?","u":"/faq/","h":"#what-is-the-official-chia-network-did-used-for-nfts","p":1128},{"i":1196,"t":"What is Chia's burn address?","u":"/faq/","h":"#what-is-chias-burn-address","p":1128},{"i":1198,"t":"How does the transactions_generator work?","u":"/faq/","h":"#how-does-the-transactions_generator-work","p":1128},{"i":1200,"t":"Plotting","u":"/faq/","h":"#plotting","p":1128},{"i":1201,"t":"What is k?","u":"/faq/","h":"#what-is-k","p":1128},{"i":1203,"t":"How big are plot sizes (k)?","u":"/faq/","h":"#how-big-are-plot-sizes-k","p":1128},{"i":1205,"t":"What k-size should you plot?","u":"/faq/","h":"#what-k-size-should-you-plot","p":1128},{"i":1207,"t":"What is recommended for plotting?","u":"/faq/","h":"#what-is-recommended-for-plotting","p":1128},{"i":1209,"t":"Can I plot more than one plot at a time?","u":"/faq/","h":"#can-i-plot-more-than-one-plot-at-a-time","p":1128},{"i":1211,"t":"Can I make plots on one machine and move it to another machine?","u":"/faq/","h":"#can-i-make-plots-on-one-machine-and-move-it-to-another-machine","p":1128},{"i":1213,"t":"What is the secondary temp directory -2, and how should I set it?","u":"/faq/","h":"#what-is-the-secondary-temp-directory--2-and-how-should-i-set-it","p":1128},{"i":1215,"t":"My plotting attempt got \"Caught plotting error: Not enough memory...\"?","u":"/faq/","h":"#my-plotting-attempt-got-caught-plotting-error-not-enough-memory","p":1128},{"i":1217,"t":"My plotting attempt ended with \"RuntimeError: bad allocation\"?","u":"/faq/","h":"#my-plotting-attempt-ended-with-runtimeerror-bad-allocation","p":1128},{"i":1219,"t":"Can I resume plotting if my computer or drive reboots or enters power save mode while plotting? ?","u":"/faq/","h":"#can-i-resume-plotting-if-my-computer-or-drive-reboots-or-enters-power-save-mode-while-plotting-","p":1128},{"i":1221,"t":"Do I have to be connected to the internet or synced to plot?","u":"/faq/","h":"#do-i-have-to-be-connected-to-the-internet-or-synced-to-plot","p":1128},{"i":1223,"t":"Is there any advantage in plotting larger k sizes?","u":"/faq/","h":"#is-there-any-advantage-in-plotting-larger-k-sizes","p":1128},{"i":1225,"t":"Is the final size of the plotted space the only variable in how often I can win block rewards?","u":"/faq/","h":"#is-the-final-size-of-the-plotted-space-the-only-variable-in-how-often-i-can-win-block-rewards","p":1128},{"i":1227,"t":"How do I know if my plots are OK?","u":"/faq/","h":"#how-do-i-know-if-my-plots-are-ok","p":1128},{"i":1229,"t":"Can I use USB 3.0 cable connected to SSD/NVME running the Temp files?","u":"/faq/","h":"#can-i-use-usb-30-cable-connected-to-ssdnvme-running-the-temp-files","p":1128},{"i":1231,"t":"Full Node","u":"/faq/","h":"#full-node","p":1128},{"i":1232,"t":"What is this UPnP Error?","u":"/faq/","h":"#what-is-this-upnp-error","p":1128},{"i":1234,"t":"Why should I not run more than one node on a home network and what's this about UPnP?","u":"/faq/","h":"#why-should-i-not-run-more-than-one-node-on-a-home-network-and-whats-this-about-upnp","p":1128},{"i":1236,"t":"Why does my node have no connections? How can I get more connections?","u":"/faq/","h":"#why-does-my-node-have-no-connections-how-can-i-get-more-connections","p":1128},{"i":1238,"t":"I am seeing blocks and connections but my node says \"Not Synced\"","u":"/faq/","h":"#i-am-seeing-blocks-and-connections-but-my-node-says-not-synced","p":1128},{"i":1240,"t":"What is the new database?","u":"/faq/","h":"#what-is-the-new-database","p":1128},{"i":1242,"t":"What is the difference between Wallet Mode and Farming Mode?","u":"/faq/","h":"#what-is-the-difference-between-wallet-mode-and-farming-mode","p":1128},{"i":1244,"t":"What are trusted peers and how do I add them?","u":"/faq/","h":"#what-are-trusted-peers-and-how-do-i-add-them","p":1128},{"i":1246,"t":"How does light wallet syncing work?","u":"/faq/","h":"#how-does-light-wallet-syncing-work","p":1128},{"i":1248,"t":"Where is the Chia blockchain database located?","u":"/faq/","h":"#where-is-the-chia-blockchain-database-located","p":1128},{"i":1250,"t":"How do I use the Official Chia Blockchain snapshot torrent?","u":"/faq/","h":"#how-do-i-use-the-official-chia-blockchain-snapshot-torrent","p":1128},{"i":1252,"t":"How do I move the Chia blockchain database to another drive?","u":"/faq/","h":"#how-do-i-move-the-chia-blockchain-database-to-another-drive","p":1128},{"i":1254,"t":"How do I upgrade my version 1 blockchain database to version 2?","u":"/faq/","h":"#how-do-i-upgrade-my-version-1-blockchain-database-to-version-2","p":1128},{"i":1256,"t":"How can I connect to the same full node peers whenever I start Chia?","u":"/faq/","h":"#how-can-i-connect-to-the-same-full-node-peers-whenever-i-start-chia","p":1128},{"i":1258,"t":"Farming","u":"/faq/","h":"#farming","p":1128},{"i":1259,"t":"What is the difference between a Farmer and a Harvester?","u":"/faq/","h":"#what-is-the-difference-between-a-farmer-and-a-harvester","p":1128},{"i":1261,"t":"How do I tell if I'm farming correctly?","u":"/faq/","h":"#how-do-i-tell-if-im-farming-correctly","p":1128},{"i":1263,"t":"Does it matter how fast my internet connection is?","u":"/faq/","h":"#does-it-matter-how-fast-my-internet-connection-is","p":1128},{"i":1265,"t":"I have only 10 TB, will I ever win XCH?","u":"/faq/","h":"#i-have-only-10-tb-will-i-ever-win-xch","p":1128},{"i":1267,"t":"What is the plot filter and why didn't my plot pass it?","u":"/faq/","h":"#what-is-the-plot-filter-and-why-didnt-my-plot-pass-it","p":1128},{"i":1269,"t":"Why does my Chia farm say Missing signage points?","u":"/faq/","h":"#why-does-my-chia-farm-say-missing-signage-points","p":1128},{"i":1271,"t":"Can I join a farming pool?","u":"/faq/","h":"#can-i-join-a-farming-pool","p":1128},{"i":1273,"t":"I have heard that it's recommended that a winning plot be deleted on mainnet?","u":"/faq/","h":"#i-have-heard-that-its-recommended-that-a-winning-plot-be-deleted-on-mainnet","p":1128},{"i":1275,"t":"Do my plots \"wear out\" or \"go bad\"/\"go stale\" over time? Will I have to regularly re-plot?","u":"/faq/","h":"#do-my-plots-wear-out-or-go-badgo-stale-over-time-will-i-have-to-regularly-re-plot","p":1128},{"i":1277,"t":"Is it possible to have a proof but not get a reward?","u":"/faq/","h":"#is-it-possible-to-have-a-proof-but-not-get-a-reward","p":1128},{"i":1279,"t":"Wallet","u":"/faq/","h":"#wallet","p":1128},{"i":1280,"t":"How do I use the Chia faucet?","u":"/faq/","h":"#how-do-i-use-the-chia-faucet","p":1128},{"i":1282,"t":"How do I send or receive a transaction?","u":"/faq/","h":"#how-do-i-send-or-receive-a-transaction","p":1128},{"i":1284,"t":"What is the Coin model?","u":"/faq/","h":"#what-is-the-coin-model","p":1128},{"i":1286,"t":"What are HD Keys?","u":"/faq/","h":"#what-are-hd-keys","p":1128},{"i":1288,"t":"How many confirmations do I need to trust that a chia transaction is final?","u":"/faq/","h":"#how-many-confirmations-do-i-need-to-trust-that-a-chia-transaction-is-final","p":1128},{"i":1290,"t":"Why is my wallet not synced? Why can I not connect to wallet from the GUI?","u":"/faq/","h":"#why-is-my-wallet-not-synced-why-can-i-not-connect-to-wallet-from-the-gui","p":1128},{"i":1292,"t":"Why do I have a negative balance? Why is my pending transaction not confirming?","u":"/faq/","h":"#why-do-i-have-a-negative-balance-why-is-my-pending-transaction-not-confirming","p":1128},{"i":1294,"t":"Where can I buy Chia?","u":"/faq/","h":"#where-can-i-buy-chia","p":1128},{"i":1296,"t":"I was running the light wallet beta app and I upgraded to the latest beta and my offer history disappeared. How do I get that back?","u":"/faq/","h":"#i-was-running-the-light-wallet-beta-app-and-i-upgraded-to-the-latest-beta-and-my-offer-history-disappeared-how-do-i-get-that-back","p":1128},{"i":1298,"t":"Why does the wallet tab tell me that it's synced, but when I look at the full node tab, it still shows that I'm syncing?","u":"/faq/","h":"#why-does-the-wallet-tab-tell-me-that-its-synced-but-when-i-look-at-the-full-node-tab-it-still-shows-that-im-syncing","p":1128},{"i":1300,"t":"I lost my offer history, and I have open offers. How do I cancel those offers since I can't access the open offers through the wallet?","u":"/faq/","h":"#i-lost-my-offer-history-and-i-have-open-offers-how-do-i-cancel-those-offers-since-i-cant-access-the-open-offers-through-the-wallet","p":1128},{"i":1302,"t":"Why don't new CAT tokens automatically show up in my wallet anymore?","u":"/faq/","h":"#why-dont-new-cat-tokens-automatically-show-up-in-my-wallet-anymore","p":1128},{"i":1304,"t":"How can I make a coin that may only be spent until a certain timestamp or block height?","u":"/faq/","h":"#how-can-i-make-a-coin-that-may-only-be-spent-until-a-certain-timestamp-or-block-height","p":1128},{"i":1306,"t":"Where is the executable file to start the reference wallet GUI located on Windows?","u":"/faq/","h":"#where-is-the-executable-file-to-start-the-reference-wallet-gui-located-on-windows","p":1128},{"i":1308,"t":"What is the dust filter?","u":"/faq/","h":"#what-is-the-dust-filter","p":1128},{"i":1310,"t":"Why is my wallet's balance inconsistent?","u":"/faq/","h":"#why-is-my-wallets-balance-inconsistent","p":1128},{"i":1312,"t":"Why does my wallet say Error Can't send more than xxxxxxxx mojos in a single transaction?","u":"/faq/","h":"#why-does-my-wallet-say-error-cant-send-more-than-xxxxxxxx-mojos-in-a-single-transaction","p":1128},{"i":1314,"t":"Is there an RPC to list wallet names?","u":"/faq/","h":"#is-there-an-rpc-to-list-wallet-names","p":1128},{"i":1316,"t":"How do I disable the dust filter?","u":"/faq/","h":"#how-do-i-disable-the-dust-filter","p":1128},{"i":1318,"t":"Can I import a 12-word mnemonic seed phrase from another wallet?","u":"/faq/","h":"#can-i-import-a-12-word-mnemonic-seed-phrase-from-another-wallet","p":1128},{"i":1320,"t":"How can I configure Chia to reuse the same receive address?","u":"/faq/","h":"#how-can-i-configure-chia-to-reuse-the-same-receive-address","p":1128},{"i":1322,"t":"What is identical spend aggregation?","u":"/faq/","h":"#what-is-identical-spend-aggregation","p":1128},{"i":1324,"t":"Which mempool feature does identical spend aggregation introduce?","u":"/faq/","h":"#which-mempool-feature-does-identical-spend-aggregation-introduce","p":1128},{"i":1326,"t":"Why do I see INVALID_FEE_TOO_CLOSE_TO_ZERO in my log file?","u":"/faq/","h":"#why-do-i-see-invalid_fee_too_close_to_zero-in-my-log-file","p":1128},{"i":1328,"t":"Offers","u":"/faq/","h":"#offers","p":1128},{"i":1329,"t":"What are Chia Offers?","u":"/faq/","h":"#what-are-chia-offers","p":1128},{"i":1331,"t":"After creating an offer file, why does my spendable balance differ more than the amount specific in the offer?","u":"/faq/","h":"#after-creating-an-offer-file-why-does-my-spendable-balance-differ-more-than-the-amount-specific-in-the-offer","p":1128},{"i":1333,"t":"I plan on making many offers and I want to ensure that my coins aren't locked up?","u":"/faq/","h":"#i-plan-on-making-many-offers-and-i-want-to-ensure-that-my-coins-arent-locked-up","p":1128},{"i":1335,"t":"When canceling an offer, when should I check the \"cancel on blockchain\" checkbox?","u":"/faq/","h":"#when-canceling-an-offer-when-should-i-check-the-cancel-on-blockchain-checkbox","p":1128},{"i":1337,"t":"If I cancel my offer on the blockchain, will other people be able to fulfill it?","u":"/faq/","h":"#if-i-cancel-my-offer-on-the-blockchain-will-other-people-be-able-to-fulfill-it","p":1128},{"i":1339,"t":"I'm accepting an offer, but it shows a Unknown CAT, what should I do?","u":"/faq/","h":"#im-accepting-an-offer-but-it-shows-a-unknown-cat-what-should-i-do","p":1128},{"i":1341,"t":"Where can I share my offers?","u":"/faq/","h":"#where-can-i-share-my-offers","p":1128},{"i":1343,"t":"Why don't I see the offers option in my wallet?","u":"/faq/","h":"#why-dont-i-see-the-offers-option-in-my-wallet","p":1128},{"i":1345,"t":"How do I know if I'm getting the right exchange value for an offer?","u":"/faq/","h":"#how-do-i-know-if-im-getting-the-right-exchange-value-for-an-offer","p":1128},{"i":1347,"t":"Will my Offers sync across different Chia wallets on different machines?","u":"/faq/","h":"#will-my-offers-sync-across-different-chia-wallets-on-different-machines","p":1128},{"i":1349,"t":"Can my coin be spent on another computer with a wallet that uses the same keys, even if I am running two wallets on two different computers and I have an open Offer on one computer?","u":"/faq/","h":"#can-my-coin-be-spent-on-another-computer-with-a-wallet-that-uses-the-same-keys-even-if-i-am-running-two-wallets-on-two-different-computers-and-i-have-an-open-offer-on-one-computer","p":1128},{"i":1351,"t":"Why do I see Error 6 when attempting to accept an Offer?","u":"/faq/","h":"#why-do-i-see-error-6-when-attempting-to-accept-an-offer","p":1128},{"i":1353,"t":"NFTs","u":"/faq/","h":"#nfts","p":1128},{"i":1354,"t":"What are NFTs?","u":"/faq/","h":"#what-are-nfts","p":1128},{"i":1356,"t":"How do I buy NFTs?","u":"/faq/","h":"#how-do-i-buy-nfts","p":1128},{"i":1358,"t":"How can I make an NFT offer using the CLI?","u":"/faq/","h":"#how-can-i-make-an-nft-offer-using-the-cli","p":1128},{"i":1360,"t":"How can I take an NFT offer using the CLI?","u":"/faq/","h":"#how-can-i-take-an-nft-offer-using-the-cli","p":1128},{"i":1362,"t":"Can I send an NFT to an XCH address?","u":"/faq/","h":"#can-i-send-an-nft-to-an-xch-address","p":1128},{"i":1364,"t":"How do I sell my NFTs?","u":"/faq/","h":"#how-do-i-sell-my-nfts","p":1128},{"i":1366,"t":"Is there any limitation to which assets I can offer?","u":"/faq/","h":"#is-there-any-limitation-to-which-assets-i-can-offer","p":1128},{"i":1368,"t":"What is the difference between a transfer and a sale?","u":"/faq/","h":"#what-is-the-difference-between-a-transfer-and-a-sale","p":1128},{"i":1370,"t":"Do I need a new wallet address in order to receive NFTs?","u":"/faq/","h":"#do-i-need-a-new-wallet-address-in-order-to-receive-nfts","p":1128},{"i":1372,"t":"How do I mint an NFT?","u":"/faq/","h":"#how-do-i-mint-an-nft","p":1128},{"i":1374,"t":"Can I mint an NFT with a URL that includes a comma?","u":"/faq/","h":"#can-i-mint-an-nft-with-a-url-that-includes-a-comma","p":1128},{"i":1376,"t":"What does it mean to self-custody an NFT?","u":"/faq/","h":"#what-does-it-mean-to-self-custody-an-nft","p":1128},{"i":1378,"t":"Where does my NFT live?","u":"/faq/","h":"#where-does-my-nft-live","p":1128},{"i":1380,"t":"Can I add new links?","u":"/faq/","h":"#can-i-add-new-links","p":1128},{"i":1382,"t":"After the NFT has been minted, is there a limit to how many links I can add at a time?","u":"/faq/","h":"#after-the-nft-has-been-minted-is-there-a-limit-to-how-many-links-i-can-add-at-a-time","p":1128},{"i":1384,"t":"Is there a limit to the total data size of the metadata?","u":"/faq/","h":"#is-there-a-limit-to-the-total-data-size-of-the-metadata","p":1128},{"i":1386,"t":"Is there a limit to the number of links?","u":"/faq/","h":"#is-there-a-limit-to-the-number-of-links","p":1128},{"i":1388,"t":"Are all the links posted on every spend, or only when adding them?","u":"/faq/","h":"#are-all-the-links-posted-on-every-spend-or-only-when-adding-them","p":1128},{"i":1390,"t":"Can I modify links?","u":"/faq/","h":"#can-i-modify-links","p":1128},{"i":1392,"t":"Does an NFT transaction take longer than an XCH (or CAT) transaction?","u":"/faq/","h":"#does-an-nft-transaction-take-longer-than-an-xch-or-cat-transaction","p":1128},{"i":1394,"t":"How much is the fee for minting/selling an NFT?","u":"/faq/","h":"#how-much-is-the-fee-for-mintingselling-an-nft","p":1128},{"i":1396,"t":"What happens if exactly the same nft mint command is executed twice?","u":"/faq/","h":"#what-happens-if-exactly-the-same-nft-mint-command-is-executed-twice","p":1128},{"i":1398,"t":"How do royalties work?","u":"/faq/","h":"#how-do-royalties-work","p":1128},{"i":1400,"t":"Are there any royalties when exchanging an NFT for another NFT?","u":"/faq/","h":"#are-there-any-royalties-when-exchanging-an-nft-for-another-nft","p":1128},{"i":1402,"t":"How are royalties calculated in offers that involve multiple assets?","u":"/faq/","h":"#how-are-royalties-calculated-in-offers-that-involve-multiple-assets","p":1128},{"i":1404,"t":"Can I use more than one royalty address?","u":"/faq/","h":"#can-i-use-more-than-one-royalty-address","p":1128},{"i":1406,"t":"Are royalties paid upon transferring an NFT?","u":"/faq/","h":"#are-royalties-paid-upon-transferring-an-nft","p":1128},{"i":1408,"t":"What is the Chia Friends project?","u":"/faq/","h":"#what-is-the-chia-friends-project","p":1128},{"i":1410,"t":"Is Chia Friends the same as the Holiday 21 token?","u":"/faq/","h":"#is-chia-friends-the-same-as-the-holiday-21-token","p":1128},{"i":1412,"t":"Can I donate directly to the Marmot Recovery Foundation?","u":"/faq/","h":"#can-i-donate-directly-to-the-marmot-recovery-foundation","p":1128},{"i":1414,"t":"Why do I have a Profile in my wallet?","u":"/faq/","h":"#why-do-i-have-a-profile-in-my-wallet","p":1128},{"i":1416,"t":"Do I need to have a Profile to own/trade an NFT?","u":"/faq/","h":"#do-i-need-to-have-a-profile-to-owntrade-an-nft","p":1128},{"i":1418,"t":"How do I use the CLI for creating and using DIDs and NFTs?","u":"/faq/","h":"#how-do-i-use-the-cli-for-creating-and-using-dids-and-nfts","p":1128},{"i":1420,"t":"What RPC functionality is available for DIDs and NFTs?","u":"/faq/","h":"#what-rpc-functionality-is-available-for-dids-and-nfts","p":1128},{"i":1422,"t":"What limitations, if any, are there for NFTs on Chia's blockchain?","u":"/faq/","h":"#what-limitations-if-any-are-there-for-nfts-on-chias-blockchain","p":1128},{"i":1424,"t":"Are there any security concerns I should consider?","u":"/faq/","h":"#are-there-any-security-concerns-i-should-consider","p":1128},{"i":1426,"t":"What recovery options are available if my NFT gets stolen?","u":"/faq/","h":"#what-recovery-options-are-available-if-my-nft-gets-stolen","p":1128},{"i":1428,"t":"What is the stance on NSFW NFTs being created?","u":"/faq/","h":"#what-is-the-stance-on-nsfw-nfts-being-created","p":1128},{"i":1430,"t":"How do I configure my system to send and receive notifications?","u":"/faq/","h":"#how-do-i-configure-my-system-to-send-and-receive-notifications","p":1128},{"i":1432,"t":"How can I use the CLI to send an Offer notification to the owner of an NFT?","u":"/faq/","h":"#how-can-i-use-the-cli-to-send-an-offer-notification-to-the-owner-of-an-nft","p":1128},{"i":1434,"t":"How can I sign and verify a message with an NFT?","u":"/faq/","h":"#how-can-i-sign-and-verify-a-message-with-an-nft","p":1128},{"i":1436,"t":"Support/Miscellaneous","u":"/faq/","h":"#supportmiscellaneous","p":1128},{"i":1437,"t":"What are the minimum officially supported OS versions?","u":"/faq/","h":"#what-are-the-minimum-officially-supported-os-versions","p":1128},{"i":1439,"t":"What versions of Python are supported?","u":"/faq/","h":"#what-versions-of-python-are-supported","p":1128},{"i":1441,"t":"How do I verify file checksum?","u":"/faq/","h":"#how-do-i-verify-file-checksum","p":1128},{"i":1443,"t":"Can I use a fast SAS HDD for storing the blockchain's database?","u":"/faq/","h":"#can-i-use-a-fast-sas-hdd-for-storing-the-blockchains-database","p":1128},{"i":1445,"t":"Can I run this on a Raspberry Pi 3 or 4?","u":"/faq/","h":"#can-i-run-this-on-a-raspberry-pi-3-or-4","p":1128},{"i":1447,"t":"How do I upgrade and keep my keys and plots?","u":"/faq/","h":"#how-do-i-upgrade-and-keep-my-keys-and-plots","p":1128},{"i":1449,"t":"Where is the executable file to start Chia's reference wallet on Windows?","u":"/faq/","h":"#where-is-the-executable-file-to-start-chias-reference-wallet-on-windows","p":1128},{"i":1451,"t":"I installed Chia with the packaged installer. How do I run CLI commands?","u":"/faq/","h":"#i-installed-chia-with-the-packaged-installer-how-do-i-run-cli-commands","p":1128},{"i":1453,"t":"Where are the config and log files stored?","u":"/faq/","h":"#where-are-the-config-and-log-files-stored","p":1128},{"i":1455,"t":"How do I change the log level to show more detail?","u":"/faq/","h":"#how-do-i-change-the-log-level-to-show-more-detail","p":1128},{"i":1457,"t":"How do I quickly search the log file for errors?","u":"/faq/","h":"#how-do-i-quickly-search-the-log-file-for-errors","p":1128},{"i":1459,"t":"What is the difference between chia and Chia (chia capitalization)?","u":"/faq/","h":"#what-is-the-difference-between-chia-and-chia-chia-capitalization","p":1128},{"i":1461,"t":"How can I use PFX certificates for .NET development on Windows?","u":"/faq/","h":"#how-can-i-use-pfx-certificates-for-net-development-on-windows","p":1128},{"i":1463,"t":"What are the plans for the project and what are its tokenomics?","u":"/faq/","h":"#what-are-the-plans-for-the-project-and-what-are-its-tokenomics","p":1128},{"i":1465,"t":"How can I contribute?","u":"/faq/","h":"#how-can-i-contribute","p":1128},{"i":1467,"t":"What microphone is Gene using?","u":"/faq/","h":"#what-microphone-is-gene-using","p":1128},{"i":1469,"t":"Isn't the current international monetary system good enough?","u":"/faq/","h":"#isnt-the-current-international-monetary-system-good-enough","p":1128},{"i":1473,"t":"Additional Reading","u":"/green-paper-references/","h":"#additional-reading","p":1471},{"i":1481,"t":"Concerns for developing chia apps","u":"/guides/application-structure-tutorial/","h":"#concerns-for-developing-chia-apps","p":1479},{"i":1485,"t":"Introduction","u":"/guides/cat-creation-tutorial/","h":"#introduction","p":1483},{"i":1487,"t":"CAT Issuance Granularity","u":"/guides/cat-creation-tutorial/","h":"#cat-issuance-granularity","p":1483},{"i":1489,"t":"Setting up your Chia Environment","u":"/guides/cat-creation-tutorial/","h":"#setting-up-your-chia-environment","p":1483},{"i":1491,"t":"CAT Admin Tool","u":"/guides/cat-creation-tutorial/","h":"#cat-admin-tool","p":1483},{"i":1493,"t":"Creating a Single Issuance CAT","u":"/guides/cat-creation-tutorial/","h":"#creating-a-single-issuance-cat","p":1483},{"i":1495,"t":"Creating a Multiple Issuance CAT","u":"/guides/cat-creation-tutorial/","h":"#creating-a-multiple-issuance-cat","p":1483},{"i":1497,"t":"Add a CAT to Your Wallet","u":"/guides/cat-creation-tutorial/","h":"#add-a-cat-to-your-wallet","p":1483},{"i":1499,"t":"Melting a CAT","u":"/guides/cat-creation-tutorial/","h":"#melting-a-cat","p":1483},{"i":1501,"t":"Preparing for Mainnet","u":"/guides/cat-creation-tutorial/","h":"#preparing-for-mainnet","p":1483},{"i":1503,"t":"Conclusion","u":"/guides/cat-creation-tutorial/","h":"#conclusion","p":1483},{"i":1507,"t":"FAQ","u":"/guides/cat2-intro/","h":"#faq","p":1505},{"i":1508,"t":"General","u":"/guides/cat2-intro/","h":"#general","p":1505},{"i":1510,"t":"CAT Issuers","u":"/guides/cat2-intro/","h":"#cat-issuers","p":1505},{"i":1512,"t":"Chia App","u":"/guides/cat2-intro/","h":"#chia-app","p":1505},{"i":1514,"t":"CAT1 Balance Website","u":"/guides/cat2-intro/","h":"#cat1-balance-website","p":1505},{"i":1516,"t":"Wallet Developers","u":"/guides/cat2-intro/","h":"#wallet-developers","p":1505},{"i":1520,"t":"A.1 (Unique) Digital Signatures","u":"/green-paper-appendix/","h":"#a1-unique-digital-signatures","p":1518},{"i":1522,"t":"A.2 (Unique) Proofs Of Space","u":"/green-paper-appendix/","h":"#a2-unique-proofs-of-space","p":1518},{"i":1523,"t":"A.2.1 Algorithms for PoSpace","u":"/green-paper-appendix/","h":"#a21-algorithms-for-pospace","p":1518},{"i":1525,"t":"A.2.2 Security of PoSpace","u":"/green-paper-appendix/","h":"#a22-security-of-pospace","p":1518},{"i":1527,"t":"A.2.3 Unique PoSpace","u":"/green-paper-appendix/","h":"#a23-unique-pospace","p":1518},{"i":1529,"t":"A.2.4 The [AAC+17] PoSpace","u":"/green-paper-appendix/","h":"#a24-the-aac17-pospace","p":1518},{"i":1531,"t":"A.3 Verifiable Delay Functions","u":"/green-paper-appendix/","h":"#a3-verifiable-delay-functions","p":1518},{"i":1533,"t":"A.3.1 The [Pie19b, Wes20] VDFs","u":"/green-paper-appendix/","h":"#a31-the-pie19b-wes20-vdfs","p":1518},{"i":1535,"t":"Footnotes","u":"/green-paper-appendix/","h":"#footnote-label","p":1518},{"i":1539,"t":"Generate a CAT1 Snapshot","u":"/guides/cat2-snapshot/","h":"#generate","p":1537},{"i":1541,"t":"Export Your Data from the Snapshot","u":"/guides/cat2-snapshot/","h":"#export","p":1537},{"i":1543,"t":"Fix EOL Characters","u":"/guides/cat2-snapshot/","h":"#fix-eol","p":1537},{"i":1545,"t":"Data Cleanup","u":"/guides/cat2-snapshot/","h":"#cleanup","p":1537},{"i":1547,"t":"Export Data for all CATs","u":"/guides/cat2-snapshot/","h":"#export-all","p":1537},{"i":1563,"t":"Install the CAT Admin Tool","u":"/guides/cat2-issuance/","h":"#install-the-cat-admin-tool","p":1561},{"i":1565,"t":"Secure the Bag (Single Issuance)","u":"/guides/cat2-issuance/","h":"#secure-single","p":1561},{"i":1567,"t":"Secure the Bag (Multi Issuance)","u":"/guides/cat2-issuance/","h":"#secure-multi","p":1561},{"i":1569,"t":"Unwind the Bag","u":"/guides/cat2-issuance/","h":"#unwind","p":1561},{"i":1571,"t":"Test Run: Unwind the Bag","u":"/guides/cat2-issuance/","h":"#test-unwind","p":1561},{"i":1577,"t":"2 - Start Writing Your First Smart Coin","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#2---start-writing-your-first-smart-coin","p":1575},{"i":1578,"t":"3 - Finish Writing Your First Smart Coin","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#3---finish-writing-your-first-smart-coin","p":1575},{"i":1579,"t":"4 - Securing a Smart Coin","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#4---securing-a-smart-coin","p":1575},{"i":1581,"t":"5 - Currying","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#5---currying","p":1575},{"i":1582,"t":"6 - Driver Code","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#6---driver-code","p":1575},{"i":1583,"t":"7 - Writing Smart Coin Tests","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#7---writing-smart-coin-tests","p":1575},{"i":1584,"t":"8 - Deploying a Smart Coin to the Blockchain","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#8---deploying-a-smart-coin-to-the-blockchain","p":1575},{"i":1585,"t":"9 - Spending Your Smart Coin","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#9---spending-your-smart-coin","p":1575},{"i":1589,"t":"Get your coin's info (amount, puzzle hash & parent info)","u":"/guides/coin-spend-rpc-tutorial/","h":"#get-your-coins-info-amount-puzzle-hash--parent-info","p":1587},{"i":1591,"t":"Get serialized puzzle and solution","u":"/guides/coin-spend-rpc-tutorial/","h":"#get-serialized-puzzle-and-solution","p":1587},{"i":1593,"t":"Serialization using clvm_tools","u":"/guides/coin-spend-rpc-tutorial/","h":"#serialization-using-clvm_tools","p":1587},{"i":1595,"t":"Serialization using Chia Dev Tools","u":"/guides/coin-spend-rpc-tutorial/","h":"#serialization-using-chia-dev-tools","p":1587},{"i":1597,"t":"Serialization using Chialisp web tool","u":"/guides/coin-spend-rpc-tutorial/","h":"#serialization-using-chialisp-web-tool","p":1587},{"i":1599,"t":"Spend a coin with RPC call","u":"/guides/coin-spend-rpc-tutorial/","h":"#spend-a-coin-with-rpc-call","p":1587},{"i":1602,"t":"Intro","u":"/guides/clawback-user-guide/","h":"#intro","p":1601},{"i":1604,"t":"Explanation","u":"/guides/clawback-user-guide/","h":"#explanation","p":1601},{"i":1606,"t":"GUI","u":"/guides/clawback-user-guide/","h":"#gui","p":1601},{"i":1607,"t":"Review Settings","u":"/guides/clawback-user-guide/","h":"#review-settings","p":1601},{"i":1609,"t":"Clawback","u":"/guides/clawback-user-guide/","h":"#clawback","p":1601},{"i":1611,"t":"Claim","u":"/guides/clawback-user-guide/","h":"#claim","p":1601},{"i":1613,"t":"CLI","u":"/guides/clawback-user-guide/","h":"#cli","p":1601},{"i":1615,"t":"Clawback","u":"/guides/clawback-user-guide/","h":"#clawback-1","p":1601},{"i":1617,"t":"Claim","u":"/guides/clawback-user-guide/","h":"#claim-1","p":1601},{"i":1620,"t":"Intro","u":"/guides/clawback-primitive-guide/","h":"#intro","p":1619},{"i":1622,"t":"About clawback","u":"/guides/clawback-primitive-guide/","h":"#about-clawback","p":1619},{"i":1624,"t":"Install the clawback primitive","u":"/guides/clawback-primitive-guide/","h":"#install-the-clawback-primitive","p":1619},{"i":1626,"t":"Create a clawback coin","u":"/guides/clawback-primitive-guide/","h":"#create-a-clawback-coin","p":1619},{"i":1628,"t":"Claw back a coin","u":"/guides/clawback-primitive-guide/","h":"#claw-back-a-coin","p":1619},{"i":1630,"t":"Claim a clawback coin","u":"/guides/clawback-primitive-guide/","h":"#claim-a-clawback-coin","p":1619},{"i":1632,"t":"Other cases","u":"/guides/clawback-primitive-guide/","h":"#other-cases","p":1619},{"i":1634,"t":"Sender performs a clawback after the timelock","u":"/guides/clawback-primitive-guide/","h":"#sender-performs-a-clawback-after-the-timelock","p":1619},{"i":1636,"t":"Recipient attempts to claim clawback coin before timelock has expired","u":"/guides/clawback-primitive-guide/","h":"#recipient-attempts-to-claim-clawback-coin-before-timelock-has-expired","p":1619},{"i":1638,"t":"Someone other than the Sender attempts to claw back a coin","u":"/guides/clawback-primitive-guide/","h":"#someone-other-than-the-sender-attempts-to-claw-back-a-coin","p":1619},{"i":1640,"t":"Someone other than the Recipient attempts to claim a clawback spend","u":"/guides/clawback-primitive-guide/","h":"#someone-other-than-the-recipient-attempts-to-claim-a-clawback-spend","p":1619},{"i":1642,"t":"Sender claws back coin to a new wallet","u":"/guides/clawback-primitive-guide/","h":"#sender-claws-back-coin-to-a-new-wallet","p":1619},{"i":1644,"t":"Recipient claims a clawback coin in a new wallet address","u":"/guides/clawback-primitive-guide/","h":"#recipient-claims-a-clawback-coin-in-a-new-wallet-address","p":1619},{"i":1646,"t":"Sender or Recipient attempts to show a clawback coin before it has been created","u":"/guides/clawback-primitive-guide/","h":"#sender-or-recipient-attempts-to-show-a-clawback-coin-before-it-has-been-created","p":1619},{"i":1649,"t":"Intro","u":"/guides/cr-CAT-tutorial/","h":"#intro","p":1648},{"i":1651,"t":"Definitions","u":"/guides/cr-CAT-tutorial/","h":"#definitions","p":1648},{"i":1653,"t":"Setup","u":"/guides/cr-CAT-tutorial/","h":"#setup","p":1648},{"i":1654,"t":"Prerequisites","u":"/guides/cr-CAT-tutorial/","h":"#prerequisites","p":1648},{"i":1656,"t":"DID and VC Setup","u":"/guides/cr-CAT-tutorial/","h":"#did-and-vc-setup","p":1648},{"i":1658,"t":"CAT Admin Tool","u":"/guides/cr-CAT-tutorial/","h":"#cat-admin-tool","p":1648},{"i":1660,"t":"Automatic CATs","u":"/guides/cr-CAT-tutorial/","h":"#automatic-cats","p":1648},{"i":1662,"t":"Setup summary","u":"/guides/cr-CAT-tutorial/","h":"#setup-summary","p":1648},{"i":1664,"t":"Mint CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#mint-cr-cats","p":1648},{"i":1666,"t":"Send CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#send-cr-cats","p":1648},{"i":1668,"t":"Sending from the GUI","u":"/guides/cr-CAT-tutorial/","h":"#sending-from-the-gui","p":1648},{"i":1670,"t":"Sending from the CLI","u":"/guides/cr-CAT-tutorial/","h":"#sending-from-the-cli","p":1648},{"i":1672,"t":"Offer CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#offer-cr-cats","p":1648},{"i":1674,"t":"GUI Offers","u":"/guides/cr-CAT-tutorial/","h":"#gui-offers","p":1648},{"i":1676,"t":"CLI Offers","u":"/guides/cr-CAT-tutorial/","h":"#cli-offers","p":1648},{"i":1678,"t":"When Proofs Are Missing","u":"/guides/cr-CAT-tutorial/","h":"#when-proofs-are-missing","p":1648},{"i":1680,"t":"Sending CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#sending-cr-cats","p":1648},{"i":1682,"t":"Offers for CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#offers-for-cr-cats","p":1648},{"i":1686,"t":"What is a CAT?","u":"/guides/crash-course/cats-offers-nfts/","h":"#what-is-a-cat","p":1684},{"i":1688,"t":"CAT Creation Tool and Setup","u":"/guides/crash-course/cats-offers-nfts/","h":"#cat-creation-tool-and-setup","p":1684},{"i":1690,"t":"Creating a Single-Issuance CAT","u":"/guides/crash-course/cats-offers-nfts/","h":"#creating-a-single-issuance-cat","p":1684},{"i":1692,"t":"Offers","u":"/guides/crash-course/cats-offers-nfts/","h":"#offers","p":1684},{"i":1694,"t":"Completing Offers","u":"/guides/crash-course/cats-offers-nfts/","h":"#completing-offers","p":1684},{"i":1696,"t":"Getting Started with NFTs","u":"/guides/crash-course/cats-offers-nfts/","h":"#getting-started-with-nfts","p":1684},{"i":1698,"t":"Getting an Image and Hash","u":"/guides/crash-course/cats-offers-nfts/","h":"#getting-an-image-and-hash","p":1684},{"i":1700,"t":"Mint an NFT","u":"/guides/crash-course/cats-offers-nfts/","h":"#mint-an-nft","p":1684},{"i":1702,"t":"Offers with NFTs","u":"/guides/crash-course/cats-offers-nfts/","h":"#offers-with-nfts","p":1684},{"i":1704,"t":"Accepting NFT Offers","u":"/guides/crash-course/cats-offers-nfts/","h":"#accepting-nft-offers","p":1684},{"i":1706,"t":"Conclusion","u":"/guides/crash-course/cats-offers-nfts/","h":"#conclusion","p":1684},{"i":1710,"t":"Dev Tools","u":"/guides/crash-course/chialisp/","h":"#dev-tools","p":1708},{"i":1712,"t":"Chia Dev Tools","u":"/guides/crash-course/chialisp/","h":"#chia-dev-tools","p":1708},{"i":1714,"t":"Run","u":"/guides/crash-course/chialisp/","h":"#run","p":1708},{"i":1716,"t":"Brun","u":"/guides/crash-course/chialisp/","h":"#brun","p":1708},{"i":1718,"t":"Writing a Chialisp Puzzle","u":"/guides/crash-course/chialisp/","h":"#writing-puzzle","p":1708},{"i":1720,"t":"Comparisons and If","u":"/guides/crash-course/chialisp/","h":"#comparisons-and-if","p":1708},{"i":1722,"t":"Text Editor","u":"/guides/crash-course/chialisp/","h":"#text-editor","p":1708},{"i":1724,"t":"Chialisp Files","u":"/guides/crash-course/chialisp/","h":"#chialisp-files","p":1708},{"i":1726,"t":"Convention","u":"/guides/crash-course/chialisp/","h":"#convention","p":1708},{"i":1730,"t":"Dev Tools","u":"/guides/crash-course/intro-to-chialisp/","h":"#dev-tools","p":1728},{"i":1732,"t":"Chia Dev Tools","u":"/guides/crash-course/intro-to-chialisp/","h":"#chia-dev-tools","p":1728},{"i":1734,"t":"Run","u":"/guides/crash-course/intro-to-chialisp/","h":"#run","p":1728},{"i":1736,"t":"Brun","u":"/guides/crash-course/intro-to-chialisp/","h":"#brun","p":1728},{"i":1738,"t":"Writing a Chialisp Puzzle","u":"/guides/crash-course/intro-to-chialisp/","h":"#writing-puzzle","p":1728},{"i":1740,"t":"Comparisons and If","u":"/guides/crash-course/intro-to-chialisp/","h":"#comparisons-and-if","p":1728},{"i":1742,"t":"Text Editor","u":"/guides/crash-course/intro-to-chialisp/","h":"#text-editor","p":1728},{"i":1744,"t":"Chialisp Files","u":"/guides/crash-course/intro-to-chialisp/","h":"#chialisp-files","p":1728},{"i":1746,"t":"Conventions","u":"/guides/crash-course/intro-to-chialisp/","h":"#conventions","p":1728},{"i":1748,"t":"Putting it Together","u":"/guides/crash-course/intro-to-chialisp/","h":"#putting-it-together","p":1728},{"i":1750,"t":"Defining Functions","u":"/guides/crash-course/intro-to-chialisp/","h":"#defining-functions","p":1728},{"i":1752,"t":"More Complicated Function","u":"/guides/crash-course/intro-to-chialisp/","h":"#more-complicated-function","p":1728},{"i":1754,"t":"Invoking our Code","u":"/guides/crash-course/intro-to-chialisp/","h":"#invoking-our-code","p":1728},{"i":1759,"t":"Inner Puzzle Creation","u":"/guides/crash-course/inner-puzzles/","h":"#inner-puzzle-creation","p":1756},{"i":1761,"t":"The Steps","u":"/guides/crash-course/inner-puzzles/","h":"#the-steps","p":1756},{"i":1763,"t":"Create the Coin","u":"/guides/crash-course/inner-puzzles/","h":"#create-the-coin","p":1756},{"i":1765,"t":"Get Puzzle Hash","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1767,"t":"Get Puzzle Reveal","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1769,"t":"Get Address","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1771,"t":"Create Coin","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1773,"t":"Retreive Coin Info","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1775,"t":"Crafting a solution","u":"/guides/crash-course/inner-puzzles/","h":"#crafting-a-solution","p":1756},{"i":1777,"t":"Concatenate Message","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1779,"t":"Sign Message","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1783,"t":"1.1 Security","u":"/green-paper-introduction/","h":"#11-security","p":1781},{"i":1785,"t":"1.2 Network Delays","u":"/green-paper-introduction/","h":"#12-network-delays","p":1781},{"i":1787,"t":"1.3 Game Theoretic Aspects","u":"/green-paper-introduction/","h":"#13-game-theoretic-aspects","p":1781},{"i":1789,"t":"1.4 Farmers and Timelords","u":"/green-paper-introduction/","h":"#14-farmers-and-timelords","p":1781},{"i":1791,"t":"1.5 Difficulty and Chain Selection Rule","u":"/green-paper-introduction/","h":"#15-difficulty-and-chain-selection-rule","p":1781},{"i":1793,"t":"1.6 Cryptographic Building Blocks","u":"/green-paper-introduction/","h":"#16-cryptographic-building-blocks","p":1781},{"i":1795,"t":"1.7 A High Level View of the Protocol","u":"/green-paper-introduction/","h":"#17-a-high-level-view-of-the-protocol","p":1781},{"i":1797,"t":"1.8 Space Oddities","u":"/green-paper-introduction/","h":"#18-space-oddities","p":1781},{"i":1799,"t":"1.8.1 Sized vs. Unsized","u":"/green-paper-introduction/","h":"#181-sized-vs-unsized","p":1781},{"i":1801,"t":"1.8.2 Internal vs. External","u":"/green-paper-introduction/","h":"#182-internal-vs-external","p":1781},{"i":1803,"t":"1.8.3 Replotting","u":"/green-paper-introduction/","h":"#183-replotting","p":1781},{"i":1805,"t":"Footnotes","u":"/green-paper-introduction/","h":"#footnote-label","p":1781},{"i":1809,"t":"Intro to Chia","u":"/guides/crash-course/introduction/","h":"#intro-to-chia","p":1807},{"i":1811,"t":"Consensus","u":"/guides/crash-course/introduction/","h":"#consensus","p":1807},{"i":1813,"t":"Decentralization","u":"/guides/crash-course/introduction/","h":"#decentralization","p":1807},{"i":1815,"t":"Getting Started","u":"/guides/crash-course/introduction/","h":"#getting-started","p":1807},{"i":1817,"t":"Getting Started with the CLI","u":"/guides/crash-course/introduction/","h":"#getting-started-with-the-cli","p":1807},{"i":1819,"t":"Getting on Testnet","u":"/guides/crash-course/introduction/","h":"#getting-on-testnet","p":1807},{"i":1821,"t":"CLI","u":"/guides/crash-course/introduction/","h":"#cli","p":1807},{"i":1823,"t":"Getting TXCH","u":"/guides/crash-course/introduction/","h":"#getting-txch","p":1807},{"i":1827,"t":"Singleton Structure","u":"/guides/custody-tool-description/","h":"#singleton-structure","p":1825},{"i":1829,"t":"Singleton Settings","u":"/guides/custody-tool-description/","h":"#singleton-settings","p":1825},{"i":1831,"t":"Permanent layer","u":"/guides/custody-tool-description/","h":"#permanent-layer","p":1825},{"i":1833,"t":"Non-permanent layer","u":"/guides/custody-tool-description/","h":"#non-permanent-layer","p":1825},{"i":1835,"t":"Allowed Actions","u":"/guides/custody-tool-description/","h":"#allowed-actions","p":1825},{"i":1837,"t":"Withdrawal","u":"/guides/custody-tool-description/","h":"#withdrawal","p":1825},{"i":1839,"t":"Rekey","u":"/guides/custody-tool-description/","h":"#rekey","p":1825},{"i":1841,"t":"Lock Level Increase","u":"/guides/custody-tool-description/","h":"#lock-level-increase","p":1825},{"i":1843,"t":"When are Normal Rekey, Slow Rekey and Lock Level Increase needed?","u":"/guides/custody-tool-description/","h":"#when-are-normal-rekey-slow-rekey-and-lock-level-increase-needed","p":1825},{"i":1845,"t":"Source Code","u":"/guides/custody-tool-description/","h":"#source-code","p":1825},{"i":1847,"t":"Public Configuration","u":"/guides/custody-tool-description/","h":"#public-configuration","p":1825},{"i":1849,"t":"Private Configuration","u":"/guides/custody-tool-description/","h":"#private-configuration","p":1825},{"i":1853,"t":"Basic Example","u":"/guides/crash-course/smart-coins/","h":"#basic-example","p":1851},{"i":1855,"t":"Currying Example","u":"/guides/crash-course/smart-coins/","h":"#currying-example","p":1851},{"i":1857,"t":"Hashing Example","u":"/guides/crash-course/smart-coins/","h":"#hashing-example","p":1851},{"i":1859,"t":"Hash the Password","u":"/guides/crash-course/smart-coins/","h":"#hash-the-password","p":1851},{"i":1861,"t":"Curry the Hash","u":"/guides/crash-course/smart-coins/","h":"#curry-the-hash","p":1851},{"i":1863,"t":"Final Puzzle","u":"/guides/crash-course/smart-coins/","h":"#final-puzzle","p":1851},{"i":1865,"t":"Curry the Hash","u":"/guides/crash-course/smart-coins/","h":"#curry-the-hash-1","p":1851},{"i":1867,"t":"Puzzle Hash","u":"/guides/crash-course/smart-coins/","h":"#puzzle-hash","p":1851},{"i":1869,"t":"Puzzle Reveal","u":"/guides/crash-course/smart-coins/","h":"#puzzle-reveal","p":1851},{"i":1871,"t":"Creating the Coin","u":"/guides/crash-course/smart-coins/","h":"#creating-the-coin","p":1851},{"i":1873,"t":"Spending the Coin","u":"/guides/crash-course/smart-coins/","h":"#spending-the-coin","p":1851},{"i":1875,"t":"Common Mistakes","u":"/guides/crash-course/smart-coins/","h":"#common-mistakes","p":1851},{"i":1877,"t":"Security Concerns","u":"/guides/crash-course/smart-coins/","h":"#security-concerns","p":1851},{"i":1879,"t":"Password is Revealed","u":"/guides/crash-course/smart-coins/","h":"#password-is-revealed","p":1851},{"i":1881,"t":"Spend Interception","u":"/guides/crash-course/smart-coins/","h":"#spend-interception","p":1851},{"i":1885,"t":"Create a puzzle","u":"/guides/custom-puzzle-lock-tutorial/","h":"#create-a-puzzle","p":1883},{"i":1887,"t":"Get compiled version of the custom puzzle","u":"/guides/custom-puzzle-lock-tutorial/","h":"#get-compiled-version-of-the-custom-puzzle","p":1883},{"i":1889,"t":"Using clvm_tools (official)","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-clvm_tools-official","p":1883},{"i":1891,"t":"Using Chialisp web tool (unofficial)","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-chialisp-web-tool-unofficial","p":1883},{"i":1893,"t":"Get puzzle hash from a puzzle","u":"/guides/custom-puzzle-lock-tutorial/","h":"#get-puzzle-hash-from-a-puzzle","p":1883},{"i":1894,"t":"Using clvm_tools","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-clvm_tools","p":1883},{"i":1896,"t":"Using Chialisp","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-chialisp","p":1883},{"i":1898,"t":"Convert puzzle hash to a receive address","u":"/guides/custom-puzzle-lock-tutorial/","h":"#convert-puzzle-hash-to-a-receive-address","p":1883},{"i":1900,"t":"Send Chia to the receive address","u":"/guides/custom-puzzle-lock-tutorial/","h":"#send-chia-to-the-receive-address","p":1883},{"i":1904,"t":"RPC Explained","u":"/guides/crash-course/chialisp-and-typescript/","h":"#rpc-explained","p":1902},{"i":1906,"t":"Language Choice","u":"/guides/crash-course/chialisp-and-typescript/","h":"#language-choice","p":1902},{"i":1908,"t":"Quick Start","u":"/guides/crash-course/chialisp-and-typescript/","h":"#quick-start","p":1902},{"i":1910,"t":"Full Node RPC","u":"/guides/crash-course/chialisp-and-typescript/","h":"#full-node-rpc","p":1902},{"i":1912,"t":"BLS Signatures","u":"/guides/crash-course/chialisp-and-typescript/","h":"#bls-signatures","p":1902},{"i":1914,"t":"Initializing a Project","u":"/guides/crash-course/chialisp-and-typescript/","h":"#initializing-a-project","p":1902},{"i":1916,"t":"Other Dependencies","u":"/guides/crash-course/chialisp-and-typescript/","h":"#other-dependencies","p":1902},{"i":1918,"t":"Mnemonic Phrase","u":"/guides/crash-course/chialisp-and-typescript/","h":"#mnemonic-phrase","p":1902},{"i":1920,"t":"Dot Env","u":"/guides/crash-course/chialisp-and-typescript/","h":"#dot-env","p":1902},{"i":1922,"t":"Imports","u":"/guides/crash-course/chialisp-and-typescript/","h":"#imports","p":1902},{"i":1924,"t":"Loading Chialisp Files","u":"/guides/crash-course/chialisp-and-typescript/","h":"#loading-chialisp-files","p":1902},{"i":1926,"t":"Currying the Key","u":"/guides/crash-course/chialisp-and-typescript/","h":"#currying-the-key","p":1902},{"i":1928,"t":"Setting up the Wallet","u":"/guides/crash-course/chialisp-and-typescript/","h":"#setting-up-the-wallet","p":1902},{"i":1930,"t":"Creating the Coin","u":"/guides/crash-course/chialisp-and-typescript/","h":"#creating-the-coin","p":1902},{"i":1932,"t":"Retrieve the Coin Record","u":"/guides/crash-course/chialisp-and-typescript/","h":"#retrieve-the-coin-record","p":1902},{"i":1934,"t":"Crafting a Solution","u":"/guides/crash-course/chialisp-and-typescript/","h":"#crafting-a-solution","p":1902},{"i":1936,"t":"Calculate the Signature","u":"/guides/crash-course/chialisp-and-typescript/","h":"#calculate-the-signature","p":1902},{"i":1938,"t":"Spend the Coin","u":"/guides/crash-course/chialisp-and-typescript/","h":"#spend-the-coin","p":1902},{"i":1940,"t":"What Next","u":"/guides/crash-course/chialisp-and-typescript/","h":"#what-next","p":1902},{"i":1943,"t":"Intro","u":"/guides/datalayer-permissions/","h":"#intro","p":1942},{"i":1945,"t":"About DataLayer permissions","u":"/guides/datalayer-permissions/","h":"#about-datalayer-permissions","p":1942},{"i":1947,"t":"Chia configuration","u":"/guides/datalayer-permissions/","h":"#chia-configuration","p":1942},{"i":1949,"t":"REST API","u":"/guides/datalayer-permissions/","h":"#rest-api","p":1942},{"i":1951,"t":"handle_upload","u":"/guides/datalayer-permissions/","h":"#handle_upload","p":1942},{"i":1953,"t":"handle_download","u":"/guides/datalayer-permissions/","h":"#handle_download","p":1942},{"i":1955,"t":"upload","u":"/guides/datalayer-permissions/","h":"#upload","p":1942},{"i":1957,"t":"download","u":"/guides/datalayer-permissions/","h":"#download","p":1942},{"i":1959,"t":"add_missing_files","u":"/guides/datalayer-permissions/","h":"#add_missing_files","p":1942},{"i":1961,"t":"plugin_info","u":"/guides/datalayer-permissions/","h":"#plugin_info","p":1942},{"i":1963,"t":"The Chia S3 plugin","u":"/guides/datalayer-permissions/","h":"#the-chia-s3-plugin","p":1942},{"i":1965,"t":"healthz","u":"/guides/datalayer-permissions/","h":"#healthz","p":1942},{"i":1967,"t":"add_store_id","u":"/guides/datalayer-permissions/","h":"#add_store_id","p":1942},{"i":1969,"t":"remove_store_id","u":"/guides/datalayer-permissions/","h":"#remove_store_id","p":1942},{"i":1973,"t":"Intro to Keys","u":"/guides/crash-course/signatures/","h":"#intro-to-keys","p":1971},{"i":1975,"t":"Intro to Signatures","u":"/guides/crash-course/signatures/","h":"#intro-to-signatures","p":1971},{"i":1977,"t":"Verifying signatures in Chialisp","u":"/guides/crash-course/signatures/","h":"#verifying-signatures-in-chialisp","p":1971},{"i":1979,"t":"Practice","u":"/guides/crash-course/signatures/","h":"#practice","p":1971},{"i":1981,"t":"Create a Coin","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1983,"t":"Spending the coin","u":"/guides/crash-course/signatures/","h":"#spending-the-coin","p":1971},{"i":1985,"t":"Build a Solution","u":"/guides/crash-course/signatures/","h":"#build-a-solution","p":1971},{"i":1987,"t":"Solution","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1989,"t":"Signing a Message","u":"/guides/crash-course/signatures/","h":"#signing-a-message","p":1971},{"i":1991,"t":"Get Coin Id","u":"/guides/crash-course/signatures/","h":"#get-coin-id","p":1971},{"i":1993,"t":"Concatenate Message","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1995,"t":"Sign Message","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1997,"t":"The Spend Bundle","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":2005,"t":"About DataLayer","u":"/guides/datalayer-user-guide/","h":"#about-datalayer","p":2003},{"i":2007,"t":"DataLayer Guide","u":"/guides/datalayer-user-guide/","h":"#datalayer-guide","p":2003},{"i":2008,"t":"Install and Run Chia","u":"/guides/datalayer-user-guide/","h":"#install-and-run-chia","p":2003},{"i":2010,"t":"Configure Chia to run DataLayer","u":"/guides/datalayer-user-guide/","h":"#configure-chia-to-run-datalayer","p":2003},{"i":2012,"t":"Note on Maximum Key and Value Lengths","u":"/guides/datalayer-user-guide/","h":"#note-on-maximum-key-and-value-lengths","p":2003},{"i":2014,"t":"Using DataLayer","u":"/guides/datalayer-user-guide/","h":"#using-datalayer","p":2003},{"i":2016,"t":"Create a data store","u":"/guides/datalayer-user-guide/","h":"#create-a-data-store","p":2003},{"i":2018,"t":"Add and Delete Keys","u":"/guides/datalayer-user-guide/","h":"#add-and-delete-keys","p":2003},{"i":2020,"t":"View Keys and Values","u":"/guides/datalayer-user-guide/","h":"#view-keys-and-values","p":2003},{"i":2022,"t":"View on-chain history","u":"/guides/datalayer-user-guide/","h":"#view-on-chain-history","p":2003},{"i":2024,"t":"Create A Mirror to Advertise A Data Store","u":"/guides/datalayer-user-guide/","h":"#create-a-mirror-to-advertise-a-data-store","p":2003},{"i":2026,"t":"Subscribe to a Data Store","u":"/guides/datalayer-user-guide/","h":"#subscribe-to-a-data-store","p":2003},{"i":2030,"t":"Download the testnet database","u":"/guides/nft-bulk-mint/","h":"#download-the-testnet-database","p":2028},{"i":2032,"t":"Install the bulk minting tool","u":"/guides/nft-bulk-mint/","h":"#install-the-bulk-minting-tool","p":2028},{"i":2034,"t":"Configure Chia to use the bulk minting tool","u":"/guides/nft-bulk-mint/","h":"#configure-chia-to-use-the-bulk-minting-tool","p":2028},{"i":2036,"t":"Run the bulk minting tool","u":"/guides/nft-bulk-mint/","h":"#run-the-bulk-minting-tool","p":2028},{"i":2037,"t":"Example 1","u":"/guides/nft-bulk-mint/","h":"#example-1","p":2028},{"i":2039,"t":"Example 2","u":"/guides/nft-bulk-mint/","h":"#example-2","p":2028},{"i":2043,"t":"Create a DID Wallet","u":"/guides/nft-cli/","h":"#create-a-did-wallet","p":2041},{"i":2045,"t":"Create an NFT Wallet","u":"/guides/nft-cli/","h":"#create-an-nft-wallet","p":2041},{"i":2047,"t":"Mint an NFT (With DID)","u":"/guides/nft-cli/","h":"#mint-an-nft-with-did","p":2041},{"i":2049,"t":"List Your NFTs","u":"/guides/nft-cli/","h":"#list-your-nfts","p":2041},{"i":2051,"t":"Add a URI to Your NFTs","u":"/guides/nft-cli/","h":"#add-a-uri-to-your-nfts","p":2041},{"i":2053,"t":"Set the DID for an NFT","u":"/guides/nft-cli/","h":"#set-the-did-for-an-nft","p":2041},{"i":2055,"t":"Transfer Your NFTs","u":"/guides/nft-cli/","h":"#transfer-your-nfts","p":2041},{"i":2057,"t":"Mainnet Usage","u":"/guides/nft-cli/","h":"#mainnet-usage","p":2041},{"i":2060,"t":"About This Document","u":"/guides/nft-intro/","h":"#about-this-document","p":2059},{"i":2062,"t":"Key features","u":"/guides/nft-intro/","h":"#key-features","p":2059},{"i":2064,"t":"Collections","u":"/guides/nft-intro/","h":"#collections","p":2059},{"i":2066,"t":"CLVM Cost","u":"/guides/nft-intro/","h":"#clvm-cost","p":2059},{"i":2068,"t":"Install Testnet","u":"/guides/nft-intro/","h":"#install-testnet","p":2059},{"i":2070,"t":"Binary installer","u":"/guides/nft-intro/","h":"#binary-installer","p":2059},{"i":2072,"t":"Installing from source","u":"/guides/nft-intro/","h":"#installing-from-source","p":2059},{"i":2074,"t":"Switching to testnet","u":"/guides/nft-intro/","h":"#switching-to-testnet","p":2059},{"i":2076,"t":"Configuration","u":"/guides/nft-intro/","h":"#configuration","p":2059},{"i":2078,"t":"Obtain images with corresponding hashes","u":"/guides/nft-intro/","h":"#obtain-images-with-corresponding-hashes","p":2059},{"i":2080,"t":"CLI, with DID","u":"/guides/nft-intro/","h":"#cli-with-did","p":2059},{"i":2082,"t":"RPC, with DID","u":"/guides/nft-intro/","h":"#rpc-with-did","p":2059},{"i":2084,"t":"Where to store images for NFTs","u":"/guides/nft-intro/","h":"#where-to-store-images-for-nfts","p":2059},{"i":2086,"t":"NFT Metadata Standards","u":"/guides/nft-intro/","h":"#nft-metadata-standards","p":2059},{"i":2089,"t":"Intro","u":"/guides/custody-tool-user-guide/","h":"#intro","p":2088},{"i":2091,"t":"Install the custody tool","u":"/guides/custody-tool-user-guide/","h":"#install-the-custody-tool","p":2088},{"i":2092,"t":"Requirements","u":"/guides/custody-tool-user-guide/","h":"#requirements","p":2088},{"i":2094,"t":"Steps to install","u":"/guides/custody-tool-user-guide/","h":"#steps-to-install","p":2088},{"i":2096,"t":"Command Notes","u":"/guides/custody-tool-user-guide/","h":"#command-notes","p":2088},{"i":2098,"t":"Generate keys","u":"/guides/custody-tool-user-guide/","h":"#generate-keys","p":2088},{"i":2100,"t":"Initialize the singleton","u":"/guides/custody-tool-user-guide/","h":"#initialize-the-singleton","p":2088},{"i":2102,"t":"Create the permanent layer","u":"/guides/custody-tool-user-guide/","h":"#create-the-permanent-layer","p":2088},{"i":2104,"t":"Create the non-permanent layer","u":"/guides/custody-tool-user-guide/","h":"#create-the-non-permanent-layer","p":2088},{"i":2106,"t":"Launch the singleton","u":"/guides/custody-tool-user-guide/","h":"#launch-the-singleton","p":2088},{"i":2108,"t":"Show the singleton","u":"/guides/custody-tool-user-guide/","h":"#show-the-singleton","p":2088},{"i":2110,"t":"Obtain the receive address","u":"/guides/custody-tool-user-guide/","h":"#obtain-the-receive-address","p":2088},{"i":2112,"t":"Fund the singleton","u":"/guides/custody-tool-user-guide/","h":"#fund-the-singleton","p":2088},{"i":2114,"t":"Verify the singleton's status","u":"/guides/custody-tool-user-guide/","h":"#verify-the-singletons-status","p":2088},{"i":2116,"t":"(Optional) Export config","u":"/guides/custody-tool-user-guide/","h":"#optional-export-config","p":2088},{"i":2118,"t":"Custody tool usage","u":"/guides/custody-tool-user-guide/","h":"#custody-tool-usage","p":2088},{"i":2120,"t":"Withdrawal","u":"/guides/custody-tool-user-guide/","h":"#withdrawal","p":2088},{"i":2122,"t":"Clawback","u":"/guides/custody-tool-user-guide/","h":"#clawback","p":2088},{"i":2124,"t":"Rekey","u":"/guides/custody-tool-user-guide/","h":"#rekey","p":2088},{"i":2126,"t":"Lock Level Increase","u":"/guides/custody-tool-user-guide/","h":"#lock-level-increase","p":2088},{"i":2129,"t":"Intro","u":"/guides/observer-wallet-guide/","h":"#intro","p":2128},{"i":2130,"t":"About","u":"/guides/observer-wallet-guide/","h":"#about","p":2128},{"i":2132,"t":"Current Status","u":"/guides/observer-wallet-guide/","h":"#current-status","p":2128},{"i":2134,"t":"Set up","u":"/guides/observer-wallet-guide/","h":"#set-up","p":2128},{"i":2136,"t":"Usage","u":"/guides/observer-wallet-guide/","h":"#usage","p":2128},{"i":2144,"t":"Expectations for Chia Seeder operators","u":"/guides/seeder-user-guide/","h":"#expectations-for-chia-seeder-operators","p":2142},{"i":2146,"t":"Installation","u":"/guides/seeder-user-guide/","h":"#installation","p":2142},{"i":2148,"t":"Special instructions on Ubuntu","u":"/guides/seeder-user-guide/","h":"#special-instructions-on-ubuntu","p":2142},{"i":2150,"t":"Configuration","u":"/guides/seeder-user-guide/","h":"#configuration","p":2142},{"i":2152,"t":"Running","u":"/guides/seeder-user-guide/","h":"#running","p":2142},{"i":2154,"t":"Testing","u":"/guides/seeder-user-guide/","h":"#testing","p":2142},{"i":2156,"t":"Stopping","u":"/guides/seeder-user-guide/","h":"#stopping","p":2142},{"i":2158,"t":"Being included in config.yaml","u":"/guides/seeder-user-guide/","h":"#being-included-in-configyaml","p":2142},{"i":2164,"t":"Note about Windows","u":"/guides/offers-cli-tutorial/","h":"#note-about-windows","p":2162},{"i":2166,"t":"CLI commands and reference","u":"/guides/offers-cli-tutorial/","h":"#cli-commands-and-reference","p":2162},{"i":2168,"t":"Create a single-token offer","u":"/guides/offers-cli-tutorial/","h":"#create-a-single-token-offer","p":2162},{"i":2170,"t":"Accept a single-token offer","u":"/guides/offers-cli-tutorial/","h":"#accept-a-single-token-offer","p":2162},{"i":2172,"t":"Cancel an offer","u":"/guides/offers-cli-tutorial/","h":"#cancel-an-offer","p":2162},{"i":2174,"t":"Create a multiple-token offer","u":"/guides/offers-cli-tutorial/","h":"#create-a-multiple-token-offer","p":2162},{"i":2176,"t":"Accept a multiple-token offer","u":"/guides/offers-cli-tutorial/","h":"#accept-a-multiple-token-offer","p":2162},{"i":2178,"t":"Create an expiring Offer (RPC)","u":"/guides/offers-cli-tutorial/","h":"#create-an-expiring-offer-rpc","p":2162},{"i":2180,"t":"Potential issues","u":"/guides/offers-cli-tutorial/","h":"#potential-issues","p":2162},{"i":2182,"t":"Contents:","u":"/guides/offers-cli-tutorial/","h":"#contents","p":2162},{"i":2184,"t":"Maker doesn't have enough money","u":"/guides/offers-cli-tutorial/","h":"#maker-doesnt-have-enough-money","p":2162},{"i":2186,"t":"Taker doesn't have enough money","u":"/guides/offers-cli-tutorial/","h":"#taker-doesnt-have-enough-money","p":2162},{"i":2188,"t":"Taker accepts an unknown CAT offer","u":"/guides/offers-cli-tutorial/","h":"#taker-accepts-an-unknown-cat-offer","p":2162},{"i":2190,"t":"Taker attempts to accept an invalid offer","u":"/guides/offers-cli-tutorial/","h":"#taker-attempts-to-accept-an-invalid-offer","p":2162},{"i":2192,"t":"Maker cancels an offer locally, Taker accepts the offer","u":"/guides/offers-cli-tutorial/","h":"#maker-cancels-an-offer-locally-taker-accepts-the-offer","p":2162},{"i":2194,"t":"Whole coins must be reserved","u":"/guides/offers-cli-tutorial/","h":"#whole-coins-must-be-reserved","p":2162},{"i":2196,"t":"Offer involving a CAT1 is invalid","u":"/guides/offers-cli-tutorial/","h":"#offer-involving-a-cat1-is-invalid","p":2162},{"i":2198,"t":"Further reading","u":"/guides/offers-cli-tutorial/","h":"#further-reading","p":2162},{"i":2202,"t":"Prerequisites","u":"/guides/simulator-user-guide/","h":"#prerequisites","p":2200},{"i":2204,"t":"Setup instructions","u":"/guides/simulator-user-guide/","h":"#setup-instructions","p":2200},{"i":2206,"t":"Create the simulator","u":"/guides/simulator-user-guide/","h":"#create-the-simulator","p":2200},{"i":2208,"t":"Configure the environment","u":"/guides/simulator-user-guide/","h":"#configure-the-environment","p":2200},{"i":2210,"t":"Usage instructions","u":"/guides/simulator-user-guide/","h":"#usage-instructions","p":2200},{"i":2212,"t":"Start the simulator","u":"/guides/simulator-user-guide/","h":"#start-the-simulator","p":2200},{"i":2214,"t":"Start your Chia wallet","u":"/guides/simulator-user-guide/","h":"#start-your-chia-wallet","p":2200},{"i":2216,"t":"Show node status","u":"/guides/simulator-user-guide/","h":"#show-node-status","p":2200},{"i":2218,"t":"Show simulator status","u":"/guides/simulator-user-guide/","h":"#show-simulator-status","p":2200},{"i":2220,"t":"Farm a new block","u":"/guides/simulator-user-guide/","h":"#farm-a-new-block","p":2200},{"i":2222,"t":"Edit the configuration","u":"/guides/simulator-user-guide/","h":"#edit-the-configuration","p":2200},{"i":2224,"t":"Manage auto farming","u":"/guides/simulator-user-guide/","h":"#manage-auto-farming","p":2200},{"i":2230,"t":"Create a DID Wallet","u":"/guides/nft-rpc/","h":"#create-a-did-wallet","p":2228},{"i":2232,"t":"Create an NFT Wallet","u":"/guides/nft-rpc/","h":"#create-an-nft-wallet","p":2228},{"i":2234,"t":"Mint an NFT (With DID)","u":"/guides/nft-rpc/","h":"#mint-an-nft-with-did","p":2228},{"i":2236,"t":"Get Info About Your NFTs","u":"/guides/nft-rpc/","h":"#get-info-about-your-nfts","p":2228},{"i":2238,"t":"Add a URI to Your NFTs","u":"/guides/nft-rpc/","h":"#add-a-uri-to-your-nfts","p":2228},{"i":2240,"t":"Add Data URI","u":"/guides/nft-rpc/","h":"#add-data-uri","p":2228},{"i":2242,"t":"Add Metadata URI","u":"/guides/nft-rpc/","h":"#add-metadata-uri","p":2228},{"i":2244,"t":"Add License URI","u":"/guides/nft-rpc/","h":"#add-license-uri","p":2228},{"i":2246,"t":"Show the New URIs","u":"/guides/nft-rpc/","h":"#show-the-new-uris","p":2228},{"i":2248,"t":"Transfer Your NFTs","u":"/guides/nft-rpc/","h":"#transfer-your-nfts","p":2228},{"i":2250,"t":"Mainnet Usage","u":"/guides/nft-rpc/","h":"#mainnet-usage","p":2228},{"i":2256,"t":"1 - Environment Setup","u":"/guides/tools-and-setup-video-series/","h":"#1---environment-setup","p":2254},{"i":2267,"t":"Coin Set Refresher","u":"/guides/crash-course/state/","h":"#coin-set-refresher","p":2266},{"i":2269,"t":"What's Next?","u":"/guides/crash-course/state/","h":"#whats-next","p":2266},{"i":2271,"t":"State in Chialisp","u":"/guides/crash-course/state/","h":"#state-in-chialisp","p":2266},{"i":2273,"t":"Initial Setup","u":"/guides/crash-course/state/","h":"#initial-setup","p":2266},{"i":2275,"t":"Initializing the Coin","u":"/guides/crash-course/state/","h":"#initializing-the-coin","p":2266},{"i":2277,"t":"Retrieving the Message","u":"/guides/crash-course/state/","h":"#retrieving-the-message","p":2266},{"i":2279,"t":"Updating the Message","u":"/guides/crash-course/state/","h":"#updating-the-message","p":2266},{"i":2281,"t":"Breakdown","u":"/guides/crash-course/state/","h":"#breakdown","p":2266},{"i":2283,"t":"Updated Message","u":"/guides/crash-course/state/","h":"#updated-message","p":2266},{"i":2285,"t":"Shared Messages","u":"/guides/crash-course/state/","h":"#shared-messages","p":2266},{"i":2287,"t":"Conclusion","u":"/guides/crash-course/state/","h":"#conclusion","p":2266},{"i":2291,"t":"4.1 Hash chains","u":"/hash-and-vdf-chains/","h":"#41-hash-chains","p":2289},{"i":2293,"t":"4.2 VDF chains","u":"/hash-and-vdf-chains/","h":"#42-vdf-chains","p":2289},{"i":2295,"t":"4.2.1 Notation for VDF chains","u":"/hash-and-vdf-chains/","h":"#421-notation-for-vdf-chains","p":2289},{"i":2299,"t":"On the daemon host","u":"/headless-node/","h":"#on-the-daemon-host","p":2297},{"i":2300,"t":"Expose the daemon to the network","u":"/headless-node/","h":"#expose-the-daemon-to-the-network","p":2297},{"i":2302,"t":"Copy the daemon's cert files","u":"/headless-node/","h":"#copy-the-daemons-cert-files","p":2297},{"i":2304,"t":"On the GUI host","u":"/headless-node/","h":"#on-the-gui-host","p":2297},{"i":2305,"t":"Reference the daemon's cert files","u":"/headless-node/","h":"#reference-the-daemons-cert-files","p":2297},{"i":2307,"t":"Troubleshooting","u":"/headless-node/","h":"","p":2297},{"i":2308,"t":"GUI Client","u":"/headless-node/","h":"#gui-client","p":2297},{"i":2309,"t":"Can the GUI find the config folder?","u":"/headless-node/","h":"#can-the-gui-find-the-config-folder","p":2297},{"i":2311,"t":"Can the GUI find the remote daemon's certs?","u":"/headless-node/","h":"#can-the-gui-find-the-remote-daemons-certs","p":2297},{"i":2313,"t":"Connectivity","u":"/headless-node/","h":"#connectivity","p":2297},{"i":2314,"t":"Has the daemon been bound to a routable IP address?","u":"/headless-node/","h":"#has-the-daemon-been-bound-to-a-routable-ip-address","p":2297},{"i":2316,"t":"Is the daemon's port opened on the firewall?","u":"/headless-node/","h":"#is-the-daemons-port-opened-on-the-firewall","p":2297},{"i":2318,"t":"Is VMWare Plugin Service bound to daemon port?","u":"/headless-node/","h":"#is-vmware-plugin-service-bound-to-daemon-port","p":2297},{"i":2322,"t":"harvester_handshake","u":"/harvester-protocol/","h":"#harvester_handshake","p":2320},{"i":2324,"t":"new_signage_point_harvester","u":"/harvester-protocol/","h":"#new_signage_point_harvester","p":2320},{"i":2326,"t":"new_proof_of_space","u":"/harvester-protocol/","h":"#new_proof_of_space","p":2320},{"i":2328,"t":"request_signatures","u":"/harvester-protocol/","h":"#request_signatures","p":2320},{"i":2330,"t":"respond_signatures","u":"/harvester-protocol/","h":"#respond_signatures","p":2320},{"i":2332,"t":"request_plots","u":"/harvester-protocol/","h":"#request_plots","p":2320},{"i":2334,"t":"respond_plots","u":"/harvester-protocol/","h":"#respond_plots","p":2320},{"i":2338,"t":"add_plot_directory","u":"/harvester-rpc/","h":"#add_plot_directory","p":2336},{"i":2340,"t":"delete_plot","u":"/harvester-rpc/","h":"#delete_plot","p":2336},{"i":2342,"t":"get_plots","u":"/harvester-rpc/","h":"#get_plots","p":2336},{"i":2344,"t":"get_plot_directories","u":"/harvester-rpc/","h":"#get_plot_directories","p":2336},{"i":2346,"t":"get_routes","u":"/harvester-rpc/","h":"#get_routes","p":2336},{"i":2348,"t":"refresh_plots","u":"/harvester-rpc/","h":"#refresh_plots","p":2336},{"i":2350,"t":"remove_plot_directory","u":"/harvester-rpc/","h":"#remove_plot_directory","p":2336},{"i":2354,"t":"Proof of Space and Time","u":"/introduction/","h":"#proof-of-space-and-time","p":2352},{"i":2356,"t":"Coin Set Model","u":"/introduction/","h":"#coin-set-model","p":2352},{"i":2358,"t":"Pooling","u":"/introduction/","h":"#pooling","p":2352},{"i":2360,"t":"Other Highlights","u":"/introduction/","h":"#other-highlights","p":2352},{"i":2363,"t":"K size with compression level","u":"/k-sizes/","h":"#k-size-with-compression-level","p":2362},{"i":2365,"t":"New constant space factor","u":"/k-sizes/","h":"#new-constant-space-factor","p":2362},{"i":2367,"t":"Storage requirements for uncompressed plots","u":"/k-sizes/","h":"#storage-requirements-for-uncompressed-plots","p":2362},{"i":2369,"t":"Plots larger than k=32","u":"/k-sizes/","h":"#plots-larger-than-k32","p":2362},{"i":2373,"t":"Obtaining Transactions","u":"/light-clients/","h":"#obtaining-transactions","p":2371},{"i":2381,"t":"Validation","u":"/mempool/","h":"#validation","p":2379},{"i":2383,"t":"Fee Required for Inclusion","u":"/mempool/","h":"#fee-required-for-inclusion","p":2379},{"i":2385,"t":"Scenario 1: Mempool Not Busy","u":"/mempool/","h":"#scenario-1-mempool-not-busy","p":2379},{"i":2387,"t":"Scenario 2: Mempool Busy But Not Full","u":"/mempool/","h":"#scenario-2-mempool-busy-but-not-full","p":2379},{"i":2389,"t":"Scenario 3: Mempool Full","u":"/mempool/","h":"#scenario-3-mempool-full","p":2379},{"i":2391,"t":"Scenario 4: Mempool Full of Transactions with Fees","u":"/mempool/","h":"#scenario-4-mempool-full-of-transactions-with-fees","p":2379},{"i":2393,"t":"Replace by Fee","u":"/mempool/","h":"#replace-by-fee","p":2379},{"i":2395,"t":"Block Creation","u":"/mempool/","h":"#block-creation","p":2379},{"i":2397,"t":"Updating the Mempool","u":"/mempool/","h":"#updating-the-mempool","p":2379},{"i":2401,"t":"Automated","u":"/moving-plots/","h":"#automated","p":2399},{"i":2402,"t":"Plow","u":"/moving-plots/","h":"#plow","p":2399},{"i":2404,"t":"Plotman","u":"/moving-plots/","h":"#plotman","p":2399},{"i":2406,"t":"Manual","u":"/moving-plots/","h":"#manual","p":2399},{"i":2408,"t":"New Directory","u":"/moving-plots/","h":"#new-directory","p":2399},{"i":2410,"t":"New Machine","u":"/moving-plots/","h":"#new-machine","p":2399},{"i":2412,"t":"Checking Plots","u":"/moving-plots/","h":"#checking-plots","p":2399},{"i":2416,"t":"2.1 Grinding","u":"/longest-chain-protocols/","h":"#21-grinding","p":2414},{"i":2418,"t":"2.2 Double-Dipping","u":"/longest-chain-protocols/","h":"#22-double-dipping","p":2414},{"i":2420,"t":"2.3 Bootstrapping","u":"/longest-chain-protocols/","h":"#23-bootstrapping","p":2414},{"i":2422,"t":"Footnotes","u":"/longest-chain-protocols/","h":"#footnote-label","p":2414},{"i":2426,"t":"System Requirements","u":"/installation/","h":"#system-requirements","p":2424},{"i":2428,"t":"Drive Format","u":"/installation/","h":"#drive-format","p":2424},{"i":2430,"t":"Sleep kills plots","u":"/installation/","h":"#sleep-kills-plots","p":2424},{"i":2432,"t":"Install","u":"/installation/","h":"#install","p":2424},{"i":2433,"t":"Using the CLI","u":"/installation/","h":"#using-the-cli","p":2424},{"i":2435,"t":"From Source","u":"/installation/","h":"#from-source","p":2424},{"i":2437,"t":"Raspberry Pi 4","u":"/installation/","h":"#raspberry-pi","p":2424},{"i":2439,"t":"Other environments","u":"/installation/","h":"#other-environments","p":2424},{"i":2441,"t":"Directory Structure","u":"/installation/","h":"#directory-structure","p":2424},{"i":2443,"t":"CLI","u":"/installation/","h":"#cli","p":2424},{"i":2445,"t":"GUI","u":"/installation/","h":"#gui","p":2424},{"i":2447,"t":"Initial Startup","u":"/installation/","h":"#initial-startup","p":2424},{"i":2449,"t":"Systemd","u":"/installation/","h":"#systemd","p":2424},{"i":2451,"t":"Troubleshooting","u":"/installation/","h":"#troubleshooting","p":2424},{"i":2453,"t":"Testnets","u":"/installation/","h":"#testnets","p":2424},{"i":2455,"t":"Beta and release candidate installations","u":"/installation/","h":"#beta-and-release-candidate-installations","p":2424},{"i":2456,"t":"From Source","u":"/installation/","h":"#from-source-1","p":2424},{"i":2458,"t":"From packaged installer","u":"/installation/","h":"#from-packaged-installer","p":2424},{"i":2462,"t":"What will this break/change?","u":"/new-proof-faq/","h":"#what-will-this-breakchange","p":2460},{"i":2464,"t":"When will I be able to farm with new plots on mainnet?","u":"/new-proof-faq/","h":"#when-will-i-be-able-to-farm-with-new-plots-on-mainnet","p":2460},{"i":2466,"t":"When will the old plot format be fully phased out?","u":"/new-proof-faq/","h":"#when-will-the-old-plot-format-be-fully-phased-out","p":2460},{"i":2468,"t":"When should I replot?","u":"/new-proof-faq/","h":"#when-should-i-replot","p":2460},{"i":2470,"t":"With a modern GPU such as a 4090, what will be my expected plot times?","u":"/new-proof-faq/","h":"#with-a-modern-gpu-such-as-a-4090-what-will-be-my-expected-plot-times","p":2460},{"i":2472,"t":"Will you also support CPU plotting, and if so, what will be my expected plot times?","u":"/new-proof-faq/","h":"#will-you-also-support-cpu-plotting-and-if-so-what-will-be-my-expected-plot-times","p":2460},{"i":2474,"t":"What will the hardware requirements be for harvesters?","u":"/new-proof-faq/","h":"#what-will-the-hardware-requirements-be-for-harvesters","p":2460},{"i":2476,"t":"What is the difficulty level in the new format?","u":"/new-proof-faq/","h":"#what-is-the-difficulty-level-in-the-new-format","p":2460},{"i":2478,"t":"How do you know that compression won’t be possible with the new format?","u":"/new-proof-faq/","h":"#how-do-you-know-that-compression-wont-be-possible-with-the-new-format","p":2460},{"i":2480,"t":"Will there still be a plot filter after the new format is available?","u":"/new-proof-faq/","h":"#will-there-still-be-a-plot-filter-after-the-new-format-is-available","p":2460},{"i":2482,"t":"How many times will I have to replot?","u":"/new-proof-faq/","h":"#how-many-times-will-i-have-to-replot","p":2460},{"i":2484,"t":"What's this about different HDD and SSD plot formats?","u":"/new-proof-faq/","h":"#whats-this-about-different-hdd-and-ssd-plot-formats","p":2460},{"i":2486,"t":"How much space will someone be able to save using GPU compression?","u":"/new-proof-faq/","h":"#how-much-space-will-someone-be-able-to-save-using-gpu-compression","p":2460},{"i":2490,"t":"Requirements by farm size","u":"/new-proof-farming-requirements/","h":"#requirements-by-farm-size","p":2488},{"i":2492,"t":"Raspberry Pi support","u":"/new-proof-farming-requirements/","h":"#raspberry-pi-support","p":2488},{"i":2496,"t":"Handshake","u":"/networking-protocol/","h":"#handshake","p":2494},{"i":2498,"t":"Heartbeat","u":"/networking-protocol/","h":"#heartbeat","p":2494},{"i":2500,"t":"Introducer","u":"/networking-protocol/","h":"#introducer","p":2494},{"i":2502,"t":"RPC","u":"/networking-protocol/","h":"#rpc","p":2494},{"i":2504,"t":"Incoming and Outgoing Connections","u":"/networking-protocol/","h":"#incoming-and-outgoing-connections","p":2494},{"i":2506,"t":"Bans","u":"/networking-protocol/","h":"#bans","p":2494},{"i":2508,"t":"Certificates","u":"/networking-protocol/","h":"#certificates","p":2494},{"i":2510,"t":"Peer gossiping","u":"/networking-protocol/","h":"#peer-gossiping","p":2494},{"i":2513,"t":"New Matching Algorithm","u":"/new-proof-details/","h":"#new-matching-algorithm","p":2512},{"i":2515,"t":"Matching Bits","u":"/new-proof-details/","h":"#matching-bits","p":2512},{"i":2517,"t":"T1 Matching","u":"/new-proof-details/","h":"#t1-matching","p":2512},{"i":2519,"t":"Matching Difficulty","u":"/new-proof-details/","h":"#matching-difficulty","p":2512},{"i":2521,"t":"New Plot Filters","u":"/new-proof-details/","h":"#new-plot-filters","p":2512},{"i":2523,"t":"Plot Id Filter","u":"/new-proof-details/","h":"#plot-id-filter","p":2512},{"i":2525,"t":"EncryptedX’s Scan Filter","u":"/new-proof-details/","h":"#encryptedxs-scan-filter","p":2512},{"i":2527,"t":"Random x-quadruple quality filter","u":"/new-proof-details/","h":"#random-x-quadruple-quality-filter","p":2512},{"i":2529,"t":"Benefits","u":"/new-proof-details/","h":"#benefits","p":2512},{"i":2531,"t":"Benes Compression","u":"/new-proof-details/","h":"#benes-compression","p":2512},{"i":2533,"t":"Further Compression by Additional Bit Dropping","u":"/new-proof-details/","h":"#further-compression-by-additional-bit-dropping","p":2512},{"i":2535,"t":"Impact to Honest Farmers","u":"/new-proof-details/","h":"#impact-to-honest-farmers","p":2512},{"i":2537,"t":"Impact to Rental Attacks","u":"/new-proof-details/","h":"#impact-to-rental-attacks","p":2512},{"i":2541,"t":"New matching algorithm","u":"/new-proof-technical-overview/","h":"#new-matching-algorithm","p":2539},{"i":2543,"t":"Challenge based on x values","u":"/new-proof-technical-overview/","h":"#challenge-based-on-x-values","p":2539},{"i":2545,"t":"Default compression to drop first table","u":"/new-proof-technical-overview/","h":"#default-compression-to-drop-first-table","p":2539},{"i":2547,"t":"Benes compression","u":"/new-proof-technical-overview/","h":"#benes-compression","p":2539},{"i":2550,"t":"Memory","u":"/new-proof-plotting-requirements/","h":"#memory","p":2549},{"i":2552,"t":"HDD","u":"/new-proof-plotting-requirements/","h":"#hdd","p":2549},{"i":2554,"t":"SSD optimized","u":"/new-proof-plotting-requirements/","h":"#ssd-optimized","p":2549},{"i":2556,"t":"GPU versus CPU plotting","u":"/new-proof-plotting-requirements/","h":"#gpu-versus-cpu-plotting","p":2549},{"i":2558,"t":"Expected plot times","u":"/new-proof-plotting-requirements/","h":"#expected-plot-times","p":2549},{"i":2563,"t":"New Proof Format","u":"/new-proof-introduction/","h":"#new-proof-format","p":2562},{"i":2569,"t":"Reference","u":"/offer-cli/","h":"#reference","p":2567},{"i":2570,"t":"make_offer","u":"/offer-cli/","h":"#make_offer","p":2567},{"i":2572,"t":"take_offer","u":"/offer-cli/","h":"#take_offer","p":2567},{"i":2574,"t":"cancel_offer","u":"/offer-cli/","h":"#cancel_offer","p":2567},{"i":2576,"t":"get_offers","u":"/offer-cli/","h":"#get_offers","p":2567},{"i":2579,"t":"Intro","u":"/guides/verifiable-credentials-guide/","h":"#intro","p":2578},{"i":2581,"t":"Definitions","u":"/guides/verifiable-credentials-guide/","h":"#definitions","p":2578},{"i":2583,"t":"Setup","u":"/guides/verifiable-credentials-guide/","h":"#setup","p":2578},{"i":2584,"t":"Prerequisites","u":"/guides/verifiable-credentials-guide/","h":"#prerequisites","p":2578},{"i":2586,"t":"Entities Involved","u":"/guides/verifiable-credentials-guide/","h":"#entities-involved","p":2578},{"i":2588,"t":"DID Creation","u":"/guides/verifiable-credentials-guide/","h":"#did-creation","p":2578},{"i":2590,"t":"CLI Guide","u":"/guides/verifiable-credentials-guide/","h":"#cli-guide","p":2578},{"i":2592,"t":"Create proofs","u":"/guides/verifiable-credentials-guide/","h":"#create-proofs","p":2578},{"i":2594,"t":"Mint a VC","u":"/guides/verifiable-credentials-guide/","h":"#mint-a-vc","p":2578},{"i":2596,"t":"Add proofs to a VC","u":"/guides/verifiable-credentials-guide/","h":"#add-proofs-to-a-vc","p":2578},{"i":2598,"t":"Revoke a VC","u":"/guides/verifiable-credentials-guide/","h":"#revoke-a-vc","p":2578},{"i":2600,"t":"RPC Guide","u":"/guides/verifiable-credentials-guide/","h":"#rpc-guide","p":2578},{"i":2602,"t":"Create proofs","u":"/guides/verifiable-credentials-guide/","h":"#create-proofs-1","p":2578},{"i":2604,"t":"Root Hash Calculation","u":"/guides/verifiable-credentials-guide/","h":"#root-hash-calculation","p":2578},{"i":2606,"t":"Mint a VC","u":"/guides/verifiable-credentials-guide/","h":"#mint-a-vc-1","p":2578},{"i":2608,"t":"Add proofs to a VC","u":"/guides/verifiable-credentials-guide/","h":"#add-proofs-to-a-vc-1","p":2578},{"i":2610,"t":"Revoke a VC","u":"/guides/verifiable-credentials-guide/","h":"#revoke-a-vc-1","p":2578},{"i":2613,"t":"Overflow Blocks","u":"/overflow-blocks/","h":"#overflow-blocks","p":2612},{"i":2615,"t":"Minimum Block Requirement","u":"/overflow-blocks/","h":"#minimum-block-requirement","p":2612},{"i":2617,"t":"Weight","u":"/overflow-blocks/","h":"#weight","p":2612},{"i":2620,"t":"Overview","u":"/passphrases-protected-keys/","h":"#overview","p":2619},{"i":2622,"t":"Motivation","u":"/passphrases-protected-keys/","h":"#motivation","p":2619},{"i":2624,"t":"New Keyring","u":"/passphrases-protected-keys/","h":"#new-keyring","p":2619},{"i":2626,"t":"Migration","u":"/passphrases-protected-keys/","h":"#migration","p":2619},{"i":2628,"t":"Command Line Reference","u":"/passphrases-protected-keys/","h":"#command-line-reference","p":2619},{"i":2629,"t":"Setting/Updating/Removing Passphrases","u":"/passphrases-protected-keys/","h":"#settingupdatingremoving-passphrases","p":2619},{"i":2631,"t":"Passphrase Hints","u":"/passphrases-protected-keys/","h":"#passphrase-hints","p":2619},{"i":2633,"t":"Reading Passphrases From a File","u":"/passphrases-protected-keys/","h":"#reading-passphrases-from-a-file","p":2619},{"i":2635,"t":"Additional Notes","u":"/passphrases-protected-keys/","h":"#additional-notes","p":2619},{"i":2639,"t":"Reference","u":"/offer-rpc/","h":"#reference","p":2637},{"i":2640,"t":"cancel_offer","u":"/offer-rpc/","h":"#cancel_offer","p":2637},{"i":2642,"t":"cancel_offers","u":"/offer-rpc/","h":"#cancel_offers","p":2637},{"i":2644,"t":"check_offer_validity","u":"/offer-rpc/","h":"#check_offer_validity","p":2637},{"i":2646,"t":"create_offer_for_ids","u":"/offer-rpc/","h":"#create_offer_for_ids","p":2637},{"i":2648,"t":"get_all_offers","u":"/offer-rpc/","h":"#get_all_offers","p":2637},{"i":2650,"t":"get_offer","u":"/offer-rpc/","h":"#get_offer","p":2637},{"i":2652,"t":"get_offers_count","u":"/offer-rpc/","h":"#get_offers_count","p":2637},{"i":2654,"t":"get_offer_summary","u":"/offer-rpc/","h":"#get_offer_summary","p":2637},{"i":2656,"t":"take_offer","u":"/offer-rpc/","h":"#take_offer","p":2637},{"i":2662,"t":"OG Plots","u":"/plot-public-keys/","h":"#og-plots","p":2660},{"i":2664,"t":"Pooled Plots","u":"/plot-public-keys/","h":"#pooled-plots","p":2660},{"i":2666,"t":"Plot format","u":"/plot-public-keys/","h":"#plot-format","p":2660},{"i":2670,"t":"new_peak","u":"/peer-protocol/","h":"#new_peak","p":2668},{"i":2672,"t":"new_transaction","u":"/peer-protocol/","h":"#new_transaction","p":2668},{"i":2674,"t":"request_transaction","u":"/peer-protocol/","h":"#request_transaction","p":2668},{"i":2676,"t":"respond_transaction","u":"/peer-protocol/","h":"#respond_transaction","p":2668},{"i":2678,"t":"request_proof_of_weight","u":"/peer-protocol/","h":"#request_proof_of_weight","p":2668},{"i":2680,"t":"respond_proof_of_weight","u":"/peer-protocol/","h":"#respond_proof_of_weight","p":2668},{"i":2682,"t":"request_block","u":"/peer-protocol/","h":"#request_block","p":2668},{"i":2684,"t":"respond_block","u":"/peer-protocol/","h":"#respond_block","p":2668},{"i":2686,"t":"reject_block","u":"/peer-protocol/","h":"#reject_block","p":2668},{"i":2688,"t":"request_blocks","u":"/peer-protocol/","h":"#request_blocks","p":2668},{"i":2690,"t":"respond_blocks","u":"/peer-protocol/","h":"#respond_blocks","p":2668},{"i":2692,"t":"reject_blocks","u":"/peer-protocol/","h":"#reject_blocks","p":2668},{"i":2694,"t":"new_unfinished_block","u":"/peer-protocol/","h":"#new_unfinished_block","p":2668},{"i":2696,"t":"request_unfinished_block","u":"/peer-protocol/","h":"#request_unfinished_block","p":2668},{"i":2698,"t":"respond_unfinished_block","u":"/peer-protocol/","h":"#respond_unfinished_block","p":2668},{"i":2700,"t":"new_signage_point_or_end_of_sub_slot","u":"/peer-protocol/","h":"#new_signage_point_or_end_of_sub_slot","p":2668},{"i":2702,"t":"request_signage_point_or_end_of_sub_slot","u":"/peer-protocol/","h":"#request_signage_point_or_end_of_sub_slot","p":2668},{"i":2704,"t":"respond_signage_point","u":"/peer-protocol/","h":"#respond_signage_point","p":2668},{"i":2706,"t":"respond_end_of_sub_slot","u":"/peer-protocol/","h":"#respond_end_of_sub_slot","p":2668},{"i":2708,"t":"request_mempool_transactions","u":"/peer-protocol/","h":"#request_mempool_transactions","p":2668},{"i":2710,"t":"new_compact_vdf","u":"/peer-protocol/","h":"#new_compact_vdf","p":2668},{"i":2712,"t":"request_compact_vdf","u":"/peer-protocol/","h":"#request_compact_vdf","p":2668},{"i":2714,"t":"respond_compact_vdf","u":"/peer-protocol/","h":"#respond_compact_vdf","p":2668},{"i":2716,"t":"request_peers","u":"/peer-protocol/","h":"#request_peers","p":2668},{"i":2718,"t":"respond_peers","u":"/peer-protocol/","h":"#respond_peers","p":2668},{"i":2722,"t":"Description","u":"/plotting-basics/","h":"#description","p":2720},{"i":2724,"t":"Compressed plots","u":"/plotting-basics/","h":"#compressed-plots","p":2720},{"i":2726,"t":"History","u":"/plotting-basics/","h":"#history","p":2720},{"i":2728,"t":"Tradeoffs","u":"/plotting-basics/","h":"#tradeoffs","p":2720},{"i":2730,"t":"K Sizes","u":"/plotting-basics/","h":"#k-sizes","p":2720},{"i":2732,"t":"Compression Levels","u":"/plotting-basics/","h":"#compression-levels","p":2720},{"i":2734,"t":"How to Get Help","u":"/plotting-basics/","h":"#how-to-get-help","p":2720},{"i":2738,"t":"Reference","u":"/plotters-cli/","h":"#reference","p":2736},{"i":2739,"t":"chiapos","u":"/plotters-cli/","h":"#chiapos","p":2736},{"i":2741,"t":"madmax","u":"/plotters-cli/","h":"#madmax","p":2736},{"i":2743,"t":"bladebit","u":"/plotters-cli/","h":"#bladebit","p":2736},{"i":2745,"t":"cudaplot","u":"/plotters-cli/","h":"#cudaplot","p":2736},{"i":2747,"t":"ramplot","u":"/plotters-cli/","h":"#ramplot","p":2736},{"i":2749,"t":"diskplot","u":"/plotters-cli/","h":"#diskplot","p":2736},{"i":2751,"t":"simulate","u":"/plotters-cli/","h":"#simulate","p":2736},{"i":2753,"t":"drplotter","u":"/plotters-cli/","h":"#drplotter","p":2736},{"i":2755,"t":"plot","u":"/plotters-cli/","h":"#plot","p":2736},{"i":2757,"t":"verify","u":"/plotters-cli/","h":"#verify","p":2736},{"i":2759,"t":"drsolver","u":"/plotters-cli/","h":"#drsolver","p":2736},{"i":2761,"t":"drserver","u":"/plotters-cli/","h":"#drserver","p":2736},{"i":2765,"t":"If power goes out what happens?","u":"/plotting-faq/","h":"#if-power-goes-out-what-happens","p":2763},{"i":2767,"t":"Can I use USB 3.0 cable connected to SSD/NVME running the Temp files?","u":"/plotting-faq/","h":"#can-i-use-usb-30-cable-connected-to-ssdnvme-running-the-temp-files","p":2763},{"i":2769,"t":"Once a hash is used from a plot does the plot need deleted?","u":"/plotting-faq/","h":"#once-a-hash-is-used-from-a-plot-does-the-plot-need-deleted","p":2763},{"i":2771,"t":"Farmer vs Harvester?","u":"/plotting-faq/","h":"#farmer-vs-harvester","p":2763},{"i":2773,"t":"How can I Get Synced and stay Synced?","u":"/plotting-faq/","h":"#how-can-i-get-synced-and-stay-synced","p":2763},{"i":2776,"t":"New proof format","u":"/plotting-hardware/","h":"#new-proof-format","p":2775},{"i":2778,"t":"Cost/time tradeoffs","u":"/plotting-hardware/","h":"#costtime-tradeoffs","p":2775},{"i":2780,"t":"Temporary storage","u":"/plotting-hardware/","h":"#temporary-storage","p":2775},{"i":2782,"t":"Processor type","u":"/plotting-hardware/","h":"#processor-type","p":2775},{"i":2784,"t":"Compressed plotting systems","u":"/plotting-hardware/","h":"#compressed-plotting-systems","p":2775},{"i":2785,"t":"Required","u":"/plotting-hardware/","h":"#required","p":2775},{"i":2787,"t":"Most tested","u":"/plotting-hardware/","h":"#most-tested","p":2775},{"i":2789,"t":"Recommended plotting systems","u":"/plotting-hardware/","h":"#recommended-plotting-systems","p":2775},{"i":2791,"t":"Budget","u":"/plotting-hardware/","h":"#budget","p":2775},{"i":2793,"t":"Workstation","u":"/plotting-hardware/","h":"#workstation","p":2775},{"i":2795,"t":"Uncompressed plotters","u":"/plotting-hardware/","h":"#uncompressed-plotters","p":2775},{"i":2799,"t":"Farm Size","u":"/plotting-setup/","h":"#farm-size","p":2797},{"i":2801,"t":"To compress or not to compress","u":"/plotting-setup/","h":"#to-compress-or-not-to-compress","p":2797},{"i":2803,"t":"Choosing a compression level","u":"/plotting-setup/","h":"#choosing-a-compression-level","p":2797},{"i":2807,"t":"Public Keys","u":"/plotting-how-to/","h":"#public-keys","p":2805},{"i":2808,"t":"CLI","u":"/plotting-how-to/","h":"#cli","p":2805},{"i":2810,"t":"GUI","u":"/plotting-how-to/","h":"#gui","p":2805},{"i":2812,"t":"Pool Contract Address","u":"/plotting-how-to/","h":"#pool-contract-address","p":2805},{"i":2814,"t":"CLI","u":"/plotting-how-to/","h":"#cli-1","p":2805},{"i":2816,"t":"GUI","u":"/plotting-how-to/","h":"#gui-1","p":2805},{"i":2818,"t":"CLI Plotting","u":"/plotting-how-to/","h":"#cli-plotting","p":2805},{"i":2820,"t":"GUI Plotting","u":"/plotting-how-to/","h":"#gui-plotting","p":2805},{"i":2823,"t":"Reference","u":"/nft-cli/","h":"#reference","p":2822},{"i":2824,"t":"create","u":"/nft-cli/","h":"#create","p":2822},{"i":2826,"t":"mint","u":"/nft-cli/","h":"#mint","p":2822},{"i":2828,"t":"set_did","u":"/nft-cli/","h":"#set_did","p":2822},{"i":2830,"t":"sign_message","u":"/nft-cli/","h":"#sign_message","p":2822},{"i":2832,"t":"list","u":"/nft-cli/","h":"#list","p":2822},{"i":2834,"t":"get_info","u":"/nft-cli/","h":"#get_info","p":2822},{"i":2836,"t":"transfer","u":"/nft-cli/","h":"#transfer","p":2822},{"i":2838,"t":"add_uri","u":"/nft-cli/","h":"#add_uri","p":2822},{"i":2840,"t":"set_did","u":"/nft-cli/","h":"#set_did-1","p":2822},{"i":2844,"t":"Plotters","u":"/plotting-software/","h":"#plotters","p":2842},{"i":2845,"t":"BladeBit CUDA","u":"/plotting-software/","h":"#bladebit-cuda","p":2842},{"i":2847,"t":"BladeBit RAM","u":"/plotting-software/","h":"#bladebit-ram","p":2842},{"i":2849,"t":"Bladebit Disk","u":"/plotting-software/","h":"#bladebit-disk","p":2842},{"i":2851,"t":"DrPlotter","u":"/plotting-software/","h":"#drplotter","p":2842},{"i":2853,"t":"Gigahorse","u":"/plotting-software/","h":"#gigahorse","p":2842},{"i":2855,"t":"madMAx","u":"/plotting-software/","h":"#madmax","p":2842},{"i":2857,"t":"ChiaPoS","u":"/plotting-software/","h":"#chiapos","p":2842},{"i":2859,"t":"BladeBit (standalone)","u":"/plotting-software/","h":"#bladebit-standalone","p":2842},{"i":2861,"t":"Choosing a plotter","u":"/plotting-software/","h":"#choosing-a-plotter","p":2842},{"i":2863,"t":"CLI usage","u":"/plotting-software/","h":"#cli-usage","p":2842},{"i":2869,"t":"Customization","u":"/pool-protocol/","h":"#customization","p":2867},{"i":2871,"t":"Pool Protocol Summary","u":"/pool-protocol/","h":"#pool-protocol-summary","p":2867},{"i":2873,"t":"Receiving partials","u":"/pool-protocol/","h":"#receiving-partials","p":2867},{"i":2875,"t":"Collecting pool rewards","u":"/pool-protocol/","h":"#collecting-pool-rewards","p":2867},{"i":2877,"t":"Calculating farmer rewards","u":"/pool-protocol/","h":"#calculating-farmer-rewards","p":2867},{"i":2879,"t":"1/8 vs 7/8","u":"/pool-protocol/","h":"#18-vs-78","p":2867},{"i":2881,"t":"Difficulty","u":"/pool-protocol/","h":"#difficulty","p":2867},{"i":2883,"t":"Points","u":"/pool-protocol/","h":"#points","p":2867},{"i":2885,"t":"Difficulty adjustment algorithm","u":"/pool-protocol/","h":"#difficulty-adjustment-algorithm","p":2867},{"i":2887,"t":"Making payments","u":"/pool-protocol/","h":"#making-payments","p":2867},{"i":2891,"t":"How to Start Pooling in 6 Steps","u":"/pool-farming/","h":"#how-to-start-pooling-in-6-steps","p":2889},{"i":2893,"t":"Step 1: Sync your full node and wallet","u":"/pool-farming/","h":"#step-1-sync-your-full-node-and-wallet","p":2889},{"i":2895,"t":"Step 2: Receive some XCH","u":"/pool-farming/","h":"#step-2-receive-some-xch","p":2889},{"i":2897,"t":"Step 3: Create Plot NFT","u":"/pool-farming/","h":"#step-3-create-plot-nft","p":2889},{"i":2899,"t":"Step 4: Add Plots","u":"/pool-farming/","h":"#step-4-add-plots","p":2889},{"i":2901,"t":"Step 5: Manage your Plot NFT","u":"/pool-farming/","h":"#step-5-manage-your-plot-nft","p":2889},{"i":2903,"t":"Step 6: Wait for Payouts","u":"/pool-farming/","h":"#step-6-wait-for-payouts","p":2889},{"i":2905,"t":"Additional Information","u":"/pool-farming/","h":"#additional-information","p":2889},{"i":2906,"t":"Multiple Plot NFTs","u":"/pool-farming/","h":"#multiple-plot-nfts","p":2889},{"i":2908,"t":"Multiple Computers","u":"/pool-farming/","h":"#multiple-computers","p":2889},{"i":2910,"t":"Multiple Keys","u":"/pool-farming/","h":"#multiple-keys","p":2889},{"i":2912,"t":"Pool Fees","u":"/pool-farming/","h":"#pool-fees","p":2889},{"i":2914,"t":"Blockchain Fees","u":"/pool-farming/","h":"#blockchain-fees","p":2889},{"i":2916,"t":"Invalid State","u":"/pool-farming/","h":"#invalid-state","p":2889},{"i":2918,"t":"Payout addresses","u":"/pool-farming/","h":"#payout-addresses","p":2889},{"i":2920,"t":"Self Pooling","u":"/pool-farming/","h":"#self-pooling","p":2889},{"i":2922,"t":"Remote Harvesters","u":"/pool-farming/","h":"#remote-harvesters","p":2889},{"i":2924,"t":"Command Line Interface","u":"/pool-farming/","h":"#command-line-interface","p":2889},{"i":2926,"t":"Pooling FAQ","u":"/pool-farming/","h":"#pooling-faq","p":2889},{"i":2927,"t":"What is a plot NFT?","u":"/pool-farming/","h":"#what-is-a-plot-nft","p":2889},{"i":2929,"t":"Will I need pay XCH to create a plot NFT or switch pools?","u":"/pool-farming/","h":"#will-i-need-pay-xch-to-create-a-plot-nft-or-switch-pools","p":2889},{"i":2931,"t":"Can I farm with both OG (original) plots and portable plots?","u":"/pool-farming/","h":"#can-i-farm-with-both-og-original-plots-and-portable-plots","p":2889},{"i":2933,"t":"How do I assign portable plots to a pool?","u":"/pool-farming/","h":"#how-do-i-assign-portable-plots-to-a-pool","p":2889},{"i":2935,"t":"What is the difference between a \"Key\" and a \"Wallet\" in the Chia GUI and CLI?","u":"/pool-farming/","h":"#what-is-the-difference-between-a-key-and-a-wallet-in-the-chia-gui-and-cli","p":2889},{"i":2937,"t":"How is Chia pooling different from other cryptos?","u":"/pool-farming/","h":"#how-is-chia-pooling-different-from-other-cryptos","p":2889},{"i":2939,"t":"How can I start my own pool?","u":"/pool-farming/","h":"#how-can-i-start-my-own-pool","p":2889},{"i":2941,"t":"Where can I find a list of Chia pools?","u":"/pool-farming/","h":"#where-can-i-find-a-list-of-chia-pools","p":2889},{"i":2943,"t":"Can I advertise my pool in Discord?","u":"/pool-farming/","h":"#can-i-advertise-my-pool-in-discord","p":2889},{"i":2945,"t":"Why doesn't Chia run their own official pool?","u":"/pool-farming/","h":"#why-doesnt-chia-run-their-own-official-pool","p":2889},{"i":2947,"t":"Can I name my pool chiapool.com?","u":"/pool-farming/","h":"#can-i-name-my-pool-chiapoolcom","p":2889},{"i":2949,"t":"If a pool gets 51% of netspace, can they take over the network?","u":"/pool-farming/","h":"#if-a-pool-gets-51-of-netspace-can-they-take-over-the-network","p":2889},{"i":2951,"t":"I have more questions, where do I ask?","u":"/pool-farming/","h":"#i-have-more-questions-where-do-i-ask","p":2889},{"i":2953,"t":"Technical FAQ","u":"/pool-farming/","h":"#technical-faq","p":2889},{"i":2954,"t":"Where can I see the Chia Pool Reference Code?","u":"/pool-farming/","h":"#where-can-i-see-the-chia-pool-reference-code","p":2889},{"i":2956,"t":"What programming language is the reference pool code written in?","u":"/pool-farming/","h":"#what-programming-language-is-the-reference-pool-code-written-in","p":2889},{"i":2958,"t":"How hard is it to adapt Chia's reference pool code to my pool code?","u":"/pool-farming/","h":"#how-hard-is-it-to-adapt-chias-reference-pool-code-to-my-pool-code","p":2889},{"i":2960,"t":"I am a programmer, but never wrote pool code, will I be able to run a pool with Chia's reference pool code?","u":"/pool-farming/","h":"#i-am-a-programmer-but-never-wrote-pool-code-will-i-be-able-to-run-a-pool-with-chias-reference-pool-code","p":2889},{"i":2962,"t":"Variable names used in pooling code","u":"/pool-farming/","h":"#variable-names-used-in-pooling-code","p":2889},{"i":2964,"t":"How does one calculate a farmer's space?","u":"/pool-farming/","h":"#how-does-one-calculate-a-farmers-space","p":2889},{"i":2966,"t":"How does difficulty affect farmer's space calculation?","u":"/pool-farming/","h":"#how-does-difficulty-affect-farmers-space-calculation","p":2889},{"i":2968,"t":"How do you identify the farmer that submitted partial proofs?","u":"/pool-farming/","h":"#how-do-you-identify-the-farmer-that-submitted-partial-proofs","p":2889},{"i":2970,"t":"Will pool servers need to keep track of all farmers and their share of rewards?","u":"/pool-farming/","h":"#will-pool-servers-need-to-keep-track-of-all-farmers-and-their-share-of-rewards","p":2889},{"i":2972,"t":"What actions can singleton take?","u":"/pool-farming/","h":"#what-actions-can-singleton-take","p":2889},{"i":2974,"t":"How do pools collect rewards?","u":"/pool-farming/","h":"#how-do-pools-collect-rewards","p":2889},{"i":2976,"t":"How can I tell if the server is receiving enough partials from a particular client?","u":"/pool-farming/","h":"#how-can-i-tell-if-the-server-is-receiving-enough-partials-from-a-particular-client","p":2889},{"i":2978,"t":"Why am I receiving more points in testnet than mainnet?","u":"/pool-farming/","h":"#why-am-i-receiving-more-points-in-testnet-than-mainnet","p":2889},{"i":2980,"t":"What is the expected ratio between a k32 and a k25?","u":"/pool-farming/","h":"#what-is-the-expected-ratio-between-a-k32-and-a-k25","p":2889},{"i":2982,"t":"How to calculate how many partials with X difficulty a certain plot with Y size can get in Z time?","u":"/pool-farming/","h":"#how-to-calculate-how-many-partials-with-x-difficulty-a-certain-plot-with-y-size-can-get-in-z-time","p":2889},{"i":2984,"t":"Can I use testnet pooling plots on mainnet?","u":"/pool-farming/","h":"#can-i-use-testnet-pooling-plots-on-mainnet","p":2889},{"i":2986,"t":"Does that mean that forks of Chia cannot use these pooling plots?","u":"/pool-farming/","h":"#does-that-mean-that-forks-of-chia-cannot-use-these-pooling-plots","p":2889},{"i":2988,"t":"Does the pooling system support all of the various payment methods used in other blockchain pools?","u":"/pool-farming/","h":"#does-the-pooling-system-support-all-of-the-various-payment-methods-used-in-other-blockchain-pools","p":2889},{"i":2990,"t":"What are the API methods a pool server needs to support Chia clients?","u":"/pool-farming/","h":"#what-are-the-api-methods-a-pool-server-needs-to-support-chia-clients","p":2889},{"i":2992,"t":"Where can I see the video Technical Q&A on Chia Pooling:","u":"/pool-farming/","h":"#where-can-i-see-the-video-technical-qa-on-chia-pooling","p":2889},{"i":2996,"t":"Learning objectives","u":"/pools/","h":"#learning-objectives","p":2994},{"i":2998,"t":"Content","u":"/pools/","h":"#content","p":2994},{"i":2999,"t":"Script","u":"/pools/","h":"#script","p":2994},{"i":3001,"t":"Common gotchas","u":"/pools/","h":"#common-gotchas","p":2994},{"i":3003,"t":"Knowledge check","u":"/pools/","h":"#knowledge-check","p":2994},{"i":3005,"t":"Additional resources","u":"/pools/","h":"#additional-resources","p":2994},{"i":3006,"t":"Links","u":"/pools/","h":"#links","p":2994},{"i":3010,"t":"Learning objectives","u":"/primitives-overview/","h":"#learning-objectives","p":3008},{"i":3012,"t":"Content","u":"/primitives-overview/","h":"#content","p":3008},{"i":3013,"t":"Script","u":"/primitives-overview/","h":"#script","p":3008},{"i":3015,"t":"Common gotchas","u":"/primitives-overview/","h":"#common-gotchas","p":3008},{"i":3017,"t":"Knowledge check","u":"/primitives-overview/","h":"#knowledge-check","p":3008},{"i":3019,"t":"Additional resources","u":"/primitives-overview/","h":"#additional-resources","p":3008},{"i":3020,"t":"Links","u":"/primitives-overview/","h":"#links","p":3008},{"i":3024,"t":"Security considerations","u":"/pool-protocol-specification/","h":"#security-considerations","p":3022},{"i":3026,"t":"Parties","u":"/pool-protocol-specification/","h":"#parties","p":3022},{"i":3028,"t":"Farmer identification","u":"/pool-protocol-specification/","h":"#farmer-identification","p":3022},{"i":3030,"t":"Farmer authentication","u":"/pool-protocol-specification/","h":"#farmer-authentication","p":3022},{"i":3032,"t":"HTTPS Endpoints Summary","u":"/pool-protocol-specification/","h":"#https-endpoints-summary","p":3022},{"i":3034,"t":"Error codes","u":"/pool-protocol-specification/","h":"#error-codes","p":3022},{"i":3036,"t":"Signature validation","u":"/pool-protocol-specification/","h":"#signature-validation","p":3022},{"i":3038,"t":"Pool URL","u":"/pool-protocol-specification/","h":"#pool-url","p":3022},{"i":3040,"t":"GET /pool_info","u":"/pool-protocol-specification/","h":"#get-pool_info","p":3022},{"i":3042,"t":"GET /farmer","u":"/pool-protocol-specification/","h":"#get-farmer","p":3022},{"i":3044,"t":"Parameter","u":"/pool-protocol-specification/","h":"#parameter","p":3022},{"i":3046,"t":"POST /farmer","u":"/pool-protocol-specification/","h":"#post-farmer","p":3022},{"i":3048,"t":"PUT /farmer","u":"/pool-protocol-specification/","h":"#put-farmer","p":3022},{"i":3050,"t":"POST /partial","u":"/pool-protocol-specification/","h":"#post-partial","p":3022},{"i":3052,"t":"GET /login","u":"/pool-protocol-specification/","h":"#get-login","p":3022},{"i":3054,"t":"Difficulty","u":"/pool-protocol-specification/","h":"#difficulty","p":3022},{"i":3056,"t":"Points","u":"/pool-protocol-specification/","h":"#points","p":3022},{"i":3060,"t":"Plotting","u":"/proof-of-space/","h":"#plotting","p":3058},{"i":3062,"t":"Farming","u":"/proof-of-space/","h":"#farming","p":3058},{"i":3064,"t":"Verifying","u":"/proof-of-space/","h":"#verifying","p":3058},{"i":3068,"t":"Infusion","u":"/proof-of-time/","h":"#infusion","p":3066},{"i":3071,"t":"Curious","u":"/reference-farming-hardware/","h":"#curious","p":3070},{"i":3073,"t":"Hobbyist","u":"/reference-farming-hardware/","h":"#hobbyist","p":3070},{"i":3075,"t":"NAS","u":"/reference-farming-hardware/","h":"#nas","p":3070},{"i":3077,"t":"External Storage (USB) for multiple drives","u":"/reference-farming-hardware/","h":"#external-storage-usb-for-multiple-drives","p":3070},{"i":3079,"t":"Desktops with high amount of drive count","u":"/reference-farming-hardware/","h":"#desktops-with-high-amount-of-drive-count","p":3070},{"i":3081,"t":"Pro","u":"/reference-farming-hardware/","h":"#pro","p":3070},{"i":3083,"t":"Serious","u":"/reference-farming-hardware/","h":"#serious","p":3070},{"i":3087,"t":"3.1 Selfish Mining in Bitcoin","u":"/rational-attackers/","h":"#31-selfish-mining-in-bitcoin","p":3085},{"i":3089,"t":"3.2 Delayed Gratification and No Slowdown","u":"/rational-attackers/","h":"#32-delayed-gratification-and-no-slowdown","p":3085},{"i":3091,"t":"3.3 Chain Quality","u":"/rational-attackers/","h":"#33-chain-quality","p":3085},{"i":3093,"t":"3.4 Delayed Gratification in Chia","u":"/rational-attackers/","h":"#34-delayed-gratification-in-chia","p":3085},{"i":3095,"t":"3.5 No-Slowdown of Chia and other Constructions {#s:nschia}","u":"/rational-attackers/","h":"#s","p":3085},{"i":3097,"t":"3.5.1 No-Slowdown in Bitcoin","u":"/rational-attackers/","h":"#351-no-slowdown-in-bitcoin","p":3085},{"i":3099,"t":"3.5.2 A Non-Example, the G-Greedy-Rule","u":"/rational-attackers/","h":"#352-a-non-example-the-g-greedy-rule","p":3085},{"i":3101,"t":"3.5.3 Examples of No-Slowdown.","u":"/rational-attackers/","h":"#353-examples-of-no-slowdown","p":3085},{"i":3103,"t":"Footnotes","u":"/rational-attackers/","h":"#footnote-label","p":3085},{"i":3107,"t":"Learning objectives","u":"/security-basics/","h":"#learning-objectives","p":3105},{"i":3109,"t":"Content","u":"/security-basics/","h":"#content","p":3105},{"i":3110,"t":"Script","u":"/security-basics/","h":"#script","p":3105},{"i":3112,"t":"Common gotchas","u":"/security-basics/","h":"#common-gotchas","p":3105},{"i":3114,"t":"Knowledge check","u":"/security-basics/","h":"#knowledge-check","p":3105},{"i":3116,"t":"Additional resources","u":"/security-basics/","h":"#additional-resources","p":3105},{"i":3117,"t":"Links","u":"/security-basics/","h":"#links","p":3105},{"i":3120,"t":"Chia Network","u":"/references/","h":"#chia-network","p":3119},{"i":3122,"t":"Chia's Technical Specs","u":"/references/","h":"#chias-technical-specs","p":3119},{"i":3124,"t":"Video","u":"/references/","h":"#video","p":3119},{"i":3126,"t":"External","u":"/references/","h":"#external","p":3119},{"i":3130,"t":"Streamable Format","u":"/serialization-protocol/","h":"#streamable-format","p":3128},{"i":3132,"t":"Examples","u":"/serialization-protocol/","h":"#examples","p":3128},{"i":3134,"t":"ProofOfSpace type definition","u":"/serialization-protocol/","h":"#proofofspace-type-definition","p":3128},{"i":3136,"t":"Creating and serializing a proof of space","u":"/serialization-protocol/","h":"#creating-and-serializing-a-proof-of-space","p":3128},{"i":3138,"t":"Output","u":"/serialization-protocol/","h":"#output","p":3128},{"i":3142,"t":"Default Ports:","u":"/rpc/","h":"#default-ports","p":3140},{"i":3144,"t":"HTTP/JSON","u":"/rpc/","h":"#httpjson","p":3140},{"i":3146,"t":"WebSockets","u":"/rpc/","h":"#websockets","p":3140},{"i":3148,"t":"Python","u":"/rpc/","h":"#python","p":3140},{"i":3150,"t":"Javascript","u":"/rpc/","h":"#javascript","p":3140},{"i":3152,"t":"Services","u":"/rpc/","h":"#services","p":3140},{"i":3156,"t":"Rationale for choosing 64 signage points","u":"/signage-and-infusion-points/","h":"#rationale-for-choosing-64-signage-points","p":3154},{"i":3158,"t":"Definitions","u":"/signage-and-infusion-points/","h":"#definitions","p":3154},{"i":3162,"t":"Compression table","u":"/plotting-compression/","h":"#compression-table","p":3160},{"i":3164,"t":"TCO spreadsheet","u":"/plotting-compression/","h":"#tco-spreadsheet","p":3160},{"i":3166,"t":"Max farm size estimator","u":"/plotting-compression/","h":"#max-farm-size-estimator","p":3160},{"i":3168,"t":"BladeBit Simulate","u":"/plotting-compression/","h":"#bladebit-simulate","p":3160},{"i":3171,"t":"Intro","u":"/simulator-rpc/","h":"#intro","p":3170},{"i":3173,"t":"Reference","u":"/simulator-rpc/","h":"#reference","p":3170},{"i":3174,"t":"farm_block","u":"/simulator-rpc/","h":"#farm_block","p":3170},{"i":3176,"t":"get_all_blocks","u":"/simulator-rpc/","h":"#get_all_blocks","p":3170},{"i":3178,"t":"get_all_coins","u":"/simulator-rpc/","h":"#get_all_coins","p":3170},{"i":3180,"t":"get_all_puzzle_hashes","u":"/simulator-rpc/","h":"#get_all_puzzle_hashes","p":3170},{"i":3182,"t":"get_auto_farming","u":"/simulator-rpc/","h":"#get_auto_farming","p":3170},{"i":3184,"t":"get_farming_ph","u":"/simulator-rpc/","h":"#get_farming_ph","p":3170},{"i":3186,"t":"reorg_blocks","u":"/simulator-rpc/","h":"#reorg_blocks","p":3170},{"i":3188,"t":"revert_blocks","u":"/simulator-rpc/","h":"#revert_blocks","p":3170},{"i":3190,"t":"set_auto_farming","u":"/simulator-rpc/","h":"#set_auto_farming","p":3170},{"i":3194,"t":"6.1 Recovery from 51%51\\%51% Attacks","u":"/recovering-from-51-percent-attacks/","h":"#61-recovery-from-51-attacks","p":3192},{"i":3196,"t":"6.1.1 Recovering from PoW Majority in Bitcoin {#S:RBB}","u":"/recovering-from-51-percent-attacks/","h":"#S","p":3192},{"i":3198,"t":"6.1.2 Recovering from PoStake Majority","u":"/recovering-from-51-percent-attacks/","h":"#612-recovering-from-postake-majority","p":3192},{"i":3200,"t":"6.1.3 Recovering from PoSpace Majority","u":"/recovering-from-51-percent-attacks/","h":"#613-recovering-from-pospace-majority","p":3192},{"i":3202,"t":"6.1.4 Recovering from Space-Time Majority in Chia\\textsf{Chia}Chia {#S:RPOST}","u":"/recovering-from-51-percent-attacks/","h":"#S","p":3192},{"i":3204,"t":"6.2 Dynamic Availability","u":"/recovering-from-51-percent-attacks/","h":"#62-dynamic-availability","p":3192},{"i":3206,"t":"6.2.1 Dynamic Availability for PoW (Bitcoin)","u":"/recovering-from-51-percent-attacks/","h":"#621-dynamic-availability-for-pow-bitcoin","p":3192},{"i":3208,"t":"6.2.2 Dynamic Availability for PoST (Chia\\textsf{Chia}Chia)","u":"/recovering-from-51-percent-attacks/","h":"#622-dynamic-availability-for-post-textsfchia","p":3192},{"i":3210,"t":"6.2.3 Dynamic Availability from PoSpace {#S:DAspace}","u":"/recovering-from-51-percent-attacks/","h":"#S","p":3192},{"i":3212,"t":"6.2.4 Dynamic Availability from PoStake","u":"/recovering-from-51-percent-attacks/","h":"#624-dynamic-availability-from-postake","p":3192},{"i":3214,"t":"Footnotes","u":"/recovering-from-51-percent-attacks/","h":"#footnote-label","p":3192},{"i":3218,"t":"Aggregate Signatures","u":"/spend-bundles/","h":"#aggregate-signatures","p":3216},{"i":3220,"t":"Coins vs Spend Bundles","u":"/spend-bundles/","h":"#coins-vs-spend-bundles","p":3216},{"i":3222,"t":"Additions and Removals","u":"/spend-bundles/","h":"#additions-and-removals","p":3216},{"i":3224,"t":"What do full nodes store on-chain?","u":"/spend-bundles/","h":"#what-do-full-nodes-store-on-chain","p":3216},{"i":3228,"t":"Join the official testnet","u":"/testnets/","h":"#join-the-official-testnet","p":3226},{"i":3229,"t":"Prerequisites","u":"/testnets/","h":"#prerequisites","p":3226},{"i":3231,"t":"Configure Chia for testnet","u":"/testnets/","h":"#configure-chia-for-testnet","p":3226},{"i":3233,"t":"Download the official testnet database (optional)","u":"/testnets/","h":"#download-the-official-testnet-database-optional","p":3226},{"i":3235,"t":"Start your node and connect to peers","u":"/testnets/","h":"#start-your-node-and-connect-to-peers","p":3226},{"i":3237,"t":"Fund a testnet wallet (optional)","u":"/testnets/","h":"#fund-a-testnet-wallet-optional","p":3226},{"i":3239,"t":"Dual farming mainnet and testnet","u":"/testnets/","h":"#dual-farming-mainnet-and-testnet","p":3226},{"i":3241,"t":"Set Up mainnet installation","u":"/testnets/","h":"#set-up-mainnet-installation","p":3226},{"i":3243,"t":"Set Up testnet installation","u":"/testnets/","h":"#set-up-testnet-installation","p":3226},{"i":3245,"t":"Swap between mainnet and testnet","u":"/testnets/","h":"#swap-between-mainnet-and-testnet","p":3226},{"i":3247,"t":"Create a local testnet for fast, private testing","u":"/testnets/","h":"#create-a-local-testnet-for-fast-private-testing","p":3226},{"i":3249,"t":"Testnet support","u":"/testnets/","h":"#testnet-support","p":3226},{"i":3253,"t":"IOzone","u":"/storage-benchmarks/","h":"","p":3251},{"i":3255,"t":"Install from sources","u":"/storage-benchmarks/","h":"#install-from-sources","p":3251},{"i":3257,"t":"Run single threaded","u":"/storage-benchmarks/","h":"#run-single-threaded","p":3251},{"i":3259,"t":"Run multi threaded","u":"/storage-benchmarks/","h":"#run-multi-threaded","p":3251},{"i":3262,"t":"Intro","u":"/simulator-cli/","h":"#intro","p":3261},{"i":3264,"t":"Reference","u":"/simulator-cli/","h":"#reference","p":3261},{"i":3265,"t":"create","u":"/simulator-cli/","h":"#create","p":3261},{"i":3267,"t":"autofarm","u":"/simulator-cli/","h":"#autofarm","p":3261},{"i":3269,"t":"farm","u":"/simulator-cli/","h":"#farm","p":3261},{"i":3271,"t":"revert","u":"/simulator-cli/","h":"#revert","p":3261},{"i":3273,"t":"start","u":"/simulator-cli/","h":"#start","p":3261},{"i":3275,"t":"status","u":"/simulator-cli/","h":"#status","p":3261},{"i":3277,"t":"stop","u":"/simulator-cli/","h":"#stop","p":3261},{"i":3281,"t":"Math","u":"/ssd-endurance/","h":"#math","p":3279},{"i":3283,"t":"Monitor Endurance in Linux","u":"/ssd-endurance/","h":"#monitor-endurance-in-linux","p":3279},{"i":3284,"t":"NVMe","u":"/ssd-endurance/","h":"#nvme","p":3279},{"i":3286,"t":"SATA","u":"/ssd-endurance/","h":"#sata","p":3279},{"i":3288,"t":"SAS","u":"/ssd-endurance/","h":"#sas","p":3279},{"i":3292,"t":"Definitions","u":"/three-vdf-chains/","h":"#definitions","p":3290},{"i":3297,"t":"1. General.","u":"/timelord-contest-rules/","h":"#1-general","p":3296},{"i":3299,"t":"2. Eligibility.","u":"/timelord-contest-rules/","h":"#2-eligibility","p":3296},{"i":3301,"t":"3. Selection Process.","u":"/timelord-contest-rules/","h":"#3-selection-process","p":3296},{"i":3303,"t":"4. Application Period.","u":"/timelord-contest-rules/","h":"#4-application-period","p":3296},{"i":3305,"t":"5. Intellectual Property.","u":"/timelord-contest-rules/","h":"#5-intellectual-property","p":3296},{"i":3307,"t":"6. Publicity Rights.","u":"/timelord-contest-rules/","h":"#6-publicity-rights","p":3296},{"i":3309,"t":"7. Prizes.","u":"/timelord-contest-rules/","h":"#7-prizes","p":3296},{"i":3311,"t":"8. Fees & Taxes.","u":"/timelord-contest-rules/","h":"#8-fees--taxes","p":3296},{"i":3313,"t":"9. Disclaimer.","u":"/timelord-contest-rules/","h":"#9-disclaimer","p":3296},{"i":3315,"t":"10. General.","u":"/timelord-contest-rules/","h":"#10-general","p":3296},{"i":3317,"t":"11. Privacy and Use of Personal Information.","u":"/timelord-contest-rules/","h":"#11-privacy-and-use-of-personal-information","p":3296},{"i":3319,"t":"12. Limitation on Liability.","u":"/timelord-contest-rules/","h":"#12-limitation-on-liability","p":3296},{"i":3321,"t":"13. Indemnity.","u":"/timelord-contest-rules/","h":"#13-indemnity","p":3296},{"i":3323,"t":"14. Relationship of Parties.","u":"/timelord-contest-rules/","h":"#14-relationship-of-parties","p":3296},{"i":3325,"t":"15. Governing Law and Disputes.","u":"/timelord-contest-rules/","h":"#15-governing-law-and-disputes","p":3296},{"i":3329,"t":"Learning objectives","u":"/timelord-basics/","h":"#learning-objectives","p":3327},{"i":3331,"t":"Content","u":"/timelord-basics/","h":"#content","p":3327},{"i":3332,"t":"Script","u":"/timelord-basics/","h":"#script","p":3327},{"i":3334,"t":"Common gotchas","u":"/timelord-basics/","h":"#common-gotchas","p":3327},{"i":3336,"t":"Knowledge check","u":"/timelord-basics/","h":"#knowledge-check","p":3327},{"i":3338,"t":"Additional resources","u":"/timelord-basics/","h":"#additional-resources","p":3327},{"i":3339,"t":"Links","u":"/timelord-basics/","h":"#links","p":3327},{"i":3342,"t":"ASIC Timelord/Chia Academy Contest","u":"/timelord-contest/","h":"#asic-timelordchia-academy-contest","p":3341},{"i":3344,"t":"Requirements and Criteria","u":"/timelord-contest/","h":"#requirements-and-criteria","p":3341},{"i":3346,"t":"Rewards","u":"/timelord-contest/","h":"#rewards","p":3341},{"i":3348,"t":"FAQ","u":"/timelord-contest/","h":"#faq","p":3341},{"i":3349,"t":"Where can I find the contest rules?","u":"/timelord-contest/","h":"#where-can-i-find-the-contest-rules","p":3341},{"i":3351,"t":"What topics are you interested in receiving?","u":"/timelord-contest/","h":"#what-topics-are-you-interested-in-receiving","p":3341},{"i":3353,"t":"How many courses can I submit?","u":"/timelord-contest/","h":"#how-many-courses-can-i-submit","p":3341},{"i":3355,"t":"What if I’m part of a team? Can I still enter?","u":"/timelord-contest/","h":"#what-if-im-part-of-a-team-can-i-still-enter","p":3341},{"i":3357,"t":"Who owns the Chia Academy course after I submit it?","u":"/timelord-contest/","h":"#who-owns-the-chia-academy-course-after-i-submit-it","p":3341},{"i":3359,"t":"When will I be notified if I win?","u":"/timelord-contest/","h":"#when-will-i-be-notified-if-i-win","p":3341},{"i":3361,"t":"Who can I contact if I have questions?","u":"/timelord-contest/","h":"#who-can-i-contact-if-i-have-questions","p":3341},{"i":3363,"t":"Contest Support","u":"/timelord-contest/","h":"#contest-support","p":3341},{"i":3367,"t":"Where to Find Things","u":"/troubleshooting/check-if-things-are-working/","h":"#where-to-find-things","p":3365},{"i":3369,"t":"Linux & macOS","u":"/troubleshooting/check-if-things-are-working/","h":"#linux--macos","p":3365},{"i":3371,"t":"Windows","u":"/troubleshooting/check-if-things-are-working/","h":"#windows","p":3365},{"i":3373,"t":"Logs","u":"/troubleshooting/check-if-things-are-working/","h":"","p":3365},{"i":3374,"t":"CLI","u":"/troubleshooting/check-if-things-are-working/","h":"#cli","p":3365},{"i":3376,"t":"Config File","u":"/troubleshooting/check-if-things-are-working/","h":"#config-file","p":3365},{"i":3378,"t":"Is It Working?","u":"/troubleshooting/check-if-things-are-working/","h":"","p":3365},{"i":3380,"t":"Harvester","u":"/troubleshooting/check-if-things-are-working/","h":"#harvester","p":3365},{"i":3382,"t":"Plotting","u":"/troubleshooting/check-if-things-are-working/","h":"#plotting","p":3365},{"i":3384,"t":"Full Node","u":"/troubleshooting/check-if-things-are-working/","h":"#full-node","p":3365},{"i":3388,"t":"Types of Timelords","u":"/timelord-architecture/","h":"#types-of-timelords","p":3386},{"i":3390,"t":"Running a Timelord","u":"/timelord-architecture/","h":"#running-a-timelord","p":3386},{"i":3392,"t":"Troubleshooting a Timelord","u":"/timelord-architecture/","h":"#troubleshooting-a-timelord","p":3386},{"i":3394,"t":"The Future of Timelords","u":"/timelord-architecture/","h":"#the-future-of-timelords","p":3386},{"i":3396,"t":"Timelords and Attacks","u":"/timelord-architecture/","h":"#timelords-and-attacks","p":3386},{"i":3398,"t":"Terminology","u":"/timelord-architecture/","h":"#terminology","p":3386},{"i":3402,"t":"Keys Overview","u":"/troubleshooting/locating-keys/","h":"#keys-overview","p":3400},{"i":3404,"t":"GUI","u":"/troubleshooting/locating-keys/","h":"#gui","p":3400},{"i":3406,"t":"Locating Keys in the GUI","u":"/troubleshooting/locating-keys/","h":"#locating-keys-in-the-gui","p":3400},{"i":3408,"t":"CLI","u":"/troubleshooting/locating-keys/","h":"#cli","p":3400},{"i":3410,"t":"Locating Keys in the CLI","u":"/troubleshooting/locating-keys/","h":"#locating-keys-in-the-cli","p":3400},{"i":3414,"t":"Timelord Requirements and Dependencies","u":"/timelord-install/","h":"#timelord-requirements-and-dependencies","p":3412},{"i":3416,"t":"Installing a Timelord","u":"/timelord-install/","h":"#installing-a-timelord","p":3412},{"i":3418,"t":"Installing a Timelord from Source","u":"/timelord-install/","h":"#installing-a-timelord-from-source","p":3412},{"i":3420,"t":"ASIC Timelord Systemd Setup","u":"/timelord-install/","h":"#asic-timelord-systemd-setup","p":3412},{"i":3422,"t":"Example ASIC systemd File","u":"/timelord-install/","h":"#example-asic-systemd-file","p":3412},{"i":3424,"t":"Using the systemd Service","u":"/timelord-install/","h":"#using-the-systemd-service","p":3412},{"i":3426,"t":"Troubleshooting a Timelord","u":"/timelord-install/","h":"#troubleshooting-a-timelord","p":3412},{"i":3428,"t":"Timelord support","u":"/timelord-install/","h":"#timelord-support","p":3412},{"i":3430,"t":"Timelord FAQ","u":"/timelord-install/","h":"#timelord-faq","p":3412},{"i":3431,"t":"What are the hardware requirements for running a Timelord?","u":"/timelord-install/","h":"#what-are-the-hardware-requirements-for-running-a-timelord","p":3412},{"i":3433,"t":"Can a Single ASIC Compete with an ASIC Cluster?","u":"/timelord-install/","h":"#can-a-single-asic-compete-with-an-asic-cluster","p":3412},{"i":3435,"t":"Can I Overclock the ASIC to Get More Performance or Higher IPS?","u":"/timelord-install/","h":"#can-i-overclock-the-asic-to-get-more-performance-or-higher-ips","p":3412},{"i":3437,"t":"What Voltage Should I Use for an ASIC Timelord?","u":"/timelord-install/","h":"#what-voltage-should-i-use-for-an-asic-timelord","p":3412},{"i":3439,"t":"What OS is Compatible with Running a Timelord?","u":"/timelord-install/","h":"#what-os-is-compatible-with-running-a-timelord","p":3412},{"i":3441,"t":"What System Resources are most Important for an ASIC?","u":"/timelord-install/","h":"#what-system-resources-are-most-important-for-an-asic","p":3412},{"i":3444,"t":"Checking Timelord Logs","u":"/troubleshooting/timelords/","h":"#checking-timelord-logs","p":3443},{"i":3446,"t":"Common Timelord Error Logs","u":"/troubleshooting/timelords/","h":"#common-timelord-error-logs","p":3443},{"i":3447,"t":"Chia logs","u":"/troubleshooting/timelords/","h":"#chia-logs","p":3443},{"i":3449,"t":"ASIC logs","u":"/troubleshooting/timelords/","h":"#asic-logs","p":3443},{"i":3451,"t":"Timelord support","u":"/troubleshooting/timelords/","h":"#timelord-support","p":3443},{"i":3455,"t":"Port Forwarding Settings","u":"/troubleshooting/node-syncing/","h":"#port-forwarding-settings","p":3453},{"i":3457,"t":"Why forward port 8444?","u":"/troubleshooting/node-syncing/","h":"#why-forward-port-8444","p":3453},{"i":3459,"t":"Speed up connecting to nodes","u":"/troubleshooting/node-syncing/","h":"#speed-up-connecting-to-nodes","p":3453},{"i":3461,"t":"Detailed explanation","u":"/troubleshooting/node-syncing/","h":"#detailed-explanation","p":3453},{"i":3463,"t":"Dealing With Carrier-Grade NAT","u":"/troubleshooting/node-syncing/","h":"#dealing-with-carrier-grade-nat","p":3453},{"i":3466,"t":"Getting Things Set Up","u":"/using-the-gui/","h":"#getting-things-set-up","p":3465},{"i":3468,"t":"Settings","u":"/using-the-gui/","h":"#settings","p":3465},{"i":3470,"t":"Syncing","u":"/using-the-gui/","h":"#syncing","p":3465},{"i":3472,"t":"Tokens","u":"/using-the-gui/","h":"#tokens","p":3465},{"i":3474,"t":"NFTs","u":"/using-the-gui/","h":"#nfts","p":3465},{"i":3476,"t":"Offers","u":"/using-the-gui/","h":"#offers","p":3465},{"i":3478,"t":"Run Chia Services in the Background","u":"/using-the-gui/","h":"#run-chia-services-in-the-background","p":3465},{"i":3482,"t":"5.1 Additional Variables and Notation for this Section","u":"/the-chia-blockchain/","h":"#51-additional-variables-and-notation-for-this-section","p":3480},{"i":3483,"t":"5.1.1 Variables","u":"/the-chia-blockchain/","h":"#511-variables","p":3480},{"i":3485,"t":"5.1.2 Step to Epoch","u":"/the-chia-blockchain/","h":"#512-step-to-epoch","p":3480},{"i":3487,"t":"5.1.3 Notation for Points of Interest","u":"/the-chia-blockchain/","h":"#513-notation-for-points-of-interest","p":3480},{"i":3489,"t":"5.2 The Challenge Chain","u":"/the-chia-blockchain/","h":"#52-the-challenge-chain","p":3480},{"i":3491,"t":"5.3 Trunk Blocks {#S:TB}","u":"/the-chia-blockchain/","h":"#S","p":3480},{"i":3493,"t":"5.4 The Reward Chain","u":"/the-chia-blockchain/","h":"#54-the-reward-chain","p":3480},{"i":3495,"t":"5.5 The Infused Challenge Chain","u":"/the-chia-blockchain/","h":"#55-the-infused-challenge-chain","p":3480},{"i":3497,"t":"5.6 The Foliage","u":"/the-chia-blockchain/","h":"#56-the-foliage","p":3480},{"i":3499,"t":"5.7 Fraction of Transaction Blocks","u":"/the-chia-blockchain/","h":"#57-fraction-of-transaction-blocks","p":3480},{"i":3503,"t":"Reference","u":"/vc-cli/","h":"#reference","p":3501},{"i":3504,"t":"add_proof_reveal","u":"/vc-cli/","h":"#add_proof_reveal","p":3501},{"i":3506,"t":"get","u":"/vc-cli/","h":"#get","p":3501},{"i":3508,"t":"get_proofs_for_root","u":"/vc-cli/","h":"#get_proofs_for_root","p":3501},{"i":3510,"t":"mint","u":"/vc-cli/","h":"#mint","p":3501},{"i":3512,"t":"revoke","u":"/vc-cli/","h":"#revoke","p":3501},{"i":3514,"t":"update_proofs","u":"/vc-cli/","h":"#update_proofs","p":3501},{"i":3520,"t":"Privacy Protocol","u":"/wallet-protocol/","h":"#privacy-protocol","p":3518},{"i":3522,"t":"Fast Sync Protocol (recommended)","u":"/wallet-protocol/","h":"#fast-sync-protocol-recommended","p":3518},{"i":3524,"t":"Protocol Messages","u":"/wallet-protocol/","h":"","p":3518},{"i":3525,"t":"request_puzzle_solution","u":"/wallet-protocol/","h":"#request_puzzle_solution","p":3518},{"i":3527,"t":"respond_puzzle_solution","u":"/wallet-protocol/","h":"#respond_puzzle_solution","p":3518},{"i":3529,"t":"reject_puzzle_solution","u":"/wallet-protocol/","h":"#reject_puzzle_solution","p":3518},{"i":3531,"t":"send_transaction","u":"/wallet-protocol/","h":"#send_transaction","p":3518},{"i":3533,"t":"transaction_ack","u":"/wallet-protocol/","h":"#transaction_ack","p":3518},{"i":3535,"t":"new_peak_wallet","u":"/wallet-protocol/","h":"#new_peak_wallet","p":3518},{"i":3537,"t":"request_block_header","u":"/wallet-protocol/","h":"#request_block_header","p":3518},{"i":3539,"t":"respond_block_header","u":"/wallet-protocol/","h":"#respond_block_header","p":3518},{"i":3541,"t":"reject_header_request","u":"/wallet-protocol/","h":"#reject_header_request","p":3518},{"i":3543,"t":"request_removals","u":"/wallet-protocol/","h":"#request_removals","p":3518},{"i":3545,"t":"respond_removals","u":"/wallet-protocol/","h":"#respond_removals","p":3518},{"i":3547,"t":"reject_removals_request","u":"/wallet-protocol/","h":"#reject_removals_request","p":3518},{"i":3549,"t":"request_additions","u":"/wallet-protocol/","h":"#request_additions","p":3518},{"i":3551,"t":"respond_additions","u":"/wallet-protocol/","h":"#respond_additions","p":3518},{"i":3553,"t":"reject_additions_request","u":"/wallet-protocol/","h":"#reject_additions_request","p":3518},{"i":3555,"t":"request_header_blocks","u":"/wallet-protocol/","h":"#request_header_blocks","p":3518},{"i":3557,"t":"reject_header_blocks","u":"/wallet-protocol/","h":"#reject_header_blocks","p":3518},{"i":3559,"t":"respond_header_blocks","u":"/wallet-protocol/","h":"#respond_header_blocks","p":3518},{"i":3561,"t":"register_for_ph_updates","u":"/wallet-protocol/","h":"#register_for_ph_updates","p":3518},{"i":3563,"t":"respond_to_ph_updates","u":"/wallet-protocol/","h":"#respond_to_ph_updates","p":3518},{"i":3565,"t":"register_for_coin_updates","u":"/wallet-protocol/","h":"#register_for_coin_updates","p":3518},{"i":3567,"t":"respond_to_coin_updates","u":"/wallet-protocol/","h":"#respond_to_coin_updates","p":3518},{"i":3569,"t":"coin_state_update","u":"/wallet-protocol/","h":"#coin_state_update","p":3518},{"i":3571,"t":"request_children","u":"/wallet-protocol/","h":"#request_children","p":3518},{"i":3573,"t":"respond_children","u":"/wallet-protocol/","h":"#respond_children","p":3518},{"i":3575,"t":"request_ses_info","u":"/wallet-protocol/","h":"#request_ses_info","p":3518},{"i":3577,"t":"respond_ses_info","u":"/wallet-protocol/","h":"#respond_ses_info","p":3518},{"i":3581,"t":"Reference","u":"/vc-rpc/","h":"#reference","p":3579},{"i":3582,"t":"vc_add_proofs","u":"/vc-rpc/","h":"#vc_add_proofs","p":3579},{"i":3584,"t":"vc_get","u":"/vc-rpc/","h":"#vc_get","p":3579},{"i":3586,"t":"vc_get_list","u":"/vc-rpc/","h":"#vc_get_list","p":3579},{"i":3588,"t":"vc_get_proofs_for_root","u":"/vc-rpc/","h":"#vc_get_proofs_for_root","p":3579},{"i":3590,"t":"vc_mint","u":"/vc-rpc/","h":"#vc_mint","p":3579},{"i":3592,"t":"vc_spend","u":"/vc-rpc/","h":"#vc_spend","p":3579},{"i":3594,"t":"vc_revoke","u":"/vc-rpc/","h":"#vc_revoke","p":3579},{"i":3596,"t":"Obtain proof hash","u":"/vc-rpc/","h":"#obtain-proof-hash","p":3579},{"i":3599,"t":"Commands","u":"/walletconnect-cats/","h":"#commands","p":3598},{"i":3600,"t":"chia_getCATWalletInfo","u":"/walletconnect-cats/","h":"#chia_getcatwalletinfo","p":3598},{"i":3602,"t":"chia_getCATAssetId","u":"/walletconnect-cats/","h":"#chia_getcatassetid","p":3598},{"i":3604,"t":"chia_spendCAT","u":"/walletconnect-cats/","h":"#chia_spendcat","p":3598},{"i":3606,"t":"chia_addCATToken","u":"/walletconnect-cats/","h":"#chia_addcattoken","p":3598},{"i":3610,"t":"Getting Started","u":"/walletconnect-commands/","h":"#getting-started","p":3608},{"i":3612,"t":"Commands","u":"/walletconnect-commands/","h":"#commands","p":3608},{"i":3613,"t":"chia_logIn","u":"/walletconnect-commands/","h":"#chia_login","p":3608},{"i":3615,"t":"chia_getPublicKey","u":"/walletconnect-commands/","h":"#chia_getpublickey","p":3608},{"i":3617,"t":"chia_getWallets","u":"/walletconnect-commands/","h":"#chia_getwallets","p":3608},{"i":3619,"t":"chia_getTransaction","u":"/walletconnect-commands/","h":"#chia_gettransaction","p":3608},{"i":3621,"t":"chia_getWalletBalance","u":"/walletconnect-commands/","h":"#chia_getwalletbalance","p":3608},{"i":3623,"t":"chia_getCurrentAddress","u":"/walletconnect-commands/","h":"#chia_getcurrentaddress","p":3608},{"i":3625,"t":"chia_getNextAddress","u":"/walletconnect-commands/","h":"#chia_getnextaddress","p":3608},{"i":3627,"t":"chia_sendTransaction","u":"/walletconnect-commands/","h":"#chia_sendtransaction","p":3608},{"i":3629,"t":"chia_signMessageById","u":"/walletconnect-commands/","h":"#chia_signmessagebyid","p":3608},{"i":3631,"t":"chia_signMessageByAddress","u":"/walletconnect-commands/","h":"#chia_signmessagebyaddress","p":3608},{"i":3633,"t":"chia_verifySignature","u":"/walletconnect-commands/","h":"#chia_verifysignature","p":3608},{"i":3635,"t":"chia_getSyncStatus","u":"/walletconnect-commands/","h":"#chia_getsyncstatus","p":3608},{"i":3637,"t":"Types","u":"/walletconnect-commands/","h":"#types","p":3608},{"i":3638,"t":"WalletInfo","u":"/walletconnect-commands/","h":"#walletinfo","p":3608},{"i":3640,"t":"WalletType","u":"/walletconnect-commands/","h":"#wallettype","p":3608},{"i":3642,"t":"TransactionRecord","u":"/walletconnect-commands/","h":"#transactionrecord","p":3608},{"i":3644,"t":"TransactionType","u":"/walletconnect-commands/","h":"#transactiontype","p":3608},{"i":3646,"t":"Peer","u":"/walletconnect-commands/","h":"#peer","p":3608},{"i":3648,"t":"InclusionStatus","u":"/walletconnect-commands/","h":"#inclusionstatus","p":3608},{"i":3650,"t":"SpendBundle","u":"/walletconnect-commands/","h":"#spendbundle","p":3608},{"i":3652,"t":"CoinSpend","u":"/walletconnect-commands/","h":"#coinspend","p":3608},{"i":3654,"t":"Coin","u":"/walletconnect-commands/","h":"#coin","p":3608},{"i":3656,"t":"WalletBalance","u":"/walletconnect-commands/","h":"#walletbalance","p":3608},{"i":3659,"t":"Intro","u":"/walletconnect-developer-guide/","h":"#intro","p":3658},{"i":3661,"t":"RPC Calls","u":"/walletconnect-developer-guide/","h":"#rpc-calls","p":3658},{"i":3665,"t":"Reference","u":"/wallet-cli/","h":"#reference","p":3663},{"i":3666,"t":"add_token","u":"/wallet-cli/","h":"#add_token","p":3663},{"i":3668,"t":"coins:","u":"/wallet-cli/","h":"#coins","p":3663},{"i":3670,"t":"list","u":"/wallet-cli/","h":"#list","p":3663},{"i":3672,"t":"combine","u":"/wallet-cli/","h":"#combine","p":3663},{"i":3674,"t":"split","u":"/wallet-cli/","h":"#split","p":3663},{"i":3676,"t":"clawback","u":"/wallet-cli/","h":"#clawback","p":3663},{"i":3678,"t":"delete_unconfirmed_transactions","u":"/wallet-cli/","h":"#delete_unconfirmed_transactions","p":3663},{"i":3680,"t":"get_address","u":"/wallet-cli/","h":"#get_address","p":3663},{"i":3682,"t":"get_derivation_index","u":"/wallet-cli/","h":"#get_derivation_index","p":3663},{"i":3684,"t":"get_transaction","u":"/wallet-cli/","h":"#get_transaction","p":3663},{"i":3686,"t":"get_transactions","u":"/wallet-cli/","h":"#get_transactions","p":3663},{"i":3688,"t":"notifications:","u":"/wallet-cli/","h":"#notifications","p":3663},{"i":3690,"t":"delete","u":"/wallet-cli/","h":"#delete","p":3663},{"i":3692,"t":"get","u":"/wallet-cli/","h":"#get","p":3663},{"i":3694,"t":"send","u":"/wallet-cli/","h":"#send","p":3663},{"i":3696,"t":"send","u":"/wallet-cli/","h":"#send-1","p":3663},{"i":3698,"t":"show","u":"/wallet-cli/","h":"#show","p":3663},{"i":3700,"t":"sign_message","u":"/wallet-cli/","h":"#sign_message","p":3663},{"i":3702,"t":"update_derivation_index","u":"/wallet-cli/","h":"#update_derivation_index","p":3663},{"i":3705,"t":"Commands","u":"/walletconnect-dids/","h":"#commands","p":3704},{"i":3706,"t":"chia_createNewDIDWallet","u":"/walletconnect-dids/","h":"#chia_createnewdidwallet","p":3704},{"i":3708,"t":"chia_setDIDName","u":"/walletconnect-dids/","h":"#chia_setdidname","p":3704},{"i":3711,"t":"Commands","u":"/walletconnect-offers/","h":"#commands","p":3710},{"i":3712,"t":"chia_getAllOffers","u":"/walletconnect-offers/","h":"#chia_getalloffers","p":3710},{"i":3714,"t":"chia_getOffersCount","u":"/walletconnect-offers/","h":"#chia_getofferscount","p":3710},{"i":3716,"t":"chia_cancelOffer","u":"/walletconnect-offers/","h":"#chia_canceloffer","p":3710},{"i":3718,"t":"chia_checkOfferValidity","u":"/walletconnect-offers/","h":"#chia_checkoffervalidity","p":3710},{"i":3720,"t":"chia_takeOffer","u":"/walletconnect-offers/","h":"#chia_takeoffer","p":3710},{"i":3722,"t":"chia_getOfferSummary","u":"/walletconnect-offers/","h":"#chia_getoffersummary","p":3710},{"i":3724,"t":"chia_getOfferData","u":"/walletconnect-offers/","h":"#chia_getofferdata","p":3710},{"i":3726,"t":"chia_getOfferRecord","u":"/walletconnect-offers/","h":"#chia_getofferrecord","p":3710},{"i":3728,"t":"chia_createOfferForIds","u":"/walletconnect-offers/","h":"#chia_createofferforids","p":3710},{"i":3730,"t":"Types","u":"/walletconnect-offers/","h":"#types","p":3710},{"i":3731,"t":"TradeRecord","u":"/walletconnect-offers/","h":"#traderecord","p":3710},{"i":3733,"t":"TradeStatus","u":"/walletconnect-offers/","h":"#tradestatus","p":3710},{"i":3736,"t":"Commands","u":"/walletconnect-nfts/","h":"#commands","p":3735},{"i":3737,"t":"chia_getNFTs","u":"/walletconnect-nfts/","h":"#chia_getnfts","p":3735},{"i":3739,"t":"chia_getNFTInfo","u":"/walletconnect-nfts/","h":"#chia_getnftinfo","p":3735},{"i":3741,"t":"chia_mintNFT","u":"/walletconnect-nfts/","h":"#chia_mintnft","p":3735},{"i":3743,"t":"chia_transferNFT","u":"/walletconnect-nfts/","h":"#chia_transfernft","p":3735},{"i":3745,"t":"chia_getNFTsCount","u":"/walletconnect-nfts/","h":"#chia_getnftscount","p":3735},{"i":3747,"t":"chia_setNFTDID","u":"/walletconnect-nfts/","h":"#chia_setnftdid","p":3735},{"i":3749,"t":"Types","u":"/walletconnect-nfts/","h":"#types","p":3735},{"i":3750,"t":"NFTInfo","u":"/walletconnect-nfts/","h":"#nftinfo","p":3735},{"i":3753,"t":"Intro","u":"/walletconnect-user-guide/","h":"#intro","p":3752},{"i":3755,"t":"Install the sample dApp","u":"/walletconnect-user-guide/","h":"#install-the-sample-dapp","p":3752},{"i":3757,"t":"Configure WalletConnect","u":"/walletconnect-user-guide/","h":"#configure-walletconnect","p":3752},{"i":3759,"t":"Call dApp functions","u":"/walletconnect-user-guide/","h":"#call-dapp-functions","p":3752},{"i":3761,"t":"Configure WalletConnect","u":"/walletconnect-user-guide/","h":"#configure-walletconnect-1","p":3752},{"i":3763,"t":"FAQ","u":"/walletconnect-user-guide/","h":"#faq","p":3752},{"i":3764,"t":"What is the main use case for WalletConnect?","u":"/walletconnect-user-guide/","h":"#what-is-the-main-use-case-for-walletconnect","p":3752},{"i":3766,"t":"What WalletConnect functionality might be enabled in the future?","u":"/walletconnect-user-guide/","h":"#what-walletconnect-functionality-might-be-enabled-in-the-future","p":3752},{"i":3768,"t":"What is the difference between WalletConnect and CHIP-2?","u":"/walletconnect-user-guide/","h":"#what-is-the-difference-between-walletconnect-and-chip-2","p":3752},{"i":3770,"t":"How can WalletConnect connect to remote wallets?","u":"/walletconnect-user-guide/","h":"#how-can-walletconnect-connect-to-remote-wallets","p":3752},{"i":3774,"t":"Intro","u":"/datalayer-rpc/","h":"#intro","p":3772},{"i":3776,"t":"Reference","u":"/datalayer-rpc/","h":"#reference","p":3772},{"i":3777,"t":"add_mirror","u":"/datalayer-rpc/","h":"#add_mirror","p":3772},{"i":3779,"t":"add_missing_files","u":"/datalayer-rpc/","h":"#add_missing_files","p":3772},{"i":3781,"t":"batch_update","u":"/datalayer-rpc/","h":"#batch_update","p":3772},{"i":3783,"t":"cancel_offer","u":"/datalayer-rpc/","h":"#cancel_offer","p":3772},{"i":3785,"t":"check_plugins","u":"/datalayer-rpc/","h":"#check_plugins","p":3772},{"i":3787,"t":"clear_pending_roots","u":"/datalayer-rpc/","h":"#clear_pending_roots","p":3772},{"i":3789,"t":"create_data_store","u":"/datalayer-rpc/","h":"#create_data_store","p":3772},{"i":3791,"t":"delete_key","u":"/datalayer-rpc/","h":"#delete_key","p":3772},{"i":3793,"t":"delete_mirror","u":"/datalayer-rpc/","h":"#delete_mirror","p":3772},{"i":3795,"t":"get_ancestors","u":"/datalayer-rpc/","h":"#get_ancestors","p":3772},{"i":3797,"t":"get_keys","u":"/datalayer-rpc/","h":"#get_keys","p":3772},{"i":3799,"t":"get_keys_values","u":"/datalayer-rpc/","h":"#get_keys_values","p":3772},{"i":3801,"t":"get_kv_diff","u":"/datalayer-rpc/","h":"#get_kv_diff","p":3772},{"i":3803,"t":"get_local_root","u":"/datalayer-rpc/","h":"#get_local_root","p":3772},{"i":3805,"t":"get_mirrors","u":"/datalayer-rpc/","h":"#get_mirrors","p":3772},{"i":3807,"t":"get_owned_stores","u":"/datalayer-rpc/","h":"#get_owned_stores","p":3772},{"i":3809,"t":"get_proof","u":"/datalayer-rpc/","h":"#get_proof","p":3772},{"i":3811,"t":"get_root","u":"/datalayer-rpc/","h":"#get_root","p":3772},{"i":3813,"t":"get_roots","u":"/datalayer-rpc/","h":"#get_roots","p":3772},{"i":3815,"t":"get_root_history","u":"/datalayer-rpc/","h":"#get_root_history","p":3772},{"i":3817,"t":"get_routes","u":"/datalayer-rpc/","h":"#get_routes","p":3772},{"i":3819,"t":"get_sync_status","u":"/datalayer-rpc/","h":"#get_sync_status","p":3772},{"i":3821,"t":"get_value","u":"/datalayer-rpc/","h":"#get_value","p":3772},{"i":3823,"t":"insert","u":"/datalayer-rpc/","h":"#insert","p":3772},{"i":3825,"t":"make_offer","u":"/datalayer-rpc/","h":"#make_offer","p":3772},{"i":3827,"t":"remove_subscriptions","u":"/datalayer-rpc/","h":"#remove_subscriptions","p":3772},{"i":3829,"t":"submit_pending_root","u":"/datalayer-rpc/","h":"#submit_pending_root","p":3772},{"i":3831,"t":"subscribe","u":"/datalayer-rpc/","h":"#subscribe","p":3772},{"i":3833,"t":"subscriptions","u":"/datalayer-rpc/","h":"#subscriptions","p":3772},{"i":3835,"t":"take_offer","u":"/datalayer-rpc/","h":"#take_offer","p":3772},{"i":3837,"t":"unsubscribe","u":"/datalayer-rpc/","h":"#unsubscribe","p":3772},{"i":3839,"t":"verify_offer","u":"/datalayer-rpc/","h":"#verify_offer","p":3772},{"i":3841,"t":"verify_proof","u":"/datalayer-rpc/","h":"#verify_proof","p":3772},{"i":3843,"t":"wallet_log_in","u":"/datalayer-rpc/","h":"#wallet_log_in","p":3772},{"i":3845,"t":"Inherited commands","u":"/datalayer-rpc/","h":"#inherited-commands","p":3772},{"i":3846,"t":"close_connection","u":"/datalayer-rpc/","h":"#close_connection","p":3772},{"i":3848,"t":"get_connections","u":"/datalayer-rpc/","h":"#get_connections","p":3772},{"i":3850,"t":"open_connection","u":"/datalayer-rpc/","h":"#open_connection","p":3772},{"i":3852,"t":"stop_node","u":"/datalayer-rpc/","h":"#stop_node","p":3772},{"i":3856,"t":"Log file Location:","u":"/troubleshooting/logging-reference/","h":"#log-file-location","p":3854},{"i":3858,"t":"Log File Management:","u":"/troubleshooting/logging-reference/","h":"#log-file-management","p":3854},{"i":3860,"t":"Log Detail Level:","u":"/troubleshooting/logging-reference/","h":"#log-detail-level","p":3854},{"i":3862,"t":"Change the Log Level Output:","u":"/troubleshooting/logging-reference/","h":"#change-the-log-level-output","p":3854},{"i":3864,"t":"Node Components:","u":"/troubleshooting/logging-reference/","h":"#node-components","p":3854},{"i":3866,"t":"Log Message Format:","u":"/troubleshooting/logging-reference/","h":"#log-message-format","p":3854},{"i":3868,"t":"Log Messages Confirming Node Health:","u":"/troubleshooting/logging-reference/","h":"#log-messages-confirming-node-health","p":3854},{"i":3870,"t":"Other Normal Log Messages:","u":"/troubleshooting/logging-reference/","h":"#other-normal-log-messages","p":3854},{"i":3872,"t":"Log Search Commands","u":"/troubleshooting/logging-reference/","h":"#log-search-commands","p":3854},{"i":3874,"t":"search linux or mac logs","u":"/troubleshooting/logging-reference/","h":"#search-linux-or-mac-logs","p":3854},{"i":3876,"t":"search windows logs","u":"/troubleshooting/logging-reference/","h":"#search-windows-logs","p":3854},{"i":3880,"t":"Reference","u":"/nft-rpc/","h":"#reference","p":3878},{"i":3881,"t":"nft_add_uri","u":"/nft-rpc/","h":"#nft_add_uri","p":3878},{"i":3883,"t":"nft_calculate_royalties","u":"/nft-rpc/","h":"#nft_calculate_royalties","p":3878},{"i":3885,"t":"nft_count_nfts","u":"/nft-rpc/","h":"#nft_count_nfts","p":3878},{"i":3887,"t":"nft_get_by_did","u":"/nft-rpc/","h":"#nft_get_by_did","p":3878},{"i":3889,"t":"nft_get_info","u":"/nft-rpc/","h":"#nft_get_info","p":3878},{"i":3891,"t":"nft_get_nfts","u":"/nft-rpc/","h":"#nft_get_nfts","p":3878},{"i":3893,"t":"nft_get_wallets_with_dids","u":"/nft-rpc/","h":"#nft_get_wallets_with_dids","p":3878},{"i":3895,"t":"nft_get_wallet_did","u":"/nft-rpc/","h":"#nft_get_wallet_did","p":3878},{"i":3897,"t":"nft_mint_bulk","u":"/nft-rpc/","h":"#nft_mint_bulk","p":3878},{"i":3899,"t":"nft_mint_nft","u":"/nft-rpc/","h":"#nft_mint_nft","p":3878},{"i":3901,"t":"nft_set_did_bulk","u":"/nft-rpc/","h":"#nft_set_did_bulk","p":3878},{"i":3903,"t":"nft_set_nft_did","u":"/nft-rpc/","h":"#nft_set_nft_did","p":3878},{"i":3905,"t":"nft_set_nft_status","u":"/nft-rpc/","h":"#nft_set_nft_status","p":3878},{"i":3907,"t":"nft_transfer_bulk","u":"/nft-rpc/","h":"#nft_transfer_bulk","p":3878},{"i":3909,"t":"nft_transfer_nft","u":"/nft-rpc/","h":"#nft_transfer_nft","p":3878},{"i":3913,"t":"get_additions_and_removals","u":"/full-node-rpc/","h":"#get_additions_and_removals","p":3911},{"i":3915,"t":"get_aggsig_additional_data","u":"/full-node-rpc/","h":"#get_aggsig_additional_data","p":3911},{"i":3917,"t":"get_all_mempool_items","u":"/full-node-rpc/","h":"#get_all_mempool_items","p":3911},{"i":3919,"t":"get_all_mempool_tx_ids","u":"/full-node-rpc/","h":"#get_all_mempool_tx_ids","p":3911},{"i":3921,"t":"get_block","u":"/full-node-rpc/","h":"#get_block","p":3911},{"i":3923,"t":"get_blockchain_state","u":"/full-node-rpc/","h":"#get_blockchain_state","p":3911},{"i":3925,"t":"get_blocks","u":"/full-node-rpc/","h":"#get_blocks","p":3911},{"i":3927,"t":"get_block_count_metrics","u":"/full-node-rpc/","h":"#get_block_count_metrics","p":3911},{"i":3929,"t":"get_block_record","u":"/full-node-rpc/","h":"#get_block_record","p":3911},{"i":3931,"t":"get_block_records","u":"/full-node-rpc/","h":"#get_block_records","p":3911},{"i":3933,"t":"get_block_record_by_height","u":"/full-node-rpc/","h":"#get_block_record_by_height","p":3911},{"i":3935,"t":"get_block_spends","u":"/full-node-rpc/","h":"#get_block_spends","p":3911},{"i":3937,"t":"get_block_spends_with_conditions","u":"/full-node-rpc/","h":"#get_block_spends_with_conditions","p":3911},{"i":3939,"t":"get_coin_records_by_hint","u":"/full-node-rpc/","h":"#get_coin_records_by_hint","p":3911},{"i":3941,"t":"get_coin_records_by_names","u":"/full-node-rpc/","h":"#get_coin_records_by_names","p":3911},{"i":3943,"t":"get_coin_records_by_parent_ids","u":"/full-node-rpc/","h":"#get_coin_records_by_parent_ids","p":3911},{"i":3945,"t":"get_coin_records_by_puzzle_hash","u":"/full-node-rpc/","h":"#get_coin_records_by_puzzle_hash","p":3911},{"i":3947,"t":"get_coin_records_by_puzzle_hashes","u":"/full-node-rpc/","h":"#get_coin_records_by_puzzle_hashes","p":3911},{"i":3949,"t":"get_coin_record_by_name","u":"/full-node-rpc/","h":"#get_coin_record_by_name","p":3911},{"i":3951,"t":"get_fee_estimate","u":"/full-node-rpc/","h":"#get_fee_estimate","p":3911},{"i":3953,"t":"get_mempool_item_by_tx_id","u":"/full-node-rpc/","h":"#get_mempool_item_by_tx_id","p":3911},{"i":3955,"t":"get_mempool_items_by_coin_name","u":"/full-node-rpc/","h":"#get_mempool_items_by_coin_name","p":3911},{"i":3957,"t":"get_network_info","u":"/full-node-rpc/","h":"#get_network_info","p":3911},{"i":3959,"t":"get_network_space","u":"/full-node-rpc/","h":"#get_network_space","p":3911},{"i":3961,"t":"get_puzzle_and_solution","u":"/full-node-rpc/","h":"#get_puzzle_and_solution","p":3911},{"i":3963,"t":"get_recent_signage_point_or_eos","u":"/full-node-rpc/","h":"#get_recent_signage_point_or_eos","p":3911},{"i":3965,"t":"get_routes","u":"/full-node-rpc/","h":"#get_routes","p":3911},{"i":3967,"t":"get_unfinished_block_headers","u":"/full-node-rpc/","h":"#get_unfinished_block_headers","p":3911},{"i":3969,"t":"healthz","u":"/full-node-rpc/","h":"#healthz","p":3911},{"i":3971,"t":"push_tx","u":"/full-node-rpc/","h":"#push_tx","p":3911},{"i":3975,"t":"Key management","u":"/wallet-rpc/","h":"#key-management","p":3973},{"i":3976,"t":"add_key","u":"/wallet-rpc/","h":"#add_key","p":3973},{"i":3978,"t":"check_delete_key","u":"/wallet-rpc/","h":"#check_delete_key","p":3973},{"i":3980,"t":"delete_all_keys","u":"/wallet-rpc/","h":"#delete_all_keys","p":3973},{"i":3982,"t":"delete_key","u":"/wallet-rpc/","h":"#delete_key","p":3973},{"i":3984,"t":"generate_mnemonic","u":"/wallet-rpc/","h":"#generate_mnemonic","p":3973},{"i":3986,"t":"get_logged_in_fingerprint","u":"/wallet-rpc/","h":"#get_logged_in_fingerprint","p":3973},{"i":3988,"t":"get_private_key","u":"/wallet-rpc/","h":"#get_private_key","p":3973},{"i":3990,"t":"get_public_keys","u":"/wallet-rpc/","h":"#get_public_keys","p":3973},{"i":3992,"t":"log_in","u":"/wallet-rpc/","h":"#log_in","p":3973},{"i":3994,"t":"Wallet node","u":"/wallet-rpc/","h":"#wallet-node","p":3973},{"i":3995,"t":"get_auto_claim","u":"/wallet-rpc/","h":"#get_auto_claim","p":3973},{"i":3997,"t":"get_height_info","u":"/wallet-rpc/","h":"#get_height_info","p":3973},{"i":3999,"t":"get_network_info","u":"/wallet-rpc/","h":"#get_network_info","p":3973},{"i":4001,"t":"get_sync_status","u":"/wallet-rpc/","h":"#get_sync_status","p":3973},{"i":4003,"t":"get_timestamp_for_height","u":"/wallet-rpc/","h":"#get_timestamp_for_height","p":3973},{"i":4005,"t":"push_transactions","u":"/wallet-rpc/","h":"#push_transactions","p":3973},{"i":4007,"t":"push_tx","u":"/wallet-rpc/","h":"#push_tx","p":3973},{"i":4009,"t":"set_auto_claim","u":"/wallet-rpc/","h":"#set_auto_claim","p":3973},{"i":4011,"t":"set_wallet_resync_on_startup","u":"/wallet-rpc/","h":"#set_wallet_resync_on_startup","p":3973},{"i":4013,"t":"Wallet management","u":"/wallet-rpc/","h":"#wallet-management","p":3973},{"i":4014,"t":"create_new_wallet","u":"/wallet-rpc/","h":"#create_new_wallet","p":3973},{"i":4016,"t":"get_wallets","u":"/wallet-rpc/","h":"#get_wallets","p":3973},{"i":4018,"t":"Wallet","u":"/wallet-rpc/","h":"#wallet","p":3973},{"i":4019,"t":"combine_coins","u":"/wallet-rpc/","h":"#combine_coins","p":3973},{"i":4021,"t":"create_signed_transaction","u":"/wallet-rpc/","h":"#create_signed_transaction","p":3973},{"i":4023,"t":"delete_notifications","u":"/wallet-rpc/","h":"#delete_notifications","p":3973},{"i":4025,"t":"delete_unconfirmed_transactions","u":"/wallet-rpc/","h":"#delete_unconfirmed_transactions","p":3973},{"i":4027,"t":"extend_derivation_index","u":"/wallet-rpc/","h":"#extend_derivation_index","p":3973},{"i":4029,"t":"get_coin_records","u":"/wallet-rpc/","h":"#get_coin_records","p":3973},{"i":4031,"t":"get_coin_records_by_names","u":"/wallet-rpc/","h":"#get_coin_records_by_names","p":3973},{"i":4033,"t":"get_current_derivation_index","u":"/wallet-rpc/","h":"#get_current_derivation_index","p":3973},{"i":4035,"t":"get_farmed_amount","u":"/wallet-rpc/","h":"#get_farmed_amount","p":3973},{"i":4037,"t":"get_next_address","u":"/wallet-rpc/","h":"#get_next_address","p":3973},{"i":4039,"t":"get_notifications","u":"/wallet-rpc/","h":"#get_notifications","p":3973},{"i":4041,"t":"get_spendable_coins","u":"/wallet-rpc/","h":"#get_spendable_coins","p":3973},{"i":4043,"t":"get_transaction","u":"/wallet-rpc/","h":"#get_transaction","p":3973},{"i":4045,"t":"get_transactions","u":"/wallet-rpc/","h":"#get_transactions","p":3973},{"i":4047,"t":"get_transaction_count","u":"/wallet-rpc/","h":"#get_transaction_count","p":3973},{"i":4049,"t":"get_transaction_memo","u":"/wallet-rpc/","h":"#get_transaction_memo","p":3973},{"i":4051,"t":"get_wallet_balance","u":"/wallet-rpc/","h":"#get_wallet_balance","p":3973},{"i":4053,"t":"get_wallet_balances","u":"/wallet-rpc/","h":"#get_wallet_balances","p":3973},{"i":4055,"t":"select_coins","u":"/wallet-rpc/","h":"#select_coins","p":3973},{"i":4057,"t":"send_notification","u":"/wallet-rpc/","h":"#send_notification","p":3973},{"i":4059,"t":"send_transaction","u":"/wallet-rpc/","h":"#send_transaction","p":3973},{"i":4061,"t":"send_transaction_multi","u":"/wallet-rpc/","h":"#send_transaction_multi","p":3973},{"i":4063,"t":"sign_message_by_address","u":"/wallet-rpc/","h":"#sign_message_by_address","p":3973},{"i":4065,"t":"sign_message_by_id","u":"/wallet-rpc/","h":"#sign_message_by_id","p":3973},{"i":4067,"t":"spend_clawback_coins","u":"/wallet-rpc/","h":"#spend_clawback_coins","p":3973},{"i":4069,"t":"split_coins","u":"/wallet-rpc/","h":"#split_coins","p":3973},{"i":4071,"t":"verify_signature","u":"/wallet-rpc/","h":"#verify_signature","p":3973},{"i":4073,"t":"CATs and trading","u":"/wallet-rpc/","h":"#cats-and-trading","p":3973},{"i":4074,"t":"cancel_offer","u":"/wallet-rpc/","h":"#cancel_offer","p":3973},{"i":4076,"t":"cancel_offers","u":"/wallet-rpc/","h":"#cancel_offers","p":3973},{"i":4078,"t":"cat_asset_id_to_name","u":"/wallet-rpc/","h":"#cat_asset_id_to_name","p":3973},{"i":4080,"t":"cat_get_asset_id","u":"/wallet-rpc/","h":"#cat_get_asset_id","p":3973},{"i":4082,"t":"cat_get_name","u":"/wallet-rpc/","h":"#cat_get_name","p":3973},{"i":4084,"t":"cat_set_name","u":"/wallet-rpc/","h":"#cat_set_name","p":3973},{"i":4086,"t":"cat_spend","u":"/wallet-rpc/","h":"#cat_spend","p":3973},{"i":4088,"t":"check_offer_validity","u":"/wallet-rpc/","h":"#check_offer_validity","p":3973},{"i":4090,"t":"create_offer_for_ids","u":"/wallet-rpc/","h":"#create_offer_for_ids","p":3973},{"i":4092,"t":"get_all_offers","u":"/wallet-rpc/","h":"#get_all_offers","p":3973},{"i":4094,"t":"get_cat_list","u":"/wallet-rpc/","h":"#get_cat_list","p":3973},{"i":4096,"t":"get_offer","u":"/wallet-rpc/","h":"#get_offer","p":3973},{"i":4098,"t":"get_offers_count","u":"/wallet-rpc/","h":"#get_offers_count","p":3973},{"i":4100,"t":"get_offer_summary","u":"/wallet-rpc/","h":"#get_offer_summary","p":3973},{"i":4102,"t":"get_stray_cats","u":"/wallet-rpc/","h":"#get_stray_cats","p":3973},{"i":4104,"t":"take_offer","u":"/wallet-rpc/","h":"#take_offer","p":3973},{"i":4106,"t":"DID Wallet","u":"/wallet-rpc/","h":"#did-wallet","p":3973},{"i":4107,"t":"Note","u":"/wallet-rpc/","h":"#note","p":3973},{"i":4109,"t":"NFT Wallet","u":"/wallet-rpc/","h":"#nft-wallet","p":3973},{"i":4110,"t":"Note2","u":"/wallet-rpc/","h":"#note2","p":3973},{"i":4112,"t":"Pool Wallet","u":"/wallet-rpc/","h":"#pool-wallet","p":3973},{"i":4113,"t":"pw_absorb_rewards","u":"/wallet-rpc/","h":"#pw_absorb_rewards","p":3973},{"i":4115,"t":"pw_join_pool","u":"/wallet-rpc/","h":"#pw_join_pool","p":3973},{"i":4117,"t":"pw_self_pool","u":"/wallet-rpc/","h":"#pw_self_pool","p":3973},{"i":4119,"t":"pw_status","u":"/wallet-rpc/","h":"#pw_status","p":3973},{"i":4121,"t":"DL Wallet","u":"/wallet-rpc/","h":"#dl-wallet","p":3973},{"i":4122,"t":"create_new_dl","u":"/wallet-rpc/","h":"#create_new_dl","p":3973},{"i":4124,"t":"dl_delete_mirror","u":"/wallet-rpc/","h":"#dl_delete_mirror","p":3973},{"i":4126,"t":"dl_get_mirrors","u":"/wallet-rpc/","h":"#dl_get_mirrors","p":3973},{"i":4128,"t":"dl_history","u":"/wallet-rpc/","h":"#dl_history","p":3973},{"i":4130,"t":"dl_latest_singleton","u":"/wallet-rpc/","h":"#dl_latest_singleton","p":3973},{"i":4132,"t":"dl_new_mirror","u":"/wallet-rpc/","h":"#dl_new_mirror","p":3973},{"i":4134,"t":"dl_owned_singletons","u":"/wallet-rpc/","h":"#dl_owned_singletons","p":3973},{"i":4136,"t":"dl_singletons_by_root","u":"/wallet-rpc/","h":"#dl_singletons_by_root","p":3973},{"i":4138,"t":"dl_stop_tracking","u":"/wallet-rpc/","h":"#dl_stop_tracking","p":3973},{"i":4140,"t":"dl_track_new","u":"/wallet-rpc/","h":"#dl_track_new","p":3973},{"i":4142,"t":"dl_update_multiple","u":"/wallet-rpc/","h":"#dl_update_multiple","p":3973},{"i":4144,"t":"dl_update_root","u":"/wallet-rpc/","h":"#dl_update_root","p":3973},{"i":4146,"t":"Routes and connections","u":"/wallet-rpc/","h":"#routes-and-connections","p":3973},{"i":4147,"t":"close_connection","u":"/wallet-rpc/","h":"#close_connection","p":3973},{"i":4149,"t":"get_connections","u":"/wallet-rpc/","h":"#get_connections","p":3973},{"i":4151,"t":"get_routes","u":"/wallet-rpc/","h":"#get_routes","p":3973},{"i":4153,"t":"open_connection","u":"/wallet-rpc/","h":"#open_connection","p":3973},{"i":4155,"t":"stop_node","u":"/wallet-rpc/","h":"#stop_node","p":3973}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,5.08,1,5.186]],["t/5",[2,6.199]],["t/6",[3,6.338]],["t/8",[4,5.131,5,5.243]],["t/10",[6,5.243,7,4.661]],["t/12",[8,4.733,9,5.131]],["t/13",[10,5.956]],["t/17",[0,5.08,1,5.186]],["t/19",[2,6.199]],["t/20",[3,6.338]],["t/22",[4,5.131,5,5.243]],["t/24",[6,5.243,7,4.661]],["t/26",[8,4.733,9,5.131]],["t/27",[10,5.956]],["t/31",[11,7.99]],["t/33",[11,6.685,12,6.062]],["t/37",[0,5.08,1,5.186]],["t/39",[2,6.199]],["t/40",[3,6.338]],["t/42",[4,5.131,5,5.243]],["t/44",[6,5.243,7,4.661]],["t/46",[8,4.733,9,5.131]],["t/47",[10,5.956]],["t/53",[0,5.08,1,5.186]],["t/55",[2,6.199]],["t/56",[3,6.338]],["t/58",[4,5.131,5,5.243]],["t/60",[6,5.243,7,4.661]],["t/62",[8,4.733,9,5.131]],["t/63",[10,5.956]],["t/69",[13,8.165,14,8.165]],["t/71",[0,5.08,1,5.186]],["t/73",[2,6.199]],["t/75",[3,6.338]],["t/77",[4,5.131,5,5.243]],["t/79",[6,5.243,7,4.661]],["t/81",[8,4.733,9,5.131]],["t/83",[15,5.038,16,4.044,17,4.569,18,4.483]],["t/86",[19,5.53]],["t/87",[20,6.153,21,6.153,22,4.664,23,4.895]],["t/89",[24,6.494,25,4.937]],["t/91",[25,4.937,26,5.58]],["t/93",[25,4.937,27,6.331]],["t/96",[28,5.58,29,4.253]],["t/98",[30,5.715,31,3.513,32,4.333,33,3.867]],["t/100",[]],["t/102",[]],["t/104",[]],["t/106",[]],["t/110",[0,5.08,1,5.186]],["t/112",[2,6.199]],["t/113",[3,6.338]],["t/115",[4,5.131,5,5.243]],["t/117",[6,5.243,7,4.661]],["t/119",[8,4.733,9,5.131]],["t/120",[10,5.956]],["t/124",[34,5.715,35,5.426,36,6.153,37,3.513]],["t/126",[38,9.76]],["t/128",[39,5.504,40,5.948]],["t/130",[39,4.148,41,3.996,42,4.483,43,3.303]],["t/132",[39,5.504,44,8.165]],["t/136",[28,3.744,42,3.991,45,3.558,46,4.485,47,4.831]],["t/138",[28,5.58,45,5.303]],["t/140",[46,6.685,47,7.199]],["t/142",[29,3.655,48,5.023,49,4.866]],["t/144",[48,5.844,50,6.189]],["t/146",[48,5.844,51,8.165]],["t/150",[52,3.799,53,3.922,54,2.095,55,5.479,56,5.479]],["t/152",[42,3.991,57,4.639,58,8.132,59,2.806]],["t/155",[60,6.199]],["t/157",[19,5.53]],["t/158",[61,5.413]],["t/160",[62,7.018,63,5.023,64,5.582]],["t/162",[64,5.582,65,7.018,66,6.188]],["t/165",[60,6.199]],["t/167",[67,7.018,68,6.518,69,6.518]],["t/169",[70,3.815,71,4.731,72,7.018]],["t/171",[54,2.353,70,3.345,71,4.148,73,2.924]],["t/173",[69,6.518,73,3.335,74,4.324]],["t/175",[73,3.335,74,4.324,75,7.018]],["t/177",[54,2.683,73,3.335,74,4.324]],["t/179",[76,6.494,77,5.844]],["t/181",[77,5.844,78,7.199]],["t/187",[0,5.08,1,5.186]],["t/189",[2,6.199]],["t/190",[3,6.338]],["t/192",[4,5.131,5,5.243]],["t/194",[6,5.243,7,4.661]],["t/196",[8,4.733,9,5.131]],["t/197",[10,5.956]],["t/201",[79,5.243,80,7.199]],["t/203",[37,4.661,81,7.583]],["t/205",[81,7.583,82,5.504]],["t/207",[80,7.199,83,4.851]],["t/208",[7,3.127,37,4.642,84,5.479,85,3.039]],["t/210",[86,4.895,87,3.688,88,4.206,89,5.426]],["t/212",[7,3.513,90,2.8,91,5.715,92,4.483]],["t/214",[7,4.661,93,4.593]],["t/216",[37,1.886,48,2.365,85,1.833,93,1.859,94,2.914,95,3.069,96,2.705,97,2.914,98,3.304,99,2.146,100,2.365]],["t/220",[59,3.594,101,3.84,102,5.942]],["t/222",[37,2.565,59,4.397,103,2.565,104,4.493,105,3.484]],["t/226",[106,9.064]],["t/228",[93,3.948,107,4.612,108,7.018]],["t/230",[105,5.442,109,6.518,110,6.188]],["t/232",[111,5.088,112,5.479,113,3.646,114,5.088,115,3.375]],["t/234",[116,3.991,117,3.693,118,4.358,119,5.088,120,5.479]],["t/236",[109,5.715,121,5.426,122,4.772,123,5.426]],["t/238",[117,5.504,124,7.583]],["t/240",[124,7.583,125,5.131]],["t/242",[126,6.189,127,5.366]],["t/244",[37,2.353,54,1.576,117,2.779,123,3.635,128,4.122,129,4.122,130,3.635,131,3.061]],["t/246",[105,4.772,132,5.715,133,5.715,134,6.153]],["t/248",[54,3.122,132,7.583]],["t/250",[131,5.21,135,6.188,136,7.018]],["t/252",[137,7.568]],["t/254",[9,6.134]],["t/260",[0,5.08,1,5.186]],["t/262",[2,6.199]],["t/263",[3,6.338]],["t/265",[4,5.131,5,5.243]],["t/267",[6,5.243,7,4.661]],["t/269",[8,4.733,9,5.131]],["t/270",[15,5.038,16,4.044,17,4.569,18,4.483]],["t/272",[10,5.956]],["t/276",[0,5.08,1,5.186]],["t/278",[2,6.199]],["t/279",[3,6.338]],["t/281",[4,5.131,5,5.243]],["t/283",[6,5.243,7,4.661]],["t/285",[8,4.733,9,5.131]],["t/286",[15,5.038,16,4.044,17,4.569,18,4.483]],["t/288",[10,5.956]],["t/292",[0,5.08,1,5.186]],["t/294",[2,6.199]],["t/295",[3,6.338]],["t/297",[4,5.131,5,5.243]],["t/299",[6,5.243,7,4.661]],["t/301",[8,4.733,9,5.131]],["t/302",[15,5.038,16,4.044,17,4.569,18,4.483]],["t/304",[10,5.956]],["t/308",[0,5.08,1,5.186]],["t/310",[2,6.199]],["t/311",[3,6.338]],["t/313",[4,5.131,5,5.243]],["t/315",[6,5.243,7,4.661]],["t/317",[8,4.733,9,5.131]],["t/318",[15,5.038,16,4.044,17,4.569,18,4.483]],["t/320",[10,5.956]],["t/324",[138,7.763]],["t/328",[54,2.353,139,4.895,140,5.715,141,5.21]],["t/329",[142,9.064]],["t/331",[143,7.568]],["t/333",[144,9.064]],["t/335",[145,6.199]],["t/337",[146,7.763]],["t/339",[147,9.76]],["t/341",[7,4.661,90,3.716]],["t/343",[148,9.76]],["t/344",[149,8.264]],["t/346",[150,9.064]],["t/348",[48,6.986]],["t/350",[59,4.998]],["t/351",[151,7.763]],["t/353",[59,4.181,152,8.165]],["t/355",[153,7.99]],["t/357",[73,3.88,154,5.243]],["t/359",[]],["t/361",[155,4.536]],["t/363",[156,4.731,157,6.518,158,6.518]],["t/365",[7,4.006,87,4.206,159,4.866]],["t/368",[60,6.199]],["t/370",[19,5.53]],["t/371",[160,6.494]],["t/373",[40,7.11]],["t/375",[161,8.264]],["t/377",[162,4.818]],["t/379",[163,6.768]],["t/385",[59,4.181,164,7.199]],["t/387",[165,6.67]],["t/389",[166,6.013]],["t/391",[167,5.849]],["t/393",[168,5.112,169,6.518,170,6.188]],["t/395",[42,3.597,70,2.684,171,4.042,172,5.583,173,2.305]],["t/397",[171,5.746,172,5.21,174,6.188]],["t/399",[70,3.345,172,4.569,173,2.873,174,5.426]],["t/403",[85,3.413,171,5.038,172,4.569,175,6.153]],["t/405",[54,2.095,70,2.978,85,3.039,172,4.068,173,2.558]],["t/407",[171,5.746,172,5.21,176,6.188]],["t/408",[177,7.583,178,8.165]],["t/410",[179,8.165,180,6.913]],["t/412",[70,3.345,172,4.569,173,2.873,176,5.426]],["t/413",[181,9.76]],["t/415",[182,8.606]],["t/417",[183,9.76]],["t/419",[184,9.76]],["t/421",[113,5.433,185,6.062]],["t/425",[1,4.457,186,5.746,187,7.018]],["t/427",[31,4.006,173,3.276,188,6.518]],["t/429",[189,5.844,190,6.331]],["t/433",[191,5.662,192,5.844]],["t/435",[173,3.276,193,7.018,194,5.746]],["t/437",[195,8.165,196,5.844]],["t/439",[196,4.405,197,6.153,198,6.153,199,6.153]],["t/441",[166,4.324,192,5.023,200,5.746]],["t/443",[201,8.264]],["t/449",[0,5.08,1,5.186]],["t/451",[2,6.199]],["t/452",[3,6.338]],["t/454",[4,5.131,5,5.243]],["t/456",[6,5.243,7,4.661]],["t/458",[8,4.733,9,5.131]],["t/459",[10,5.956]],["t/463",[116,5.948,202,6.331]],["t/465",[37,4.006,203,5.942,204,6.188]],["t/467",[45,4.558,203,5.942,204,6.188]],["t/469",[29,3.655,202,5.442,205,5.942]],["t/471",[32,5.749,202,6.331]],["t/473",[32,4.942,113,4.67,180,5.942]],["t/475",[32,4.942,173,3.276,180,5.942]],["t/477",[29,3.205,114,5.715,202,4.772,205,5.21]],["t/479",[29,3.655,113,4.67,205,5.942]],["t/481",[31,4.006,202,5.442,206,5.942]],["t/484",[207,9.76]],["t/486",[208,9.064]],["t/488",[138,5.582,209,7.018,210,6.188]],["t/490",[93,3.948,138,5.582,211,7.018]],["t/492",[138,4.895,212,6.153,213,5.21,214,4.895]],["t/496",[215,7.583,216,6.685]],["t/500",[0,5.08,1,5.186]],["t/502",[2,6.199]],["t/503",[3,6.338]],["t/505",[4,5.131,5,5.243]],["t/507",[6,5.243,7,4.661]],["t/509",[8,4.733,9,5.131]],["t/510",[10,5.956]],["t/513",[196,5.844,217,6.685]],["t/515",[218,6.518,219,5.319,220,5.023]],["t/517",[107,4.044,121,5.426,122,4.772,221,6.153]],["t/519",[196,5.844,222,8.165]],["t/521",[196,4.405,223,6.153,224,6.153,225,5.21]],["t/523",[25,3.721,196,4.405,226,6.153,227,5.426]],["t/525",[37,4.661,228,7.583]],["t/527",[41,3.996,196,4.405,229,5.715,230,5.715]],["t/529",[41,3.207,196,3.534,229,4.585,231,4.585,232,4.585,233,4.937]],["t/531",[29,3.205,31,3.513,234,5.715,235,4.483]],["t/533",[123,7.199,234,7.583]],["t/537",[29,3.655,31,4.006,236,4.612]],["t/546",[101,3.367,237,5.038,238,5.038,239,5.715]],["t/548",[103,3.513,237,5.038,238,5.038,240,5.038]],["t/550",[237,5.746,241,4.206,242,7.018]],["t/553",[243,8.606]],["t/555",[12,6.062,243,7.199]],["t/557",[244,9.064]],["t/559",[94,7.199,167,4.893]],["t/561",[165,6.67]],["t/563",[12,5.21,93,3.948,245,7.018]],["t/566",[246,4.382,247,7.199]],["t/568",[162,3.465,171,5.746,247,6.188]],["t/570",[247,6.188,248,4.17,249,6.518]],["t/572",[250,7.583,251,8.165]],["t/574",[191,4.866,252,5.023,253,7.018]],["t/576",[115,4.324,254,5.319,255,7.018]],["t/578",[26,5.58,256,7.583]],["t/582",[125,3.443,257,5.088,258,4.831,259,4.831,260,4.639]],["t/584",[29,3.205,257,5.715,258,5.426,261,4.267]],["t/586",[118,6.494,262,6.913]],["t/589",[60,6.199]],["t/591",[19,5.53]],["t/592",[258,8.606]],["t/594",[160,6.494]],["t/596",[78,8.606]],["t/598",[151,5.582,263,7.018,264,4.731]],["t/600",[167,4.206,265,7.018,266,7.018]],["t/602",[267,7.018,268,5.942,269,5.442]],["t/604",[63,4.405,88,4.206,270,6.153,271,5.21]],["t/606",[144,9.064]],["t/608",[272,7.018,273,6.188,274,4.942]],["t/610",[154,4.506,275,7.018,276,7.018]],["t/612",[277,8.264]],["t/614",[278,6.188,279,5.942,280,5.746]],["t/616",[163,6.768]],["t/618",[145,4.457,281,7.018,282,5.942]],["t/620",[45,6.338]],["t/622",[33,4.411,269,5.442,283,7.018]],["t/624",[284,8.165,285,7.583]],["t/626",[19,3.487,83,3.656,156,4.148,286,5.21]],["t/628",[19,5.53]],["t/629",[287,9.76]],["t/631",[288,9.76]],["t/633",[286,8.264]],["t/635",[289,9.76]],["t/637",[286,5.21,290,6.153,291,6.153,292,6.153]],["t/639",[167,3.688,286,5.21,293,6.153,294,4.895]],["t/643",[295,5.366,296,8.165]],["t/645",[61,3.039,295,3.601,297,5.479,298,4.248,299,3.48]],["t/647",[70,3.345,85,3.413,86,4.895,299,3.908]],["t/651",[19,5.53]],["t/652",[299,3.48,300,5.479,301,3.151,302,4.358,303,4.831]],["t/654",[88,3.744,92,3.991,299,3.48,304,5.479,305,5.088]],["t/656",[295,4.044,299,3.908,306,6.153,307,4.895]],["t/658",[162,3.038,295,4.044,299,3.908,308,6.153]],["t/660",[299,3.908,309,6.153,310,5.426,311,5.21]],["t/662",[173,2.305,295,3.245,299,3.136,312,4.937,313,4.937,314,4.585]],["t/664",[295,4.612,299,4.457,315,7.018]],["t/666",[295,4.044,299,3.908,316,6.153,317,4.772]],["t/668",[299,4.457,318,7.018,319,5.442]],["t/670",[299,3.908,303,5.426,320,6.153,321,4.664]],["t/672",[299,3.908,303,5.426,322,6.153,323,4.148]],["t/674",[295,4.044,299,3.908,324,6.153,325,6.153]],["t/676",[99,3.996,299,3.908,311,5.21,326,6.153]],["t/678",[295,4.044,299,3.908,327,6.153,328,5.426]],["t/682",[19,5.53]],["t/683",[301,5.614]],["t/685",[301,4.037,302,5.582,329,7.018]],["t/687",[321,7.398]],["t/689",[295,4.612,307,5.582,330,7.018]],["t/691",[162,4.818]],["t/693",[162,3.465,295,4.612,331,7.018]],["t/695",[332,6.134]],["t/697",[167,5.849]],["t/699",[33,6.134]],["t/701",[310,6.188,311,5.942,333,7.018]],["t/703",[323,5.504,334,8.165]],["t/705",[295,4.612,335,7.018,336,5.21]],["t/707",[173,3.276,311,5.942,337,7.018]],["t/709",[173,3.276,338,7.018,339,6.518]],["t/711",[319,7.568]],["t/713",[163,4.866,295,4.612,340,7.018]],["t/715",[328,8.606]],["t/719",[60,6.199]],["t/721",[]],["t/723",[341,8.264]],["t/725",[162,4.031,299,5.186]],["t/727",[299,5.186,302,6.494]],["t/729",[299,5.186,342,6.685]],["t/731",[71,4.731,173,3.276,298,5.442]],["t/733",[162,3.465,167,4.206,295,4.612]],["t/735",[295,5.366,328,7.199]],["t/737",[295,5.366,307,6.494]],["t/739",[61,3.892,332,4.411,343,3.892]],["t/741",[85,3.413,86,4.895,299,3.908,319,4.772]],["t/743",[295,4.612,344,7.018,345,5.112]],["t/747",[11,5.746,54,2.683,346,7.018]],["t/749",[347,8.264]],["t/751",[348,9.76]],["t/753",[349,7.199,350,8.165]],["t/757",[351,8.165,352,6.062]],["t/759",[353,5.21,354,5.746,355,4.866]],["t/760",[310,8.606]],["t/762",[356,6.494,357,6.331]],["t/764",[159,5.662,358,8.165]],["t/766",[359,8.165,360,6.685]],["t/768",[73,3.335,154,4.506,361,7.018]],["t/770",[298,5.442,362,7.018,363,5.442]],["t/772",[364,8.165,365,4.81]],["t/774",[159,4.866,363,5.442,366,7.018]],["t/776",[367,7.018,368,6.188,369,5.319]],["t/778",[363,4.772,370,6.153,371,4.405,372,4.895]],["t/780",[365,4.135,369,5.319,373,7.018]],["t/782",[70,3.345,363,4.772,372,4.895,374,6.153]],["t/784",[145,4.457,369,5.319,375,7.018]],["t/786",[369,5.319,376,7.018,377,5.442]],["t/788",[363,5.442,378,7.018,379,7.018]],["t/790",[48,4.405,363,4.772,372,4.895,380,6.153]],["t/792",[146,6.494,355,5.662]],["t/793",[59,3.594,90,3.194,381,7.018]],["t/795",[146,6.494,382,8.165]],["t/797",[90,3.194,145,4.457,383,7.018]],["t/799",[90,3.194,377,5.442,384,7.018]],["t/801",[354,5.746,355,4.866,385,7.018]],["t/802",[59,3.151,301,3.54,386,6.153,387,4.895]],["t/804",[7,4.006,59,3.594,388,7.018]],["t/806",[59,3.594,389,6.518,390,4.558]],["t/808",[59,3.151,390,3.996,391,6.153,392,5.426]],["t/810",[59,3.594,387,5.582,393,7.018]],["t/812",[59,3.151,186,5.038,387,4.895,394,6.153]],["t/814",[59,3.594,392,6.188,395,7.018]],["t/816",[59,4.181,396,6.913]],["t/818",[59,4.181,396,6.913]],["t/820",[59,3.594,397,6.188,398,5.582]],["t/822",[59,3.594,397,6.188,398,5.582]],["t/824",[70,3.815,399,7.018,400,6.518]],["t/826",[390,4.558,400,6.518,401,7.018]],["t/830",[19,5.53]],["t/831",[301,4.037,402,6.518,403,5.112]],["t/833",[301,3.54,404,5.426,405,4.895,406,3.755]],["t/835",[264,4.148,407,5.715,408,5.715,409,5.21]],["t/837",[117,4.148,162,3.038,410,5.715,411,4.206]],["t/839",[390,4.558,403,5.112,412,6.518]],["t/841",[59,4.181,396,6.913]],["t/843",[59,3.594,168,5.112,413,6.518]],["t/845",[414,6.518,415,6.518,416,6.518]],["t/847",[403,5.948,417,7.583]],["t/849",[411,4.796,418,6.518,419,5.942]],["t/851",[93,4.593,420,7.583]],["t/853",[264,5.504,421,7.199]],["t/855",[264,4.731,422,6.518,423,5.442]],["t/857",[424,8.165,425,6.913]],["t/859",[45,4.558,159,4.866,426,6.188]],["t/861",[168,5.948,427,7.583]],["t/863",[18,7.11]],["t/865",[371,5.023,425,5.942,428,6.518]],["t/867",[429,8.606]],["t/869",[430,9.064]],["t/871",[33,3.867,117,4.148,411,4.206,431,6.153]],["t/873",[93,3.948,432,6.518,433,5.023]],["t/875",[73,3.335,87,4.206,434,6.518]],["t/879",[19,5.53]],["t/880",[162,4.818]],["t/882",[435,7.018,436,5.319,437,6.188]],["t/884",[438,8.165,439,6.685]],["t/886",[440,9.76]],["t/888",[167,4.206,441,7.018,442,4.411]],["t/890",[70,3.815,443,7.018,444,4.796]],["t/892",[191,4.866,442,4.411,445,6.188]],["t/894",[77,6.986]],["t/896",[33,4.411,446,7.018,447,5.582]],["t/900",[248,3.656,352,4.569,448,6.153,449,5.715]],["t/902",[248,3.656,352,4.569,449,5.715,450,5.715]],["t/904",[19,3.487,23,4.895,24,4.895,54,2.353]],["t/906",[0,3.409,19,3.104,23,4.358,54,2.095,347,4.639]],["t/908",[54,2.683,347,5.942,451,5.942]],["t/912",[452,6.913,453,7.583]],["t/918",[19,5.53]],["t/919",[73,2.924,162,3.038,343,3.413,454,5.715]],["t/921",[162,3.465,455,7.018,456,7.018]],["t/923",[150,5.715,162,3.038,406,3.755,457,6.153]],["t/925",[436,5.319,437,6.188,458,7.018]],["t/927",[173,2.873,459,6.153,460,5.21,461,4.206]],["t/929",[462,9.76]],["t/931",[461,5.58,463,8.165]],["t/933",[194,5.038,464,6.153,465,4.569,466,4.772]],["t/935",[447,6.494,467,8.165]],["t/937",[285,7.583,468,8.165]],["t/939",[336,5.21,466,5.442,469,7.018]],["t/941",[73,3.335,444,4.796,470,7.018]],["t/943",[167,4.206,442,4.411,471,7.018]],["t/945",[167,4.206,466,5.442,472,7.018]],["t/947",[70,3.345,73,2.924,444,4.206,473,6.153]],["t/949",[77,5.844,474,8.165]],["t/951",[33,4.411,447,5.582,475,7.018]],["t/953",[33,3.867,323,4.148,466,4.772,476,6.153]],["t/957",[82,5.504,477,8.165]],["t/959",[82,4.731,137,5.442,478,7.018]],["t/961",[82,4.148,90,2.8,479,6.153,480,6.153]],["t/963",[82,4.148,90,2.8,481,6.153,482,5.038]],["t/965",[59,2.806,82,3.693,90,2.493,405,4.358,483,5.479]],["t/967",[48,4.405,82,4.148,90,2.8,484,6.153]],["t/969",[10,3.755,43,3.303,485,6.153,486,5.426]],["t/971",[43,3.767,317,5.442,487,7.018]],["t/973",[39,4.731,488,7.018,489,6.518]],["t/975",[356,6.494,357,6.331]],["t/977",[490,6.518,491,5.21,492,4.866]],["t/979",[490,6.518,491,5.21,492,4.866]],["t/981",[70,3.345,493,6.153,494,5.426,495,5.21]],["t/983",[39,4.148,70,3.345,489,5.715,496,6.153]],["t/987",[26,4.206,90,2.8,497,5.715,498,4.206]],["t/988",[79,6.267]],["t/990",[83,5.799]],["t/996",[206,5.942,236,4.612,499,5.746]],["t/998",[43,4.382,500,8.165]],["t/1000",[29,4.253,39,5.504]],["t/1003",[12,4.569,37,3.513,54,2.353,501,5.21]],["t/1005",[46,5.038,87,3.688,194,5.038,406,3.755]],["t/1009",[502,7.99]],["t/1011",[49,5.662,252,5.844]],["t/1013",[63,3.922,219,4.153,503,4.831,504,5.088,505,4.639]],["t/1015",[59,3.594,506,5.942,507,6.518]],["t/1017",[73,3.335,506,5.942,507,6.518]],["t/1019",[59,4.181,436,6.189]],["t/1021",[83,4.851,246,4.382]],["t/1023",[79,5.243,246,4.382]],["t/1027",[70,3.345,71,4.148,248,3.656,508,4.267]],["t/1029",[70,3.345,71,4.148,248,3.656,509,3.996]],["t/1031",[53,4.405,508,4.267,509,3.996,510,5.426]],["t/1035",[0,5.08,1,5.186]],["t/1037",[2,6.199]],["t/1038",[3,6.338]],["t/1040",[4,5.131,5,5.243]],["t/1042",[6,5.243,7,4.661]],["t/1044",[8,4.733,9,5.131]],["t/1045",[10,5.956]],["t/1049",[0,5.08,1,5.186]],["t/1051",[2,6.199]],["t/1052",[4,5.131,5,5.243]],["t/1054",[6,5.243,7,4.661]],["t/1056",[8,4.733,9,5.131]],["t/1057",[10,5.956]],["t/1063",[511,6.685,512,7.199]],["t/1065",[513,8.264]],["t/1067",[90,3.716,105,6.331]],["t/1069",[185,6.062,514,6.685]],["t/1071",[54,3.122,248,4.851]],["t/1073",[54,2.683,127,4.612,365,4.135]],["t/1075",[73,3.88,162,4.031]],["t/1077",[73,3.88,302,6.494]],["t/1079",[45,5.303,515,5.186]],["t/1081",[43,4.382,342,6.685]],["t/1083",[90,3.716,162,4.031]],["t/1085",[37,4.661,145,5.186]],["t/1087",[49,5.662,516,6.913]],["t/1089",[517,9.064]],["t/1093",[54,3.122,248,4.851]],["t/1095",[54,2.683,127,4.612,365,4.135]],["t/1097",[73,3.88,162,4.031]],["t/1099",[54,2.683,73,3.335,246,3.767]],["t/1101",[61,3.892,301,4.037,343,3.892]],["t/1103",[61,3.413,162,3.038,518,4.664,519,2.848]],["t/1105",[519,3.779,520,6.062]],["t/1107",[519,3.779,521,5.749]],["t/1109",[155,3.795,519,3.779]],["t/1111",[155,3.795,510,7.199]],["t/1113",[519,3.779,522,6.331]],["t/1115",[102,5.942,236,4.612,523,6.188]],["t/1117",[524,7.583,525,7.583]],["t/1119",[118,6.494,262,6.913]],["t/1122",[106,9.064]],["t/1124",[68,5.715,213,5.21,526,6.153,527,6.153]],["t/1129",[32,6.872]],["t/1130",[25,3.313,28,3.744,41,3.558,82,3.693,515,3.48]],["t/1132",[93,4.593,107,5.366]],["t/1134",[22,5.319,93,3.948,236,4.612]],["t/1136",[215,7.583,216,6.685]],["t/1138",[518,5.319,528,6.518,529,6.188]],["t/1140",[42,6.255,54,2.674,518,3.406,529,3.962]],["t/1142",[54,2.095,71,3.693,191,3.799,530,5.479,531,5.479]],["t/1144",[54,1.263,85,1.833,246,1.774,319,2.562,532,3.304,533,3.304,534,3.304,535,3.304,536,3.304,537,3.304,538,2.798]],["t/1146",[54,2.353,539,5.715,540,4.206,541,5.21]],["t/1148",[54,1.888,111,4.585,246,2.65,277,4.18,542,4.585,543,4.937]],["t/1150",[54,3.122,444,5.58]],["t/1152",[54,2.095,168,3.991,243,4.831,544,5.088,545,5.479]],["t/1154",[54,2.683,365,4.135,546,7.018]],["t/1156",[54,1.888,317,3.829,450,4.585,547,4.937,548,4.937,549,4.937]],["t/1158",[54,2.095,85,3.039,246,2.941,550,4.358,551,3.922]],["t/1160",[503,4.831,550,4.358,552,5.088,553,3.858,554,4.358]],["t/1162",[54,2.683,85,3.892,555,7.018]],["t/1164",[54,2.683,551,5.023,556,5.442]],["t/1166",[54,2.683,273,6.188,508,4.866]],["t/1168",[34,6.518,35,6.188,54,2.683]],["t/1170",[54,3.122,557,8.165]],["t/1172",[37,4.006,54,2.683,558,6.518]],["t/1174",[54,2.683,100,5.023,559,7.018]],["t/1176",[0,3.072,213,4.18,214,3.927,439,4.042,540,3.374,560,4.18]],["t/1178",[37,3.513,52,4.267,53,4.405,561,5.715]],["t/1180",[0,4.366,16,4.612,540,4.796]],["t/1182",[54,3.122,562,8.165]],["t/1184",[93,3.948,107,4.612,236,4.612]],["t/1186",[16,6.414]],["t/1188",[12,4.068,93,4.574,107,3.601,236,3.601]],["t/1190",[54,2.353,365,3.625,541,5.21,563,6.153]],["t/1192",[54,3.731]],["t/1194",[54,2.095,100,3.922,155,2.546,246,2.941,564,4.248]],["t/1196",[54,2.353,85,3.413,154,3.951,565,6.153]],["t/1198",[12,4.569,30,5.715,31,3.513,32,4.333]],["t/1200",[90,4.442]],["t/1201",[566,7.568]],["t/1203",[90,2.8,113,4.095,566,4.772,567,6.153]],["t/1205",[90,3.194,113,4.67,566,5.442]],["t/1207",[90,3.716,568,6.913]],["t/1209",[90,3.701,236,3.601,540,3.744,569,4.358]],["t/1211",[90,2.045,254,3.406,505,5.922,569,3.574,570,4.173,571,3.679]],["t/1213",[70,2.978,103,3.127,572,5.479,573,4.831,574,4.358]],["t/1215",[90,3.183,131,3.336,554,3.574,575,3.406,576,4.493,577,4.173]],["t/1217",[90,2.247,575,3.742,578,4.18,579,4.937,580,4.585,581,4.937]],["t/1219",[90,2.63,122,2.744,513,2.996,582,3.539,583,3.539,584,3.286,585,3.286,586,3.286,587,3.286]],["t/1221",[45,3.996,74,3.791,90,2.8,588,5.715]],["t/1223",[90,2.493,113,3.646,176,4.831,566,4.248,589,5.088]],["t/1225",[29,2.147,39,2.779,90,1.876,107,2.709,113,2.743,240,3.375,499,3.375,590,3.635]],["t/1227",[90,3.194,591,6.188,592,7.018]],["t/1229",[74,2.036,237,2.705,241,1.98,246,1.774,365,1.947,406,2.017,514,2.705,573,2.914,593,2.914,594,3.069,595,2.914]],["t/1231",[28,5.58,515,5.186]],["t/1232",[131,6.062,596,7.583]],["t/1234",[85,2.287,100,2.951,365,2.429,515,2.618,540,2.818,569,3.279,596,3.829,597,4.122]],["t/1236",[74,5.454,515,3.908,540,4.206]],["t/1238",[29,2.854,45,3.558,74,3.375,515,3.48,598,4.358]],["t/1240",[185,6.062,343,4.529]],["t/1242",[37,2.818,52,3.424,53,3.534,73,2.346,587,6.984]],["t/1244",[301,4.037,599,6.518,600,5.442]],["t/1246",[12,4.569,45,3.996,73,2.924,601,5.715]],["t/1248",[54,2.353,139,4.895,165,4.206,185,4.569]],["t/1250",[54,1.888,165,3.374,246,2.65,564,3.829,602,4.354,603,4.937]],["t/1252",[54,1.888,122,3.829,165,3.374,185,3.666,570,4.585,571,4.042]],["t/1254",[101,2.459,103,2.565,149,3.804,165,3.071,185,3.336,360,5.726]],["t/1256",[28,2.818,54,1.576,74,2.54,145,2.618,515,2.618,600,3.197,604,3.375,605,4.122]],["t/1258",[37,5.571]],["t/1259",[41,3.996,52,4.267,53,4.405,82,4.148]],["t/1261",[37,3.513,501,5.21,606,5.038,607,6.153]],["t/1263",[74,3.791,588,5.715,608,6.153,609,5.21]],["t/1265",[499,5.038,518,4.664,610,5.715,611,5.715]],["t/1267",[90,3.422,91,4.585,92,3.597,553,3.477,612,4.937]],["t/1269",[37,3.127,54,2.095,405,4.358,491,4.068,492,3.799]],["t/1271",[37,4.006,43,3.767,342,5.746]],["t/1273",[85,2.492,90,2.045,390,2.918,499,3.679,508,3.116,568,3.804,613,4.493]],["t/1275",[90,2.358,232,2.879,236,2.037,544,4.811,580,2.879,614,3.099,615,2.733,616,3.099,617,2.879,618,3.099]],["t/1277",[39,4.731,93,3.948,619,6.518]],["t/1279",[73,4.638]],["t/1280",[54,2.683,246,3.767,620,7.018]],["t/1282",[31,4.006,99,4.558,621,4.942]],["t/1284",[172,6.062,173,3.811]],["t/1286",[59,4.181,622,8.165]],["t/1288",[31,2.565,54,1.718,219,3.406,465,3.336,590,3.962,599,4.173,623,3.962]],["t/1290",[45,3.558,73,3.864,74,3.375,79,3.518]],["t/1292",[31,3.127,321,4.153,409,4.639,623,4.831,624,5.479]],["t/1294",[54,3.122,625,7.583]],["t/1296",[73,1.473,149,2.624,365,1.826,423,2.403,519,1.434,601,2.879,626,4.811,627,2.733,628,2.879,629,3.099,630,2.624]],["t/1298",[28,1.995,45,3.199,73,1.387,85,1.619,163,2.024,501,2.471,515,1.854,606,2.389,631,4.925,632,2.918,633,2.573]],["t/1300",[73,1.31,423,2.138,437,2.431,519,3.348,521,1.942,553,1.942,634,3.843,635,2.757,636,2.757,637,2.757]],["t/1302",[61,1.963,71,2.386,73,1.682,163,2.454,343,1.963,553,2.492,638,3.286,639,2.682,640,3.286,641,3.539]],["t/1304",[29,2.147,170,3.635,173,1.924,254,3.125,642,4.122,643,3.829,644,3.829,645,3.491]],["t/1306",[19,2.336,73,1.959,79,2.647,139,3.279,141,3.491,143,3.197,145,2.618,406,2.516]],["t/1308",[92,5.948,646,7.583]],["t/1310",[73,2.924,85,3.413,321,4.664,647,6.153]],["t/1312",[31,2.174,73,1.81,99,2.473,131,2.827,529,3.358,540,2.603,553,2.682,648,3.808,649,2.887]],["t/1314",[73,2.924,336,4.569,355,4.267,444,4.206]],["t/1316",[92,5.112,646,6.518,650,7.018]],["t/1318",[73,1.959,238,3.375,571,3.375,651,3.829,652,4.122,653,3.635,654,4.122,655,3.829]],["t/1320",[54,1.888,127,3.245,154,3.17,604,4.042,621,3.477,656,4.937]],["t/1322",[167,4.206,657,6.518,658,6.188]],["t/1324",[164,4.354,167,2.959,657,4.585,658,4.354,659,3.534,660,4.585]],["t/1326",[87,2.471,235,3.003,307,3.279,406,2.516,482,3.375,598,3.279,661,4.122,662,4.122]],["t/1328",[519,4.517]],["t/1329",[54,3.122,519,3.779]],["t/1331",[52,2.454,162,1.747,321,2.682,406,2.159,519,2.675,540,2.418,663,3.286,664,2.996,665,3.539]],["t/1333",[71,2.228,173,1.543,219,2.505,254,2.505,298,2.562,519,1.529,553,2.327,558,3.069,666,3.069,667,3.304,668,3.304]],["t/1335",[7,2.818,165,3.374,519,2.285,521,5.295,669,4.937]],["t/1337",[165,3.744,519,2.536,521,3.858,670,5.479,671,5.479]],["t/1339",[61,2.738,163,3.424,519,2.285,520,3.666,606,4.042,672,4.585]],["t/1341",[519,3.779,673,7.199]],["t/1343",[73,2.346,519,2.285,553,3.477,598,3.927,638,4.585,674,4.042]],["t/1345",[168,3.273,519,2.079,591,3.962,606,3.679,675,3.216,676,4.173,677,4.173]],["t/1347",[45,2.918,52,4.85,54,1.718,73,2.135,505,3.804,519,2.079]],["t/1349",[52,1.499,59,1.107,73,1.806,170,1.906,173,1.009,246,1.16,365,1.273,513,4.308,519,1,569,1.719,571,1.769,604,1.769,634,1.769,678,2.161,679,3.801]],["t/1351",[131,3.666,519,2.285,520,3.666,575,3.742,598,3.927,680,3.245]],["t/1353",[155,4.536]],["t/1354",[155,4.536]],["t/1356",[155,3.795,625,7.583]],["t/1358",[83,3.255,155,2.546,246,2.941,254,4.153,519,2.536]],["t/1360",[83,3.255,155,2.546,246,2.941,519,2.536,681,4.153]],["t/1362",[99,3.996,154,3.951,155,2.86,518,4.664]],["t/1364",[155,3.795,682,7.583]],["t/1366",[519,3.248,683,5.582,684,5.942]],["t/1368",[52,4.267,53,4.405,77,4.405,685,6.153]],["t/1370",[73,2.135,154,2.885,155,2.088,343,2.492,465,3.336,621,3.164,686,4.493]],["t/1372",[155,3.795,332,5.131]],["t/1374",[155,2.546,332,3.443,687,5.088,688,5.088,689,5.479]],["t/1376",[155,2.86,260,5.21,690,5.715,691,5.426]],["t/1378",[155,3.795,208,7.583]],["t/1380",[10,4.283,301,4.037,343,3.892]],["t/1382",[10,2.742,155,2.088,219,3.406,236,2.953,301,2.585,332,2.824,683,3.574]],["t/1384",[113,3.646,117,3.693,447,4.358,683,4.358,692,5.479]],["t/1386",[10,4.283,683,5.582,693,7.018]],["t/1388",[10,3.755,167,3.688,169,5.715,694,5.21]],["t/1390",[10,4.983,695,8.165]],["t/1392",[31,3.992,61,2.492,155,2.088,518,3.406,681,3.406,696,4.493]],["t/1394",[155,2.546,235,3.991,332,3.443,682,5.088,697,5.088]],["t/1396",[135,3.635,141,3.491,155,1.916,156,2.779,332,2.591,604,3.375,698,4.122,699,4.122]],["t/1398",[12,6.062,700,6.494]],["t/1400",[155,3.78,571,4.485,677,5.088,700,4.358]],["t/1402",[116,3.597,519,2.285,684,4.18,700,3.927,701,4.354,702,3.666]],["t/1404",[154,3.518,246,2.941,540,3.744,569,4.358,700,4.358]],["t/1406",[77,3.922,155,2.546,700,4.358,703,5.479,704,5.479]],["t/1408",[54,2.683,538,5.942,705,6.518]],["t/1410",[54,1.888,604,4.042,639,3.742,705,4.585,706,4.937,707,4.937]],["t/1412",[466,4.248,708,5.479,709,5.479,710,5.479,711,5.479]],["t/1414",[73,3.88,110,7.199]],["t/1416",[110,5.426,155,2.86,465,4.569,712,5.715]],["t/1418",[83,2.933,155,2.295,162,2.437,246,4.036,713,4.354]],["t/1420",[155,2.546,355,3.799,713,4.831,714,4.358,715,4.153]],["t/1422",[54,2.095,85,3.039,155,2.546,165,3.744,683,4.358]],["t/1424",[63,5.023,716,6.188,717,7.018]],["t/1426",[155,2.295,466,3.829,674,4.042,675,3.534,715,3.742,718,4.937]],["t/1428",[155,2.546,162,2.705,719,5.479,720,5.479,721,5.088]],["t/1430",[99,3.558,126,4.153,127,3.601,522,4.248,621,3.858]],["t/1432",[83,2.67,99,2.918,155,2.088,246,2.412,519,2.079,522,3.484,722,4.493]],["t/1434",[155,2.86,191,4.267,433,4.405,442,3.867]],["t/1436",[26,5.58,723,8.165]],["t/1437",[26,3.744,203,4.639,360,4.485,564,4.248,724,5.088]],["t/1439",[26,4.796,360,5.746,725,6.518]],["t/1441",[406,4.283,433,5.023,726,7.018]],["t/1443",[85,2.287,165,2.818,185,3.061,246,2.213,411,2.818,609,3.491,727,3.829,728,3.635]],["t/1445",[241,3.283,365,3.228,729,4.831,730,4.831,731,3.693]],["t/1447",[59,3.151,90,2.8,149,5.21,506,5.21]],["t/1449",[19,2.336,54,1.576,73,1.959,85,2.287,141,3.491,143,3.197,145,2.618,406,2.516]],["t/1451",[54,1.718,83,2.67,156,3.029,248,4.155,365,2.647,732,4.173]],["t/1453",[87,3.688,269,4.772,406,3.755,411,4.206]],["t/1455",[86,3.927,87,2.959,88,3.374,163,3.424,439,4.042,540,3.374]],["t/1457",[87,3.283,131,4.068,153,4.485,406,3.343,733,5.479]],["t/1459",[52,3.424,53,3.534,54,3.482,734,4.937]],["t/1461",[143,3.829,246,2.65,451,4.18,735,4.937,736,4.585,737,4.937]],["t/1463",[538,5.942,666,6.518,738,7.018]],["t/1465",[256,9.064]],["t/1467",[246,3.767,739,7.018,740,7.018]],["t/1469",[126,3.125,177,3.829,259,3.635,460,3.491,503,3.635,552,3.829,553,2.903,554,3.279]],["t/1473",[8,4.733,118,6.494]],["t/1481",[54,2.353,451,5.21,627,5.426,716,5.426]],["t/1485",[741,9.76]],["t/1487",[61,3.892,742,5.582,743,7.018]],["t/1489",[54,2.353,70,3.345,71,4.148,744,5.21]],["t/1491",[61,3.892,125,4.411,745,6.188]],["t/1493",[61,3.413,162,3.038,649,4.664,742,4.895]],["t/1495",[61,3.413,162,3.038,702,4.569,742,4.895]],["t/1497",[61,3.892,73,3.335,301,4.037]],["t/1499",[61,4.529,746,8.165]],["t/1501",[508,5.662,747,8.165]],["t/1503",[201,8.264]],["t/1507",[27,7.568]],["t/1508",[32,6.872]],["t/1510",[61,4.529,748,8.165]],["t/1512",[54,3.122,627,7.199]],["t/1514",[321,5.319,749,6.188,750,7.018]],["t/1516",[73,3.88,451,6.913]],["t/1520",[101,3.367,189,4.405,751,5.426,752,6.153]],["t/1522",[93,3.461,103,3.513,107,4.044,751,5.426]],["t/1523",[101,3.367,103,3.513,214,4.895,753,4.895]],["t/1525",[63,4.405,103,5.053,753,4.895]],["t/1527",[103,3.513,241,3.688,751,5.426,753,4.895]],["t/1529",[103,3.127,731,3.693,753,4.358,754,5.479,755,5.479]],["t/1531",[241,3.688,433,4.405,714,4.895,756,5.21]],["t/1533",[22,4.153,101,2.998,241,3.283,757,5.479,758,5.479]],["t/1535",[759,7.99]],["t/1539",[32,4.942,602,6.188,749,6.188]],["t/1541",[117,4.731,268,5.942,602,6.188]],["t/1543",[760,7.018,761,7.018,762,7.018]],["t/1545",[117,5.504,763,8.165]],["t/1547",[61,3.892,117,4.731,268,5.942]],["t/1563",[61,3.413,125,3.867,248,3.656,745,5.426]],["t/1565",[63,4.405,64,4.895,649,4.664,742,4.895]],["t/1567",[63,4.405,64,4.895,742,4.895,764,5.426]],["t/1569",[64,6.494,66,7.199]],["t/1571",[64,4.895,66,5.426,294,4.895,365,3.625]],["t/1577",[103,2.818,145,3.136,173,2.305,186,4.042,765,4.042,766,3.927]],["t/1578",[173,2.305,186,4.042,241,2.959,314,4.585,765,4.042,766,3.927]],["t/1579",[63,4.405,173,2.873,731,4.148,766,4.895]],["t/1581",[767,5.303,768,6.685]],["t/1582",[551,5.023,680,4.612,769,7.018]],["t/1583",[173,2.558,294,4.358,765,4.485,766,4.358,770,4.485]],["t/1584",[165,3.744,173,2.558,766,4.358,771,4.248,772,5.479]],["t/1585",[167,3.688,173,2.873,766,4.895,773,5.715]],["t/1589",[85,2.287,166,2.54,173,1.924,461,4.467,664,3.491,774,2.677,775,3.829]],["t/1591",[166,4.324,192,5.023,776,5.746]],["t/1593",[17,4.068,125,3.443,246,2.941,776,4.485,777,4.831]],["t/1595",[54,2.095,125,3.443,246,2.941,776,4.485,778,4.485]],["t/1597",[16,3.601,125,3.443,246,2.941,776,4.485,779,5.088]],["t/1599",[167,3.688,173,2.873,355,4.267,780,5.426]],["t/1602",[60,6.199]],["t/1604",[781,9.064]],["t/1606",[79,6.267]],["t/1607",[70,4.439,782,8.165]],["t/1609",[160,6.494]],["t/1611",[40,7.11]],["t/1613",[83,5.799]],["t/1615",[160,6.494]],["t/1617",[40,7.11]],["t/1620",[60,6.199]],["t/1622",[160,6.494]],["t/1624",[160,4.67,248,4.17,347,5.942]],["t/1626",[160,4.67,162,3.465,173,3.276]],["t/1628",[161,5.942,173,3.276,630,5.942]],["t/1630",[40,5.112,160,4.67,173,3.276]],["t/1632",[783,9.064]],["t/1634",[160,4.095,784,5.21,785,5.715,786,5.715]],["t/1636",[40,3.003,160,2.743,173,1.924,523,3.635,575,3.125,786,3.829,787,3.491,788,3.829]],["t/1638",[161,4.18,173,2.305,575,3.742,630,4.18,784,4.18,789,4.354]],["t/1640",[40,3.597,160,3.285,167,2.959,575,3.742,787,4.18,789,4.354]],["t/1642",[73,2.346,161,4.18,173,2.305,343,2.738,630,4.18,784,4.18]],["t/1644",[40,3.273,73,2.135,154,2.885,160,2.99,173,2.098,343,2.492,787,3.804]],["t/1646",[160,2.743,162,2.035,163,2.859,173,1.924,575,3.125,784,3.491,787,3.491,788,3.829]],["t/1649",[60,6.199]],["t/1651",[790,7.99]],["t/1653",[252,6.986]],["t/1654",[502,7.99]],["t/1656",[252,5.844,791,5.58]],["t/1658",[61,3.892,125,4.411,745,6.188]],["t/1660",[61,4.529,640,7.583]],["t/1662",[137,6.331,252,5.844]],["t/1664",[61,3.892,332,4.411,792,5.746]],["t/1666",[61,3.892,99,4.558,792,5.746]],["t/1668",[79,5.243,99,5.303]],["t/1670",[83,4.851,99,5.303]],["t/1672",[61,3.892,519,3.248,792,5.746]],["t/1674",[79,5.243,519,3.779]],["t/1676",[83,4.851,519,3.779]],["t/1678",[93,4.593,405,6.494]],["t/1680",[61,3.892,99,4.558,792,5.746]],["t/1682",[61,3.892,519,3.248,792,5.746]],["t/1686",[61,5.413]],["t/1688",[61,3.413,125,3.867,252,4.405,793,5.21]],["t/1690",[61,3.413,162,3.038,649,4.664,742,4.895]],["t/1692",[519,4.517]],["t/1694",[78,7.199,519,3.779]],["t/1696",[145,4.457,155,3.262,675,5.023]],["t/1698",[675,5.023,774,4.558,794,6.188]],["t/1700",[155,3.795,332,5.131]],["t/1702",[155,3.795,519,3.779]],["t/1704",[155,3.262,519,3.248,520,5.21]],["t/1706",[201,8.264]],["t/1710",[125,5.131,778,6.685]],["t/1712",[54,2.683,125,4.411,778,5.746]],["t/1714",[365,5.75]],["t/1716",[795,9.064]],["t/1718",[16,4.612,166,4.324,765,5.746]],["t/1720",[138,7.763]],["t/1722",[796,7.583,797,7.583]],["t/1724",[16,5.366,406,4.983]],["t/1726",[798,9.064]],["t/1730",[125,5.131,778,6.685]],["t/1732",[54,2.683,125,4.411,778,5.746]],["t/1734",[365,5.75]],["t/1736",[795,9.064]],["t/1738",[16,4.612,166,4.324,765,5.746]],["t/1740",[138,7.763]],["t/1742",[796,7.583,797,7.583]],["t/1744",[16,5.366,406,4.983]],["t/1746",[798,9.064]],["t/1748",[799,7.583,800,8.165]],["t/1750",[714,6.494,801,8.165]],["t/1752",[540,4.796,714,5.582,802,7.018]],["t/1754",[551,5.844,803,8.165]],["t/1759",[166,4.324,793,5.942,804,7.018]],["t/1761",[49,6.768]],["t/1763",[162,4.031,173,3.811]],["t/1765",[166,5.03,774,5.303]],["t/1767",[166,5.03,200,6.685]],["t/1769",[154,6.267]],["t/1771",[162,4.031,173,3.811]],["t/1773",[173,3.276,461,4.796,805,7.018]],["t/1775",[192,5.844,806,7.583]],["t/1777",[442,5.131,807,7.583]],["t/1779",[191,5.662,442,5.131]],["t/1783",[63,5.023,101,5.315]],["t/1785",[100,4.405,101,3.367,103,3.513,756,5.21]],["t/1787",[101,2.998,241,3.283,808,5.479,809,5.479,810,5.479]],["t/1789",[25,3.721,41,3.996,101,3.367,731,4.148]],["t/1791",[101,2.702,220,3.534,319,3.829,767,3.207,811,3.742,812,4.354]],["t/1793",[29,2.854,101,2.998,680,3.601,813,5.479,814,5.088]],["t/1795",[88,3.374,101,2.702,770,4.042,815,4.585,816,4.354,817,4.042]],["t/1797",[101,3.367,107,4.044,771,4.772,818,6.153]],["t/1799",[42,3.597,101,4.115,113,3.285,771,3.829,819,4.937]],["t/1801",[42,3.597,101,2.702,103,2.818,259,4.354,771,3.829,820,4.354]],["t/1803",[101,3.367,225,5.21,241,3.688,771,4.772]],["t/1805",[759,7.99]],["t/1809",[54,3.122,60,5.186]],["t/1811",[213,8.264]],["t/1813",[821,9.76]],["t/1815",[145,5.186,675,5.844]],["t/1817",[83,4.17,145,4.457,675,5.023]],["t/1819",[509,5.303,675,5.844]],["t/1821",[83,5.799]],["t/1823",[528,7.583,675,5.844]],["t/1827",[274,5.749,822,7.583]],["t/1829",[70,4.439,274,5.749]],["t/1831",[823,6.913,824,6.913]],["t/1833",[57,5.942,823,5.942,824,5.942]],["t/1835",[825,8.165,826,7.583]],["t/1837",[827,9.064]],["t/1839",[282,8.264]],["t/1841",[88,4.796,271,5.942,298,5.442]],["t/1843",[46,3.375,88,2.818,271,3.491,282,5.534,298,3.197,465,3.061,828,4.122]],["t/1845",[551,5.844,556,6.331]],["t/1847",[127,5.366,398,6.494]],["t/1849",[127,5.366,387,6.494]],["t/1853",[345,5.948,829,8.165]],["t/1855",[345,5.948,768,6.685]],["t/1857",[345,5.948,774,5.303]],["t/1859",[774,5.303,830,7.583]],["t/1861",[768,6.685,774,5.303]],["t/1863",[166,5.03,590,7.199]],["t/1865",[768,6.685,774,5.303]],["t/1867",[166,5.03,774,5.303]],["t/1869",[166,5.03,200,6.685]],["t/1871",[162,4.031,173,3.811]],["t/1873",[167,4.893,173,3.811]],["t/1875",[4,5.131,831,8.165]],["t/1877",[63,5.844,716,7.199]],["t/1879",[200,6.685,830,7.583]],["t/1881",[167,4.893,832,8.165]],["t/1885",[162,4.031,166,5.03]],["t/1887",[166,3.791,360,5.038,833,6.153,834,5.715]],["t/1889",[17,4.068,125,3.443,246,2.941,564,4.248,777,4.831]],["t/1891",[16,3.601,125,3.443,246,2.941,779,5.088,835,5.479]],["t/1893",[166,5.984,774,4.558]],["t/1894",[17,4.569,125,3.867,246,3.303,777,5.426]],["t/1896",[16,5.366,246,4.382]],["t/1898",[154,3.518,166,3.375,621,3.858,774,3.558,836,5.479]],["t/1900",[54,2.353,99,3.996,154,3.951,621,4.333]],["t/1904",[355,5.662,837,8.165]],["t/1906",[838,7.583,839,8.165]],["t/1908",[145,5.186,840,8.165]],["t/1910",[28,4.796,355,4.866,515,4.457]],["t/1912",[189,5.844,841,8.165]],["t/1914",[76,6.494,538,6.913]],["t/1916",[842,9.064]],["t/1918",[653,7.199,655,7.583]],["t/1920",[843,8.165,844,8.165]],["t/1922",[238,7.99]],["t/1924",[16,4.612,406,4.283,845,7.018]],["t/1926",[59,4.181,768,6.685]],["t/1928",[70,3.815,71,4.731,73,3.335]],["t/1930",[162,4.031,173,3.811]],["t/1932",[173,3.276,261,4.866,846,6.518]],["t/1934",[192,5.844,806,7.583]],["t/1936",[116,5.948,189,5.844]],["t/1938",[167,4.893,173,3.811]],["t/1940",[516,8.264]],["t/1943",[60,6.199]],["t/1945",[847,6.685,848,8.165]],["t/1947",[54,3.122,127,5.366]],["t/1949",[849,8.165,850,7.583]],["t/1951",[851,7.018,852,6.518,853,6.518]],["t/1953",[852,6.518,854,7.018,855,5.942]],["t/1955",[853,9.064]],["t/1957",[855,8.264]],["t/1959",[301,3.54,404,5.426,405,4.895,406,3.755]],["t/1961",[18,5.112,461,4.796,856,7.018]],["t/1963",[18,5.112,54,2.683,857,7.018]],["t/1965",[858,9.064]],["t/1967",[301,3.54,323,4.148,411,4.206,859,6.153]],["t/1969",[323,4.148,371,4.405,411,4.206,860,6.153]],["t/1973",[59,4.181,60,5.186]],["t/1975",[60,5.186,189,5.844]],["t/1977",[16,4.612,189,5.023,433,5.023]],["t/1979",[504,9.064]],["t/1981",[162,4.031,173,3.811]],["t/1983",[167,4.893,173,3.811]],["t/1985",[192,5.844,814,7.583]],["t/1987",[192,6.986]],["t/1989",[191,5.662,442,5.131]],["t/1991",[173,3.811,323,5.504]],["t/1993",[442,5.131,807,7.583]],["t/1995",[191,5.662,442,5.131]],["t/1997",[167,4.893,861,7.583]],["t/2005",[847,7.99]],["t/2007",[341,6.913,847,6.685]],["t/2008",[54,2.683,248,4.17,365,4.135]],["t/2010",[54,2.353,127,4.044,365,3.625,847,5.038]],["t/2012",[59,2.806,168,3.991,205,4.639,862,4.485,863,5.479]],["t/2014",[246,4.382,847,6.685]],["t/2016",[117,4.731,162,3.465,411,4.796]],["t/2018",[59,3.594,301,4.037,390,4.558]],["t/2020",[59,3.594,168,5.112,816,6.188]],["t/2022",[220,5.023,423,5.442,816,6.188]],["t/2024",[117,3.693,162,2.705,403,3.991,411,3.744,864,5.088]],["t/2026",[117,4.731,411,4.796,429,6.188]],["t/2030",[185,5.21,509,4.558,855,5.942]],["t/2032",[125,3.867,248,3.656,332,3.867,865,4.895]],["t/2034",[54,1.888,125,3.103,127,3.245,246,2.65,332,3.103,865,3.927]],["t/2036",[125,3.867,332,3.867,365,3.625,865,4.895]],["t/2037",[101,4.468,345,5.948]],["t/2039",[103,4.661,345,5.948]],["t/2043",[73,3.88,162,4.031]],["t/2045",[73,3.335,155,3.262,162,3.465]],["t/2047",[155,3.795,332,5.131]],["t/2049",[155,3.795,336,6.062]],["t/2051",[155,3.262,301,4.037,866,5.319]],["t/2053",[70,4.439,155,3.795]],["t/2055",[77,5.844,155,3.795]],["t/2057",[352,6.062,508,5.662]],["t/2060",[158,9.064]],["t/2062",[59,4.181,164,7.199]],["t/2064",[867,8.606]],["t/2066",[17,6.062,202,6.331]],["t/2068",[248,4.851,509,5.303]],["t/2070",[140,7.583,248,4.851]],["t/2072",[248,4.851,556,6.331]],["t/2074",[509,5.303,868,7.583]],["t/2076",[127,6.414]],["t/2078",[511,5.038,774,3.996,794,5.426,869,6.153]],["t/2080",[83,5.799]],["t/2082",[355,6.768]],["t/2084",[155,3.262,411,4.796,794,6.188]],["t/2086",[133,6.518,155,3.262,447,5.582]],["t/2089",[60,6.199]],["t/2091",[125,4.411,248,4.17,260,5.942]],["t/2092",[870,6.986]],["t/2094",[49,5.662,248,4.851]],["t/2096",[156,5.504,862,6.685]],["t/2098",[32,5.749,59,4.181]],["t/2100",[76,6.494,274,5.749]],["t/2102",[162,3.465,823,5.942,824,5.942]],["t/2104",[57,5.21,162,3.038,823,5.21,824,5.21]],["t/2106",[273,7.199,274,5.749]],["t/2108",[163,5.662,274,5.749]],["t/2110",[154,4.506,511,5.746,621,4.942]],["t/2112",[274,5.749,302,6.494]],["t/2114",[85,3.413,159,4.267,274,4.333,433,4.405]],["t/2116",[268,5.942,269,5.442,674,5.746]],["t/2118",[125,4.411,260,5.942,352,5.21]],["t/2120",[827,9.064]],["t/2122",[160,6.494]],["t/2124",[282,8.264]],["t/2126",[88,4.796,271,5.942,298,5.442]],["t/2129",[60,6.199]],["t/2130",[]],["t/2132",[159,5.662,460,6.913]],["t/2134",[70,4.439,71,5.504]],["t/2136",[352,7.246]],["t/2144",[47,5.426,54,2.353,871,5.038,872,6.153]],["t/2146",[248,5.799]],["t/2148",[495,5.942,873,7.018,874,7.018]],["t/2150",[127,6.414]],["t/2152",[365,5.75]],["t/2154",[294,7.763]],["t/2156",[377,7.568]],["t/2158",[269,4.772,688,5.715,721,5.715,875,6.153]],["t/2164",[143,6.331,862,6.685]],["t/2166",[19,3.976,83,4.17,156,4.731]],["t/2168",[162,3.038,519,2.848,639,4.664,649,4.664]],["t/2170",[519,2.848,520,4.569,639,4.664,649,4.664]],["t/2172",[519,3.779,521,5.749]],["t/2174",[162,3.038,519,2.848,639,4.664,702,4.569]],["t/2176",[519,2.848,520,4.569,639,4.664,702,4.569]],["t/2178",[162,3.038,355,4.267,519,2.848,523,5.426]],["t/2180",[524,7.583,525,7.583]],["t/2182",[2,6.199]],["t/2184",[553,3.858,554,4.358,876,5.088,877,4.831,878,5.088]],["t/2186",[553,3.858,554,4.358,877,4.831,878,5.088,879,4.639]],["t/2188",[61,3.039,519,2.536,520,4.068,672,5.088,879,4.639]],["t/2190",[482,4.485,519,2.536,520,4.068,575,4.153,879,4.639]],["t/2192",[519,3.237,520,3.336,521,3.164,876,4.173,879,3.804,880,3.962]],["t/2194",[35,6.188,173,3.276,881,7.018]],["t/2196",[482,5.038,519,2.848,701,5.426,749,5.426]],["t/2198",[118,6.494,262,6.913]],["t/2202",[502,7.99]],["t/2204",[252,5.844,495,6.913]],["t/2206",[162,4.031,882,6.685]],["t/2208",[127,5.366,744,6.913]],["t/2210",[352,6.062,495,6.913]],["t/2212",[145,5.186,882,6.685]],["t/2214",[54,2.683,73,3.335,145,4.457]],["t/2216",[159,4.866,163,4.866,515,4.457]],["t/2218",[159,4.866,163,4.866,882,5.746]],["t/2220",[29,3.655,37,4.006,343,3.892]],["t/2222",[127,5.366,883,8.165]],["t/2224",[37,4.006,884,5.746,885,5.746]],["t/2230",[73,3.88,162,4.031]],["t/2232",[73,3.335,155,3.262,162,3.465]],["t/2234",[155,3.795,332,5.131]],["t/2236",[155,3.795,461,5.58]],["t/2238",[155,3.262,301,4.037,866,5.319]],["t/2240",[117,4.731,301,4.037,866,5.319]],["t/2242",[301,4.037,447,5.582,866,5.319]],["t/2244",[301,4.037,866,5.319,886,7.018]],["t/2246",[163,4.866,343,3.892,866,5.319]],["t/2248",[77,5.844,155,3.795]],["t/2250",[352,6.062,508,5.662]],["t/2256",[101,3.84,252,5.023,744,5.942]],["t/2267",[70,3.815,173,3.276,887,6.518]],["t/2269",[85,4.529,516,6.913]],["t/2271",[16,5.366,317,6.331]],["t/2273",[76,6.494,252,5.844]],["t/2275",[76,6.494,173,3.811]],["t/2277",[442,5.131,846,7.583]],["t/2279",[33,5.131,442,5.131]],["t/2281",[888,9.76]],["t/2283",[33,5.131,442,5.131]],["t/2285",[442,5.131,673,7.199]],["t/2287",[201,8.264]],["t/2291",[101,3.367,220,4.405,731,4.148,774,3.996]],["t/2293",[22,4.664,103,3.513,220,4.405,731,4.148]],["t/2295",[22,3.742,101,2.702,103,2.818,220,3.534,731,3.328,889,4.354]],["t/2299",[353,6.062,890,7.583]],["t/2300",[100,5.023,353,5.21,891,7.018]],["t/2302",[85,3.039,353,4.068,406,3.343,892,5.479,893,4.831]],["t/2304",[79,5.243,890,7.583]],["t/2305",[19,3.104,85,3.039,353,4.068,406,3.343,893,4.831]],["t/2307",[24,7.763]],["t/2308",[23,6.494,79,5.243]],["t/2309",[79,3.951,269,4.772,436,4.664,894,6.153]],["t/2311",[79,3.17,85,2.738,353,3.666,436,3.742,893,4.354,895,4.354]],["t/2313",[74,6.013]],["t/2314",[154,3.518,353,4.068,896,5.088,897,5.479,898,5.088]],["t/2316",[85,3.039,353,4.068,634,4.485,899,4.485,900,5.479]],["t/2318",[18,3.597,353,3.666,369,3.742,896,4.585,899,4.042,901,4.937]],["t/2322",[82,4.731,902,7.018,903,6.518]],["t/2324",[82,3.693,343,3.039,491,4.068,492,3.799,904,5.479]],["t/2326",[93,3.461,107,4.044,343,3.413,905,6.153]],["t/2328",[115,4.324,189,5.023,906,7.018]],["t/2330",[189,5.023,907,7.018,908,4.457]],["t/2332",[90,3.194,115,4.324,909,7.018]],["t/2334",[90,3.194,908,4.457,910,7.018]],["t/2338",[90,2.8,301,3.54,574,4.895,911,6.153]],["t/2340",[90,3.194,390,4.558,912,7.018]],["t/2342",[90,3.716,913,8.165]],["t/2344",[90,3.194,574,5.582,914,7.018]],["t/2346",[356,6.494,357,6.331]],["t/2348",[90,3.194,887,6.518,915,7.018]],["t/2350",[90,2.8,371,4.405,574,4.895,916,6.153]],["t/2354",[93,3.948,107,4.612,236,4.612]],["t/2356",[70,3.815,172,5.21,173,3.276]],["t/2358",[43,5.238]],["t/2360",[917,9.76]],["t/2363",[88,4.206,113,4.095,498,4.206,566,4.772]],["t/2365",[107,4.044,239,5.715,343,3.413,918,6.153]],["t/2367",[90,2.8,105,4.772,870,4.405,919,5.715]],["t/2369",[90,2.8,566,4.772,589,5.715,920,6.153]],["t/2373",[31,4.661,511,6.685]],["t/2381",[48,6.986]],["t/2383",[235,5.112,870,5.023,921,7.018]],["t/2385",[96,5.038,101,3.367,659,4.405,922,5.715]],["t/2387",[28,3.744,96,4.485,103,3.127,659,3.922,922,5.088]],["t/2389",[28,4.206,96,5.038,241,3.688,659,4.405]],["t/2391",[28,3.374,31,2.818,96,4.042,235,3.597,659,3.534,731,3.328]],["t/2393",[235,5.948,923,8.165]],["t/2395",[29,4.253,793,6.913]],["t/2397",[33,5.131,659,5.844]],["t/2401",[924,9.76]],["t/2402",[925,9.76]],["t/2404",[926,9.76]],["t/2406",[927,9.76]],["t/2408",[343,4.529,574,6.494]],["t/2410",[343,4.529,505,6.913]],["t/2412",[7,4.661,90,3.716]],["t/2416",[101,3.84,103,4.006,928,7.018]],["t/2418",[94,5.426,103,5.053,929,6.153]],["t/2420",[103,4.006,241,4.206,930,7.018]],["t/2422",[759,7.99]],["t/2426",[126,6.189,870,5.844]],["t/2428",[122,6.331,931,5.844]],["t/2430",[90,3.194,932,7.018,933,7.018]],["t/2432",[248,5.799]],["t/2433",[83,4.851,246,4.382]],["t/2435",[556,7.568]],["t/2437",[729,6.188,730,6.188,731,4.731]],["t/2439",[744,8.264]],["t/2441",[574,6.494,822,7.583]],["t/2443",[83,5.799]],["t/2445",[79,6.267]],["t/2447",[76,6.494,934,7.583]],["t/2449",[935,8.264]],["t/2451",[24,7.763]],["t/2453",[509,6.338]],["t/2455",[248,3.656,339,5.715,626,5.715,936,6.153]],["t/2456",[556,7.568]],["t/2458",[248,4.851,732,7.583]],["t/2462",[86,6.494,937,8.165]],["t/2464",[37,3.513,90,2.8,343,3.413,508,4.267]],["t/2466",[90,2.247,157,4.585,615,4.354,931,3.534,938,4.937,939,4.937]],["t/2468",[225,8.264]],["t/2470",[90,2.045,236,2.953,871,3.679,940,4.493,941,3.962,942,4.493,943,4.493]],["t/2472",[26,3.374,90,3.422,236,3.245,871,4.042,944,4.585]],["t/2474",[82,4.731,512,6.188,870,5.023]],["t/2476",[88,4.206,343,3.413,811,4.664,931,4.405]],["t/2478",[343,2.492,498,3.071,553,3.164,591,3.962,619,4.173,931,3.216,945,4.493]],["t/2480",[90,2.247,92,3.597,343,2.738,633,4.354,715,3.742,931,3.534]],["t/2482",[219,5.319,225,5.942,236,4.612]],["t/2484",[52,3.424,85,2.738,90,2.247,514,4.042,728,4.354,931,3.534]],["t/2486",[107,2.953,246,2.412,498,3.071,586,4.173,697,4.173,789,3.962,941,3.962]],["t/2490",[37,4.006,113,4.67,870,5.023]],["t/2492",[26,4.796,729,6.188,730,6.188]],["t/2496",[903,9.064]],["t/2498",[946,9.76]],["t/2500",[660,9.064]],["t/2502",[355,6.768]],["t/2504",[74,4.324,947,7.018,948,7.018]],["t/2506",[949,9.76]],["t/2508",[736,9.064]],["t/2510",[600,6.331,950,8.165]],["t/2513",[214,5.582,343,3.892,951,5.746]],["t/2515",[130,7.199,951,6.685]],["t/2517",[951,6.685,952,8.165]],["t/2519",[811,6.189,951,6.685]],["t/2521",[90,3.194,92,5.112,343,3.892]],["t/2523",[90,3.194,92,5.112,323,4.731]],["t/2525",[85,3.413,92,4.483,953,6.153,954,6.153]],["t/2527",[92,3.991,955,5.479,956,4.831,957,5.479,958,5.088]],["t/2529",[174,8.606]],["t/2531",[498,5.58,959,7.583]],["t/2533",[8,3.176,130,4.831,262,4.639,498,3.744,960,5.088]],["t/2535",[41,4.558,97,6.188,961,7.018]],["t/2537",[97,6.188,196,5.023,962,7.018]],["t/2541",[214,5.582,343,3.892,951,5.746]],["t/2543",[168,4.483,216,5.038,956,5.426,963,6.153]],["t/2545",[102,4.639,186,4.485,498,3.744,960,5.088,964,5.088]],["t/2547",[498,5.58,959,7.583]],["t/2550",[577,9.064]],["t/2552",[728,8.606]],["t/2554",[514,6.685,965,8.165]],["t/2556",[90,2.8,941,5.426,944,5.715,966,6.153]],["t/2558",[90,3.194,236,4.612,871,5.746]],["t/2563",[93,3.948,343,3.892,931,5.023]],["t/2569",[19,5.53]],["t/2570",[254,5.319,519,3.248,967,6.518]],["t/2572",[519,3.248,681,5.319,968,5.942]],["t/2574",[519,3.248,521,4.942,969,5.582]],["t/2576",[519,3.779,970,7.199]],["t/2579",[60,6.199]],["t/2581",[790,7.99]],["t/2583",[252,6.986]],["t/2584",[502,7.99]],["t/2586",[701,7.199,971,8.165]],["t/2588",[793,8.264]],["t/2590",[83,4.851,341,6.913]],["t/2592",[93,4.593,162,4.031]],["t/2594",[332,5.131,791,5.58]],["t/2596",[93,3.948,301,4.037,791,4.796]],["t/2598",[791,5.58,972,6.913]],["t/2600",[341,6.913,355,5.662]],["t/2602",[93,4.593,162,4.031]],["t/2604",[116,5.112,264,4.731,774,4.558]],["t/2606",[332,5.131,791,5.58]],["t/2608",[93,3.948,301,4.037,791,4.796]],["t/2610",[791,5.58,972,6.913]],["t/2613",[29,4.253,973,8.165]],["t/2615",[29,3.655,203,5.942,870,5.023]],["t/2617",[974,8.606]],["t/2620",[975,9.064]],["t/2622",[976,9.76]],["t/2624",[343,4.529,363,6.331]],["t/2626",[977,9.76]],["t/2628",[19,3.976,156,4.731,978,6.518]],["t/2629",[33,3.867,70,3.345,371,4.405,372,4.895]],["t/2631",[372,6.494,979,7.583]],["t/2633",[118,5.582,372,5.582,406,4.283]],["t/2635",[8,4.733,862,6.685]],["t/2639",[19,5.53]],["t/2640",[519,3.248,521,4.942,969,5.582]],["t/2642",[519,3.248,521,4.942,969,5.582]],["t/2644",[7,3.513,48,4.405,519,2.848,980,5.715]],["t/2646",[162,3.038,323,4.148,519,2.848,981,5.715]],["t/2648",[519,3.779,982,7.583]],["t/2650",[519,3.779,970,7.199]],["t/2652",[519,3.248,983,6.518,984,5.582]],["t/2654",[137,5.442,519,3.248,985,6.518]],["t/2656",[519,3.248,681,5.319,968,5.942]],["t/2662",[90,3.716,986,7.583]],["t/2664",[43,4.382,90,3.716]],["t/2666",[90,3.716,931,5.844]],["t/2670",[343,3.892,987,7.018,988,6.518]],["t/2672",[31,4.006,343,3.892,989,7.018]],["t/2674",[31,4.006,115,4.324,990,7.018]],["t/2676",[31,4.006,908,4.457,991,7.018]],["t/2678",[93,3.461,115,3.791,974,5.426,992,6.153]],["t/2680",[93,3.461,908,3.908,974,5.426,993,6.153]],["t/2682",[29,3.655,115,4.324,994,6.518]],["t/2684",[29,3.655,908,4.457,995,6.518]],["t/2686",[29,3.655,996,6.518,997,5.442]],["t/2688",[29,3.655,115,4.324,994,6.518]],["t/2690",[29,3.655,908,4.457,995,6.518]],["t/2692",[29,3.655,996,6.518,997,5.442]],["t/2694",[29,3.205,343,3.413,998,6.153,999,5.21]],["t/2696",[29,3.205,115,3.791,999,5.21,1000,6.153]],["t/2698",[29,3.205,908,3.908,999,5.21,1001,6.153]],["t/2700",[343,2.492,452,3.804,491,3.336,492,3.116,578,3.804,1002,4.493,1003,3.962]],["t/2702",[115,2.768,452,3.804,491,3.336,492,3.116,578,3.804,1003,3.962,1004,4.493]],["t/2704",[491,4.569,492,4.267,908,3.908,1005,6.153]],["t/2706",[452,4.639,578,4.639,908,3.48,1003,4.831,1006,5.479]],["t/2708",[31,3.513,115,3.791,659,4.405,1007,6.153]],["t/2710",[22,4.664,343,3.413,1008,6.153,1009,5.426]],["t/2712",[22,4.664,115,3.791,1009,5.426,1010,6.153]],["t/2714",[22,4.664,908,3.908,1009,5.426,1011,6.153]],["t/2716",[115,4.324,600,5.442,1012,7.018]],["t/2718",[600,5.442,908,4.457,1013,7.018]],["t/2722",[1014,9.76]],["t/2724",[90,3.716,498,5.58]],["t/2726",[423,7.568]],["t/2728",[1015,9.064]],["t/2730",[113,5.433,566,6.331]],["t/2732",[88,5.58,498,5.58]],["t/2734",[517,9.064]],["t/2738",[19,5.53]],["t/2739",[1016,9.064]],["t/2741",[1017,9.064]],["t/2743",[1018,7.763]],["t/2745",[1019,9.76]],["t/2747",[1020,9.76]],["t/2749",[1021,9.76]],["t/2751",[882,7.99]],["t/2753",[1022,9.064]],["t/2755",[90,4.442]],["t/2757",[433,6.986]],["t/2759",[1023,9.76]],["t/2761",[1024,9.76]],["t/2765",[135,5.426,585,5.715,615,5.426,1025,6.153]],["t/2767",[74,2.036,237,2.705,241,1.98,246,1.774,365,1.947,406,2.017,514,2.705,573,2.914,593,2.914,594,3.069,595,2.914]],["t/2769",[90,3.183,246,2.412,390,2.918,465,3.336,774,2.918,1026,4.493]],["t/2771",[41,4.558,42,5.112,82,4.731]],["t/2773",[45,6.308,1027,7.018]],["t/2776",[93,3.948,343,3.892,931,5.023]],["t/2778",[202,5.442,236,4.612,1015,6.518]],["t/2780",[105,6.331,1028,8.165]],["t/2782",[190,6.331,1029,8.165]],["t/2784",[90,3.194,126,5.319,498,4.796]],["t/2785",[870,6.986]],["t/2787",[294,7.763]],["t/2789",[90,3.194,126,5.319,568,5.942]],["t/2791",[1030,9.76]],["t/2793",[1031,9.76]],["t/2795",[146,6.494,919,7.583]],["t/2799",[37,4.661,113,5.433]],["t/2801",[498,7.353]],["t/2803",[88,4.796,498,4.796,1032,6.188]],["t/2807",[59,4.181,398,6.494]],["t/2808",[83,5.799]],["t/2810",[79,6.267]],["t/2812",[43,3.767,154,4.506,1033,7.018]],["t/2814",[83,5.799]],["t/2816",[79,6.267]],["t/2818",[83,4.851,90,3.716]],["t/2820",[79,5.243,90,3.716]],["t/2823",[19,5.53]],["t/2824",[162,4.818]],["t/2826",[332,6.134]],["t/2828",[70,4.439,1034,7.583]],["t/2830",[191,4.866,442,4.411,445,6.188]],["t/2832",[336,7.246]],["t/2834",[461,5.58,1035,8.165]],["t/2836",[77,6.986]],["t/2838",[301,4.037,866,5.319,1036,7.018]],["t/2840",[70,4.439,1034,7.583]],["t/2844",[146,7.763]],["t/2845",[1018,6.494,1037,8.165]],["t/2847",[1018,6.494,1038,8.165]],["t/2849",[119,7.583,1018,6.494]],["t/2851",[1022,9.064]],["t/2853",[1039,9.76]],["t/2855",[1017,9.064]],["t/2857",[1016,9.064]],["t/2859",[1018,6.494,1040,8.165]],["t/2861",[146,6.494,1032,7.199]],["t/2863",[83,4.851,352,6.062]],["t/2869",[834,9.064]],["t/2871",[43,3.767,137,5.442,817,5.746]],["t/2873",[621,5.749,1041,6.685]],["t/2875",[39,4.731,43,3.767,867,6.188]],["t/2877",[39,4.731,41,4.558,116,5.112]],["t/2879",[42,3.991,101,2.998,770,4.485,771,6.306]],["t/2881",[811,7.398]],["t/2883",[492,6.768]],["t/2885",[214,5.582,305,6.518,811,5.319]],["t/2887",[254,6.189,277,6.913]],["t/2891",[43,3.303,49,4.267,145,3.908,680,4.044]],["t/2893",[28,3.374,45,3.207,49,3.424,73,2.346,101,2.702,515,3.136]],["t/2895",[49,4.267,103,3.513,518,4.664,621,4.333]],["t/2897",[49,3.799,90,2.493,155,2.546,162,2.705,241,3.283]],["t/2899",[49,4.267,90,2.8,301,3.54,731,4.148]],["t/2901",[49,3.799,90,2.493,155,2.546,767,3.558,884,4.485]],["t/2903",[49,4.267,494,5.426,680,4.044,1042,6.153]],["t/2905",[8,4.733,194,6.685]],["t/2906",[90,3.194,155,3.262,702,5.21]],["t/2908",[513,6.913,702,6.062]],["t/2910",[59,4.181,702,6.062]],["t/2912",[43,4.382,235,5.948]],["t/2914",[165,5.58,235,5.948]],["t/2916",[317,6.331,482,6.685]],["t/2918",[154,5.243,494,7.199]],["t/2920",[43,4.382,691,7.199]],["t/2922",[82,5.504,895,7.199]],["t/2924",[156,4.731,978,6.518,1043,7.018]],["t/2926",[27,6.331,43,4.382]],["t/2927",[90,3.716,155,3.795]],["t/2929",[43,2.213,90,1.876,155,1.916,162,2.035,465,3.061,518,3.125,868,3.829,1044,4.122]],["t/2931",[37,2.565,90,3.183,986,4.173,1045,4.493,1046,4.493,1047,4.173]],["t/2933",[43,3.303,90,2.8,1047,5.715,1048,6.153]],["t/2935",[52,3.116,53,3.216,54,1.718,59,2.301,73,2.135,79,2.885,83,2.67]],["t/2937",[43,3.303,52,4.267,54,2.353,1049,6.153]],["t/2939",[43,4.382,145,5.186]],["t/2941",[43,3.303,54,2.353,336,4.569,436,4.664]],["t/2943",[43,3.767,864,6.518,1050,7.018]],["t/2945",[43,2.65,54,1.888,365,2.909,553,3.477,564,3.829,877,4.354]],["t/2947",[43,3.303,444,4.206,1051,6.153,1052,6.153]],["t/2949",[43,2.412,100,3.216,227,3.962,617,4.173,675,3.216,681,3.406,1053,4.493]],["t/2951",[540,4.796,541,5.942,1054,7.018]],["t/2953",[27,6.331,560,6.913]],["t/2954",[19,3.104,43,2.941,54,2.095,551,3.922,598,4.358]],["t/2956",[19,2.798,43,2.65,180,4.18,551,3.534,838,4.585,1055,4.937]],["t/2958",[19,2.158,43,3.293,54,1.456,85,2.112,121,3.358,551,4.391,1056,3.808]],["t/2960",[19,1.756,43,3.582,54,1.185,85,1.719,365,1.826,551,3.708,1057,3.099,1058,3.099,1059,3.099]],["t/2962",[43,2.941,240,4.485,246,2.941,444,3.744,551,3.922]],["t/2964",[41,3.558,85,3.039,107,3.601,116,3.991,569,4.358]],["t/2966",[41,3.207,85,2.738,107,3.245,116,3.597,811,3.742,1060,4.937]],["t/2968",[41,3.558,93,3.082,1041,4.485,1061,5.479,1062,4.639]],["t/2970",[39,2.779,41,2.677,43,2.213,354,3.375,465,3.061,506,3.491,673,3.635,1063,3.635]],["t/2972",[274,4.942,681,5.319,826,6.518]],["t/2974",[39,4.731,43,3.767,867,6.188]],["t/2976",[23,3.574,354,3.679,501,3.804,554,3.574,621,3.164,1041,3.679,1064,4.493]],["t/2978",[492,3.799,508,3.799,509,3.558,540,3.744,621,3.858]],["t/2980",[53,3.922,871,4.485,1065,5.479,1066,5.479,1067,5.479]],["t/2982",[90,1.504,113,2.199,116,2.407,219,2.505,236,2.172,643,3.069,811,2.505,956,2.914,1041,2.705,1068,3.304,1069,3.304]],["t/2984",[43,2.941,90,2.493,246,2.941,508,3.799,509,3.558]],["t/2986",[43,2.65,54,1.888,90,2.247,246,2.65,250,4.585,690,4.585]],["t/2988",[26,2.603,43,3.293,126,2.887,165,2.603,246,2.044,277,3.225,1070,3.808,1071,3.537]],["t/2990",[23,3.279,26,2.818,43,2.213,54,1.576,354,3.375,465,3.061,850,3.829,1071,3.829]],["t/2992",[43,2.65,54,1.888,349,4.354,560,4.18,598,3.927,1072,4.937]],["t/2996",[0,5.08,1,5.186]],["t/2998",[2,6.199]],["t/2999",[3,6.338]],["t/3001",[4,5.131,5,5.243]],["t/3003",[6,5.243,7,4.661]],["t/3005",[8,4.733,9,5.131]],["t/3006",[10,5.956]],["t/3010",[0,5.08,1,5.186]],["t/3012",[2,6.199]],["t/3013",[3,6.338]],["t/3015",[4,5.131,5,5.243]],["t/3017",[6,5.243,7,4.661]],["t/3019",[8,4.733,9,5.131]],["t/3020",[10,5.956]],["t/3024",[63,5.844,1073,8.165]],["t/3026",[1074,9.064]],["t/3028",[41,5.303,1075,8.165]],["t/3030",[41,5.303,244,7.583]],["t/3032",[137,5.442,1076,6.518,1077,7.018]],["t/3034",[131,6.062,551,5.844]],["t/3036",[48,5.844,189,5.844]],["t/3038",[43,4.382,687,7.583]],["t/3040",[43,3.767,461,4.796,1078,7.018]],["t/3042",[41,6.338]],["t/3044",[1079,9.76]],["t/3046",[41,5.303,694,6.913]],["t/3048",[41,5.303,799,7.583]],["t/3050",[694,6.913,1041,6.685]],["t/3052",[486,8.606]],["t/3054",[811,7.398]],["t/3056",[492,6.768]],["t/3060",[90,4.442]],["t/3062",[37,5.571]],["t/3064",[433,6.986]],["t/3068",[1080,9.064]],["t/3071",[1081,9.76]],["t/3073",[1082,9.76]],["t/3075",[1083,9.76]],["t/3077",[105,4.248,122,4.248,593,4.831,702,4.068,820,4.831]],["t/3079",[122,4.248,249,5.088,664,4.639,815,5.088,984,4.358]],["t/3081",[1084,9.76]],["t/3083",[1085,9.76]],["t/3087",[101,2.998,228,5.088,241,3.283,550,4.358,561,5.088]],["t/3089",[103,3.127,241,3.283,756,4.639,1086,5.088,1087,4.639]],["t/3091",[220,4.405,241,5.305,958,5.715]],["t/3093",[54,2.095,241,3.283,731,3.693,756,4.639,1086,5.088]],["t/3095",[54,1.718,85,2.492,241,2.693,767,2.918,1087,3.804,1088,4.493,1089,4.493]],["t/3097",[101,2.998,241,3.283,550,4.358,767,3.558,1087,4.639]],["t/3099",[57,3.491,103,2.353,241,2.471,319,3.197,345,3.003,767,2.677,1090,4.122,1091,4.122]],["t/3101",[241,4.874,345,3.991,767,3.558,1087,4.639]],["t/3103",[759,7.99]],["t/3107",[0,5.08,1,5.186]],["t/3109",[2,6.199]],["t/3110",[3,6.338]],["t/3112",[4,5.131,5,5.243]],["t/3114",[6,5.243,7,4.661]],["t/3116",[8,4.733,9,5.131]],["t/3117",[10,5.956]],["t/3120",[54,3.122,100,5.844]],["t/3122",[54,2.353,85,3.413,204,5.426,560,5.21]],["t/3124",[349,8.606]],["t/3126",[820,8.606]],["t/3130",[931,5.844,1092,8.165]],["t/3132",[345,7.11]],["t/3134",[190,5.442,790,5.746,1093,7.018]],["t/3136",[93,3.461,107,4.044,162,3.038,776,5.038]],["t/3138",[89,8.606]],["t/3142",[102,6.913,899,6.685]],["t/3144",[1076,7.583,1094,8.165]],["t/3146",[1095,9.76]],["t/3148",[725,9.064]],["t/3150",[1096,9.76]],["t/3152",[369,7.398]],["t/3156",[491,4.068,492,3.799,1032,4.831,1097,5.479,1098,5.479]],["t/3158",[790,7.99]],["t/3162",[498,5.58,964,7.583]],["t/3164",[1099,8.165,1100,8.165]],["t/3166",[37,3.513,113,4.095,206,5.21,1101,6.153]],["t/3168",[882,6.685,1018,6.494]],["t/3171",[60,6.199]],["t/3173",[19,5.53]],["t/3174",[29,3.655,37,4.006,1102,7.018]],["t/3176",[29,4.253,1103,8.165]],["t/3178",[173,3.811,1104,8.165]],["t/3180",[166,4.324,774,4.558,1105,7.018]],["t/3182",[37,4.006,885,5.746,1106,7.018]],["t/3184",[37,4.006,1107,7.018,1108,6.188]],["t/3186",[29,3.655,1109,7.018,1110,7.018]],["t/3188",[29,3.655,1111,7.018,1112,6.518]],["t/3190",[37,3.513,70,3.345,885,5.038,1113,6.153]],["t/3194",[101,2.459,196,3.216,227,7.571,466,3.484,680,2.953]],["t/3196",[85,2.112,101,3.357,210,3.358,217,3.118,550,3.029,680,2.503,1114,3.225,1115,3.808]],["t/3198",[101,2.702,103,2.818,217,4.042,680,3.245,1114,4.18,1116,4.585]],["t/3200",[101,2.702,217,4.042,241,2.959,680,3.245,753,3.927,1114,4.18]],["t/3202",[54,2.443,85,1.619,101,1.597,107,1.918,217,2.389,236,1.918,680,1.918,731,1.967,1114,2.471,1117,2.71,1118,2.918]],["t/3204",[103,3.513,680,4.044,715,4.664,1119,5.038]],["t/3206",[101,2.459,103,2.565,210,3.962,550,3.574,680,2.953,715,3.406,1119,3.679]],["t/3208",[54,2.801,103,3.299,680,2.326,694,2.996,715,2.682,1117,3.286,1119,2.897]],["t/3210",[85,2.287,103,2.353,241,2.471,680,2.709,715,3.125,753,3.279,1119,3.375,1120,4.122]],["t/3212",[103,2.818,680,3.245,715,3.742,731,3.328,1116,4.585,1119,4.042]],["t/3214",[759,7.99]],["t/3218",[189,5.844,658,7.199]],["t/3220",[42,4.483,167,3.688,173,2.873,861,5.715]],["t/3222",[8,4.733,371,5.844]],["t/3224",[28,4.206,220,4.405,411,4.206,515,3.908]],["t/3228",[342,5.746,509,4.558,564,5.442]],["t/3229",[502,7.99]],["t/3231",[54,2.683,127,4.612,509,4.558]],["t/3233",[185,4.068,509,3.558,564,4.248,674,4.485,855,4.639]],["t/3235",[74,3.791,145,3.908,515,3.908,600,4.772]],["t/3237",[73,2.924,302,4.895,509,3.996,674,5.038]],["t/3239",[37,3.513,508,4.267,509,3.996,1121,6.153]],["t/3241",[70,3.345,71,4.148,248,3.656,508,4.267]],["t/3243",[70,3.345,71,4.148,248,3.656,509,3.996]],["t/3245",[53,4.405,508,4.267,509,3.996,510,5.426]],["t/3247",[162,2.437,294,3.927,387,3.927,509,3.207,609,4.18,880,4.354]],["t/3249",[26,5.58,509,5.303]],["t/3253",[1122,9.76]],["t/3255",[248,4.851,556,6.331]],["t/3257",[365,4.135,649,5.319,1123,6.518]],["t/3259",[365,4.135,764,6.188,1123,6.518]],["t/3262",[60,6.199]],["t/3264",[19,5.53]],["t/3265",[162,4.818]],["t/3267",[1124,9.76]],["t/3269",[37,5.571]],["t/3271",[1112,9.064]],["t/3273",[145,6.199]],["t/3275",[159,6.768]],["t/3277",[377,7.568]],["t/3281",[1125,9.76]],["t/3283",[1126,7.018,1127,7.018,1128,6.188]],["t/3284",[595,8.606]],["t/3286",[1129,9.76]],["t/3288",[727,9.064]],["t/3292",[790,7.99]],["t/3297",[32,5.749,101,4.468]],["t/3299",[103,4.661,1130,8.165]],["t/3301",[188,6.518,241,4.206,812,6.188]],["t/3303",[731,4.731,1131,7.018,1132,7.018]],["t/3305",[767,4.558,1133,7.018,1134,7.018]],["t/3307",[398,5.582,676,6.518,680,4.612]],["t/3309",[770,6.685,1135,8.165]],["t/3311",[235,5.112,771,5.442,1136,7.018]],["t/3313",[773,7.583,1137,8.165]],["t/3315",[32,5.749,610,7.583]],["t/3317",[182,4.831,194,4.485,246,2.941,542,5.088,1138,5.479]],["t/3319",[651,6.518,683,5.582,1139,7.018]],["t/3321",[1140,8.165,1141,8.165]],["t/3323",[1074,6.518,1142,7.018,1143,7.018]],["t/3325",[1144,6.153,1145,6.153,1146,6.153,1147,6.153]],["t/3329",[0,5.08,1,5.186]],["t/3331",[2,6.199]],["t/3332",[3,6.338]],["t/3334",[4,5.131,5,5.243]],["t/3336",[6,5.243,7,4.661]],["t/3338",[8,4.733,9,5.131]],["t/3339",[10,5.956]],["t/3342",[25,3.313,54,2.095,1148,4.153,1149,5.088,1150,4.831]],["t/3344",[870,5.844,1151,8.165]],["t/3346",[39,6.579]],["t/3348",[27,7.568]],["t/3349",[319,5.442,436,5.319,1150,6.188]],["t/3351",[621,4.942,1152,7.018,1153,6.518]],["t/3353",[11,5.746,219,5.319,1062,5.942]],["t/3355",[584,5.088,606,4.485,633,4.831,1154,5.479,1155,5.479]],["t/3357",[11,4.485,54,2.095,419,4.639,1062,4.639,1149,5.088]],["t/3359",[499,6.685,1156,8.165]],["t/3361",[539,7.583,541,6.913]],["t/3363",[26,5.58,1150,7.199]],["t/3367",[436,6.189,1157,7.583]],["t/3369",[1128,7.199,1158,8.165]],["t/3371",[143,7.568]],["t/3373",[87,5.849]],["t/3374",[83,5.799]],["t/3376",[269,6.331,406,4.983]],["t/3378",[12,7.246]],["t/3380",[82,6.579]],["t/3382",[90,4.442]],["t/3384",[28,5.58,515,5.186]],["t/3388",[25,4.937,190,6.331]],["t/3390",[25,4.937,365,4.81]],["t/3392",[24,6.494,25,4.937]],["t/3394",[25,4.937,1159,7.583]],["t/3396",[25,4.937,196,5.844]],["t/3398",[1160,9.76]],["t/3402",[59,4.181,975,7.583]],["t/3404",[79,6.267]],["t/3406",[59,3.594,79,4.506,139,5.582]],["t/3408",[83,5.799]],["t/3410",[59,3.594,83,4.17,139,5.582]],["t/3414",[25,4.244,842,6.518,870,5.023]],["t/3416",[25,4.937,248,4.851]],["t/3418",[25,4.244,248,4.17,556,5.442]],["t/3420",[25,3.721,252,4.405,935,5.21,1148,4.664]],["t/3422",[345,4.483,406,3.755,935,5.21,1148,4.664]],["t/3424",[246,3.767,369,5.319,935,5.942]],["t/3426",[24,6.494,25,4.937]],["t/3428",[25,4.937,26,5.58]],["t/3430",[25,4.937,27,6.331]],["t/3431",[25,3.721,365,3.625,512,5.426,870,4.405]],["t/3433",[649,4.153,1148,6.164,1161,5.479,1162,5.479]],["t/3435",[540,3.374,785,4.585,898,4.585,1148,3.742,1163,4.937,1164,4.937]],["t/3437",[25,3.721,246,3.303,1148,4.664,1165,6.153]],["t/3439",[25,3.721,365,3.625,724,5.715,1166,6.153]],["t/3441",[9,3.867,126,4.664,238,5.038,1148,4.664]],["t/3444",[7,4.006,25,4.244,87,4.206]],["t/3446",[4,3.867,25,3.721,87,3.688,131,4.569]],["t/3447",[54,3.122,87,4.893]],["t/3449",[87,4.893,1148,6.189]],["t/3451",[25,4.937,26,5.58]],["t/3455",[70,3.815,899,5.746,1167,6.518]],["t/3457",[899,5.746,1167,6.518,1168,7.018]],["t/3459",[71,4.148,74,3.791,515,3.908,1169,6.153]],["t/3461",[439,6.685,781,7.583]],["t/3463",[95,5.715,1170,6.153,1171,6.153,1172,6.153]],["t/3466",[70,3.345,71,4.148,675,4.405,1157,5.715]],["t/3468",[70,5.306]],["t/3470",[45,6.338]],["t/3472",[639,7.398]],["t/3474",[155,4.536]],["t/3476",[519,4.517]],["t/3478",[54,2.353,365,3.625,369,4.664,1173,6.153]],["t/3482",[8,2.862,101,2.702,240,4.042,767,3.207,889,4.354,1174,4.937]],["t/3483",[101,4.844,240,5.038,767,3.996]],["t/3485",[49,3.799,101,2.998,103,3.127,453,5.088,767,3.558]],["t/3487",[101,2.702,241,2.959,492,3.424,767,3.207,889,4.354,1153,4.585]],["t/3489",[103,3.513,216,5.038,220,4.405,767,3.996]],["t/3491",[29,2.572,85,2.738,230,4.585,241,2.959,611,4.585,767,3.207]],["t/3493",[39,4.148,220,4.405,731,4.148,767,3.996]],["t/3495",[216,4.485,220,3.922,767,5.281,1080,5.088]],["t/3497",[231,6.518,680,4.612,767,4.558]],["t/3499",[29,2.854,31,3.127,767,3.558,770,4.485,1175,5.479]],["t/3503",[19,5.53]],["t/3504",[93,3.461,200,5.038,301,3.54,1176,6.153]],["t/3506",[]],["t/3508",[93,3.948,264,4.731,1177,7.018]],["t/3510",[332,6.134]],["t/3512",[972,8.264]],["t/3514",[33,4.411,93,3.948,1178,7.018]],["t/3520",[182,7.199,817,6.685]],["t/3522",[45,3.996,568,5.21,609,5.21,817,5.038]],["t/3524",[442,5.131,817,6.685]],["t/3525",[115,3.791,166,3.791,192,4.405,1179,6.153]],["t/3527",[166,3.791,192,4.405,908,3.908,1180,6.153]],["t/3529",[166,3.791,192,4.405,997,4.772,1181,6.153]],["t/3531",[31,4.006,99,4.558,1182,6.518]],["t/3533",[31,4.006,1183,7.018,1184,7.018]],["t/3535",[73,2.924,343,3.413,988,5.715,1185,6.153]],["t/3537",[29,3.205,50,4.664,115,3.791,1186,6.153]],["t/3539",[29,3.205,50,4.664,908,3.908,1187,6.153]],["t/3541",[50,4.664,115,3.791,997,4.772,1188,6.153]],["t/3543",[115,4.324,371,5.023,1189,7.018]],["t/3545",[371,5.023,908,4.457,1190,7.018]],["t/3547",[115,3.791,371,4.405,997,4.772,1191,6.153]],["t/3549",[8,4.068,115,4.324,1192,7.018]],["t/3551",[8,4.068,908,4.457,1193,7.018]],["t/3553",[8,3.567,115,3.791,997,4.772,1194,6.153]],["t/3555",[29,3.205,50,4.664,115,3.791,1195,6.153]],["t/3557",[29,3.205,50,4.664,997,4.772,1196,6.153]],["t/3559",[29,3.205,50,4.664,908,3.908,1197,6.153]],["t/3561",[33,3.867,368,5.426,1108,5.426,1198,6.153]],["t/3563",[33,3.867,908,3.908,1108,5.426,1199,6.153]],["t/3565",[33,3.867,173,2.873,368,5.426,1200,6.153]],["t/3567",[33,3.867,173,2.873,908,3.908,1201,6.153]],["t/3569",[33,3.867,173,2.873,317,4.772,1202,6.153]],["t/3571",[115,4.324,1203,7.018,1204,6.518]],["t/3573",[908,4.457,1204,6.518,1205,7.018]],["t/3575",[115,3.791,461,4.206,1206,6.153,1207,5.715]],["t/3577",[461,4.206,908,3.908,1207,5.715,1208,6.153]],["t/3581",[19,5.53]],["t/3582",[93,3.461,301,3.54,791,4.206,1209,6.153]],["t/3584",[791,5.58,1210,8.165]],["t/3586",[336,5.21,791,4.796,1211,7.018]],["t/3588",[93,3.461,264,4.148,791,4.206,1212,6.153]],["t/3590",[332,4.411,791,4.796,1213,7.018]],["t/3592",[167,4.206,791,4.796,1214,7.018]],["t/3594",[791,4.796,972,5.942,1215,7.018]],["t/3596",[93,3.948,511,5.746,774,4.558]],["t/3599",[156,6.579]],["t/3600",[54,2.683,1216,7.018,1217,7.018]],["t/3602",[54,2.683,1218,7.018,1219,7.018]],["t/3604",[54,2.683,1220,7.018,1221,7.018]],["t/3606",[54,2.683,1222,7.018,1223,7.018]],["t/3610",[145,5.186,675,5.844]],["t/3612",[156,6.579]],["t/3613",[54,2.683,486,6.188,1224,7.018]],["t/3615",[54,2.683,1225,7.018,1226,7.018]],["t/3617",[54,2.683,1227,7.018,1228,7.018]],["t/3619",[54,2.683,1229,7.018,1230,7.018]],["t/3621",[54,2.683,1231,7.018,1232,7.018]],["t/3623",[54,2.683,1233,7.018,1234,7.018]],["t/3625",[54,2.683,1235,7.018,1236,7.018]],["t/3627",[54,2.683,1237,7.018,1238,7.018]],["t/3629",[54,2.683,1239,7.018,1240,7.018]],["t/3631",[54,2.683,1241,7.018,1242,7.018]],["t/3633",[54,2.683,1243,7.018,1244,7.018]],["t/3635",[54,2.683,1245,7.018,1246,7.018]],["t/3637",[190,7.568]],["t/3638",[1247,9.76]],["t/3640",[1248,9.76]],["t/3642",[1249,9.76]],["t/3644",[1250,9.76]],["t/3646",[600,7.568]],["t/3648",[1251,9.76]],["t/3650",[1252,9.76]],["t/3652",[1253,9.76]],["t/3654",[173,4.556]],["t/3656",[1254,9.76]],["t/3659",[60,6.199]],["t/3661",[355,5.662,780,7.199]],["t/3665",[19,5.53]],["t/3666",[301,4.037,639,5.319,1255,7.018]],["t/3668",[173,4.556]],["t/3670",[336,7.246]],["t/3672",[1256,9.064]],["t/3674",[1257,9.064]],["t/3676",[160,6.494]],["t/3678",[31,3.513,390,3.996,1258,5.715,1259,5.715]],["t/3680",[154,5.243,1260,8.165]],["t/3682",[151,5.582,1261,7.018,1262,5.942]],["t/3684",[31,4.661,1263,6.913]],["t/3686",[31,4.661,1263,6.913]],["t/3688",[522,7.568]],["t/3690",[390,6.338]],["t/3692",[]],["t/3694",[99,6.338]],["t/3696",[99,6.338]],["t/3698",[163,6.768]],["t/3700",[191,4.866,442,4.411,445,6.188]],["t/3702",[33,3.867,151,4.895,1262,5.21,1264,6.153]],["t/3705",[156,6.579]],["t/3706",[54,2.683,1265,7.018,1266,7.018]],["t/3708",[54,2.683,1267,7.018,1268,7.018]],["t/3711",[156,6.579]],["t/3712",[54,2.683,1269,7.018,1270,7.018]],["t/3714",[54,2.683,1271,7.018,1272,7.018]],["t/3716",[54,2.683,1273,7.018,1274,7.018]],["t/3718",[54,2.683,1275,7.018,1276,7.018]],["t/3720",[54,2.683,1277,7.018,1278,7.018]],["t/3722",[54,2.683,1279,7.018,1280,7.018]],["t/3724",[54,2.683,1281,7.018,1282,7.018]],["t/3726",[54,2.683,1283,7.018,1284,7.018]],["t/3728",[54,2.683,1285,7.018,1286,7.018]],["t/3730",[190,7.568]],["t/3731",[1287,9.76]],["t/3733",[1288,9.76]],["t/3736",[156,6.579]],["t/3737",[54,2.683,1289,7.018,1290,7.018]],["t/3739",[54,2.683,1291,7.018,1292,7.018]],["t/3741",[54,2.683,1293,7.018,1294,7.018]],["t/3743",[54,2.683,1295,7.018,1296,7.018]],["t/3745",[54,2.683,1297,7.018,1298,7.018]],["t/3747",[54,2.683,1299,7.018,1300,7.018]],["t/3749",[190,7.568]],["t/3750",[1301,9.76]],["t/3753",[60,6.199]],["t/3755",[248,4.17,1302,7.018,1303,6.518]],["t/3757",[127,5.366,1304,6.494]],["t/3759",[714,5.582,780,6.188,1303,6.518]],["t/3761",[127,5.366,1304,6.494]],["t/3763",[27,7.568]],["t/3764",[246,3.303,783,5.715,1304,4.895,1305,6.153]],["t/3766",[497,5.715,714,4.895,1159,5.715,1304,4.895]],["t/3768",[52,3.799,53,3.922,103,3.127,1304,4.358,1306,5.479]],["t/3770",[73,2.924,74,3.791,895,5.426,1304,4.895]],["t/3774",[60,6.199]],["t/3776",[19,5.53]],["t/3777",[301,4.037,402,6.518,403,5.112]],["t/3779",[301,3.54,404,5.426,405,4.895,406,3.755]],["t/3781",[33,4.411,1307,7.018,1308,7.018]],["t/3783",[519,3.248,521,4.942,969,5.582]],["t/3785",[7,4.006,18,5.112,1309,7.018]],["t/3787",[264,4.148,407,5.715,408,5.715,409,5.21]],["t/3789",[117,4.148,162,3.038,410,5.715,411,4.206]],["t/3791",[59,3.594,390,4.558,1310,6.518]],["t/3793",[390,4.558,403,5.112,412,6.518]],["t/3795",[1311,8.165,1312,8.165]],["t/3797",[59,4.181,396,6.913]],["t/3799",[59,3.594,168,5.112,413,6.518]],["t/3801",[414,6.518,415,6.518,416,6.518]],["t/3803",[264,4.731,880,6.188,1313,7.018]],["t/3805",[403,5.948,417,7.583]],["t/3807",[411,4.796,418,6.518,419,5.942]],["t/3809",[93,4.593,420,7.583]],["t/3811",[264,5.504,421,7.199]],["t/3813",[264,5.504,421,7.199]],["t/3815",[264,4.731,422,6.518,423,5.442]],["t/3817",[356,6.494,357,6.331]],["t/3819",[45,4.558,159,4.866,426,6.188]],["t/3821",[168,5.948,427,7.583]],["t/3823",[1314,9.76]],["t/3825",[254,5.319,519,3.248,967,6.518]],["t/3827",[371,5.023,425,5.942,428,6.518]],["t/3829",[264,4.148,409,5.21,1062,5.21,1315,6.153]],["t/3831",[429,8.606]],["t/3833",[425,8.264]],["t/3835",[519,3.248,681,5.319,968,5.942]],["t/3837",[430,9.064]],["t/3839",[433,5.023,519,3.248,1316,7.018]],["t/3841",[93,3.948,432,6.518,433,5.023]],["t/3843",[73,3.335,87,4.206,434,6.518]],["t/3845",[156,5.504,1317,8.165]],["t/3846",[74,4.324,307,5.582,1318,6.518]],["t/3848",[74,5.03,1319,7.583]],["t/3850",[74,4.324,634,5.746,1320,6.518]],["t/3852",[377,5.442,515,4.457,1321,6.518]],["t/3856",[87,4.206,139,5.582,406,4.283]],["t/3858",[87,4.206,406,4.283,884,5.746]],["t/3860",[87,4.206,88,4.796,439,5.746]],["t/3862",[86,4.895,87,3.688,88,4.206,89,5.426]],["t/3864",[515,5.186,1322,8.165]],["t/3866",[87,4.206,442,4.411,931,5.023]],["t/3868",[80,4.831,87,3.283,442,3.443,515,3.48,623,4.831]],["t/3870",[46,5.746,87,4.206,442,4.411]],["t/3872",[87,4.206,153,5.746,156,4.731]],["t/3874",[87,3.688,142,5.715,153,5.038,1128,5.426]],["t/3876",[87,4.206,143,5.442,153,5.746]],["t/3880",[19,5.53]],["t/3881",[155,2.86,301,3.54,866,4.664,1323,6.153]],["t/3883",[116,4.483,155,2.86,700,4.895,1324,6.153]],["t/3885",[155,4.114,984,4.895,1325,6.153]],["t/3887",[155,3.795,1326,8.165]],["t/3889",[155,3.262,461,4.796,1327,7.018]],["t/3891",[155,4.514,1328,7.018]],["t/3893",[73,2.924,155,2.86,713,5.426,1329,6.153]],["t/3895",[73,3.335,155,3.262,1330,7.018]],["t/3897",[155,2.86,332,3.867,865,4.895,1331,6.153]],["t/3899",[155,4.114,332,3.867,1332,6.153]],["t/3901",[70,3.345,155,2.86,865,4.895,1333,6.153]],["t/3903",[70,3.345,155,4.114,1334,6.153]],["t/3905",[70,2.978,155,3.78,159,3.799,1335,5.479]],["t/3907",[77,4.405,155,2.86,865,4.895,1336,6.153]],["t/3909",[77,4.405,155,4.114,1337,6.153]],["t/3913",[8,4.068,371,5.023,1338,7.018]],["t/3915",[8,3.567,117,4.148,1339,6.153,1340,6.153]],["t/3917",[659,5.023,1341,7.018,1342,6.188]],["t/3919",[280,5.038,323,4.148,659,4.405,1343,6.153]],["t/3921",[29,4.253,1344,7.583]],["t/3923",[165,4.796,317,5.442,1345,7.018]],["t/3925",[29,4.253,1344,7.583]],["t/3927",[29,3.205,984,4.895,1346,6.153,1347,6.153]],["t/3929",[29,3.655,261,4.866,1348,6.518]],["t/3931",[29,3.655,261,4.866,1348,6.518]],["t/3933",[29,3.205,261,4.267,645,5.21,1349,6.153]],["t/3935",[29,3.655,167,4.206,1350,7.018]],["t/3937",[29,3.205,167,3.688,1351,6.153,1352,6.153]],["t/3939",[173,2.873,261,4.267,979,5.715,1353,6.153]],["t/3941",[173,2.873,261,4.267,444,4.206,1354,5.715]],["t/3943",[173,2.558,261,3.799,323,3.693,775,5.088,1355,5.479]],["t/3945",[166,3.375,173,2.558,261,3.799,774,3.558,1356,5.088]],["t/3947",[166,3.375,173,2.558,261,3.799,774,3.558,1356,5.088]],["t/3949",[173,2.873,261,4.267,444,4.206,1357,6.153]],["t/3951",[206,5.942,235,5.112,1358,7.018]],["t/3953",[280,4.485,323,3.693,659,3.922,1342,4.831,1359,5.479]],["t/3955",[173,2.558,444,3.744,659,3.922,1342,4.831,1360,5.479]],["t/3957",[100,5.023,461,4.796,1361,6.518]],["t/3959",[100,5.023,107,4.612,1362,7.018]],["t/3961",[166,4.324,192,5.023,1363,7.018]],["t/3963",[491,4.068,492,3.799,1364,5.479,1365,5.479,1366,5.479]],["t/3965",[356,6.494,357,6.331]],["t/3967",[29,3.205,50,4.664,999,5.21,1367,6.153]],["t/3969",[858,9.064]],["t/3971",[278,6.188,279,5.942,280,5.746]],["t/3975",[59,4.181,884,6.685]],["t/3976",[59,3.594,301,4.037,1368,7.018]],["t/3978",[7,3.513,59,3.151,390,3.996,1369,6.153]],["t/3980",[59,3.594,389,6.518,390,4.558]],["t/3982",[59,3.594,390,4.558,1310,6.518]],["t/3984",[32,4.942,653,6.188,1370,7.018]],["t/3986",[87,4.206,392,6.188,1371,7.018]],["t/3988",[59,3.594,387,5.582,1372,7.018]],["t/3990",[59,3.594,397,6.188,398,5.582]],["t/3992",[87,4.893,1373,8.165]],["t/3994",[73,3.88,515,5.186]],["t/3995",[40,5.112,885,5.746,1374,7.018]],["t/3997",[461,4.796,645,5.942,1375,7.018]],["t/3999",[100,5.023,461,4.796,1361,6.518]],["t/4001",[45,4.558,159,4.866,426,6.188]],["t/4003",[644,6.518,645,5.942,1376,7.018]],["t/4005",[31,4.006,279,5.942,1377,7.018]],["t/4007",[278,6.188,279,5.942,280,5.746]],["t/4009",[40,4.483,70,3.345,885,5.038,1378,6.153]],["t/4011",[70,2.978,73,2.604,934,5.088,1379,5.479,1380,5.479]],["t/4013",[73,3.88,884,6.685]],["t/4014",[73,2.924,162,3.038,343,3.413,454,5.715]],["t/4016",[73,3.88,1381,8.165]],["t/4018",[73,4.638]],["t/4019",[173,3.276,1256,6.518,1382,7.018]],["t/4021",[31,3.513,162,3.038,191,4.267,1383,6.153]],["t/4023",[390,4.558,522,5.442,1384,7.018]],["t/4025",[31,3.513,390,3.996,1258,5.715,1259,5.715]],["t/4027",[151,4.895,218,5.715,1262,5.21,1385,6.153]],["t/4029",[173,3.276,261,4.866,1386,7.018]],["t/4031",[173,2.873,261,4.267,444,4.206,1354,5.715]],["t/4033",[151,4.895,460,5.21,1262,5.21,1387,6.153]],["t/4035",[37,4.006,664,5.942,1388,7.018]],["t/4037",[154,4.506,516,5.942,1389,7.018]],["t/4039",[522,6.331,1390,8.165]],["t/4041",[173,3.276,663,6.518,1391,7.018]],["t/4043",[31,4.661,1263,6.913]],["t/4045",[31,4.661,1263,6.913]],["t/4047",[31,4.006,984,5.582,1392,7.018]],["t/4049",[31,4.006,1393,7.018,1394,7.018]],["t/4051",[73,3.335,321,5.319,1395,6.518]],["t/4053",[73,3.335,321,5.319,1395,6.518]],["t/4055",[173,3.276,812,6.188,1396,7.018]],["t/4057",[99,4.558,522,5.442,1397,7.018]],["t/4059",[31,4.006,99,4.558,1182,6.518]],["t/4061",[31,3.513,99,3.996,764,5.426,1398,6.153]],["t/4063",[154,3.951,191,4.267,442,3.867,1399,6.153]],["t/4065",[191,4.267,323,4.148,442,3.867,1400,6.153]],["t/4067",[160,4.095,167,3.688,173,2.873,1401,6.153]],["t/4069",[173,3.276,1257,6.518,1402,7.018]],["t/4071",[189,5.023,433,5.023,1403,7.018]],["t/4073",[61,4.529,712,7.583]],["t/4074",[519,3.248,521,4.942,969,5.582]],["t/4076",[519,3.248,521,4.942,969,5.582]],["t/4078",[61,3.039,323,3.693,444,3.744,684,4.639,1404,5.479]],["t/4080",[61,3.413,323,4.148,684,5.21,1405,6.153]],["t/4082",[61,3.892,444,4.796,1406,7.018]],["t/4084",[61,3.413,70,3.345,444,4.206,1407,6.153]],["t/4086",[61,3.892,167,4.206,1408,7.018]],["t/4088",[7,3.513,48,4.405,519,2.848,980,5.715]],["t/4090",[162,3.038,323,4.148,519,2.848,981,5.715]],["t/4092",[519,3.779,982,7.583]],["t/4094",[61,3.892,336,5.21,1409,7.018]],["t/4096",[519,3.779,970,7.199]],["t/4098",[519,3.248,983,6.518,984,5.582]],["t/4100",[137,5.442,519,3.248,985,6.518]],["t/4102",[61,3.892,1410,7.018,1411,7.018]],["t/4104",[519,3.248,681,5.319,968,5.942]],["t/4106",[73,4.638]],["t/4107",[862,7.99]],["t/4109",[73,3.88,155,3.795]],["t/4110",[1412,9.76]],["t/4112",[43,4.382,73,3.88]],["t/4113",[39,4.148,1413,6.153,1414,5.21,1415,6.153]],["t/4115",[43,3.303,342,5.038,1414,5.21,1416,6.153]],["t/4117",[43,3.303,691,5.426,1414,5.21,1417,6.153]],["t/4119",[159,4.866,1414,5.942,1418,7.018]],["t/4121",[73,3.88,1419,5.662]],["t/4122",[162,3.038,343,3.413,1419,4.267,1420,6.153]],["t/4124",[390,3.996,403,4.483,1419,4.267,1421,6.153]],["t/4126",[403,5.112,1419,4.866,1422,7.018]],["t/4128",[423,5.442,1419,4.866,1423,7.018]],["t/4130",[274,4.333,628,5.715,1419,4.267,1424,6.153]],["t/4132",[343,3.413,403,4.483,1419,4.267,1425,6.153]],["t/4134",[274,4.333,419,5.21,1419,4.267,1426,6.153]],["t/4136",[264,4.148,274,4.333,1419,4.267,1427,6.153]],["t/4138",[377,4.772,1063,5.426,1419,4.267,1428,6.153]],["t/4140",[343,3.413,1063,5.426,1419,4.267,1429,6.153]],["t/4142",[33,3.867,702,4.569,1419,4.267,1430,6.153]],["t/4144",[33,3.867,264,4.148,1419,4.267,1431,6.153]],["t/4146",[74,5.03,357,6.331]],["t/4147",[74,4.324,307,5.582,1318,6.518]],["t/4149",[74,5.03,1319,7.583]],["t/4151",[356,6.494,357,6.331]],["t/4153",[74,4.324,634,5.746,1320,6.518]],["t/4155",[377,5.442,515,4.457,1321,6.518]]],"invertedIndex":[["0",{"_index":237,"t":{"546":{"position":[[0,1]]},"548":{"position":[[0,1]]},"550":{"position":[[0,1]]},"1229":{"position":[[16,1]]},"2767":{"position":[[16,1]]}}}],["1",{"_index":101,"t":{"220":{"position":[[0,1]]},"546":{"position":[[2,1]]},"1254":{"position":[[28,1]]},"1520":{"position":[[2,1]]},"1523":{"position":[[4,1]]},"1533":{"position":[[4,1]]},"1783":{"position":[[0,1],[2,1]]},"1785":{"position":[[0,1]]},"1787":{"position":[[0,1]]},"1789":{"position":[[0,1]]},"1791":{"position":[[0,1]]},"1793":{"position":[[0,1]]},"1795":{"position":[[0,1]]},"1797":{"position":[[0,1]]},"1799":{"position":[[0,1],[4,1]]},"1801":{"position":[[0,1]]},"1803":{"position":[[0,1]]},"2037":{"position":[[8,1]]},"2256":{"position":[[0,1]]},"2291":{"position":[[2,1]]},"2295":{"position":[[4,1]]},"2385":{"position":[[9,1]]},"2416":{"position":[[2,1]]},"2879":{"position":[[0,1]]},"2893":{"position":[[5,1]]},"3087":{"position":[[2,1]]},"3097":{"position":[[4,1]]},"3194":{"position":[[2,1]]},"3196":{"position":[[2,1],[4,1]]},"3198":{"position":[[2,1]]},"3200":{"position":[[2,1]]},"3202":{"position":[[2,1]]},"3206":{"position":[[4,1]]},"3297":{"position":[[0,1]]},"3482":{"position":[[2,1]]},"3483":{"position":[[2,1],[4,1]]},"3485":{"position":[[2,1]]},"3487":{"position":[[2,1]]}}}],["10",{"_index":610,"t":{"1265":{"position":[[12,2]]},"3315":{"position":[[0,2]]}}}],["100",{"_index":222,"t":{"519":{"position":[[0,3]]}}}],["11",{"_index":1138,"t":{"3317":{"position":[[0,2]]}}}],["12",{"_index":651,"t":{"1318":{"position":[[15,2]]},"3319":{"position":[[0,2]]}}}],["13",{"_index":1140,"t":{"3321":{"position":[[0,2]]}}}],["14",{"_index":1142,"t":{"3323":{"position":[[0,2]]}}}],["15",{"_index":1144,"t":{"3325":{"position":[[0,2]]}}}],["17",{"_index":755,"t":{"1529":{"position":[[15,2]]}}}],["2",{"_index":103,"t":{"222":{"position":[[0,1]]},"548":{"position":[[2,1]]},"1213":{"position":[[38,1]]},"1254":{"position":[[61,1]]},"1522":{"position":[[2,1]]},"1523":{"position":[[2,1]]},"1525":{"position":[[2,1],[4,1]]},"1527":{"position":[[2,1]]},"1529":{"position":[[2,1]]},"1577":{"position":[[0,1]]},"1785":{"position":[[2,1]]},"1801":{"position":[[4,1]]},"2039":{"position":[[8,1]]},"2293":{"position":[[2,1]]},"2295":{"position":[[2,1]]},"2387":{"position":[[9,1]]},"2416":{"position":[[0,1]]},"2418":{"position":[[0,1],[2,1]]},"2420":{"position":[[0,1]]},"2895":{"position":[[5,1]]},"3089":{"position":[[2,1]]},"3099":{"position":[[4,1]]},"3198":{"position":[[4,1]]},"3204":{"position":[[2,1]]},"3206":{"position":[[2,1]]},"3208":{"position":[[2,1],[4,1]]},"3210":{"position":[[2,1]]},"3212":{"position":[[2,1]]},"3299":{"position":[[0,1]]},"3485":{"position":[[4,1]]},"3489":{"position":[[2,1]]},"3768":{"position":[[54,1]]}}}],["21",{"_index":707,"t":{"1410":{"position":[[40,2]]}}}],["2333",{"_index":56,"t":{"150":{"position":[[32,4]]}}}],["3",{"_index":241,"t":{"550":{"position":[[2,1]]},"1229":{"position":[[14,1]]},"1445":{"position":[[33,1]]},"1527":{"position":[[4,1]]},"1531":{"position":[[2,1]]},"1533":{"position":[[2,1]]},"1578":{"position":[[0,1]]},"1787":{"position":[[2,1]]},"1803":{"position":[[4,1]]},"2389":{"position":[[9,1]]},"2420":{"position":[[2,1]]},"2767":{"position":[[14,1]]},"2897":{"position":[[5,1]]},"3087":{"position":[[0,1]]},"3089":{"position":[[0,1]]},"3091":{"position":[[0,1],[2,1]]},"3093":{"position":[[0,1]]},"3095":{"position":[[0,1]]},"3097":{"position":[[0,1]]},"3099":{"position":[[0,1]]},"3101":{"position":[[0,1],[4,1]]},"3200":{"position":[[4,1]]},"3210":{"position":[[4,1]]},"3301":{"position":[[0,1]]},"3487":{"position":[[4,1]]},"3491":{"position":[[2,1]]}}}],["32",{"_index":920,"t":{"2369":{"position":[[20,2]]}}}],["4",{"_index":731,"t":{"1445":{"position":[[38,1]]},"1529":{"position":[[4,1]]},"1579":{"position":[[0,1]]},"1789":{"position":[[2,1]]},"2291":{"position":[[0,1]]},"2293":{"position":[[0,1]]},"2295":{"position":[[0,1]]},"2391":{"position":[[9,1]]},"2437":{"position":[[13,1]]},"2899":{"position":[[5,1]]},"3093":{"position":[[2,1]]},"3202":{"position":[[4,1]]},"3212":{"position":[[4,1]]},"3303":{"position":[[0,1]]},"3493":{"position":[[2,1]]}}}],["4090",{"_index":943,"t":{"2470":{"position":[[28,4]]}}}],["5",{"_index":767,"t":{"1581":{"position":[[0,1]]},"1791":{"position":[[2,1]]},"2901":{"position":[[5,1]]},"3095":{"position":[[2,1]]},"3097":{"position":[[2,1]]},"3099":{"position":[[2,1]]},"3101":{"position":[[2,1]]},"3305":{"position":[[0,1]]},"3482":{"position":[[0,1]]},"3483":{"position":[[0,1]]},"3485":{"position":[[0,1]]},"3487":{"position":[[0,1]]},"3489":{"position":[[0,1]]},"3491":{"position":[[0,1]]},"3493":{"position":[[0,1]]},"3495":{"position":[[0,1],[2,1]]},"3497":{"position":[[0,1]]},"3499":{"position":[[0,1]]}}}],["51",{"_index":227,"t":{"523":{"position":[[25,2]]},"2949":{"position":[[15,2]]},"3194":{"position":[[18,2],[21,2],[25,2]]}}}],["6",{"_index":680,"t":{"1351":{"position":[[19,1]]},"1582":{"position":[[0,1]]},"1793":{"position":[[2,1]]},"2891":{"position":[[24,1]]},"2903":{"position":[[5,1]]},"3194":{"position":[[0,1]]},"3196":{"position":[[0,1]]},"3198":{"position":[[0,1]]},"3200":{"position":[[0,1]]},"3202":{"position":[[0,1]]},"3204":{"position":[[0,1]]},"3206":{"position":[[0,1]]},"3208":{"position":[[0,1]]},"3210":{"position":[[0,1]]},"3212":{"position":[[0,1]]},"3307":{"position":[[0,1]]},"3497":{"position":[[2,1]]}}}],["64",{"_index":1098,"t":{"3156":{"position":[[23,2]]}}}],["7",{"_index":770,"t":{"1583":{"position":[[0,1]]},"1795":{"position":[[2,1]]},"2879":{"position":[[7,1]]},"3309":{"position":[[0,1]]},"3499":{"position":[[2,1]]}}}],["8",{"_index":771,"t":{"1584":{"position":[[0,1]]},"1797":{"position":[[2,1]]},"1799":{"position":[[2,1]]},"1801":{"position":[[2,1]]},"1803":{"position":[[2,1]]},"2879":{"position":[[2,1],[9,1]]},"3311":{"position":[[0,1]]}}}],["8444",{"_index":1168,"t":{"3457":{"position":[[17,4]]}}}],["9",{"_index":773,"t":{"1585":{"position":[[0,1]]},"3313":{"position":[[0,1]]}}}],["aac",{"_index":754,"t":{"1529":{"position":[[11,3]]}}}],["abil",{"_index":98,"t":{"216":{"position":[[43,7]]}}}],["absorb",{"_index":1415,"t":{"4113":{"position":[[3,6]]}}}],["abstract",{"_index":106,"t":{"226":{"position":[[0,8]]},"1122":{"position":[[0,8]]}}}],["academi",{"_index":1149,"t":{"3342":{"position":[[19,7]]},"3357":{"position":[[18,7]]}}}],["accept",{"_index":520,"t":{"1105":{"position":[[0,6]]},"1339":{"position":[[4,9]]},"1351":{"position":[[40,6]]},"1704":{"position":[[0,9]]},"2170":{"position":[[0,6]]},"2176":{"position":[[0,6]]},"2188":{"position":[[6,7]]},"2190":{"position":[[18,6]]},"2192":{"position":[[38,7]]}}}],["access",{"_index":636,"t":{"1300":{"position":[[92,6]]}}}],["account",{"_index":171,"t":{"395":{"position":[[0,7]]},"397":{"position":[[16,7]]},"403":{"position":[[11,7]]},"407":{"position":[[18,7]]},"568":{"position":[[16,7]]}}}],["ack",{"_index":1184,"t":{"3533":{"position":[[12,3]]}}}],["action",{"_index":826,"t":{"1835":{"position":[[8,7]]},"2972":{"position":[[5,7]]}}}],["ad",{"_index":169,"t":{"393":{"position":[[6,5]]},"1388":{"position":[[54,6]]}}}],["adapt",{"_index":1056,"t":{"2958":{"position":[[18,5]]}}}],["add",{"_index":301,"t":{"652":{"position":[[4,3]]},"683":{"position":[[0,3]]},"685":{"position":[[0,3]]},"802":{"position":[[0,3]]},"831":{"position":[[0,3]]},"833":{"position":[[0,3]]},"1101":{"position":[[0,3]]},"1244":{"position":[[36,3]]},"1380":{"position":[[6,3]]},"1382":{"position":[[72,3]]},"1497":{"position":[[0,3]]},"1959":{"position":[[0,3]]},"1967":{"position":[[0,3]]},"2018":{"position":[[0,3]]},"2051":{"position":[[0,3]]},"2238":{"position":[[0,3]]},"2240":{"position":[[0,3]]},"2242":{"position":[[0,3]]},"2244":{"position":[[0,3]]},"2338":{"position":[[0,3]]},"2596":{"position":[[0,3]]},"2608":{"position":[[0,3]]},"2838":{"position":[[0,3]]},"2899":{"position":[[8,3]]},"3504":{"position":[[0,3]]},"3582":{"position":[[3,3]]},"3666":{"position":[[0,3]]},"3777":{"position":[[0,3]]},"3779":{"position":[[0,3]]},"3881":{"position":[[4,3]]},"3976":{"position":[[0,3]]}}}],["add_fund",{"_index":329,"t":{"685":{"position":[[0,9]]}}}],["add_key",{"_index":1368,"t":{"3976":{"position":[[0,7]]}}}],["add_mirror",{"_index":402,"t":{"831":{"position":[[0,10]]},"3777":{"position":[[0,10]]}}}],["add_missing_fil",{"_index":404,"t":{"833":{"position":[[0,17]]},"1959":{"position":[[0,17]]},"3779":{"position":[[0,17]]}}}],["add_plot_directori",{"_index":911,"t":{"2338":{"position":[[0,18]]}}}],["add_private_key",{"_index":386,"t":{"802":{"position":[[0,15]]}}}],["add_proof_rev",{"_index":1176,"t":{"3504":{"position":[[0,16]]}}}],["add_store_id",{"_index":859,"t":{"1967":{"position":[[0,12]]}}}],["add_token",{"_index":1255,"t":{"3666":{"position":[[0,9]]}}}],["add_uri",{"_index":1036,"t":{"2838":{"position":[[0,7]]}}}],["addcattoken",{"_index":1223,"t":{"3606":{"position":[[5,11]]}}}],["addit",{"_index":8,"t":{"12":{"position":[[0,10]]},"26":{"position":[[0,10]]},"46":{"position":[[0,10]]},"62":{"position":[[0,10]]},"81":{"position":[[0,10]]},"119":{"position":[[0,10]]},"196":{"position":[[0,10]]},"269":{"position":[[0,10]]},"285":{"position":[[0,10]]},"301":{"position":[[0,10]]},"317":{"position":[[0,10]]},"458":{"position":[[0,10]]},"509":{"position":[[0,10]]},"1044":{"position":[[0,10]]},"1056":{"position":[[0,10]]},"1473":{"position":[[0,10]]},"2533":{"position":[[23,10]]},"2635":{"position":[[0,10]]},"2905":{"position":[[0,10]]},"3005":{"position":[[0,10]]},"3019":{"position":[[0,10]]},"3116":{"position":[[0,10]]},"3222":{"position":[[0,9]]},"3338":{"position":[[0,10]]},"3482":{"position":[[4,10]]},"3549":{"position":[[8,9]]},"3551":{"position":[[8,9]]},"3553":{"position":[[7,9]]},"3913":{"position":[[4,9]]},"3915":{"position":[[11,10]]}}}],["address",{"_index":154,"t":{"357":{"position":[[7,7]]},"610":{"position":[[3,7]]},"768":{"position":[[11,9]]},"1196":{"position":[[20,7]]},"1320":{"position":[[51,7]]},"1362":{"position":[[28,7]]},"1370":{"position":[[23,7]]},"1404":{"position":[[32,7]]},"1644":{"position":[[49,7]]},"1769":{"position":[[4,7]]},"1898":{"position":[[33,7]]},"1900":{"position":[[25,7]]},"2110":{"position":[[19,7]]},"2314":{"position":[[43,7]]},"2812":{"position":[[14,7]]},"2918":{"position":[[7,9]]},"3680":{"position":[[4,7]]},"4037":{"position":[[9,7]]},"4063":{"position":[[16,7]]}}}],["adjust",{"_index":305,"t":{"654":{"position":[[4,6]]},"2885":{"position":[[11,10]]}}}],["admin",{"_index":745,"t":{"1491":{"position":[[4,5]]},"1563":{"position":[[16,5]]},"1658":{"position":[[4,5]]}}}],["advanc",{"_index":450,"t":{"902":{"position":[[0,8]]},"1156":{"position":[[15,8]]}}}],["advantag",{"_index":176,"t":{"407":{"position":[[0,10]]},"412":{"position":[[0,10]]},"1223":{"position":[[13,9]]}}}],["advertis",{"_index":864,"t":{"2024":{"position":[[19,9]]},"2943":{"position":[[6,9]]}}}],["affect",{"_index":1060,"t":{"2966":{"position":[[20,6]]}}}],["aggreg",{"_index":658,"t":{"1322":{"position":[[24,11]]},"1324":{"position":[[43,11]]},"3218":{"position":[[0,9]]}}}],["aggsig",{"_index":1340,"t":{"3915":{"position":[[4,6]]}}}],["algorithm",{"_index":214,"t":{"492":{"position":[[28,10]]},"1176":{"position":[[69,9]]},"1523":{"position":[[6,10]]},"2513":{"position":[[13,9]]},"2541":{"position":[[13,9]]},"2885":{"position":[[22,9]]}}}],["alloc",{"_index":581,"t":{"1217":{"position":[[50,10]]}}}],["allow",{"_index":825,"t":{"1835":{"position":[[0,7]]}}}],["amount",{"_index":664,"t":{"1331":{"position":[[81,6]]},"1589":{"position":[[22,6]]},"3079":{"position":[[19,6]]},"4035":{"position":[[11,6]]}}}],["ancestor",{"_index":1312,"t":{"3795":{"position":[[4,9]]}}}],["anoth",{"_index":571,"t":{"1211":{"position":[[47,7]]},"1252":{"position":[[46,7]]},"1318":{"position":[[49,7]]},"1349":{"position":[[24,7]]},"1400":{"position":[[51,7]]}}}],["answer",{"_index":563,"t":{"1190":{"position":[[16,7]]}}}],["anymor",{"_index":641,"t":{"1302":{"position":[[60,7]]}}}],["api",{"_index":850,"t":{"1949":{"position":[[5,3]]},"2990":{"position":[[13,3]]}}}],["app",{"_index":627,"t":{"1296":{"position":[[36,3]]},"1481":{"position":[[29,4]]},"1512":{"position":[[5,3]]}}}],["appli",{"_index":548,"t":{"1156":{"position":[[48,7]]}}}],["applic",{"_index":1131,"t":{"3303":{"position":[[3,11]]}}}],["aren",{"_index":668,"t":{"1333":{"position":[[64,4]]}}}],["around",{"_index":533,"t":{"1144":{"position":[[34,6]]}}}],["art",{"_index":547,"t":{"1156":{"position":[[41,3]]}}}],["asic",{"_index":1148,"t":{"3342":{"position":[[0,4]]},"3420":{"position":[[0,4]]},"3422":{"position":[[8,4]]},"3433":{"position":[[13,4],[34,4]]},"3435":{"position":[[20,4]]},"3437":{"position":[[33,4]]},"3441":{"position":[[48,4]]},"3449":{"position":[[0,4]]}}}],["ask",{"_index":1054,"t":{"2951":{"position":[[34,3]]}}}],["aspect",{"_index":810,"t":{"1787":{"position":[[19,7]]}}}],["assert",{"_index":193,"t":{"435":{"position":[[0,9]]}}}],["asset",{"_index":684,"t":{"1366":{"position":[[33,6]]},"1402":{"position":[[61,6]]},"4078":{"position":[[4,5]]},"4080":{"position":[[8,5]]}}}],["assign",{"_index":1048,"t":{"2933":{"position":[[9,6]]}}}],["attack",{"_index":196,"t":{"437":{"position":[[7,7]]},"439":{"position":[[22,6]]},"513":{"position":[[9,6]]},"519":{"position":[[5,6]]},"521":{"position":[[23,6]]},"523":{"position":[[29,6]]},"527":{"position":[[19,6]]},"529":{"position":[[28,6]]},"2537":{"position":[[17,7]]},"3194":{"position":[[29,7]]},"3396":{"position":[[14,7]]}}}],["attempt",{"_index":575,"t":{"1215":{"position":[[12,7]]},"1217":{"position":[[12,7]]},"1351":{"position":[[26,10]]},"1636":{"position":[[10,8]]},"1638":{"position":[[30,8]]},"1640":{"position":[[33,8]]},"1646":{"position":[[20,8]]},"2190":{"position":[[6,8]]}}}],["attest",{"_index":456,"t":{"921":{"position":[[11,6]]}}}],["audit",{"_index":258,"t":{"582":{"position":[[8,5]]},"584":{"position":[[8,5]]},"592":{"position":[[0,5]]}}}],["authent",{"_index":244,"t":{"557":{"position":[[0,14]]},"3030":{"position":[[7,14]]}}}],["auto",{"_index":885,"t":{"2224":{"position":[[7,4]]},"3182":{"position":[[4,4]]},"3190":{"position":[[4,4]]},"3995":{"position":[[4,4]]},"4009":{"position":[[4,4]]}}}],["autofarm",{"_index":1124,"t":{"3267":{"position":[[0,8]]}}}],["autom",{"_index":924,"t":{"2401":{"position":[[0,9]]}}}],["automat",{"_index":640,"t":{"1302":{"position":[[25,13]]},"1660":{"position":[[0,9]]}}}],["avail",{"_index":715,"t":{"1420":{"position":[[26,9]]},"1426":{"position":[[26,9]]},"2480":{"position":[[58,9]]},"3204":{"position":[[12,12]]},"3206":{"position":[[14,12]]},"3208":{"position":[[14,12]]},"3210":{"position":[[14,12]]},"3212":{"position":[[14,12]]}}}],["averag",{"_index":111,"t":{"232":{"position":[[0,7]]},"1148":{"position":[[9,7]]}}}],["back",{"_index":630,"t":{"1296":{"position":[[126,4]]},"1628":{"position":[[5,4]]},"1638":{"position":[[47,4]]},"1642":{"position":[[13,4]]}}}],["background",{"_index":1173,"t":{"3478":{"position":[[25,10]]}}}],["backup",{"_index":150,"t":{"346":{"position":[[0,6]]},"923":{"position":[[11,6]]}}}],["bad",{"_index":580,"t":{"1217":{"position":[[46,3]]},"1275":{"position":[[30,3]]}}}],["bag",{"_index":64,"t":{"160":{"position":[[11,3]]},"162":{"position":[[11,3]]},"1565":{"position":[[11,3]]},"1567":{"position":[[11,3]]},"1569":{"position":[[11,3]]},"1571":{"position":[[21,3]]}}}],["balanc",{"_index":321,"t":{"670":{"position":[[17,7]]},"687":{"position":[[0,7]]},"1292":{"position":[[25,7]]},"1310":{"position":[[19,7]]},"1331":{"position":[[52,7]]},"1514":{"position":[[5,7]]},"4051":{"position":[[11,7]]},"4053":{"position":[[11,8]]}}}],["ban",{"_index":949,"t":{"2506":{"position":[[0,4]]}}}],["bandwidth",{"_index":120,"t":{"234":{"position":[[30,9]]}}}],["base",{"_index":963,"t":{"2543":{"position":[[10,5]]}}}],["basic",{"_index":829,"t":{"1853":{"position":[[0,5]]}}}],["batch",{"_index":1308,"t":{"3781":{"position":[[0,5]]}}}],["batch_upd",{"_index":1307,"t":{"3781":{"position":[[0,12]]}}}],["be",{"_index":721,"t":{"1428":{"position":[[32,5]]},"2158":{"position":[[0,5]]}}}],["befor",{"_index":788,"t":{"1636":{"position":[[42,6]]},"1646":{"position":[[53,6]]}}}],["beginn",{"_index":448,"t":{"900":{"position":[[0,8]]}}}],["bene",{"_index":959,"t":{"2531":{"position":[[0,5]]},"2547":{"position":[[0,5]]}}}],["benefit",{"_index":174,"t":{"397":{"position":[[0,8]]},"399":{"position":[[0,8]]},"2529":{"position":[[0,8]]}}}],["beta",{"_index":626,"t":{"1296":{"position":[[31,4],[69,4]]},"2455":{"position":[[0,4]]}}}],["better",{"_index":562,"t":{"1182":{"position":[[12,6]]}}}],["between",{"_index":53,"t":{"150":{"position":[[11,7]]},"1031":{"position":[[9,7]]},"1178":{"position":[[23,7]]},"1242":{"position":[[23,7]]},"1259":{"position":[[23,7]]},"1368":{"position":[[23,7]]},"1459":{"position":[[23,7]]},"2935":{"position":[[23,7]]},"2980":{"position":[[27,7]]},"3245":{"position":[[5,7]]},"3768":{"position":[[23,7]]}}}],["beyond",{"_index":245,"t":{"563":{"position":[[0,6]]}}}],["bft",{"_index":212,"t":{"492":{"position":[[14,3]]}}}],["big",{"_index":567,"t":{"1203":{"position":[[4,3]]}}}],["binari",{"_index":140,"t":{"328":{"position":[[16,6]]},"2070":{"position":[[0,6]]}}}],["bit",{"_index":130,"t":{"244":{"position":[[31,3]]},"2515":{"position":[[9,4]]},"2533":{"position":[[34,3]]}}}],["bitcoin",{"_index":550,"t":{"1158":{"position":[[14,7]]},"1160":{"position":[[6,7]]},"3087":{"position":[[22,7]]},"3097":{"position":[[21,7]]},"3196":{"position":[[38,7]]},"3206":{"position":[[36,7]]}}}],["bl",{"_index":841,"t":{"1912":{"position":[[0,3]]}}}],["bladebit",{"_index":1018,"t":{"2743":{"position":[[0,8]]},"2845":{"position":[[0,8]]},"2847":{"position":[[0,8]]},"2849":{"position":[[0,8]]},"2859":{"position":[[0,8]]},"3168":{"position":[[0,8]]}}}],["block",{"_index":29,"t":{"96":{"position":[[5,5]]},"142":{"position":[[0,5]]},"469":{"position":[[8,5]]},"477":{"position":[[17,5]]},"479":{"position":[[8,5]]},"531":{"position":[[22,6]]},"537":{"position":[[12,5]]},"584":{"position":[[19,5]]},"1000":{"position":[[0,5]]},"1225":{"position":[[80,5]]},"1238":{"position":[[12,6]]},"1304":{"position":[[74,5]]},"1793":{"position":[[27,6]]},"2220":{"position":[[11,5]]},"2395":{"position":[[0,5]]},"2613":{"position":[[9,6]]},"2615":{"position":[[8,5]]},"2682":{"position":[[8,5]]},"2684":{"position":[[8,5]]},"2686":{"position":[[7,5]]},"2688":{"position":[[8,6]]},"2690":{"position":[[8,6]]},"2692":{"position":[[7,6]]},"2694":{"position":[[15,5]]},"2696":{"position":[[19,5]]},"2698":{"position":[[19,5]]},"3174":{"position":[[5,5]]},"3176":{"position":[[8,6]]},"3186":{"position":[[6,6]]},"3188":{"position":[[7,6]]},"3491":{"position":[[10,6]]},"3499":{"position":[[28,6]]},"3537":{"position":[[8,5]]},"3539":{"position":[[8,5]]},"3555":{"position":[[15,6]]},"3557":{"position":[[14,6]]},"3559":{"position":[[15,6]]},"3921":{"position":[[4,5]]},"3925":{"position":[[4,6]]},"3927":{"position":[[4,5]]},"3929":{"position":[[4,5]]},"3931":{"position":[[4,5]]},"3933":{"position":[[4,5]]},"3935":{"position":[[4,5]]},"3937":{"position":[[4,5]]},"3967":{"position":[[15,5]]}}}],["blockchain",{"_index":165,"t":{"387":{"position":[[0,10]]},"561":{"position":[[0,10]]},"1248":{"position":[[18,10]]},"1250":{"position":[[31,10]]},"1252":{"position":[[23,10]]},"1254":{"position":[[30,10]]},"1335":{"position":[[60,10]]},"1337":{"position":[[28,10]]},"1422":{"position":[[55,10]]},"1443":{"position":[[41,10]]},"1584":{"position":[[34,10]]},"2914":{"position":[[0,10]]},"2988":{"position":[[81,10]]},"3923":{"position":[[4,10]]}}}],["bodi",{"_index":51,"t":{"146":{"position":[[0,4]]}}}],["bootstrap",{"_index":930,"t":{"2420":{"position":[[4,13]]}}}],["both",{"_index":1045,"t":{"2931":{"position":[[16,4]]}}}],["bound",{"_index":896,"t":{"2314":{"position":[[20,5]]},"2318":{"position":[[25,5]]}}}],["box",{"_index":242,"t":{"550":{"position":[[4,5]]}}}],["break",{"_index":937,"t":{"2462":{"position":[[15,5]]}}}],["breakdown",{"_index":888,"t":{"2281":{"position":[[0,9]]}}}],["bribe",{"_index":229,"t":{"527":{"position":[[7,5]]},"529":{"position":[[7,5]]}}}],["bridg",{"_index":69,"t":{"167":{"position":[[15,6]]},"173":{"position":[[28,6]]}}}],["brun",{"_index":795,"t":{"1716":{"position":[[0,4]]},"1736":{"position":[[0,4]]}}}],["budget",{"_index":1030,"t":{"2791":{"position":[[0,6]]}}}],["build",{"_index":814,"t":{"1793":{"position":[[18,8]]},"1985":{"position":[[0,5]]}}}],["bulk",{"_index":865,"t":{"2032":{"position":[[12,4]]},"2034":{"position":[[26,4]]},"2036":{"position":[[8,4]]},"3897":{"position":[[9,4]]},"3901":{"position":[[12,4]]},"3907":{"position":[[13,4]]}}}],["bundl",{"_index":861,"t":{"1997":{"position":[[10,6]]},"3220":{"position":[[15,7]]}}}],["burn",{"_index":565,"t":{"1196":{"position":[[15,4]]}}}],["busi",{"_index":922,"t":{"2385":{"position":[[24,4]]},"2387":{"position":[[20,4]]}}}],["buy",{"_index":625,"t":{"1294":{"position":[[12,3]]},"1356":{"position":[[9,3]]}}}],["cabl",{"_index":594,"t":{"1229":{"position":[[18,5]]},"2767":{"position":[[18,5]]}}}],["calcul",{"_index":116,"t":{"234":{"position":[[0,10]]},"463":{"position":[[5,11]]},"1402":{"position":[[18,10]]},"1936":{"position":[[0,9]]},"2604":{"position":[[10,11]]},"2877":{"position":[[0,11]]},"2964":{"position":[[13,9]]},"2966":{"position":[[42,11]]},"2982":{"position":[[7,9]]},"3883":{"position":[[4,9]]}}}],["call",{"_index":780,"t":{"1599":{"position":[[22,4]]},"3661":{"position":[[4,5]]},"3759":{"position":[[0,4]]}}}],["cancel",{"_index":521,"t":{"1107":{"position":[[0,6]]},"1300":{"position":[[58,6]]},"1335":{"position":[[5,9],[50,6]]},"1337":{"position":[[5,6]]},"2172":{"position":[[0,6]]},"2192":{"position":[[6,7]]},"2574":{"position":[[0,6]]},"2640":{"position":[[0,6]]},"2642":{"position":[[0,6]]},"3783":{"position":[[0,6]]},"4074":{"position":[[0,6]]},"4076":{"position":[[0,6]]}}}],["cancel_off",{"_index":969,"t":{"2574":{"position":[[0,12]]},"2640":{"position":[[0,12]]},"2642":{"position":[[0,13]]},"3783":{"position":[[0,12]]},"4074":{"position":[[0,12]]},"4076":{"position":[[0,13]]}}}],["canceloff",{"_index":1274,"t":{"3716":{"position":[[5,11]]}}}],["candid",{"_index":936,"t":{"2455":{"position":[[17,9]]}}}],["capit",{"_index":734,"t":{"1459":{"position":[[51,14]]}}}],["carrier",{"_index":1171,"t":{"3463":{"position":[[13,7]]}}}],["case",{"_index":783,"t":{"1632":{"position":[[6,5]]},"3764":{"position":[[21,4]]}}}],["cat",{"_index":61,"t":{"158":{"position":[[0,4]]},"645":{"position":[[27,4]]},"739":{"position":[[9,4]]},"1101":{"position":[[10,3]]},"1103":{"position":[[14,3]]},"1302":{"position":[[14,3]]},"1339":{"position":[[47,3]]},"1392":{"position":[[52,3]]},"1487":{"position":[[0,3]]},"1491":{"position":[[0,3]]},"1493":{"position":[[27,3]]},"1495":{"position":[[29,3]]},"1497":{"position":[[6,3]]},"1499":{"position":[[10,3]]},"1510":{"position":[[0,3]]},"1547":{"position":[[20,4]]},"1563":{"position":[[12,3]]},"1658":{"position":[[0,3]]},"1660":{"position":[[10,4]]},"1664":{"position":[[8,4]]},"1666":{"position":[[8,4]]},"1672":{"position":[[9,4]]},"1680":{"position":[[11,4]]},"1682":{"position":[[14,4]]},"1686":{"position":[[10,3]]},"1688":{"position":[[0,3]]},"1690":{"position":[[27,3]]},"2188":{"position":[[25,3]]},"4073":{"position":[[0,4]]},"4078":{"position":[[0,3]]},"4080":{"position":[[0,3]]},"4082":{"position":[[0,3]]},"4084":{"position":[[0,3]]},"4086":{"position":[[0,3]]},"4094":{"position":[[4,3]]},"4102":{"position":[[10,4]]}}}],["cat1",{"_index":749,"t":{"1514":{"position":[[0,4]]},"1539":{"position":[[11,4]]},"2196":{"position":[[18,4]]}}}],["cat_asset_id_to_nam",{"_index":1404,"t":{"4078":{"position":[[0,20]]}}}],["cat_get_asset_id",{"_index":1405,"t":{"4080":{"position":[[0,16]]}}}],["cat_get_nam",{"_index":1406,"t":{"4082":{"position":[[0,12]]}}}],["cat_set_nam",{"_index":1407,"t":{"4084":{"position":[[0,12]]}}}],["cat_spend",{"_index":1408,"t":{"4086":{"position":[[0,9]]}}}],["caught",{"_index":576,"t":{"1215":{"position":[[25,6]]}}}],["cert",{"_index":893,"t":{"2302":{"position":[[18,4]]},"2305":{"position":[[23,4]]},"2311":{"position":[[37,5]]}}}],["certain",{"_index":643,"t":{"1304":{"position":[[53,7]]},"2982":{"position":[[55,7]]}}}],["certif",{"_index":736,"t":{"1461":{"position":[[18,12]]},"2508":{"position":[[0,12]]}}}],["chain",{"_index":220,"t":{"515":{"position":[[15,6]]},"1791":{"position":[[19,5]]},"2022":{"position":[[8,5]]},"2291":{"position":[[9,6]]},"2293":{"position":[[8,6]]},"2295":{"position":[[23,6]]},"3091":{"position":[[4,5]]},"3224":{"position":[[28,5]]},"3489":{"position":[[18,5]]},"3493":{"position":[[15,5]]},"3495":{"position":[[26,5]]}}}],["challeng",{"_index":216,"t":{"496":{"position":[[8,9]]},"1136":{"position":[[18,9]]},"2543":{"position":[[0,9]]},"3489":{"position":[[8,9]]},"3495":{"position":[[16,9]]}}}],["chang",{"_index":86,"t":{"210":{"position":[[0,6]]},"647":{"position":[[0,8]]},"741":{"position":[[0,6]]},"1455":{"position":[[9,6]]},"2462":{"position":[[21,6]]},"3862":{"position":[[0,6]]}}}],["charact",{"_index":762,"t":{"1543":{"position":[[8,10]]}}}],["check",{"_index":7,"t":{"10":{"position":[[10,5]]},"24":{"position":[[10,5]]},"44":{"position":[[10,5]]},"60":{"position":[[10,5]]},"79":{"position":[[10,5]]},"117":{"position":[[10,5]]},"194":{"position":[[10,5]]},"208":{"position":[[0,5]]},"212":{"position":[[0,5]]},"214":{"position":[[0,8]]},"267":{"position":[[10,5]]},"283":{"position":[[10,5]]},"299":{"position":[[10,5]]},"315":{"position":[[10,5]]},"341":{"position":[[6,5]]},"365":{"position":[[0,8]]},"456":{"position":[[10,5]]},"507":{"position":[[10,5]]},"804":{"position":[[0,5]]},"1042":{"position":[[10,5]]},"1054":{"position":[[10,5]]},"1335":{"position":[[39,5]]},"2412":{"position":[[0,8]]},"2644":{"position":[[0,5]]},"3003":{"position":[[10,5]]},"3017":{"position":[[10,5]]},"3114":{"position":[[10,5]]},"3336":{"position":[[10,5]]},"3444":{"position":[[0,8]]},"3785":{"position":[[0,5]]},"3978":{"position":[[0,5]]},"4088":{"position":[[0,5]]}}}],["check_delete_key",{"_index":1369,"t":{"3978":{"position":[[0,16]]}}}],["check_key",{"_index":388,"t":{"804":{"position":[[0,10]]}}}],["check_offer_valid",{"_index":980,"t":{"2644":{"position":[[0,20]]},"4088":{"position":[[0,20]]}}}],["check_plugin",{"_index":1309,"t":{"3785":{"position":[[0,13]]}}}],["checkbox",{"_index":669,"t":{"1335":{"position":[[72,8]]}}}],["checkoffervalid",{"_index":1276,"t":{"3718":{"position":[[5,18]]}}}],["checksum",{"_index":726,"t":{"1441":{"position":[[21,8]]}}}],["chia",{"_index":54,"t":{"150":{"position":[[19,4]]},"171":{"position":[[9,4]]},"177":{"position":[[13,4]]},"244":{"position":[[51,4]]},"248":{"position":[[8,4]]},"328":{"position":[[11,4]]},"405":{"position":[[0,4]]},"747":{"position":[[0,4]]},"904":{"position":[[20,4]]},"906":{"position":[[12,4]]},"908":{"position":[[13,4]]},"1003":{"position":[[15,4]]},"1071":{"position":[[8,4]]},"1073":{"position":[[18,4]]},"1093":{"position":[[8,4]]},"1095":{"position":[[18,4]]},"1099":{"position":[[8,4]]},"1140":{"position":[[0,4],[23,4]]},"1142":{"position":[[25,4]]},"1144":{"position":[[47,4]]},"1146":{"position":[[17,4]]},"1148":{"position":[[39,4]]},"1150":{"position":[[18,4]]},"1152":{"position":[[16,4]]},"1154":{"position":[[9,4]]},"1156":{"position":[[10,4]]},"1158":{"position":[[5,4]]},"1162":{"position":[[8,4]]},"1164":{"position":[[13,4]]},"1166":{"position":[[9,4]]},"1168":{"position":[[12,4]]},"1170":{"position":[[4,4]]},"1172":{"position":[[22,4]]},"1174":{"position":[[12,4]]},"1182":{"position":[[7,4]]},"1190":{"position":[[51,4]]},"1192":{"position":[[8,4]]},"1194":{"position":[[21,4]]},"1196":{"position":[[8,4]]},"1248":{"position":[[13,4]]},"1250":{"position":[[26,4]]},"1252":{"position":[[18,4]]},"1256":{"position":[[63,4]]},"1269":{"position":[[12,4]]},"1280":{"position":[[17,4]]},"1288":{"position":[[49,4]]},"1294":{"position":[[16,4]]},"1320":{"position":[[20,4]]},"1329":{"position":[[9,4]]},"1347":{"position":[[37,4]]},"1408":{"position":[[12,4]]},"1410":{"position":[[3,4]]},"1422":{"position":[[48,4]]},"1449":{"position":[[38,4]]},"1451":{"position":[[12,4]]},"1459":{"position":[[31,4],[40,4],[46,4]]},"1481":{"position":[[24,4]]},"1489":{"position":[[16,4]]},"1512":{"position":[[0,4]]},"1595":{"position":[[20,4]]},"1712":{"position":[[0,4]]},"1732":{"position":[[0,4]]},"1809":{"position":[[9,4]]},"1900":{"position":[[5,4]]},"1947":{"position":[[0,4]]},"1963":{"position":[[4,4]]},"2008":{"position":[[16,4]]},"2010":{"position":[[10,4]]},"2034":{"position":[[10,4]]},"2144":{"position":[[17,4]]},"2214":{"position":[[11,4]]},"2935":{"position":[[61,4]]},"2937":{"position":[[7,4]]},"2941":{"position":[[27,4]]},"2945":{"position":[[12,4]]},"2954":{"position":[[20,4]]},"2958":{"position":[[24,4]]},"2960":{"position":[[80,4]]},"2986":{"position":[[29,4]]},"2990":{"position":[[56,4]]},"2992":{"position":[[43,4]]},"3093":{"position":[[29,4]]},"3095":{"position":[[19,4]]},"3120":{"position":[[0,4]]},"3122":{"position":[[0,4]]},"3202":{"position":[[45,4],[57,4],[62,4]]},"3208":{"position":[[37,4],[49,4],[54,4]]},"3231":{"position":[[10,4]]},"3342":{"position":[[14,4]]},"3357":{"position":[[13,4]]},"3447":{"position":[[0,4]]},"3478":{"position":[[4,4]]},"3600":{"position":[[0,4]]},"3602":{"position":[[0,4]]},"3604":{"position":[[0,4]]},"3606":{"position":[[0,4]]},"3613":{"position":[[0,4]]},"3615":{"position":[[0,4]]},"3617":{"position":[[0,4]]},"3619":{"position":[[0,4]]},"3621":{"position":[[0,4]]},"3623":{"position":[[0,4]]},"3625":{"position":[[0,4]]},"3627":{"position":[[0,4]]},"3629":{"position":[[0,4]]},"3631":{"position":[[0,4]]},"3633":{"position":[[0,4]]},"3635":{"position":[[0,4]]},"3706":{"position":[[0,4]]},"3708":{"position":[[0,4]]},"3712":{"position":[[0,4]]},"3714":{"position":[[0,4]]},"3716":{"position":[[0,4]]},"3718":{"position":[[0,4]]},"3720":{"position":[[0,4]]},"3722":{"position":[[0,4]]},"3724":{"position":[[0,4]]},"3726":{"position":[[0,4]]},"3728":{"position":[[0,4]]},"3737":{"position":[[0,4]]},"3739":{"position":[[0,4]]},"3741":{"position":[[0,4]]},"3743":{"position":[[0,4]]},"3745":{"position":[[0,4]]},"3747":{"position":[[0,4]]}}}],["chia_addcattoken",{"_index":1222,"t":{"3606":{"position":[[0,16]]}}}],["chia_canceloff",{"_index":1273,"t":{"3716":{"position":[[0,16]]}}}],["chia_checkoffervalid",{"_index":1275,"t":{"3718":{"position":[[0,23]]}}}],["chia_createnewdidwallet",{"_index":1265,"t":{"3706":{"position":[[0,23]]}}}],["chia_createofferforid",{"_index":1285,"t":{"3728":{"position":[[0,22]]}}}],["chia_getalloff",{"_index":1269,"t":{"3712":{"position":[[0,17]]}}}],["chia_getcatassetid",{"_index":1218,"t":{"3602":{"position":[[0,18]]}}}],["chia_getcatwalletinfo",{"_index":1216,"t":{"3600":{"position":[[0,21]]}}}],["chia_getcurrentaddress",{"_index":1233,"t":{"3623":{"position":[[0,22]]}}}],["chia_getnextaddress",{"_index":1235,"t":{"3625":{"position":[[0,19]]}}}],["chia_getnft",{"_index":1289,"t":{"3737":{"position":[[0,12]]}}}],["chia_getnftinfo",{"_index":1291,"t":{"3739":{"position":[[0,15]]}}}],["chia_getnftscount",{"_index":1297,"t":{"3745":{"position":[[0,17]]}}}],["chia_getofferdata",{"_index":1281,"t":{"3724":{"position":[[0,17]]}}}],["chia_getofferrecord",{"_index":1283,"t":{"3726":{"position":[[0,19]]}}}],["chia_getofferscount",{"_index":1271,"t":{"3714":{"position":[[0,19]]}}}],["chia_getoffersummari",{"_index":1279,"t":{"3722":{"position":[[0,20]]}}}],["chia_getpublickey",{"_index":1225,"t":{"3615":{"position":[[0,17]]}}}],["chia_getsyncstatu",{"_index":1245,"t":{"3635":{"position":[[0,18]]}}}],["chia_gettransact",{"_index":1229,"t":{"3619":{"position":[[0,19]]}}}],["chia_getwallet",{"_index":1227,"t":{"3617":{"position":[[0,15]]}}}],["chia_getwalletbal",{"_index":1231,"t":{"3621":{"position":[[0,21]]}}}],["chia_login",{"_index":1224,"t":{"3613":{"position":[[0,10]]}}}],["chia_mintnft",{"_index":1293,"t":{"3741":{"position":[[0,12]]}}}],["chia_sendtransact",{"_index":1237,"t":{"3627":{"position":[[0,20]]}}}],["chia_setdidnam",{"_index":1267,"t":{"3708":{"position":[[0,15]]}}}],["chia_setnftdid",{"_index":1299,"t":{"3747":{"position":[[0,14]]}}}],["chia_signmessagebyaddress",{"_index":1241,"t":{"3631":{"position":[[0,25]]}}}],["chia_signmessagebyid",{"_index":1239,"t":{"3629":{"position":[[0,20]]}}}],["chia_spendcat",{"_index":1220,"t":{"3604":{"position":[[0,13]]}}}],["chia_takeoff",{"_index":1277,"t":{"3720":{"position":[[0,14]]}}}],["chia_transfernft",{"_index":1295,"t":{"3743":{"position":[[0,16]]}}}],["chia_verifysignatur",{"_index":1243,"t":{"3633":{"position":[[0,20]]}}}],["chialisp",{"_index":16,"t":{"83":{"position":[[9,8]]},"270":{"position":[[9,8]]},"286":{"position":[[9,8]]},"302":{"position":[[9,8]]},"318":{"position":[[9,8]]},"1180":{"position":[[29,8]]},"1186":{"position":[[8,8]]},"1597":{"position":[[20,8]]},"1718":{"position":[[10,8]]},"1724":{"position":[[0,8]]},"1738":{"position":[[10,8]]},"1744":{"position":[[0,8]]},"1891":{"position":[[6,8]]},"1896":{"position":[[6,8]]},"1924":{"position":[[8,8]]},"1977":{"position":[[24,8]]},"2271":{"position":[[9,8]]}}}],["chiapo",{"_index":1016,"t":{"2739":{"position":[[0,7]]},"2857":{"position":[[0,7]]}}}],["chiapool",{"_index":1051,"t":{"2947":{"position":[[19,8]]}}}],["child",{"_index":152,"t":{"353":{"position":[[0,5]]}}}],["children",{"_index":1204,"t":{"3571":{"position":[[8,8]]},"3573":{"position":[[8,8]]}}}],["chip",{"_index":1306,"t":{"3768":{"position":[[49,4]]}}}],["choic",{"_index":839,"t":{"1906":{"position":[[9,6]]}}}],["choos",{"_index":1032,"t":{"2803":{"position":[[0,8]]},"2861":{"position":[[0,8]]},"3156":{"position":[[14,8]]}}}],["claim",{"_index":40,"t":{"128":{"position":[[7,6]]},"373":{"position":[[0,5]]},"1611":{"position":[[0,5]]},"1617":{"position":[[0,5]]},"1630":{"position":[[0,5]]},"1636":{"position":[[22,5]]},"1640":{"position":[[45,5]]},"1644":{"position":[[10,6]]},"3995":{"position":[[9,5]]},"4009":{"position":[[9,5]]}}}],["class",{"_index":187,"t":{"425":{"position":[[6,5]]}}}],["claw",{"_index":161,"t":{"375":{"position":[[0,4]]},"1628":{"position":[[0,4]]},"1638":{"position":[[42,4]]},"1642":{"position":[[7,5]]}}}],["clawback",{"_index":160,"t":{"371":{"position":[[0,8]]},"594":{"position":[[0,8]]},"1609":{"position":[[0,8]]},"1615":{"position":[[0,8]]},"1622":{"position":[[6,8]]},"1624":{"position":[[12,8]]},"1626":{"position":[[9,8]]},"1630":{"position":[[8,8]]},"1634":{"position":[[18,8]]},"1636":{"position":[[28,8]]},"1640":{"position":[[53,8]]},"1644":{"position":[[19,8]]},"1646":{"position":[[39,8]]},"2122":{"position":[[0,8]]},"3676":{"position":[[0,8]]},"4067":{"position":[[6,8]]}}}],["cleanup",{"_index":763,"t":{"1545":{"position":[[5,7]]}}}],["clear",{"_index":408,"t":{"835":{"position":[[0,5]]},"3787":{"position":[[0,5]]}}}],["clear_pending_root",{"_index":407,"t":{"835":{"position":[[0,19]]},"3787":{"position":[[0,19]]}}}],["cli",{"_index":83,"t":{"207":{"position":[[0,3]]},"626":{"position":[[4,3]]},"990":{"position":[[0,3]]},"1021":{"position":[[6,3]]},"1358":{"position":[[38,3]]},"1360":{"position":[[38,3]]},"1418":{"position":[[17,3]]},"1432":{"position":[[18,3]]},"1451":{"position":[[59,3]]},"1613":{"position":[[0,3]]},"1670":{"position":[[17,3]]},"1676":{"position":[[0,3]]},"1817":{"position":[[25,3]]},"1821":{"position":[[0,3]]},"2080":{"position":[[0,3]]},"2166":{"position":[[0,3]]},"2433":{"position":[[10,3]]},"2443":{"position":[[0,3]]},"2590":{"position":[[0,3]]},"2808":{"position":[[0,3]]},"2814":{"position":[[0,3]]},"2818":{"position":[[0,3]]},"2863":{"position":[[0,3]]},"2935":{"position":[[74,3]]},"3374":{"position":[[0,3]]},"3408":{"position":[[0,3]]},"3410":{"position":[[21,3]]}}}],["client",{"_index":23,"t":{"87":{"position":[[7,6]]},"904":{"position":[[35,6]]},"906":{"position":[[48,6]]},"2308":{"position":[[4,6]]},"2976":{"position":[[76,6]]},"2990":{"position":[[61,7]]}}}],["close",{"_index":307,"t":{"656":{"position":[[4,5]]},"689":{"position":[[0,5]]},"737":{"position":[[0,5]]},"1326":{"position":[[29,5]]},"3846":{"position":[[0,5]]},"4147":{"position":[[0,5]]}}}],["close_connect",{"_index":1318,"t":{"3846":{"position":[[0,16]]},"4147":{"position":[[0,16]]}}}],["close_propos",{"_index":330,"t":{"689":{"position":[[0,14]]}}}],["cluster",{"_index":1162,"t":{"3433":{"position":[[39,7]]}}}],["clvm",{"_index":17,"t":{"83":{"position":[[22,4]]},"270":{"position":[[22,4]]},"286":{"position":[[22,4]]},"302":{"position":[[22,4]]},"318":{"position":[[22,4]]},"1593":{"position":[[20,4]]},"1889":{"position":[[6,4]]},"1894":{"position":[[6,4]]},"2066":{"position":[[0,4]]}}}],["clvm_tool",{"_index":777,"t":{"1593":{"position":[[20,10]]},"1889":{"position":[[6,10]]},"1894":{"position":[[6,10]]}}}],["code",{"_index":551,"t":{"1158":{"position":[[24,4]]},"1164":{"position":[[25,4]]},"1582":{"position":[[11,4]]},"1754":{"position":[[13,4]]},"1845":{"position":[[7,4]]},"2954":{"position":[[40,4]]},"2956":{"position":[[48,4]]},"2958":{"position":[[46,4],[62,4]]},"2960":{"position":[[40,4],[102,4]]},"2962":{"position":[[31,4]]},"3034":{"position":[[6,5]]}}}],["coin",{"_index":173,"t":{"395":{"position":[[17,4]]},"399":{"position":[[16,4]]},"405":{"position":[[7,4]]},"412":{"position":[[18,4]]},"427":{"position":[[12,4]]},"435":{"position":[[10,4]]},"475":{"position":[[18,5]]},"662":{"position":[[9,5]]},"707":{"position":[[7,5]]},"709":{"position":[[8,5]]},"731":{"position":[[8,5]]},"927":{"position":[[16,4]]},"1284":{"position":[[12,4]]},"1304":{"position":[[17,4]]},"1333":{"position":[[58,5]]},"1349":{"position":[[7,4]]},"1577":{"position":[[35,4]]},"1578":{"position":[[36,4]]},"1579":{"position":[[21,4]]},"1583":{"position":[[18,4]]},"1584":{"position":[[22,4]]},"1585":{"position":[[24,4]]},"1589":{"position":[[9,4]]},"1599":{"position":[[8,4]]},"1626":{"position":[[18,4]]},"1628":{"position":[[12,4]]},"1630":{"position":[[17,4]]},"1636":{"position":[[37,4]]},"1638":{"position":[[54,4]]},"1642":{"position":[[18,4]]},"1644":{"position":[[28,4]]},"1646":{"position":[[48,4]]},"1763":{"position":[[11,4]]},"1771":{"position":[[7,4]]},"1773":{"position":[[9,4]]},"1871":{"position":[[13,4]]},"1873":{"position":[[13,4]]},"1930":{"position":[[13,4]]},"1932":{"position":[[13,4]]},"1938":{"position":[[10,4]]},"1981":{"position":[[9,4]]},"1983":{"position":[[13,4]]},"1991":{"position":[[4,4]]},"2194":{"position":[[6,5]]},"2267":{"position":[[0,4]]},"2275":{"position":[[17,4]]},"2356":{"position":[[0,4]]},"3178":{"position":[[8,5]]},"3220":{"position":[[0,5]]},"3565":{"position":[[13,4]]},"3567":{"position":[[11,4]]},"3569":{"position":[[0,4]]},"3654":{"position":[[0,4]]},"3668":{"position":[[0,5]]},"3939":{"position":[[4,4]]},"3941":{"position":[[4,4]]},"3943":{"position":[[4,4]]},"3945":{"position":[[4,4]]},"3947":{"position":[[4,4]]},"3949":{"position":[[4,4]]},"3955":{"position":[[21,4]]},"4019":{"position":[[8,5]]},"4029":{"position":[[4,4]]},"4031":{"position":[[4,4]]},"4041":{"position":[[14,5]]},"4055":{"position":[[7,5]]},"4067":{"position":[[15,5]]},"4069":{"position":[[6,5]]}}}],["coin_state_upd",{"_index":1202,"t":{"3569":{"position":[[0,17]]}}}],["coinspend",{"_index":1253,"t":{"3652":{"position":[[0,9]]}}}],["cold",{"_index":104,"t":{"222":{"position":[[22,4]]}}}],["collect",{"_index":867,"t":{"2064":{"position":[[0,11]]},"2875":{"position":[[0,10]]},"2974":{"position":[[13,7]]}}}],["com",{"_index":1052,"t":{"2947":{"position":[[28,3]]}}}],["combin",{"_index":1256,"t":{"3672":{"position":[[0,7]]},"4019":{"position":[[0,7]]}}}],["combine_coin",{"_index":1382,"t":{"4019":{"position":[[0,13]]}}}],["comma",{"_index":689,"t":{"1374":{"position":[[45,5]]}}}],["command",{"_index":156,"t":{"363":{"position":[[6,8]]},"626":{"position":[[8,8]]},"1396":{"position":[[42,7]]},"1451":{"position":[[63,8]]},"2096":{"position":[[0,7]]},"2166":{"position":[[4,8]]},"2628":{"position":[[0,7]]},"2924":{"position":[[0,7]]},"3599":{"position":[[0,8]]},"3612":{"position":[[0,8]]},"3705":{"position":[[0,8]]},"3711":{"position":[[0,8]]},"3736":{"position":[[0,8]]},"3845":{"position":[[10,8]]},"3872":{"position":[[11,8]]}}}],["commit",{"_index":253,"t":{"574":{"position":[[6,6]]}}}],["common",{"_index":4,"t":{"8":{"position":[[0,6]]},"22":{"position":[[0,6]]},"42":{"position":[[0,6]]},"58":{"position":[[0,6]]},"77":{"position":[[0,6]]},"115":{"position":[[0,6]]},"192":{"position":[[0,6]]},"265":{"position":[[0,6]]},"281":{"position":[[0,6]]},"297":{"position":[[0,6]]},"313":{"position":[[0,6]]},"454":{"position":[[0,6]]},"505":{"position":[[0,6]]},"1040":{"position":[[0,6]]},"1052":{"position":[[0,6]]},"1875":{"position":[[0,6]]},"3001":{"position":[[0,6]]},"3015":{"position":[[0,6]]},"3112":{"position":[[0,6]]},"3334":{"position":[[0,6]]},"3446":{"position":[[0,6]]}}}],["compact",{"_index":1009,"t":{"2710":{"position":[[4,7]]},"2712":{"position":[[8,7]]},"2714":{"position":[[8,7]]}}}],["comparison",{"_index":138,"t":{"324":{"position":[[0,10]]},"488":{"position":[[0,10]]},"490":{"position":[[0,10]]},"492":{"position":[[0,10]]},"1720":{"position":[[0,11]]},"1740":{"position":[[0,11]]}}}],["compat",{"_index":1166,"t":{"3439":{"position":[[11,10]]}}}],["compet",{"_index":1161,"t":{"3433":{"position":[[18,7]]}}}],["competit",{"_index":546,"t":{"1154":{"position":[[18,12]]}}}],["compil",{"_index":833,"t":{"1887":{"position":[[4,8]]}}}],["complet",{"_index":78,"t":{"181":{"position":[[0,8]]},"596":{"position":[[0,8]]},"1694":{"position":[[0,10]]}}}],["complic",{"_index":802,"t":{"1752":{"position":[[5,11]]}}}],["compon",{"_index":1322,"t":{"3864":{"position":[[5,10]]}}}],["compress",{"_index":498,"t":{"987":{"position":[[7,10]]},"2363":{"position":[[12,11]]},"2478":{"position":[[21,11]]},"2486":{"position":[[54,11]]},"2531":{"position":[[6,11]]},"2533":{"position":[[8,11]]},"2545":{"position":[[8,11]]},"2547":{"position":[[6,11]]},"2724":{"position":[[0,10]]},"2732":{"position":[[0,11]]},"2784":{"position":[[0,10]]},"2801":{"position":[[3,8],[22,8]]},"2803":{"position":[[11,11]]},"3162":{"position":[[0,11]]}}}],["comput",{"_index":513,"t":{"1065":{"position":[[0,8]]},"1219":{"position":[[28,8]]},"1349":{"position":[[32,8],[130,9],[172,8]]},"2908":{"position":[[9,9]]}}}],["concaten",{"_index":807,"t":{"1777":{"position":[[0,11]]},"1993":{"position":[[0,11]]}}}],["concern",{"_index":716,"t":{"1424":{"position":[[23,8]]},"1481":{"position":[[0,8]]},"1877":{"position":[[9,8]]}}}],["conclus",{"_index":201,"t":{"443":{"position":[[0,10]]},"1503":{"position":[[0,10]]},"1706":{"position":[[0,10]]},"2287":{"position":[[0,10]]}}}],["condit",{"_index":1352,"t":{"3937":{"position":[[22,10]]}}}],["config",{"_index":269,"t":{"602":{"position":[[7,6]]},"622":{"position":[[7,6]]},"1453":{"position":[[14,6]]},"2116":{"position":[[18,6]]},"2158":{"position":[[18,6]]},"2309":{"position":[[21,6]]},"3376":{"position":[[0,6]]}}}],["configur",{"_index":127,"t":{"242":{"position":[[7,13]]},"1073":{"position":[[8,9]]},"1095":{"position":[[8,9]]},"1320":{"position":[[10,9]]},"1430":{"position":[[9,9]]},"1847":{"position":[[7,13]]},"1849":{"position":[[8,13]]},"1947":{"position":[[5,13]]},"2010":{"position":[[0,9]]},"2034":{"position":[[0,9]]},"2076":{"position":[[0,13]]},"2150":{"position":[[0,13]]},"2208":{"position":[[0,9]]},"2222":{"position":[[9,13]]},"3231":{"position":[[0,9]]},"3757":{"position":[[0,9]]},"3761":{"position":[[0,9]]}}}],["confirm",{"_index":623,"t":{"1288":{"position":[[9,13]]},"1292":{"position":[[68,10]]},"3868":{"position":[[13,10]]}}}],["connect",{"_index":74,"t":{"173":{"position":[[0,7]]},"175":{"position":[[0,7]]},"177":{"position":[[0,7]]},"1221":{"position":[[16,9]]},"1229":{"position":[[24,9]]},"1236":{"position":[[25,11],[57,11]]},"1238":{"position":[[23,11]]},"1256":{"position":[[10,7]]},"1263":{"position":[[36,10]]},"1290":{"position":[[43,7]]},"2313":{"position":[[0,12]]},"2504":{"position":[[22,11]]},"2767":{"position":[[24,9]]},"3235":{"position":[[20,7]]},"3459":{"position":[[9,10]]},"3770":{"position":[[22,7]]},"3846":{"position":[[6,10]]},"3848":{"position":[[4,11]]},"3850":{"position":[[5,10]]},"4146":{"position":[[11,11]]},"4147":{"position":[[6,10]]},"4149":{"position":[[4,11]]},"4153":{"position":[[5,10]]}}}],["consensu",{"_index":213,"t":{"492":{"position":[[18,9]]},"1124":{"position":[[10,9]]},"1176":{"position":[[59,9]]},"1811":{"position":[[0,9]]}}}],["consid",{"_index":717,"t":{"1424":{"position":[[41,8]]}}}],["consider",{"_index":1073,"t":{"3024":{"position":[[9,14]]}}}],["constant",{"_index":239,"t":{"546":{"position":[[14,9]]},"2365":{"position":[[4,8]]}}}],["construct",{"_index":1088,"t":{"3095":{"position":[[34,13]]}}}],["contact",{"_index":539,"t":{"1146":{"position":[[9,7]]},"3361":{"position":[[10,7]]}}}],["content",{"_index":2,"t":{"5":{"position":[[0,7]]},"19":{"position":[[0,7]]},"39":{"position":[[0,7]]},"55":{"position":[[0,7]]},"73":{"position":[[0,7]]},"112":{"position":[[0,7]]},"189":{"position":[[0,7]]},"262":{"position":[[0,7]]},"278":{"position":[[0,7]]},"294":{"position":[[0,7]]},"310":{"position":[[0,7]]},"451":{"position":[[0,7]]},"502":{"position":[[0,7]]},"1037":{"position":[[0,7]]},"1051":{"position":[[0,7]]},"2182":{"position":[[0,8]]},"2998":{"position":[[0,7]]},"3012":{"position":[[0,7]]},"3109":{"position":[[0,7]]},"3331":{"position":[[0,7]]}}}],["contest",{"_index":1150,"t":{"3342":{"position":[[27,7]]},"3349":{"position":[[21,7]]},"3363":{"position":[[0,7]]}}}],["contract",{"_index":1033,"t":{"2812":{"position":[[5,8]]}}}],["contribut",{"_index":256,"t":{"578":{"position":[[0,12]]},"1465":{"position":[[10,10]]}}}],["convent",{"_index":798,"t":{"1726":{"position":[[0,10]]},"1746":{"position":[[0,11]]}}}],["convert",{"_index":836,"t":{"1898":{"position":[[0,7]]}}}],["copi",{"_index":892,"t":{"2302":{"position":[[0,4]]}}}],["copyright",{"_index":535,"t":{"1144":{"position":[[69,11]]}}}],["correctli",{"_index":607,"t":{"1261":{"position":[[29,9]]}}}],["correspond",{"_index":869,"t":{"2078":{"position":[[19,13]]}}}],["cost",{"_index":202,"t":{"463":{"position":[[0,4]]},"469":{"position":[[14,4]]},"471":{"position":[[10,4]]},"477":{"position":[[8,4]]},"481":{"position":[[22,5]]},"2066":{"position":[[5,4]]},"2778":{"position":[[0,4]]}}}],["count",{"_index":984,"t":{"2652":{"position":[[11,5]]},"3079":{"position":[[35,5]]},"3885":{"position":[[4,5]]},"3927":{"position":[[10,5]]},"4047":{"position":[[16,5]]},"4098":{"position":[[11,5]]}}}],["cours",{"_index":11,"t":{"31":{"position":[[0,7]]},"33":{"position":[[8,7]]},"747":{"position":[[11,6]]},"3353":{"position":[[9,7]]},"3357":{"position":[[26,6]]}}}],["cpu",{"_index":944,"t":{"2472":{"position":[[22,3]]},"2556":{"position":[[11,3]]}}}],["cr",{"_index":792,"t":{"1664":{"position":[[5,2]]},"1666":{"position":[[5,2]]},"1672":{"position":[[6,2]]},"1680":{"position":[[8,2]]},"1682":{"position":[[11,2]]}}}],["craft",{"_index":806,"t":{"1775":{"position":[[0,8]]},"1934":{"position":[[0,8]]}}}],["crash",{"_index":346,"t":{"747":{"position":[[5,5]]}}}],["creat",{"_index":162,"t":{"377":{"position":[[0,6]]},"568":{"position":[[0,6]]},"658":{"position":[[4,6]]},"691":{"position":[[0,6]]},"693":{"position":[[0,6]]},"725":{"position":[[0,6]]},"733":{"position":[[0,6]]},"837":{"position":[[0,6]]},"880":{"position":[[0,6]]},"919":{"position":[[0,6]]},"921":{"position":[[4,6]]},"923":{"position":[[4,6]]},"1075":{"position":[[0,6]]},"1083":{"position":[[0,6]]},"1097":{"position":[[0,6]]},"1103":{"position":[[0,6]]},"1331":{"position":[[6,8]]},"1418":{"position":[[25,8]]},"1428":{"position":[[38,7]]},"1493":{"position":[[0,8]]},"1495":{"position":[[0,8]]},"1626":{"position":[[0,6]]},"1646":{"position":[[72,7]]},"1690":{"position":[[0,8]]},"1763":{"position":[[0,6]]},"1771":{"position":[[0,6]]},"1871":{"position":[[0,8]]},"1885":{"position":[[0,6]]},"1930":{"position":[[0,8]]},"1981":{"position":[[0,6]]},"2016":{"position":[[0,6]]},"2024":{"position":[[0,6]]},"2043":{"position":[[0,6]]},"2045":{"position":[[0,6]]},"2102":{"position":[[0,6]]},"2104":{"position":[[0,6]]},"2168":{"position":[[0,6]]},"2174":{"position":[[0,6]]},"2178":{"position":[[0,6]]},"2206":{"position":[[0,6]]},"2230":{"position":[[0,6]]},"2232":{"position":[[0,6]]},"2592":{"position":[[0,6]]},"2602":{"position":[[0,6]]},"2646":{"position":[[0,6]]},"2824":{"position":[[0,6]]},"2897":{"position":[[8,6]]},"2929":{"position":[[23,6]]},"3136":{"position":[[0,8]]},"3247":{"position":[[0,6]]},"3265":{"position":[[0,6]]},"3789":{"position":[[0,6]]},"4014":{"position":[[0,6]]},"4021":{"position":[[0,6]]},"4090":{"position":[[0,6]]},"4122":{"position":[[0,6]]}}}],["create_data_stor",{"_index":410,"t":{"837":{"position":[[0,17]]},"3789":{"position":[[0,17]]}}}],["create_new_dl",{"_index":1420,"t":{"4122":{"position":[[0,13]]}}}],["create_new_wallet",{"_index":454,"t":{"919":{"position":[[0,17]]},"4014":{"position":[[0,17]]}}}],["create_offer_for_id",{"_index":981,"t":{"2646":{"position":[[0,20]]},"4090":{"position":[[0,20]]}}}],["create_propos",{"_index":331,"t":{"693":{"position":[[0,15]]}}}],["create_signed_transact",{"_index":1383,"t":{"4021":{"position":[[0,25]]}}}],["createnewdidwallet",{"_index":1266,"t":{"3706":{"position":[[5,18]]}}}],["createofferforid",{"_index":1286,"t":{"3728":{"position":[[5,17]]}}}],["creation",{"_index":793,"t":{"1688":{"position":[[4,8]]},"1759":{"position":[[13,8]]},"2395":{"position":[[6,8]]},"2588":{"position":[[4,8]]}}}],["criteria",{"_index":1151,"t":{"3344":{"position":[[17,8]]}}}],["crypto",{"_index":1049,"t":{"2937":{"position":[[41,7]]}}}],["cryptocurr",{"_index":243,"t":{"553":{"position":[[10,14]]},"555":{"position":[[7,16]]},"1152":{"position":[[54,16]]}}}],["cryptograph",{"_index":813,"t":{"1793":{"position":[[4,13]]}}}],["cryptographi",{"_index":549,"t":{"1156":{"position":[[56,12]]}}}],["cuda",{"_index":1037,"t":{"2845":{"position":[[9,4]]}}}],["cudaplot",{"_index":1019,"t":{"2745":{"position":[[0,8]]}}}],["curiou",{"_index":1081,"t":{"3071":{"position":[[0,7]]}}}],["current",{"_index":460,"t":{"927":{"position":[[8,7]]},"1469":{"position":[[10,7]]},"2132":{"position":[[0,7]]},"4033":{"position":[[4,7]]}}}],["curri",{"_index":768,"t":{"1581":{"position":[[4,8]]},"1855":{"position":[[0,8]]},"1861":{"position":[[0,5]]},"1865":{"position":[[0,5]]},"1926":{"position":[[0,8]]}}}],["custodi",{"_index":260,"t":{"582":{"position":[[32,7]]},"1376":{"position":[[26,7]]},"2091":{"position":[[12,7]]},"2118":{"position":[[0,7]]}}}],["custom",{"_index":834,"t":{"1887":{"position":[[28,6]]},"2869":{"position":[[0,13]]}}}],["daemon",{"_index":353,"t":{"759":{"position":[[0,6]]},"2299":{"position":[[7,6]]},"2300":{"position":[[11,6]]},"2302":{"position":[[9,6]]},"2305":{"position":[[14,6]]},"2311":{"position":[[28,6]]},"2314":{"position":[[8,6]]},"2316":{"position":[[7,6]]},"2318":{"position":[[34,6]]}}}],["dao",{"_index":299,"t":{"645":{"position":[[23,3]]},"647":{"position":[[11,3]]},"652":{"position":[[0,3]]},"654":{"position":[[0,3]]},"656":{"position":[[0,3]]},"658":{"position":[[0,3]]},"660":{"position":[[0,3]]},"662":{"position":[[0,3]]},"664":{"position":[[0,3]]},"666":{"position":[[0,3]]},"668":{"position":[[0,3]]},"670":{"position":[[0,3]]},"672":{"position":[[0,3]]},"674":{"position":[[0,3]]},"676":{"position":[[0,3]]},"678":{"position":[[0,3]]},"725":{"position":[[9,3]]},"727":{"position":[[7,3]]},"729":{"position":[[7,3]]},"741":{"position":[[9,3]]}}}],["dao_add_funds_to_treasuri",{"_index":300,"t":{"652":{"position":[[0,25]]}}}],["dao_adjust_filter_level",{"_index":304,"t":{"654":{"position":[[0,23]]}}}],["dao_close_propos",{"_index":306,"t":{"656":{"position":[[0,18]]}}}],["dao_create_propos",{"_index":308,"t":{"658":{"position":[[0,19]]}}}],["dao_exit_lockup",{"_index":309,"t":{"660":{"position":[[0,15]]}}}],["dao_free_coins_from_finished_propos",{"_index":312,"t":{"662":{"position":[[0,38]]}}}],["dao_get_propos",{"_index":315,"t":{"664":{"position":[[0,17]]}}}],["dao_get_proposal_st",{"_index":316,"t":{"666":{"position":[[0,22]]}}}],["dao_get_rul",{"_index":318,"t":{"668":{"position":[[0,13]]}}}],["dao_get_treasury_bal",{"_index":320,"t":{"670":{"position":[[0,24]]}}}],["dao_get_treasury_id",{"_index":322,"t":{"672":{"position":[[0,19]]}}}],["dao_parse_propos",{"_index":324,"t":{"674":{"position":[[0,18]]}}}],["dao_send_to_lockup",{"_index":326,"t":{"676":{"position":[[0,18]]}}}],["dao_vote_on_propos",{"_index":327,"t":{"678":{"position":[[0,20]]}}}],["dapp",{"_index":1303,"t":{"3755":{"position":[[19,4]]},"3759":{"position":[[5,4]]}}}],["daspac",{"_index":1120,"t":{"3210":{"position":[[44,7]]}}}],["data",{"_index":117,"t":{"234":{"position":[[11,4]]},"238":{"position":[[9,4]]},"244":{"position":[[0,4]]},"837":{"position":[[7,4]]},"871":{"position":[[7,4]]},"1384":{"position":[[30,4]]},"1541":{"position":[[12,4]]},"1545":{"position":[[0,4]]},"1547":{"position":[[7,4]]},"2016":{"position":[[9,4]]},"2024":{"position":[[31,4]]},"2026":{"position":[[15,4]]},"2240":{"position":[[4,4]]},"3789":{"position":[[7,4]]},"3915":{"position":[[22,4]]}}}],["databas",{"_index":185,"t":{"421":{"position":[[0,8]]},"1069":{"position":[[0,8]]},"1240":{"position":[[16,8]]},"1248":{"position":[[29,8]]},"1252":{"position":[[34,8]]},"1254":{"position":[[41,8]]},"1443":{"position":[[54,8]]},"2030":{"position":[[21,8]]},"3233":{"position":[[30,8]]}}}],["datalay",{"_index":847,"t":{"1945":{"position":[[6,9]]},"2005":{"position":[[6,9]]},"2007":{"position":[[0,9]]},"2010":{"position":[[22,9]]},"2014":{"position":[[6,9]]}}}],["db",{"_index":148,"t":{"343":{"position":[[0,2]]}}}],["deal",{"_index":1170,"t":{"3463":{"position":[[0,7]]}}}],["decentr",{"_index":821,"t":{"1813":{"position":[[0,16]]}}}],["default",{"_index":102,"t":{"220":{"position":[[7,7]]},"1115":{"position":[[0,7]]},"2545":{"position":[[0,7]]},"3142":{"position":[[0,7]]}}}],["defin",{"_index":801,"t":{"1750":{"position":[[0,8]]}}}],["definit",{"_index":790,"t":{"1651":{"position":[[0,11]]},"2581":{"position":[[0,11]]},"3134":{"position":[[18,10]]},"3158":{"position":[[0,11]]},"3292":{"position":[[0,11]]}}}],["delay",{"_index":756,"t":{"1531":{"position":[[15,5]]},"1785":{"position":[[12,6]]},"3089":{"position":[[4,7]]},"3093":{"position":[[4,7]]}}}],["delet",{"_index":390,"t":{"806":{"position":[[0,6]]},"808":{"position":[[0,6]]},"826":{"position":[[0,6]]},"839":{"position":[[0,6]]},"1273":{"position":[[58,7]]},"2018":{"position":[[8,6]]},"2340":{"position":[[0,6]]},"2769":{"position":[[51,7]]},"3678":{"position":[[0,6]]},"3690":{"position":[[0,6]]},"3791":{"position":[[0,6]]},"3793":{"position":[[0,6]]},"3978":{"position":[[6,6]]},"3980":{"position":[[0,6]]},"3982":{"position":[[0,6]]},"4023":{"position":[[0,6]]},"4025":{"position":[[0,6]]},"4124":{"position":[[3,6]]}}}],["delete_all_key",{"_index":389,"t":{"806":{"position":[[0,15]]},"3980":{"position":[[0,15]]}}}],["delete_key",{"_index":1310,"t":{"3791":{"position":[[0,10]]},"3982":{"position":[[0,10]]}}}],["delete_key_by_fingerprint",{"_index":391,"t":{"808":{"position":[[0,25]]}}}],["delete_label",{"_index":401,"t":{"826":{"position":[[0,12]]}}}],["delete_mirror",{"_index":412,"t":{"839":{"position":[[0,13]]},"3793":{"position":[[0,13]]}}}],["delete_notif",{"_index":1384,"t":{"4023":{"position":[[0,20]]}}}],["delete_plot",{"_index":912,"t":{"2340":{"position":[[0,11]]}}}],["delete_unconfirmed_transact",{"_index":1258,"t":{"3678":{"position":[[0,31]]},"4025":{"position":[[0,31]]}}}],["depend",{"_index":842,"t":{"1916":{"position":[[6,12]]},"3414":{"position":[[26,12]]}}}],["deploy",{"_index":772,"t":{"1584":{"position":[[4,9]]}}}],["deriv",{"_index":151,"t":{"351":{"position":[[0,6]]},"598":{"position":[[0,6]]},"3682":{"position":[[4,10]]},"3702":{"position":[[7,10]]},"4027":{"position":[[7,10]]},"4033":{"position":[[12,10]]}}}],["derive_root",{"_index":263,"t":{"598":{"position":[[0,11]]}}}],["descript",{"_index":1014,"t":{"2722":{"position":[[0,11]]}}}],["desktop",{"_index":249,"t":{"570":{"position":[[18,7]]},"3079":{"position":[[0,8]]}}}],["detail",{"_index":439,"t":{"884":{"position":[[4,7]]},"1176":{"position":[[43,7]]},"1455":{"position":[[43,6]]},"3461":{"position":[[0,8]]},"3860":{"position":[[4,6]]}}}],["determin",{"_index":183,"t":{"417":{"position":[[0,11]]}}}],["dev",{"_index":778,"t":{"1595":{"position":[[25,3]]},"1710":{"position":[[0,3]]},"1712":{"position":[[5,3]]},"1730":{"position":[[0,3]]},"1732":{"position":[[5,3]]}}}],["develop",{"_index":451,"t":{"908":{"position":[[0,7]]},"1461":{"position":[[40,11]]},"1481":{"position":[[13,10]]},"1516":{"position":[[7,10]]}}}],["devic",{"_index":134,"t":{"246":{"position":[[25,7]]}}}],["did",{"_index":713,"t":{"1418":{"position":[[44,4]]},"1420":{"position":[[40,4]]},"3893":{"position":[[21,4]]}}}],["did_create_attest",{"_index":455,"t":{"921":{"position":[[0,17]]}}}],["did_create_backup_fil",{"_index":457,"t":{"923":{"position":[[0,22]]}}}],["did_find_lost_did",{"_index":458,"t":{"925":{"position":[[0,17]]}}}],["did_get_current_coin_info",{"_index":459,"t":{"927":{"position":[[0,25]]}}}],["did_get_did",{"_index":462,"t":{"929":{"position":[[0,11]]}}}],["did_get_info",{"_index":463,"t":{"931":{"position":[[0,12]]}}}],["did_get_information_needed_for_recoveri",{"_index":464,"t":{"933":{"position":[[0,39]]}}}],["did_get_metadata",{"_index":467,"t":{"935":{"position":[[0,16]]}}}],["did_get_pubkey",{"_index":468,"t":{"937":{"position":[[0,14]]}}}],["did_get_recovery_list",{"_index":469,"t":{"939":{"position":[[0,21]]}}}],["did_get_wallet_nam",{"_index":470,"t":{"941":{"position":[[0,19]]}}}],["did_message_spend",{"_index":471,"t":{"943":{"position":[[0,17]]}}}],["did_recovery_spend",{"_index":472,"t":{"945":{"position":[[0,18]]}}}],["did_set_wallet_nam",{"_index":473,"t":{"947":{"position":[[0,19]]}}}],["did_transfer_did",{"_index":474,"t":{"949":{"position":[[0,16]]}}}],["did_update_metadata",{"_index":475,"t":{"951":{"position":[[0,19]]}}}],["did_update_recovery_id",{"_index":476,"t":{"953":{"position":[[0,23]]}}}],["didn",{"_index":612,"t":{"1267":{"position":[[32,4]]}}}],["diff",{"_index":416,"t":{"845":{"position":[[7,4]]},"3801":{"position":[[7,4]]}}}],["differ",{"_index":52,"t":{"150":{"position":[[0,10]]},"1178":{"position":[[12,10]]},"1242":{"position":[[12,10]]},"1259":{"position":[[12,10]]},"1331":{"position":[[60,6]]},"1347":{"position":[[27,9],[53,9]]},"1349":{"position":[[120,9]]},"1368":{"position":[[12,10]]},"1459":{"position":[[12,10]]},"2484":{"position":[[18,9]]},"2935":{"position":[[12,10]]},"2937":{"position":[[20,9]]},"3768":{"position":[[12,10]]}}}],["difficulti",{"_index":811,"t":{"1791":{"position":[[4,10]]},"2476":{"position":[[12,10]]},"2519":{"position":[[9,10]]},"2881":{"position":[[0,10]]},"2885":{"position":[[0,10]]},"2966":{"position":[[9,10]]},"2982":{"position":[[42,10]]},"3054":{"position":[[0,10]]}}}],["digit",{"_index":752,"t":{"1520":{"position":[[13,7]]}}}],["dip",{"_index":929,"t":{"2418":{"position":[[11,7]]}}}],["directli",{"_index":709,"t":{"1412":{"position":[[13,8]]}}}],["directori",{"_index":574,"t":{"1213":{"position":[[27,9]]},"2338":{"position":[[9,9]]},"2344":{"position":[[9,11]]},"2350":{"position":[[12,9]]},"2408":{"position":[[4,9]]},"2441":{"position":[[0,9]]}}}],["disabl",{"_index":650,"t":{"1316":{"position":[[9,7]]}}}],["disappear",{"_index":629,"t":{"1296":{"position":[[95,11]]}}}],["disclaim",{"_index":1137,"t":{"3313":{"position":[[3,10]]}}}],["discord",{"_index":1050,"t":{"2943":{"position":[[27,7]]}}}],["disk",{"_index":119,"t":{"234":{"position":[[25,4]]},"2849":{"position":[[9,4]]}}}],["diskplot",{"_index":1021,"t":{"2749":{"position":[[0,8]]}}}],["disput",{"_index":1147,"t":{"3325":{"position":[[22,8]]}}}],["dl",{"_index":1419,"t":{"4121":{"position":[[0,2]]},"4122":{"position":[[11,2]]},"4124":{"position":[[0,2]]},"4126":{"position":[[0,2]]},"4128":{"position":[[0,2]]},"4130":{"position":[[0,2]]},"4132":{"position":[[0,2]]},"4134":{"position":[[0,2]]},"4136":{"position":[[0,2]]},"4138":{"position":[[0,2]]},"4140":{"position":[[0,2]]},"4142":{"position":[[0,2]]},"4144":{"position":[[0,2]]}}}],["dl_delete_mirror",{"_index":1421,"t":{"4124":{"position":[[0,16]]}}}],["dl_get_mirror",{"_index":1422,"t":{"4126":{"position":[[0,14]]}}}],["dl_histori",{"_index":1423,"t":{"4128":{"position":[[0,10]]}}}],["dl_latest_singleton",{"_index":1424,"t":{"4130":{"position":[[0,19]]}}}],["dl_new_mirror",{"_index":1425,"t":{"4132":{"position":[[0,13]]}}}],["dl_owned_singleton",{"_index":1426,"t":{"4134":{"position":[[0,19]]}}}],["dl_singletons_by_root",{"_index":1427,"t":{"4136":{"position":[[0,21]]}}}],["dl_stop_track",{"_index":1428,"t":{"4138":{"position":[[0,16]]}}}],["dl_track_new",{"_index":1429,"t":{"4140":{"position":[[0,12]]}}}],["dl_update_multipl",{"_index":1430,"t":{"4142":{"position":[[0,18]]}}}],["dl_update_root",{"_index":1431,"t":{"4144":{"position":[[0,14]]}}}],["doc",{"_index":449,"t":{"900":{"position":[[27,4]]},"902":{"position":[[27,4]]}}}],["document",{"_index":158,"t":{"363":{"position":[[34,10]]},"2060":{"position":[[11,8]]}}}],["doesn",{"_index":877,"t":{"2184":{"position":[[6,5]]},"2186":{"position":[[6,5]]},"2945":{"position":[[4,5]]}}}],["don",{"_index":638,"t":{"1302":{"position":[[4,3]]},"1343":{"position":[[4,3]]}}}],["donat",{"_index":708,"t":{"1412":{"position":[[6,6]]}}}],["dot",{"_index":843,"t":{"1920":{"position":[[0,3]]}}}],["doubl",{"_index":94,"t":{"216":{"position":[[6,6]]},"559":{"position":[[0,6]]},"2418":{"position":[[4,6]]}}}],["download",{"_index":855,"t":{"1953":{"position":[[7,8]]},"1957":{"position":[[0,8]]},"2030":{"position":[[0,8]]},"3233":{"position":[[0,8]]}}}],["drive",{"_index":122,"t":{"236":{"position":[[5,5]]},"517":{"position":[[12,5]]},"1219":{"position":[[40,5]]},"1252":{"position":[[54,5]]},"2428":{"position":[[0,5]]},"3077":{"position":[[36,6]]},"3079":{"position":[[29,5]]}}}],["driver",{"_index":769,"t":{"1582":{"position":[[4,6]]}}}],["drop",{"_index":960,"t":{"2533":{"position":[[38,8]]},"2545":{"position":[[23,4]]}}}],["drplotter",{"_index":1022,"t":{"2753":{"position":[[0,9]]},"2851":{"position":[[0,9]]}}}],["drserver",{"_index":1024,"t":{"2761":{"position":[[0,8]]}}}],["drsolver",{"_index":1023,"t":{"2759":{"position":[[0,8]]}}}],["dual",{"_index":1121,"t":{"3239":{"position":[[0,4]]}}}],["dump",{"_index":291,"t":{"637":{"position":[[4,4]]}}}],["duplic",{"_index":480,"t":{"961":{"position":[[20,10]]}}}],["durabl",{"_index":128,"t":{"244":{"position":[[5,10]]}}}],["dust",{"_index":646,"t":{"1308":{"position":[[12,4]]},"1316":{"position":[[21,4]]}}}],["dynam",{"_index":1119,"t":{"3204":{"position":[[4,7]]},"3206":{"position":[[6,7]]},"3208":{"position":[[6,7]]},"3210":{"position":[[6,7]]},"3212":{"position":[[6,7]]}}}],["eas",{"_index":179,"t":{"410":{"position":[[0,4]]}}}],["edit",{"_index":883,"t":{"2222":{"position":[[0,4]]}}}],["editor",{"_index":797,"t":{"1722":{"position":[[5,6]]},"1742":{"position":[[5,6]]}}}],["eip",{"_index":55,"t":{"150":{"position":[[28,3]]}}}],["elig",{"_index":1130,"t":{"3299":{"position":[[3,11]]}}}],["email",{"_index":530,"t":{"1142":{"position":[[30,5]]}}}],["enabl",{"_index":497,"t":{"987":{"position":[[0,6]]},"3766":{"position":[[42,7]]}}}],["encryptedx",{"_index":953,"t":{"2525":{"position":[[0,10]]}}}],["end",{"_index":578,"t":{"1217":{"position":[[20,5]]},"2700":{"position":[[21,3]]},"2702":{"position":[[25,3]]},"2706":{"position":[[8,3]]}}}],["endpoint",{"_index":1077,"t":{"3032":{"position":[[6,9]]}}}],["endur",{"_index":1127,"t":{"3283":{"position":[[8,9]]}}}],["enough",{"_index":554,"t":{"1160":{"position":[[19,6]]},"1215":{"position":[[52,6]]},"1469":{"position":[[53,6]]},"2184":{"position":[[19,6]]},"2186":{"position":[[19,6]]},"2976":{"position":[[42,6]]}}}],["ensur",{"_index":667,"t":{"1333":{"position":[[43,6]]}}}],["enter",{"_index":584,"t":{"1219":{"position":[[57,6]]},"3355":{"position":[[40,5]]}}}],["entiti",{"_index":971,"t":{"2586":{"position":[[0,8]]}}}],["env",{"_index":844,"t":{"1920":{"position":[[4,3]]}}}],["environ",{"_index":744,"t":{"1489":{"position":[[21,11]]},"2208":{"position":[[14,11]]},"2256":{"position":[[4,11]]},"2439":{"position":[[6,12]]}}}],["eo",{"_index":1366,"t":{"3963":{"position":[[28,3]]}}}],["eol",{"_index":761,"t":{"1543":{"position":[[4,3]]}}}],["epoch",{"_index":453,"t":{"912":{"position":[[4,6]]},"3485":{"position":[[14,5]]}}}],["error",{"_index":131,"t":{"244":{"position":[[35,5]]},"250":{"position":[[21,5]]},"1215":{"position":[[41,5]]},"1232":{"position":[[18,5]]},"1312":{"position":[[23,5]]},"1351":{"position":[[13,5]]},"1457":{"position":[[41,6]]},"3034":{"position":[[0,5]]},"3446":{"position":[[16,5]]}}}],["estim",{"_index":206,"t":{"481":{"position":[[0,9]]},"996":{"position":[[0,9]]},"3166":{"position":[[14,9]]},"3951":{"position":[[8,8]]}}}],["eth",{"_index":75,"t":{"175":{"position":[[13,3]]}}}],["ethereum",{"_index":175,"t":{"403":{"position":[[0,8]]}}}],["even",{"_index":678,"t":{"1349":{"position":[[80,4]]}}}],["exactli",{"_index":698,"t":{"1396":{"position":[[16,7]]}}}],["examin",{"_index":266,"t":{"600":{"position":[[0,7]]}}}],["examine_spend",{"_index":265,"t":{"600":{"position":[[0,13]]}}}],["exampl",{"_index":345,"t":{"743":{"position":[[16,7]]},"1853":{"position":[[6,7]]},"1855":{"position":[[9,7]]},"1857":{"position":[[8,7]]},"2037":{"position":[[0,7]]},"2039":{"position":[[0,7]]},"3099":{"position":[[12,7]]},"3101":{"position":[[6,8]]},"3132":{"position":[[0,8]]},"3422":{"position":[[0,7]]}}}],["exchang",{"_index":677,"t":{"1345":{"position":[[39,8]]},"1400":{"position":[[29,10]]}}}],["execut",{"_index":141,"t":{"328":{"position":[[23,10]]},"1306":{"position":[[13,10]]},"1396":{"position":[[53,8]]},"1449":{"position":[[13,10]]}}}],["exit",{"_index":310,"t":{"660":{"position":[[4,4]]},"701":{"position":[[0,4]]},"760":{"position":[[0,4]]}}}],["exit_lockup",{"_index":333,"t":{"701":{"position":[[0,11]]}}}],["expect",{"_index":871,"t":{"2144":{"position":[[0,12]]},"2470":{"position":[[50,8]]},"2472":{"position":[[63,8]]},"2558":{"position":[[0,8]]},"2980":{"position":[[12,8]]}}}],["expir",{"_index":523,"t":{"1115":{"position":[[8,10]]},"1636":{"position":[[62,7]]},"2178":{"position":[[10,8]]}}}],["explain",{"_index":837,"t":{"1904":{"position":[[4,9]]}}}],["explan",{"_index":781,"t":{"1604":{"position":[[0,11]]},"3461":{"position":[[9,11]]}}}],["export",{"_index":268,"t":{"602":{"position":[[0,6]]},"1541":{"position":[[0,6]]},"1547":{"position":[[0,6]]},"2116":{"position":[[11,6]]}}}],["export_config",{"_index":267,"t":{"602":{"position":[[0,13]]}}}],["expos",{"_index":891,"t":{"2300":{"position":[[0,6]]}}}],["extend",{"_index":218,"t":{"515":{"position":[[0,9]]},"4027":{"position":[[0,6]]}}}],["extend_derivation_index",{"_index":1385,"t":{"4027":{"position":[[0,23]]}}}],["extern",{"_index":820,"t":{"1801":{"position":[[19,8]]},"3077":{"position":[[0,8]]},"3126":{"position":[[0,8]]}}}],["factor",{"_index":918,"t":{"2365":{"position":[[19,6]]}}}],["fail",{"_index":344,"t":{"743":{"position":[[0,6]]}}}],["fake",{"_index":297,"t":{"645":{"position":[[0,4]]}}}],["faq",{"_index":27,"t":{"93":{"position":[[9,3]]},"1507":{"position":[[0,3]]},"2926":{"position":[[8,3]]},"2953":{"position":[[10,3]]},"3348":{"position":[[0,3]]},"3430":{"position":[[9,3]]},"3763":{"position":[[0,3]]}}}],["farm",{"_index":37,"t":{"124":{"position":[[23,4]]},"203":{"position":[[0,4]]},"208":{"position":[[14,4],[31,7]]},"216":{"position":[[36,4]]},"222":{"position":[[8,7]]},"244":{"position":[[56,7]]},"465":{"position":[[16,7]]},"525":{"position":[[8,7]]},"1003":{"position":[[20,7]]},"1085":{"position":[[6,7]]},"1172":{"position":[[17,4]]},"1178":{"position":[[42,7]]},"1242":{"position":[[47,7]]},"1258":{"position":[[0,7]]},"1261":{"position":[[21,7]]},"1269":{"position":[[17,4]]},"1271":{"position":[[13,7]]},"2220":{"position":[[0,4]]},"2224":{"position":[[12,7]]},"2464":{"position":[[23,4]]},"2490":{"position":[[16,4]]},"2799":{"position":[[0,4]]},"2931":{"position":[[6,4]]},"3062":{"position":[[0,7]]},"3166":{"position":[[4,4]]},"3174":{"position":[[0,4]]},"3182":{"position":[[9,7]]},"3184":{"position":[[4,7]]},"3190":{"position":[[9,7]]},"3239":{"position":[[5,7]]},"3269":{"position":[[0,4]]},"4035":{"position":[[4,6]]}}}],["farm_block",{"_index":1102,"t":{"3174":{"position":[[0,10]]}}}],["farmer",{"_index":41,"t":{"130":{"position":[[0,6]]},"527":{"position":[[0,6]]},"529":{"position":[[0,6]]},"1130":{"position":[[21,7]]},"1259":{"position":[[33,6]]},"1789":{"position":[[4,7]]},"2535":{"position":[[17,7]]},"2771":{"position":[[0,6]]},"2877":{"position":[[12,6]]},"2964":{"position":[[25,6]]},"2966":{"position":[[27,6]]},"2968":{"position":[[24,6]]},"2970":{"position":[[44,7]]},"3028":{"position":[[0,6]]},"3030":{"position":[[0,6]]},"3042":{"position":[[5,6]]},"3046":{"position":[[6,6]]},"3048":{"position":[[5,6]]}}}],["fast",{"_index":609,"t":{"1263":{"position":[[19,4]]},"1443":{"position":[[12,4]]},"3247":{"position":[[27,4]]},"3522":{"position":[[0,4]]}}}],["faster",{"_index":226,"t":{"523":{"position":[[0,6]]}}}],["faucet",{"_index":620,"t":{"1280":{"position":[[22,6]]}}}],["featur",{"_index":164,"t":{"385":{"position":[[4,8]]},"1324":{"position":[[14,7]]},"2062":{"position":[[4,8]]}}}],["fee",{"_index":235,"t":{"531":{"position":[[33,4]]},"1326":{"position":[[21,3]]},"1394":{"position":[[16,3]]},"2383":{"position":[[0,3]]},"2391":{"position":[[46,4]]},"2393":{"position":[[11,3]]},"2912":{"position":[[5,4]]},"2914":{"position":[[11,4]]},"3311":{"position":[[3,4]]},"3951":{"position":[[4,3]]}}}],["file",{"_index":406,"t":{"833":{"position":[[12,5]]},"923":{"position":[[18,4]]},"1005":{"position":[[36,4]]},"1229":{"position":[[63,5]]},"1306":{"position":[[24,4]]},"1326":{"position":[[53,4]]},"1331":{"position":[[24,4]]},"1441":{"position":[[16,4]]},"1449":{"position":[[24,4]]},"1453":{"position":[[29,5]]},"1457":{"position":[[32,4]]},"1724":{"position":[[9,5]]},"1744":{"position":[[9,5]]},"1924":{"position":[[17,5]]},"1959":{"position":[[12,5]]},"2302":{"position":[[23,5]]},"2305":{"position":[[28,5]]},"2633":{"position":[[27,4]]},"2767":{"position":[[63,5]]},"3376":{"position":[[7,4]]},"3422":{"position":[[21,4]]},"3779":{"position":[[12,5]]},"3856":{"position":[[4,4]]},"3858":{"position":[[4,4]]}}}],["filter",{"_index":92,"t":{"212":{"position":[[36,6]]},"654":{"position":[[11,6]]},"1267":{"position":[[17,6]]},"1308":{"position":[[17,6]]},"1316":{"position":[[26,6]]},"2480":{"position":[[27,6]]},"2521":{"position":[[9,7]]},"2523":{"position":[[8,6]]},"2525":{"position":[[18,6]]},"2527":{"position":[[27,6]]}}}],["final",{"_index":590,"t":{"1225":{"position":[[7,5]]},"1288":{"position":[[69,5]]},"1863":{"position":[[0,5]]}}}],["find",{"_index":436,"t":{"882":{"position":[[0,4]]},"925":{"position":[[4,4]]},"1019":{"position":[[7,4]]},"2309":{"position":[[12,4]]},"2311":{"position":[[12,4]]},"2941":{"position":[[12,4]]},"3349":{"position":[[12,4]]},"3367":{"position":[[9,4]]}}}],["find_lost",{"_index":435,"t":{"882":{"position":[[0,9]]}}}],["fingerprint",{"_index":392,"t":{"808":{"position":[[14,11]]},"814":{"position":[[12,11]]},"3986":{"position":[[14,11]]}}}],["finish",{"_index":314,"t":{"662":{"position":[[20,8]]},"1578":{"position":[[4,6]]}}}],["firewal",{"_index":900,"t":{"2316":{"position":[[35,8]]}}}],["first",{"_index":186,"t":{"425":{"position":[[0,5]]},"812":{"position":[[4,5]]},"1577":{"position":[[23,5]]},"1578":{"position":[[24,5]]},"2545":{"position":[[28,5]]}}}],["fix",{"_index":760,"t":{"1543":{"position":[[0,3]]}}}],["flash",{"_index":197,"t":{"439":{"position":[[1,5]]}}}],["folder",{"_index":894,"t":{"2309":{"position":[[28,6]]}}}],["foliag",{"_index":231,"t":{"529":{"position":[[13,7]]},"3497":{"position":[[8,7]]}}}],["footnot",{"_index":759,"t":{"1535":{"position":[[0,9]]},"1805":{"position":[[0,9]]},"2422":{"position":[[0,9]]},"3103":{"position":[[0,9]]},"3214":{"position":[[0,9]]}}}],["fork",{"_index":250,"t":{"572":{"position":[[0,7]]},"2986":{"position":[[20,5]]}}}],["format",{"_index":931,"t":{"2428":{"position":[[6,6]]},"2466":{"position":[[23,6]]},"2476":{"position":[[40,6]]},"2478":{"position":[[64,6]]},"2480":{"position":[[48,6]]},"2484":{"position":[[45,7]]},"2563":{"position":[[10,6]]},"2666":{"position":[[5,6]]},"2776":{"position":[[10,6]]},"3130":{"position":[[11,6]]},"3866":{"position":[[12,6]]}}}],["forward",{"_index":1167,"t":{"3455":{"position":[[5,10]]},"3457":{"position":[[4,7]]}}}],["foundat",{"_index":711,"t":{"1412":{"position":[[45,10]]}}}],["fraction",{"_index":1175,"t":{"3499":{"position":[[4,8]]}}}],["free",{"_index":313,"t":{"662":{"position":[[4,4]]}}}],["friend",{"_index":705,"t":{"1408":{"position":[[17,7]]},"1410":{"position":[[8,7]]}}}],["fulfil",{"_index":671,"t":{"1337":{"position":[[69,7]]}}}],["full",{"_index":28,"t":{"96":{"position":[[0,4]]},"136":{"position":[[0,4]]},"138":{"position":[[0,4]]},"1130":{"position":[[30,4]]},"1231":{"position":[[0,4]]},"1256":{"position":[[30,4]]},"1298":{"position":[[73,4]]},"1910":{"position":[[0,4]]},"2387":{"position":[[33,4]]},"2389":{"position":[[20,4]]},"2391":{"position":[[20,4]]},"2893":{"position":[[18,4]]},"3224":{"position":[[8,4]]},"3384":{"position":[[0,4]]}}}],["fulli",{"_index":157,"t":{"363":{"position":[[28,5]]},"2466":{"position":[[33,5]]}}}],["function",{"_index":714,"t":{"1420":{"position":[[9,13]]},"1531":{"position":[[21,9]]},"1750":{"position":[[9,9]]},"1752":{"position":[[17,8]]},"3759":{"position":[[10,9]]},"3766":{"position":[[19,13]]}}}],["fund",{"_index":302,"t":{"652":{"position":[[8,5]]},"685":{"position":[[4,5]]},"727":{"position":[[0,4]]},"1077":{"position":[[0,4]]},"2112":{"position":[[0,4]]},"3237":{"position":[[0,4]]}}}],["fungibl",{"_index":178,"t":{"408":{"position":[[9,11]]}}}],["further",{"_index":262,"t":{"586":{"position":[[0,7]]},"1119":{"position":[[0,7]]},"2198":{"position":[[0,7]]},"2533":{"position":[[0,7]]}}}],["futur",{"_index":1159,"t":{"3394":{"position":[[4,6]]},"3766":{"position":[[57,6]]}}}],["g",{"_index":1090,"t":{"3099":{"position":[[25,1]]}}}],["game",{"_index":808,"t":{"1787":{"position":[[4,4]]}}}],["gene",{"_index":740,"t":{"1467":{"position":[[19,4]]}}}],["gener",{"_index":32,"t":{"98":{"position":[[13,9]]},"471":{"position":[[0,9]]},"473":{"position":[[0,9]]},"475":{"position":[[0,9]]},"1129":{"position":[[0,7]]},"1198":{"position":[[26,9]]},"1508":{"position":[[0,7]]},"1539":{"position":[[0,8]]},"2098":{"position":[[0,8]]},"3297":{"position":[[3,7]]},"3315":{"position":[[4,7]]},"3984":{"position":[[0,8]]}}}],["generate_mnemon",{"_index":1370,"t":{"3984":{"position":[[0,17]]}}}],["genesi",{"_index":215,"t":{"496":{"position":[[0,7]]},"1136":{"position":[[10,7]]}}}],["get",{"_index":675,"t":{"1345":{"position":[[21,7]]},"1426":{"position":[[46,4]]},"1696":{"position":[[0,7]]},"1698":{"position":[[0,7]]},"1815":{"position":[[0,7]]},"1817":{"position":[[0,7]]},"1819":{"position":[[0,7]]},"1823":{"position":[[0,7]]},"2949":{"position":[[10,4]]},"3466":{"position":[[0,7]]},"3610":{"position":[[0,7]]}}}],["get_additions_and_remov",{"_index":1338,"t":{"3913":{"position":[[0,26]]}}}],["get_address",{"_index":1260,"t":{"3680":{"position":[[0,11]]}}}],["get_aggsig_additional_data",{"_index":1339,"t":{"3915":{"position":[[0,26]]}}}],["get_all_block",{"_index":1103,"t":{"3176":{"position":[[0,14]]}}}],["get_all_coin",{"_index":1104,"t":{"3178":{"position":[[0,13]]}}}],["get_all_mempool_item",{"_index":1341,"t":{"3917":{"position":[[0,21]]}}}],["get_all_mempool_tx_id",{"_index":1343,"t":{"3919":{"position":[[0,22]]}}}],["get_all_off",{"_index":982,"t":{"2648":{"position":[[0,14]]},"4092":{"position":[[0,14]]}}}],["get_all_private_key",{"_index":393,"t":{"810":{"position":[[0,20]]}}}],["get_all_puzzle_hash",{"_index":1105,"t":{"3180":{"position":[[0,21]]}}}],["get_ancestor",{"_index":1311,"t":{"3795":{"position":[[0,13]]}}}],["get_auto_claim",{"_index":1374,"t":{"3995":{"position":[[0,14]]}}}],["get_auto_farm",{"_index":1106,"t":{"3182":{"position":[[0,16]]}}}],["get_block",{"_index":1344,"t":{"3921":{"position":[[0,9]]},"3925":{"position":[[0,10]]}}}],["get_block_count_metr",{"_index":1346,"t":{"3927":{"position":[[0,23]]}}}],["get_block_record",{"_index":1348,"t":{"3929":{"position":[[0,16]]},"3931":{"position":[[0,17]]}}}],["get_block_record_by_height",{"_index":1349,"t":{"3933":{"position":[[0,26]]}}}],["get_block_spend",{"_index":1350,"t":{"3935":{"position":[[0,16]]}}}],["get_block_spends_with_condit",{"_index":1351,"t":{"3937":{"position":[[0,32]]}}}],["get_blockchain_st",{"_index":1345,"t":{"3923":{"position":[[0,20]]}}}],["get_cat_list",{"_index":1409,"t":{"4094":{"position":[[0,12]]}}}],["get_coin_record",{"_index":1386,"t":{"4029":{"position":[[0,16]]}}}],["get_coin_record_by_nam",{"_index":1357,"t":{"3949":{"position":[[0,23]]}}}],["get_coin_records_by_hint",{"_index":1353,"t":{"3939":{"position":[[0,24]]}}}],["get_coin_records_by_nam",{"_index":1354,"t":{"3941":{"position":[[0,25]]},"4031":{"position":[[0,25]]}}}],["get_coin_records_by_parent_id",{"_index":1355,"t":{"3943":{"position":[[0,30]]}}}],["get_coin_records_by_puzzle_hash",{"_index":1356,"t":{"3945":{"position":[[0,31]]},"3947":{"position":[[0,33]]}}}],["get_connect",{"_index":1319,"t":{"3848":{"position":[[0,15]]},"4149":{"position":[[0,15]]}}}],["get_current_derivation_index",{"_index":1387,"t":{"4033":{"position":[[0,28]]}}}],["get_derivation_index",{"_index":1261,"t":{"3682":{"position":[[0,20]]}}}],["get_detail",{"_index":438,"t":{"884":{"position":[[0,11]]}}}],["get_did",{"_index":440,"t":{"886":{"position":[[0,7]]}}}],["get_farmed_amount",{"_index":1388,"t":{"4035":{"position":[[0,17]]}}}],["get_farming_ph",{"_index":1107,"t":{"3184":{"position":[[0,14]]}}}],["get_fee_estim",{"_index":1358,"t":{"3951":{"position":[[0,16]]}}}],["get_first_private_key",{"_index":394,"t":{"812":{"position":[[0,21]]}}}],["get_harvest",{"_index":477,"t":{"957":{"position":[[0,14]]}}}],["get_harvester_plots_dupl",{"_index":479,"t":{"961":{"position":[[0,30]]}}}],["get_harvester_plots_invalid",{"_index":481,"t":{"963":{"position":[[0,27]]}}}],["get_harvester_plots_keys_miss",{"_index":483,"t":{"965":{"position":[[0,32]]}}}],["get_harvester_plots_valid",{"_index":484,"t":{"967":{"position":[[0,25]]}}}],["get_harvesters_summari",{"_index":478,"t":{"959":{"position":[[0,22]]}}}],["get_height_info",{"_index":1375,"t":{"3997":{"position":[[0,15]]}}}],["get_id",{"_index":334,"t":{"703":{"position":[[0,6]]}}}],["get_info",{"_index":1035,"t":{"2834":{"position":[[0,8]]}}}],["get_key",{"_index":396,"t":{"816":{"position":[[0,7]]},"818":{"position":[[0,8]]},"841":{"position":[[0,8]]},"3797":{"position":[[0,8]]}}}],["get_key_for_fingerprint",{"_index":395,"t":{"814":{"position":[[0,23]]}}}],["get_keys_for_plot",{"_index":381,"t":{"793":{"position":[[0,21]]}}}],["get_keys_valu",{"_index":413,"t":{"843":{"position":[[0,15]]},"3799":{"position":[[0,15]]}}}],["get_kv_diff",{"_index":414,"t":{"845":{"position":[[0,11]]},"3801":{"position":[[0,11]]}}}],["get_local_root",{"_index":1313,"t":{"3803":{"position":[[0,14]]}}}],["get_logged_in_fingerprint",{"_index":1371,"t":{"3986":{"position":[[0,25]]}}}],["get_mempool_item_by_tx_id",{"_index":1359,"t":{"3953":{"position":[[0,25]]}}}],["get_mempool_items_by_coin_nam",{"_index":1360,"t":{"3955":{"position":[[0,30]]}}}],["get_mirror",{"_index":417,"t":{"847":{"position":[[0,11]]},"3805":{"position":[[0,11]]}}}],["get_network_info",{"_index":1361,"t":{"3957":{"position":[[0,16]]},"3999":{"position":[[0,16]]}}}],["get_network_spac",{"_index":1362,"t":{"3959":{"position":[[0,17]]}}}],["get_next_address",{"_index":1389,"t":{"4037":{"position":[[0,16]]}}}],["get_notif",{"_index":1390,"t":{"4039":{"position":[[0,17]]}}}],["get_off",{"_index":970,"t":{"2576":{"position":[[0,10]]},"2650":{"position":[[0,9]]},"4096":{"position":[[0,9]]}}}],["get_offer_summari",{"_index":985,"t":{"2654":{"position":[[0,17]]},"4100":{"position":[[0,17]]}}}],["get_offers_count",{"_index":983,"t":{"2652":{"position":[[0,16]]},"4098":{"position":[[0,16]]}}}],["get_owned_stor",{"_index":418,"t":{"849":{"position":[[0,16]]},"3807":{"position":[[0,16]]}}}],["get_plot",{"_index":913,"t":{"2342":{"position":[[0,9]]}}}],["get_plot_directori",{"_index":914,"t":{"2344":{"position":[[0,20]]}}}],["get_plott",{"_index":382,"t":{"795":{"position":[[0,12]]}}}],["get_pool_login_link",{"_index":485,"t":{"969":{"position":[[0,19]]}}}],["get_pool_st",{"_index":487,"t":{"971":{"position":[[0,14]]}}}],["get_private_key",{"_index":1372,"t":{"3988":{"position":[[0,15]]}}}],["get_proof",{"_index":420,"t":{"851":{"position":[[0,9]]},"3809":{"position":[[0,9]]}}}],["get_proofs_for_root",{"_index":1177,"t":{"3508":{"position":[[0,19]]}}}],["get_public_key",{"_index":397,"t":{"820":{"position":[[0,14]]},"822":{"position":[[0,15]]},"3990":{"position":[[0,15]]}}}],["get_puzzle_and_solut",{"_index":1363,"t":{"3961":{"position":[[0,23]]}}}],["get_recent_signage_point_or_eo",{"_index":1364,"t":{"3963":{"position":[[0,31]]}}}],["get_reward_target",{"_index":488,"t":{"973":{"position":[[0,18]]}}}],["get_root",{"_index":421,"t":{"853":{"position":[[0,8]]},"3811":{"position":[[0,8]]},"3813":{"position":[[0,9]]}}}],["get_root_histori",{"_index":422,"t":{"855":{"position":[[0,16]]},"3815":{"position":[[0,16]]}}}],["get_rout",{"_index":356,"t":{"762":{"position":[[0,10]]},"975":{"position":[[0,10]]},"2346":{"position":[[0,10]]},"3817":{"position":[[0,10]]},"3965":{"position":[[0,10]]},"4151":{"position":[[0,10]]}}}],["get_signage_point",{"_index":490,"t":{"977":{"position":[[0,17]]},"979":{"position":[[0,18]]}}}],["get_spendable_coin",{"_index":1391,"t":{"4041":{"position":[[0,19]]}}}],["get_statu",{"_index":358,"t":{"764":{"position":[[0,10]]}}}],["get_stray_cat",{"_index":1410,"t":{"4102":{"position":[[0,14]]}}}],["get_subscript",{"_index":424,"t":{"857":{"position":[[0,17]]}}}],["get_sync_statu",{"_index":426,"t":{"859":{"position":[[0,15]]},"3819":{"position":[[0,15]]},"4001":{"position":[[0,15]]}}}],["get_timestamp_for_height",{"_index":1376,"t":{"4003":{"position":[[0,24]]}}}],["get_transact",{"_index":1263,"t":{"3684":{"position":[[0,15]]},"3686":{"position":[[0,16]]},"4043":{"position":[[0,15]]},"4045":{"position":[[0,16]]}}}],["get_transaction_count",{"_index":1392,"t":{"4047":{"position":[[0,21]]}}}],["get_transaction_memo",{"_index":1393,"t":{"4049":{"position":[[0,20]]}}}],["get_unfinished_block_head",{"_index":1367,"t":{"3967":{"position":[[0,28]]}}}],["get_valu",{"_index":427,"t":{"861":{"position":[[0,9]]},"3821":{"position":[[0,9]]}}}],["get_vers",{"_index":359,"t":{"766":{"position":[[0,11]]}}}],["get_wallet",{"_index":1381,"t":{"4016":{"position":[[0,11]]}}}],["get_wallet_address",{"_index":361,"t":{"768":{"position":[[0,20]]}}}],["get_wallet_bal",{"_index":1395,"t":{"4051":{"position":[[0,18]]},"4053":{"position":[[0,19]]}}}],["getalloff",{"_index":1270,"t":{"3712":{"position":[[5,12]]}}}],["getcatassetid",{"_index":1219,"t":{"3602":{"position":[[5,13]]}}}],["getcatwalletinfo",{"_index":1217,"t":{"3600":{"position":[[5,16]]}}}],["getcurrentaddress",{"_index":1234,"t":{"3623":{"position":[[5,17]]}}}],["getnextaddress",{"_index":1236,"t":{"3625":{"position":[[5,14]]}}}],["getnft",{"_index":1290,"t":{"3737":{"position":[[5,7]]}}}],["getnftinfo",{"_index":1292,"t":{"3739":{"position":[[5,10]]}}}],["getnftscount",{"_index":1298,"t":{"3745":{"position":[[5,12]]}}}],["getofferdata",{"_index":1282,"t":{"3724":{"position":[[5,12]]}}}],["getofferrecord",{"_index":1284,"t":{"3726":{"position":[[5,14]]}}}],["getofferscount",{"_index":1272,"t":{"3714":{"position":[[5,14]]}}}],["getoffersummari",{"_index":1280,"t":{"3722":{"position":[[5,15]]}}}],["getpublickey",{"_index":1226,"t":{"3615":{"position":[[5,12]]}}}],["getsyncstatu",{"_index":1246,"t":{"3635":{"position":[[5,13]]}}}],["gettransact",{"_index":1230,"t":{"3619":{"position":[[5,14]]}}}],["getwallet",{"_index":1228,"t":{"3617":{"position":[[5,10]]}}}],["getwalletbal",{"_index":1232,"t":{"3621":{"position":[[5,16]]}}}],["gigahors",{"_index":1039,"t":{"2853":{"position":[[0,9]]}}}],["github",{"_index":247,"t":{"566":{"position":[[6,6]]},"568":{"position":[[9,6]]},"570":{"position":[[11,6]]}}}],["global",{"_index":221,"t":{"517":{"position":[[0,6]]}}}],["go",{"_index":544,"t":{"1152":{"position":[[21,5]]},"1275":{"position":[[27,2],[36,2]]}}}],["god",{"_index":199,"t":{"439":{"position":[[17,3]]}}}],["goe",{"_index":1025,"t":{"2765":{"position":[[9,4]]}}}],["good",{"_index":503,"t":{"1013":{"position":[[0,4]]},"1160":{"position":[[14,4]]},"1469":{"position":[[48,4]]}}}],["gossip",{"_index":950,"t":{"2510":{"position":[[5,9]]}}}],["gotcha",{"_index":5,"t":{"8":{"position":[[7,7]]},"22":{"position":[[7,7]]},"42":{"position":[[7,7]]},"58":{"position":[[7,7]]},"77":{"position":[[7,7]]},"115":{"position":[[7,7]]},"192":{"position":[[7,7]]},"265":{"position":[[7,7]]},"281":{"position":[[7,7]]},"297":{"position":[[7,7]]},"313":{"position":[[7,7]]},"454":{"position":[[7,7]]},"505":{"position":[[7,7]]},"1040":{"position":[[7,7]]},"1052":{"position":[[7,7]]},"3001":{"position":[[7,7]]},"3015":{"position":[[7,7]]},"3112":{"position":[[7,7]]},"3334":{"position":[[7,7]]}}}],["govern",{"_index":1145,"t":{"3325":{"position":[[4,9]]}}}],["gpu",{"_index":941,"t":{"2470":{"position":[[14,3]]},"2486":{"position":[[50,3]]},"2556":{"position":[[0,3]]}}}],["grade",{"_index":1172,"t":{"3463":{"position":[[21,5]]}}}],["granular",{"_index":743,"t":{"1487":{"position":[[13,11]]}}}],["gratif",{"_index":1086,"t":{"3089":{"position":[[12,13]]},"3093":{"position":[[12,13]]}}}],["greedi",{"_index":1091,"t":{"3099":{"position":[[27,6]]}}}],["green",{"_index":68,"t":{"167":{"position":[[9,5]]},"1124":{"position":[[20,5]]}}}],["grind",{"_index":928,"t":{"2416":{"position":[[4,8]]}}}],["gui",{"_index":79,"t":{"201":{"position":[[0,3]]},"988":{"position":[[0,3]]},"1023":{"position":[[10,3]]},"1290":{"position":[[70,3]]},"1306":{"position":[[59,3]]},"1606":{"position":[[0,3]]},"1668":{"position":[[17,3]]},"1674":{"position":[[0,3]]},"2304":{"position":[[7,3]]},"2308":{"position":[[0,3]]},"2309":{"position":[[8,3]]},"2311":{"position":[[8,3]]},"2445":{"position":[[0,3]]},"2810":{"position":[[0,3]]},"2816":{"position":[[0,3]]},"2820":{"position":[[0,3]]},"2935":{"position":[[66,3]]},"3404":{"position":[[0,3]]},"3406":{"position":[[21,3]]}}}],["guid",{"_index":341,"t":{"723":{"position":[[0,5]]},"2007":{"position":[[10,5]]},"2590":{"position":[[4,5]]},"2600":{"position":[[4,5]]}}}],["guidelin",{"_index":532,"t":{"1144":{"position":[[23,10]]}}}],["halv",{"_index":38,"t":{"126":{"position":[[0,8]]}}}],["handl",{"_index":852,"t":{"1951":{"position":[[0,6]]},"1953":{"position":[[0,6]]}}}],["handle_download",{"_index":854,"t":{"1953":{"position":[[0,15]]}}}],["handle_upload",{"_index":851,"t":{"1951":{"position":[[0,13]]}}}],["handshak",{"_index":903,"t":{"2322":{"position":[[10,9]]},"2496":{"position":[[0,9]]}}}],["happen",{"_index":135,"t":{"250":{"position":[[5,7]]},"1396":{"position":[[5,7]]},"2765":{"position":[[23,7]]}}}],["hard",{"_index":121,"t":{"236":{"position":[[0,4]]},"517":{"position":[[7,4]]},"2958":{"position":[[4,4]]}}}],["hardwar",{"_index":512,"t":{"1063":{"position":[[7,8]]},"2474":{"position":[[14,8]]},"3431":{"position":[[13,8]]}}}],["harvest",{"_index":82,"t":{"205":{"position":[[0,7]]},"957":{"position":[[4,10]]},"959":{"position":[[4,10]]},"961":{"position":[[4,9]]},"963":{"position":[[4,9]]},"965":{"position":[[4,9]]},"967":{"position":[[4,9]]},"1130":{"position":[[9,10]]},"1259":{"position":[[46,9]]},"2322":{"position":[[0,9]]},"2324":{"position":[[18,9]]},"2474":{"position":[[43,10]]},"2771":{"position":[[10,9]]},"2922":{"position":[[7,10]]},"3380":{"position":[[0,9]]}}}],["harvester_handshak",{"_index":902,"t":{"2322":{"position":[[0,19]]}}}],["hash",{"_index":774,"t":{"1589":{"position":[[37,4]]},"1698":{"position":[[21,4]]},"1765":{"position":[[11,4]]},"1857":{"position":[[0,7]]},"1859":{"position":[[0,4]]},"1861":{"position":[[10,4]]},"1865":{"position":[[10,4]]},"1867":{"position":[[7,4]]},"1893":{"position":[[11,4]]},"1898":{"position":[[15,4]]},"2078":{"position":[[33,6]]},"2291":{"position":[[4,4]]},"2604":{"position":[[5,4]]},"2769":{"position":[[7,4]]},"3180":{"position":[[15,6]]},"3596":{"position":[[13,4]]},"3945":{"position":[[27,4]]},"3947":{"position":[[27,6]]}}}],["hd",{"_index":622,"t":{"1286":{"position":[[9,2]]}}}],["hdd",{"_index":728,"t":{"1443":{"position":[[21,3]]},"2484":{"position":[[28,3]]},"2552":{"position":[[0,3]]}}}],["header",{"_index":50,"t":{"144":{"position":[[0,6]]},"3537":{"position":[[14,6]]},"3539":{"position":[[14,6]]},"3541":{"position":[[7,6]]},"3555":{"position":[[8,6]]},"3557":{"position":[[7,6]]},"3559":{"position":[[8,6]]},"3967":{"position":[[21,7]]}}}],["health",{"_index":80,"t":{"201":{"position":[[4,6]]},"207":{"position":[[4,6]]},"3868":{"position":[[29,6]]}}}],["healthz",{"_index":858,"t":{"1965":{"position":[[0,7]]},"3969":{"position":[[0,7]]}}}],["heard",{"_index":613,"t":{"1273":{"position":[[7,5]]}}}],["heartbeat",{"_index":946,"t":{"2498":{"position":[[0,9]]}}}],["height",{"_index":645,"t":{"1304":{"position":[[80,6]]},"3933":{"position":[[20,6]]},"3997":{"position":[[4,6]]},"4003":{"position":[[18,6]]}}}],["help",{"_index":517,"t":{"1089":{"position":[[11,4]]},"2734":{"position":[[11,4]]}}}],["high",{"_index":815,"t":{"1795":{"position":[[6,4]]},"3079":{"position":[[14,4]]}}}],["higher",{"_index":1164,"t":{"3435":{"position":[[52,6]]}}}],["highlight",{"_index":917,"t":{"2360":{"position":[[6,10]]}}}],["hint",{"_index":979,"t":{"2631":{"position":[[11,5]]},"3939":{"position":[[20,4]]}}}],["histori",{"_index":423,"t":{"855":{"position":[[9,7]]},"1296":{"position":[[87,7]]},"1300":{"position":[[16,7]]},"2022":{"position":[[14,7]]},"2726":{"position":[[0,7]]},"3815":{"position":[[9,7]]},"4128":{"position":[[3,7]]}}}],["hobbyist",{"_index":1082,"t":{"3073":{"position":[[0,8]]}}}],["holiday",{"_index":706,"t":{"1410":{"position":[[32,7]]}}}],["home",{"_index":597,"t":{"1234":{"position":[[45,4]]}}}],["honest",{"_index":961,"t":{"2535":{"position":[[10,6]]}}}],["host",{"_index":890,"t":{"2299":{"position":[[14,4]]},"2304":{"position":[[11,4]]}}}],["hsm",{"_index":286,"t":{"626":{"position":[[0,3]]},"633":{"position":[[0,4]]},"637":{"position":[[0,3]]},"639":{"position":[[0,3]]}}}],["hsm_dump_sb",{"_index":290,"t":{"637":{"position":[[0,11]]}}}],["hsm_test_spend",{"_index":293,"t":{"639":{"position":[[0,14]]}}}],["hsmgen",{"_index":287,"t":{"629":{"position":[[0,6]]}}}],["hsmmerg",{"_index":289,"t":{"635":{"position":[[0,8]]}}}],["hsmpk",{"_index":288,"t":{"631":{"position":[[0,5]]}}}],["http",{"_index":1076,"t":{"3032":{"position":[[0,5]]},"3144":{"position":[[0,4]]}}}],["hw",{"_index":21,"t":{"87":{"position":[[0,2]]}}}],["hw_vdf_client",{"_index":20,"t":{"87":{"position":[[0,13]]}}}],["ico",{"_index":557,"t":{"1170":{"position":[[17,3]]}}}],["id",{"_index":323,"t":{"672":{"position":[[17,2]]},"703":{"position":[[4,2]]},"953":{"position":[[20,3]]},"1967":{"position":[[10,2]]},"1969":{"position":[[13,2]]},"1991":{"position":[[9,2]]},"2523":{"position":[[5,2]]},"2646":{"position":[[17,3]]},"3919":{"position":[[19,3]]},"3943":{"position":[[27,3]]},"3953":{"position":[[23,2]]},"4065":{"position":[[16,2]]},"4078":{"position":[[10,2]]},"4080":{"position":[[14,2]]},"4090":{"position":[[17,3]]}}}],["ident",{"_index":657,"t":{"1322":{"position":[[8,9]]},"1324":{"position":[[27,9]]}}}],["identif",{"_index":1075,"t":{"3028":{"position":[[7,14]]}}}],["identifi",{"_index":1061,"t":{"2968":{"position":[[11,8]]}}}],["imag",{"_index":794,"t":{"1698":{"position":[[11,5]]},"2078":{"position":[[7,6]]},"2084":{"position":[[15,6]]}}}],["impact",{"_index":97,"t":{"216":{"position":[[26,6]]},"2535":{"position":[[0,6]]},"2537":{"position":[[0,6]]}}}],["import",{"_index":238,"t":{"546":{"position":[[4,9]]},"548":{"position":[[4,9]]},"1318":{"position":[[6,6]]},"1922":{"position":[[0,7]]},"3441":{"position":[[31,9]]}}}],["includ",{"_index":688,"t":{"1374":{"position":[[34,8]]},"2158":{"position":[[6,8]]}}}],["inclus",{"_index":921,"t":{"2383":{"position":[[17,9]]}}}],["inclusionstatu",{"_index":1251,"t":{"3648":{"position":[[0,15]]}}}],["incom",{"_index":947,"t":{"2504":{"position":[[0,8]]}}}],["inconsist",{"_index":647,"t":{"1310":{"position":[[27,12]]}}}],["increas",{"_index":271,"t":{"604":{"position":[[0,8]]},"1841":{"position":[[11,8]]},"1843":{"position":[[49,8]]},"2126":{"position":[[11,8]]}}}],["increase_security_level",{"_index":270,"t":{"604":{"position":[[0,23]]}}}],["indemn",{"_index":1141,"t":{"3321":{"position":[[4,9]]}}}],["index",{"_index":1262,"t":{"3682":{"position":[[15,5]]},"3702":{"position":[[18,5]]},"4027":{"position":[[18,5]]},"4033":{"position":[[23,5]]}}}],["inflat",{"_index":555,"t":{"1162":{"position":[[15,9]]}}}],["info",{"_index":461,"t":{"927":{"position":[[21,4]]},"931":{"position":[[8,4]]},"1589":{"position":[[16,4],[51,4]]},"1773":{"position":[[14,4]]},"1961":{"position":[[7,4]]},"2236":{"position":[[4,4]]},"2834":{"position":[[4,4]]},"3040":{"position":[[10,4]]},"3575":{"position":[[12,4]]},"3577":{"position":[[12,4]]},"3889":{"position":[[8,4]]},"3957":{"position":[[12,4]]},"3997":{"position":[[11,4]]},"3999":{"position":[[12,4]]}}}],["inform",{"_index":194,"t":{"435":{"position":[[15,11]]},"933":{"position":[[8,11]]},"1005":{"position":[[15,11]]},"2905":{"position":[[11,11]]},"3317":{"position":[[32,11]]}}}],["infus",{"_index":1080,"t":{"3068":{"position":[[0,8]]},"3495":{"position":[[8,7]]}}}],["inherit",{"_index":1317,"t":{"3845":{"position":[[0,9]]}}}],["init",{"_index":144,"t":{"333":{"position":[[0,4]]},"606":{"position":[[0,4]]}}}],["initi",{"_index":76,"t":{"179":{"position":[[0,8]]},"1914":{"position":[[0,12]]},"2100":{"position":[[0,10]]},"2273":{"position":[[0,7]]},"2275":{"position":[[0,12]]},"2447":{"position":[[0,7]]}}}],["inner",{"_index":804,"t":{"1759":{"position":[[0,5]]}}}],["insert",{"_index":1314,"t":{"3823":{"position":[[0,6]]}}}],["instal",{"_index":248,"t":{"570":{"position":[[0,10]]},"900":{"position":[[9,7]]},"902":{"position":[[9,7]]},"1027":{"position":[[15,12]]},"1029":{"position":[[15,12]]},"1071":{"position":[[0,7]]},"1093":{"position":[[0,7]]},"1451":{"position":[[2,9],[35,9]]},"1563":{"position":[[0,7]]},"1624":{"position":[[0,7]]},"2008":{"position":[[0,7]]},"2032":{"position":[[0,7]]},"2068":{"position":[[0,7]]},"2070":{"position":[[7,9]]},"2072":{"position":[[0,10]]},"2091":{"position":[[0,7]]},"2094":{"position":[[9,7]]},"2146":{"position":[[0,12]]},"2432":{"position":[[0,7]]},"2455":{"position":[[27,13]]},"2458":{"position":[[14,9]]},"3241":{"position":[[15,12]]},"3243":{"position":[[15,12]]},"3255":{"position":[[0,7]]},"3416":{"position":[[0,10]]},"3418":{"position":[[0,10]]},"3755":{"position":[[0,7]]}}}],["instruct",{"_index":495,"t":{"981":{"position":[[11,12]]},"2148":{"position":[[8,12]]},"2204":{"position":[[6,12]]},"2210":{"position":[[6,12]]}}}],["instrument",{"_index":543,"t":{"1148":{"position":[[57,10]]}}}],["intellectu",{"_index":1133,"t":{"3305":{"position":[[3,12]]}}}],["intercept",{"_index":832,"t":{"1881":{"position":[[6,12]]}}}],["interest",{"_index":1153,"t":{"3351":{"position":[[20,10]]},"3487":{"position":[[29,8]]}}}],["interfac",{"_index":1043,"t":{"2924":{"position":[[13,9]]}}}],["intern",{"_index":259,"t":{"582":{"position":[[23,8]]},"1469":{"position":[[18,13]]},"1801":{"position":[[6,8]]}}}],["internet",{"_index":588,"t":{"1221":{"position":[[33,8]]},"1263":{"position":[[27,8]]}}}],["intro",{"_index":60,"t":{"155":{"position":[[0,5]]},"165":{"position":[[0,5]]},"368":{"position":[[0,5]]},"589":{"position":[[0,5]]},"719":{"position":[[0,5]]},"1602":{"position":[[0,5]]},"1620":{"position":[[0,5]]},"1649":{"position":[[0,5]]},"1809":{"position":[[0,5]]},"1943":{"position":[[0,5]]},"1973":{"position":[[0,5]]},"1975":{"position":[[0,5]]},"2089":{"position":[[0,5]]},"2129":{"position":[[0,5]]},"2579":{"position":[[0,5]]},"3171":{"position":[[0,5]]},"3262":{"position":[[0,5]]},"3659":{"position":[[0,5]]},"3753":{"position":[[0,5]]},"3774":{"position":[[0,5]]}}}],["introduc",{"_index":660,"t":{"1324":{"position":[[55,9]]},"2500":{"position":[[0,10]]}}}],["introduct",{"_index":741,"t":{"1485":{"position":[[0,12]]}}}],["invalid",{"_index":482,"t":{"963":{"position":[[20,7]]},"1326":{"position":[[13,7]]},"2190":{"position":[[28,7]]},"2196":{"position":[[26,7]]},"2916":{"position":[[0,7]]}}}],["invalid_fee_too_close_to_zero",{"_index":661,"t":{"1326":{"position":[[13,29]]}}}],["invok",{"_index":803,"t":{"1754":{"position":[[0,8]]}}}],["involv",{"_index":701,"t":{"1402":{"position":[[44,7]]},"2196":{"position":[[6,9]]},"2586":{"position":[[9,8]]}}}],["io",{"_index":112,"t":{"232":{"position":[[8,2]]}}}],["iozon",{"_index":1122,"t":{"3253":{"position":[[0,6]]}}}],["ip",{"_index":898,"t":{"2314":{"position":[[40,2]]},"3435":{"position":[[59,3]]}}}],["is_keyring_lock",{"_index":362,"t":{"770":{"position":[[0,17]]}}}],["is_run",{"_index":364,"t":{"772":{"position":[[0,10]]}}}],["isn",{"_index":552,"t":{"1160":{"position":[[0,3]]},"1469":{"position":[[0,3]]}}}],["issu",{"_index":525,"t":{"1117":{"position":[[10,6]]},"2180":{"position":[[10,6]]}}}],["issuanc",{"_index":742,"t":{"1487":{"position":[[4,8]]},"1493":{"position":[[18,8]]},"1495":{"position":[[20,8]]},"1565":{"position":[[23,8]]},"1567":{"position":[[22,8]]},"1690":{"position":[[18,8]]}}}],["issuer",{"_index":748,"t":{"1510":{"position":[[4,7]]}}}],["item",{"_index":1342,"t":{"3917":{"position":[[16,5]]},"3953":{"position":[[12,4]]},"3955":{"position":[[12,5]]}}}],["javascript",{"_index":1096,"t":{"3150":{"position":[[0,10]]}}}],["join",{"_index":342,"t":{"729":{"position":[[0,4]]},"1081":{"position":[[0,4]]},"1271":{"position":[[6,4]]},"3228":{"position":[[0,4]]},"4115":{"position":[[3,4]]}}}],["json",{"_index":1094,"t":{"3144":{"position":[[5,4]]}}}],["k",{"_index":566,"t":{"1201":{"position":[[8,1]]},"1203":{"position":[[24,1]]},"1205":{"position":[[5,1]]},"1223":{"position":[[42,1]]},"2363":{"position":[[0,1]]},"2369":{"position":[[18,1]]},"2730":{"position":[[0,1]]}}}],["k25",{"_index":1067,"t":{"2980":{"position":[[47,3]]}}}],["k32",{"_index":1066,"t":{"2980":{"position":[[37,3]]}}}],["keep",{"_index":506,"t":{"1015":{"position":[[0,4]]},"1017":{"position":[[0,4]]},"1447":{"position":[[21,4]]},"2970":{"position":[[26,4]]}}}],["key",{"_index":59,"t":{"152":{"position":[[25,4]]},"220":{"position":[[2,3]]},"222":{"position":[[2,4],[16,3],[35,3]]},"350":{"position":[[0,4]]},"353":{"position":[[6,3]]},"385":{"position":[[0,3]]},"793":{"position":[[4,4]]},"802":{"position":[[12,3]]},"804":{"position":[[6,4]]},"806":{"position":[[11,4]]},"808":{"position":[[7,3]]},"810":{"position":[[16,4]]},"812":{"position":[[18,3]]},"814":{"position":[[4,3]]},"816":{"position":[[4,3]]},"818":{"position":[[4,4]]},"820":{"position":[[11,3]]},"822":{"position":[[11,4]]},"841":{"position":[[4,4]]},"843":{"position":[[4,4]]},"965":{"position":[[20,4]]},"1015":{"position":[[10,4]]},"1019":{"position":[[17,4]]},"1286":{"position":[[12,4]]},"1349":{"position":[[74,4]]},"1447":{"position":[[29,4]]},"1926":{"position":[[13,3]]},"1973":{"position":[[9,4]]},"2012":{"position":[[16,3]]},"2018":{"position":[[15,4]]},"2020":{"position":[[5,4]]},"2062":{"position":[[0,3]]},"2098":{"position":[[9,4]]},"2807":{"position":[[7,4]]},"2910":{"position":[[9,4]]},"2935":{"position":[[34,3]]},"3402":{"position":[[0,4]]},"3406":{"position":[[9,4]]},"3410":{"position":[[9,4]]},"3791":{"position":[[7,3]]},"3797":{"position":[[4,4]]},"3799":{"position":[[4,4]]},"3975":{"position":[[0,3]]},"3976":{"position":[[4,3]]},"3978":{"position":[[13,3]]},"3980":{"position":[[11,4]]},"3982":{"position":[[7,3]]},"3988":{"position":[[12,3]]},"3990":{"position":[[11,4]]}}}],["keychain",{"_index":385,"t":{"801":{"position":[[0,8]]}}}],["keyr",{"_index":363,"t":{"770":{"position":[[3,7]]},"774":{"position":[[0,7]]},"778":{"position":[[7,7]]},"782":{"position":[[4,7]]},"788":{"position":[[7,7]]},"790":{"position":[[9,7]]},"2624":{"position":[[4,7]]}}}],["keyring_statu",{"_index":366,"t":{"774":{"position":[[0,14]]}}}],["kill",{"_index":933,"t":{"2430":{"position":[[6,5]]}}}],["know",{"_index":591,"t":{"1227":{"position":[[9,4]]},"1345":{"position":[[9,4]]},"2478":{"position":[[11,4]]}}}],["knowledg",{"_index":6,"t":{"10":{"position":[[0,9]]},"24":{"position":[[0,9]]},"44":{"position":[[0,9]]},"60":{"position":[[0,9]]},"79":{"position":[[0,9]]},"117":{"position":[[0,9]]},"194":{"position":[[0,9]]},"267":{"position":[[0,9]]},"283":{"position":[[0,9]]},"299":{"position":[[0,9]]},"315":{"position":[[0,9]]},"456":{"position":[[0,9]]},"507":{"position":[[0,9]]},"1042":{"position":[[0,9]]},"1054":{"position":[[0,9]]},"3003":{"position":[[0,9]]},"3017":{"position":[[0,9]]},"3114":{"position":[[0,9]]},"3336":{"position":[[0,9]]}}}],["kv",{"_index":415,"t":{"845":{"position":[[4,2]]},"3801":{"position":[[4,2]]}}}],["label",{"_index":400,"t":{"824":{"position":[[4,5]]},"826":{"position":[[7,5]]}}}],["languag",{"_index":838,"t":{"1906":{"position":[[0,8]]},"2956":{"position":[[17,8]]}}}],["larger",{"_index":589,"t":{"1223":{"position":[[35,6]]},"2369":{"position":[[6,6]]}}}],["latest",{"_index":628,"t":{"1296":{"position":[[62,6]]},"4130":{"position":[[3,6]]}}}],["launch",{"_index":273,"t":{"608":{"position":[[0,6]]},"1166":{"position":[[14,6]]},"2106":{"position":[[0,6]]}}}],["launch_singleton",{"_index":272,"t":{"608":{"position":[[0,16]]}}}],["law",{"_index":1146,"t":{"3325":{"position":[[14,3]]}}}],["layer",{"_index":824,"t":{"1831":{"position":[[10,5]]},"1833":{"position":[[14,5]]},"2102":{"position":[[21,5]]},"2104":{"position":[[25,5]]}}}],["learn",{"_index":0,"t":{"3":{"position":[[0,8]]},"17":{"position":[[0,8]]},"37":{"position":[[0,8]]},"53":{"position":[[0,8]]},"71":{"position":[[0,8]]},"110":{"position":[[0,8]]},"187":{"position":[[0,8]]},"260":{"position":[[0,8]]},"276":{"position":[[0,8]]},"292":{"position":[[0,8]]},"308":{"position":[[0,8]]},"449":{"position":[[0,8]]},"500":{"position":[[0,8]]},"906":{"position":[[0,5]]},"1035":{"position":[[0,8]]},"1049":{"position":[[0,8]]},"1176":{"position":[[12,5]]},"1180":{"position":[[12,5]]},"2996":{"position":[[0,8]]},"3010":{"position":[[0,8]]},"3107":{"position":[[0,8]]},"3329":{"position":[[0,8]]}}}],["length",{"_index":863,"t":{"2012":{"position":[[30,7]]}}}],["lesson",{"_index":13,"t":{"69":{"position":[[0,6]]}}}],["level",{"_index":88,"t":{"210":{"position":[[15,5]]},"604":{"position":[[18,5]]},"654":{"position":[[18,5]]},"1455":{"position":[[24,5]]},"1795":{"position":[[11,5]]},"1841":{"position":[[5,5]]},"1843":{"position":[[43,5]]},"2126":{"position":[[5,5]]},"2363":{"position":[[24,5]]},"2476":{"position":[[23,5]]},"2732":{"position":[[12,6]]},"2803":{"position":[[23,5]]},"3860":{"position":[[11,5]]},"3862":{"position":[[15,5]]}}}],["liabil",{"_index":1139,"t":{"3319":{"position":[[18,9]]}}}],["licens",{"_index":886,"t":{"2244":{"position":[[4,7]]}}}],["light",{"_index":601,"t":{"1246":{"position":[[9,5]]},"1296":{"position":[[18,5]]}}}],["limit",{"_index":683,"t":{"1366":{"position":[[13,10]]},"1382":{"position":[[42,5]]},"1384":{"position":[[11,5]]},"1386":{"position":[[11,5]]},"1422":{"position":[[5,11]]},"3319":{"position":[[4,10]]}}}],["line",{"_index":978,"t":{"2628":{"position":[[8,4]]},"2924":{"position":[[8,4]]}}}],["link",{"_index":10,"t":{"13":{"position":[[0,5]]},"27":{"position":[[0,5]]},"47":{"position":[[0,5]]},"63":{"position":[[0,5]]},"120":{"position":[[0,5]]},"197":{"position":[[0,5]]},"272":{"position":[[0,5]]},"288":{"position":[[0,5]]},"304":{"position":[[0,5]]},"320":{"position":[[0,5]]},"459":{"position":[[0,5]]},"510":{"position":[[0,5]]},"969":{"position":[[15,4]]},"1045":{"position":[[0,5]]},"1057":{"position":[[0,5]]},"1380":{"position":[[14,5]]},"1382":{"position":[[60,5]]},"1386":{"position":[[34,5]]},"1388":{"position":[[12,5]]},"1390":{"position":[[13,5]]},"3006":{"position":[[0,5]]},"3020":{"position":[[0,5]]},"3117":{"position":[[0,5]]},"3339":{"position":[[0,5]]}}}],["linux",{"_index":1128,"t":{"3283":{"position":[[21,5]]},"3369":{"position":[[0,5]]},"3874":{"position":[[7,5]]}}}],["list",{"_index":336,"t":{"705":{"position":[[0,4]]},"939":{"position":[[17,4]]},"1314":{"position":[[19,4]]},"2049":{"position":[[0,4]]},"2832":{"position":[[0,4]]},"2941":{"position":[[19,4]]},"3586":{"position":[[7,4]]},"3670":{"position":[[0,4]]},"4094":{"position":[[8,4]]}}}],["list_propos",{"_index":335,"t":{"705":{"position":[[0,14]]}}}],["live",{"_index":208,"t":{"486":{"position":[[0,8]]},"1378":{"position":[[18,4]]}}}],["load",{"_index":845,"t":{"1924":{"position":[[0,7]]}}}],["loan",{"_index":198,"t":{"439":{"position":[[7,4]]}}}],["local",{"_index":880,"t":{"2192":{"position":[[23,7]]},"3247":{"position":[[9,5]]},"3803":{"position":[[4,5]]}}}],["locat",{"_index":139,"t":{"328":{"position":[[0,6]]},"1248":{"position":[[38,7]]},"1306":{"position":[[63,7]]},"3406":{"position":[[0,8]]},"3410":{"position":[[0,8]]},"3856":{"position":[[9,8]]}}}],["lock",{"_index":298,"t":{"645":{"position":[[18,4]]},"731":{"position":[[0,4]]},"770":{"position":[[11,6]]},"1333":{"position":[[71,6]]},"1841":{"position":[[0,4]]},"1843":{"position":[[38,4]]},"2126":{"position":[[0,4]]}}}],["lockup",{"_index":311,"t":{"660":{"position":[[9,6]]},"676":{"position":[[12,6]]},"701":{"position":[[5,6]]},"707":{"position":[[0,6]]}}}],["lockup_coin",{"_index":337,"t":{"707":{"position":[[0,12]]}}}],["log",{"_index":87,"t":{"210":{"position":[[11,3]]},"365":{"position":[[9,4]]},"875":{"position":[[7,3]]},"1005":{"position":[[32,3]]},"1326":{"position":[[49,3]]},"1453":{"position":[[25,3]]},"1455":{"position":[[20,3]]},"1457":{"position":[[28,3]]},"3373":{"position":[[0,4]]},"3444":{"position":[[18,4]]},"3446":{"position":[[22,4]]},"3447":{"position":[[5,4]]},"3449":{"position":[[5,4]]},"3843":{"position":[[7,3]]},"3856":{"position":[[0,3]]},"3858":{"position":[[0,3]]},"3860":{"position":[[0,3]]},"3862":{"position":[[11,3]]},"3866":{"position":[[0,3]]},"3868":{"position":[[0,3]]},"3870":{"position":[[13,3]]},"3872":{"position":[[0,3]]},"3874":{"position":[[20,4]]},"3876":{"position":[[15,4]]},"3986":{"position":[[4,6]]},"3992":{"position":[[0,3]]}}}],["log_in",{"_index":1373,"t":{"3992":{"position":[[0,6]]}}}],["login",{"_index":486,"t":{"969":{"position":[[9,5]]},"3052":{"position":[[5,5]]},"3613":{"position":[[5,5]]}}}],["longer",{"_index":696,"t":{"1392":{"position":[[29,6]]}}}],["look",{"_index":632,"t":{"1298":{"position":[[61,4]]}}}],["lost",{"_index":437,"t":{"882":{"position":[[5,4]]},"925":{"position":[[9,4]]},"1300":{"position":[[2,4]]}}}],["m",{"_index":606,"t":{"1261":{"position":[[19,1]]},"1298":{"position":[[110,1]]},"1339":{"position":[[2,1]]},"1345":{"position":[[19,1]]},"3355":{"position":[[10,1]]}}}],["mac",{"_index":142,"t":{"329":{"position":[[0,3]]},"3874":{"position":[[16,3]]}}}],["machin",{"_index":505,"t":{"1013":{"position":[[32,8]]},"1211":{"position":[[24,7],[55,7]]},"1347":{"position":[[63,8]]},"2410":{"position":[[4,7]]}}}],["maco",{"_index":1158,"t":{"3369":{"position":[[8,5]]}}}],["madmax",{"_index":1017,"t":{"2741":{"position":[[0,6]]},"2855":{"position":[[0,6]]}}}],["main",{"_index":1305,"t":{"3764":{"position":[[12,4]]}}}],["mainnet",{"_index":508,"t":{"1027":{"position":[[7,7]]},"1031":{"position":[[17,7]]},"1166":{"position":[[21,7]]},"1273":{"position":[[69,7]]},"1501":{"position":[[14,7]]},"2057":{"position":[[0,7]]},"2250":{"position":[[0,7]]},"2464":{"position":[[46,7]]},"2978":{"position":[[47,7]]},"2984":{"position":[[35,7]]},"3239":{"position":[[13,7]]},"3241":{"position":[[7,7]]},"3245":{"position":[[13,7]]}}}],["major",{"_index":217,"t":{"513":{"position":[[0,8]]},"3196":{"position":[[26,8]]},"3198":{"position":[[30,8]]},"3200":{"position":[[30,8]]},"3202":{"position":[[33,8]]}}}],["make",{"_index":254,"t":{"576":{"position":[[0,6]]},"1211":{"position":[[6,4]]},"1304":{"position":[[10,4]]},"1333":{"position":[[10,6]]},"1358":{"position":[[10,4]]},"2570":{"position":[[0,4]]},"2887":{"position":[[0,6]]},"3825":{"position":[[0,4]]}}}],["make_off",{"_index":967,"t":{"2570":{"position":[[0,10]]},"3825":{"position":[[0,10]]}}}],["maker",{"_index":876,"t":{"2184":{"position":[[0,5]]},"2192":{"position":[[0,5]]}}}],["manag",{"_index":884,"t":{"2224":{"position":[[0,6]]},"2901":{"position":[[8,6]]},"3858":{"position":[[9,10]]},"3975":{"position":[[4,10]]},"4013":{"position":[[7,10]]}}}],["mani",{"_index":219,"t":{"515":{"position":[[10,4]]},"1013":{"position":[[27,4]]},"1288":{"position":[[4,4]]},"1333":{"position":[[17,4]]},"1382":{"position":[[55,4]]},"2482":{"position":[[4,4]]},"2982":{"position":[[21,4]]},"3353":{"position":[[4,4]]}}}],["manual",{"_index":927,"t":{"2406":{"position":[[0,6]]}}}],["marmot",{"_index":710,"t":{"1412":{"position":[[29,6]]}}}],["match",{"_index":951,"t":{"2513":{"position":[[4,8]]},"2515":{"position":[[0,8]]},"2517":{"position":[[3,8]]},"2519":{"position":[[0,8]]},"2541":{"position":[[4,8]]}}}],["materi",{"_index":536,"t":{"1144":{"position":[[81,9]]}}}],["math",{"_index":1125,"t":{"3281":{"position":[[0,4]]}}}],["matter",{"_index":608,"t":{"1263":{"position":[[8,6]]}}}],["max",{"_index":1101,"t":{"3166":{"position":[[0,3]]}}}],["maximum",{"_index":205,"t":{"469":{"position":[[0,7]]},"477":{"position":[[0,7]]},"479":{"position":[[0,7]]},"2012":{"position":[[8,7]]}}}],["mean",{"_index":690,"t":{"1376":{"position":[[13,4]]},"2986":{"position":[[10,4]]}}}],["measur",{"_index":124,"t":{"238":{"position":[[0,8]]},"240":{"position":[[0,11]]}}}],["melt",{"_index":746,"t":{"1499":{"position":[[0,7]]}}}],["memo",{"_index":1394,"t":{"4049":{"position":[[16,4]]}}}],["memori",{"_index":577,"t":{"1215":{"position":[[59,6]]},"2550":{"position":[[0,6]]}}}],["mempool",{"_index":659,"t":{"1324":{"position":[[6,7]]},"2385":{"position":[[12,7]]},"2387":{"position":[[12,7]]},"2389":{"position":[[12,7]]},"2391":{"position":[[12,7]]},"2397":{"position":[[13,7]]},"2708":{"position":[[8,7]]},"3917":{"position":[[8,7]]},"3919":{"position":[[8,7]]},"3953":{"position":[[4,7]]},"3955":{"position":[[4,7]]}}}],["messag",{"_index":442,"t":{"888":{"position":[[0,7]]},"892":{"position":[[5,7]]},"943":{"position":[[4,7]]},"1434":{"position":[[28,7]]},"1777":{"position":[[12,7]]},"1779":{"position":[[5,7]]},"1989":{"position":[[10,7]]},"1993":{"position":[[12,7]]},"1995":{"position":[[5,7]]},"2277":{"position":[[15,7]]},"2279":{"position":[[13,7]]},"2283":{"position":[[8,7]]},"2285":{"position":[[7,8]]},"2830":{"position":[[5,7]]},"3524":{"position":[[9,8]]},"3700":{"position":[[5,7]]},"3866":{"position":[[4,7]]},"3868":{"position":[[4,8]]},"3870":{"position":[[17,8]]},"4063":{"position":[[5,7]]},"4065":{"position":[[5,7]]}}}],["message_spend",{"_index":441,"t":{"888":{"position":[[0,13]]}}}],["metadata",{"_index":447,"t":{"896":{"position":[[7,8]]},"935":{"position":[[8,8]]},"951":{"position":[[11,8]]},"1384":{"position":[[47,8]]},"2086":{"position":[[4,8]]},"2242":{"position":[[4,8]]}}}],["metamask",{"_index":72,"t":{"169":{"position":[[7,8]]}}}],["method",{"_index":1071,"t":{"2988":{"position":[[59,7]]},"2990":{"position":[[17,7]]}}}],["metric",{"_index":1347,"t":{"3927":{"position":[[16,7]]}}}],["microphon",{"_index":739,"t":{"1467":{"position":[[5,10]]}}}],["migrat",{"_index":977,"t":{"2626":{"position":[[0,9]]}}}],["mine",{"_index":561,"t":{"1178":{"position":[[31,6]]},"3087":{"position":[[12,6]]}}}],["minimum",{"_index":203,"t":{"465":{"position":[[0,7]]},"467":{"position":[[0,7]]},"1437":{"position":[[13,7]]},"2615":{"position":[[0,7]]}}}],["mint",{"_index":332,"t":{"695":{"position":[[0,4]]},"739":{"position":[[0,4]]},"1372":{"position":[[9,4]]},"1374":{"position":[[6,4]]},"1382":{"position":[[23,6]]},"1394":{"position":[[24,7]]},"1396":{"position":[[37,4]]},"1664":{"position":[[0,4]]},"1700":{"position":[[0,4]]},"2032":{"position":[[17,7]]},"2034":{"position":[[31,7]]},"2036":{"position":[[13,7]]},"2047":{"position":[[0,4]]},"2234":{"position":[[0,4]]},"2594":{"position":[[0,4]]},"2606":{"position":[[0,4]]},"2826":{"position":[[0,4]]},"3510":{"position":[[0,4]]},"3590":{"position":[[3,4]]},"3897":{"position":[[4,4]]},"3899":{"position":[[4,4]]}}}],["mintnft",{"_index":1294,"t":{"3741":{"position":[[5,7]]}}}],["mirror",{"_index":403,"t":{"831":{"position":[[4,6]]},"839":{"position":[[7,6]]},"847":{"position":[[4,7]]},"2024":{"position":[[9,6]]},"3777":{"position":[[4,6]]},"3793":{"position":[[7,6]]},"3805":{"position":[[4,7]]},"4124":{"position":[[10,6]]},"4126":{"position":[[7,7]]},"4132":{"position":[[7,6]]}}}],["miscellan",{"_index":723,"t":{"1436":{"position":[[8,13]]}}}],["miss",{"_index":405,"t":{"833":{"position":[[4,7]]},"965":{"position":[[25,7]]},"1269":{"position":[[26,7]]},"1678":{"position":[[16,7]]},"1959":{"position":[[4,7]]},"3779":{"position":[[4,7]]}}}],["mistak",{"_index":831,"t":{"1875":{"position":[[7,8]]}}}],["mnemon",{"_index":653,"t":{"1318":{"position":[[23,8]]},"1918":{"position":[[0,8]]},"3984":{"position":[[9,8]]}}}],["mode",{"_index":587,"t":{"1219":{"position":[[75,4]]},"1242":{"position":[[38,4],[55,4]]}}}],["model",{"_index":172,"t":{"395":{"position":[[8,5],[26,5]]},"397":{"position":[[24,5]]},"399":{"position":[[25,5]]},"403":{"position":[[19,5]]},"405":{"position":[[16,5]]},"407":{"position":[[26,5]]},"412":{"position":[[27,5]]},"1284":{"position":[[17,5]]},"2356":{"position":[[9,5]]}}}],["modern",{"_index":940,"t":{"2470":{"position":[[7,6]]}}}],["modifi",{"_index":695,"t":{"1390":{"position":[[6,6]]}}}],["mojo",{"_index":529,"t":{"1138":{"position":[[23,5]]},"1140":{"position":[[15,4]]},"1312":{"position":[[59,5]]}}}],["monetari",{"_index":177,"t":{"408":{"position":[[0,8]]},"1469":{"position":[[32,8]]}}}],["money",{"_index":878,"t":{"2184":{"position":[[26,5]]},"2186":{"position":[[26,5]]}}}],["monitor",{"_index":1126,"t":{"3283":{"position":[[0,7]]}}}],["more",{"_index":540,"t":{"1146":{"position":[[27,4]]},"1176":{"position":[[18,4]]},"1180":{"position":[[18,4]]},"1209":{"position":[[11,4]]},"1234":{"position":[[21,4]]},"1236":{"position":[[52,4]]},"1312":{"position":[[40,4]]},"1331":{"position":[[67,4]]},"1404":{"position":[[10,4]]},"1455":{"position":[[38,4]]},"1752":{"position":[[0,4]]},"2951":{"position":[[7,4]]},"2978":{"position":[[19,4]]},"3435":{"position":[[32,4]]}}}],["motiv",{"_index":976,"t":{"2622":{"position":[[0,10]]}}}],["move",{"_index":570,"t":{"1211":{"position":[[36,4]]},"1252":{"position":[[9,4]]}}}],["much",{"_index":697,"t":{"1394":{"position":[[4,4]]},"2486":{"position":[[4,4]]}}}],["multi",{"_index":764,"t":{"1567":{"position":[[16,5]]},"3259":{"position":[[4,5]]},"4061":{"position":[[17,5]]}}}],["multipl",{"_index":702,"t":{"1402":{"position":[[52,8]]},"1495":{"position":[[11,8]]},"2174":{"position":[[9,8]]},"2176":{"position":[[9,8]]},"2906":{"position":[[0,8]]},"2908":{"position":[[0,8]]},"2910":{"position":[[0,8]]},"3077":{"position":[[27,8]]},"4142":{"position":[[10,8]]}}}],["na",{"_index":1083,"t":{"3075":{"position":[[0,3]]}}}],["nakamoto",{"_index":209,"t":{"488":{"position":[[14,8]]}}}],["name",{"_index":444,"t":{"890":{"position":[[4,4]]},"941":{"position":[[15,4]]},"947":{"position":[[15,4]]},"1150":{"position":[[12,5]]},"1314":{"position":[[31,5]]},"2947":{"position":[[6,4]]},"2962":{"position":[[9,5]]},"3941":{"position":[[20,5]]},"3949":{"position":[[19,4]]},"3955":{"position":[[26,4]]},"4031":{"position":[[20,5]]},"4078":{"position":[[16,4]]},"4082":{"position":[[8,4]]},"4084":{"position":[[8,4]]}}}],["nat",{"_index":95,"t":{"216":{"position":[[13,3]]},"3463":{"position":[[27,3]]}}}],["need",{"_index":465,"t":{"933":{"position":[[20,6]]},"1288":{"position":[[28,4]]},"1370":{"position":[[5,4]]},"1416":{"position":[[5,4]]},"1843":{"position":[[58,6]]},"2769":{"position":[[46,4]]},"2929":{"position":[[7,4]]},"2970":{"position":[[18,4]]},"2990":{"position":[[39,5]]}}}],["neg",{"_index":624,"t":{"1292":{"position":[[16,8]]}}}],["net",{"_index":737,"t":{"1461":{"position":[[36,3]]}}}],["netspac",{"_index":1053,"t":{"2949":{"position":[[22,8]]}}}],["network",{"_index":100,"t":{"216":{"position":[[79,7]]},"1174":{"position":[[17,7]]},"1194":{"position":[[26,7]]},"1234":{"position":[[50,7]]},"1785":{"position":[[4,7]]},"2300":{"position":[[25,7]]},"2949":{"position":[[55,7]]},"3120":{"position":[[5,7]]},"3957":{"position":[[4,7]]},"3959":{"position":[[4,7]]},"3999":{"position":[[4,7]]}}}],["never",{"_index":1058,"t":{"2960":{"position":[[23,5]]}}}],["new",{"_index":343,"t":{"739":{"position":[[5,3]]},"919":{"position":[[7,3]]},"1101":{"position":[[6,3]]},"1240":{"position":[[12,3]]},"1302":{"position":[[10,3]]},"1370":{"position":[[12,3]]},"1380":{"position":[[10,3]]},"1642":{"position":[[28,3]]},"1644":{"position":[[38,3]]},"2220":{"position":[[7,3]]},"2246":{"position":[[9,3]]},"2324":{"position":[[0,3]]},"2326":{"position":[[0,3]]},"2365":{"position":[[0,3]]},"2408":{"position":[[0,3]]},"2410":{"position":[[0,3]]},"2464":{"position":[[33,3]]},"2476":{"position":[[36,3]]},"2478":{"position":[[60,3]]},"2480":{"position":[[44,3]]},"2513":{"position":[[0,3]]},"2521":{"position":[[0,3]]},"2541":{"position":[[0,3]]},"2563":{"position":[[0,3]]},"2624":{"position":[[0,3]]},"2670":{"position":[[0,3]]},"2672":{"position":[[0,3]]},"2694":{"position":[[0,3]]},"2700":{"position":[[0,3]]},"2710":{"position":[[0,3]]},"2776":{"position":[[0,3]]},"3535":{"position":[[0,3]]},"4014":{"position":[[7,3]]},"4122":{"position":[[7,3]]},"4132":{"position":[[3,3]]},"4140":{"position":[[9,3]]}}}],["new_compact_vdf",{"_index":1008,"t":{"2710":{"position":[[0,15]]}}}],["new_peak",{"_index":987,"t":{"2670":{"position":[[0,8]]}}}],["new_peak_wallet",{"_index":1185,"t":{"3535":{"position":[[0,15]]}}}],["new_proof_of_spac",{"_index":905,"t":{"2326":{"position":[[0,18]]}}}],["new_signage_point_harvest",{"_index":904,"t":{"2324":{"position":[[0,27]]}}}],["new_signage_point_or_end_of_sub_slot",{"_index":1002,"t":{"2700":{"position":[[0,36]]}}}],["new_transact",{"_index":989,"t":{"2672":{"position":[[0,15]]}}}],["new_unfinished_block",{"_index":998,"t":{"2694":{"position":[[0,20]]}}}],["newslett",{"_index":531,"t":{"1142":{"position":[[36,10]]}}}],["next",{"_index":516,"t":{"1087":{"position":[[0,4]]},"1940":{"position":[[5,4]]},"2269":{"position":[[7,4]]},"4037":{"position":[[4,4]]}}}],["nft",{"_index":155,"t":{"361":{"position":[[0,3]]},"1109":{"position":[[0,3]]},"1111":{"position":[[0,3]]},"1194":{"position":[[47,4]]},"1353":{"position":[[0,4]]},"1354":{"position":[[9,4]]},"1356":{"position":[[13,4]]},"1358":{"position":[[18,3]]},"1360":{"position":[[18,3]]},"1362":{"position":[[14,3]]},"1364":{"position":[[17,4]]},"1370":{"position":[[51,4]]},"1372":{"position":[[17,3]]},"1374":{"position":[[14,3]]},"1376":{"position":[[37,3]]},"1378":{"position":[[14,3]]},"1382":{"position":[[10,3]]},"1392":{"position":[[8,3]]},"1394":{"position":[[43,3]]},"1396":{"position":[[33,3]]},"1400":{"position":[[43,3],[59,3]]},"1406":{"position":[[40,3]]},"1416":{"position":[[44,3]]},"1418":{"position":[[53,4]]},"1420":{"position":[[49,4]]},"1422":{"position":[[40,4]]},"1426":{"position":[[42,3]]},"1428":{"position":[[27,4]]},"1432":{"position":[[71,3]]},"1434":{"position":[[44,3]]},"1696":{"position":[[21,4]]},"1700":{"position":[[8,3]]},"1702":{"position":[[12,4]]},"1704":{"position":[[10,3]]},"2045":{"position":[[10,3]]},"2047":{"position":[[8,3]]},"2049":{"position":[[10,4]]},"2051":{"position":[[18,4]]},"2053":{"position":[[19,3]]},"2055":{"position":[[14,4]]},"2084":{"position":[[26,4]]},"2086":{"position":[[0,3]]},"2232":{"position":[[10,3]]},"2234":{"position":[[8,3]]},"2236":{"position":[[20,4]]},"2238":{"position":[[18,4]]},"2248":{"position":[[14,4]]},"2897":{"position":[[20,3]]},"2901":{"position":[[25,3]]},"2906":{"position":[[14,4]]},"2927":{"position":[[15,3]]},"2929":{"position":[[37,3]]},"3474":{"position":[[0,4]]},"3881":{"position":[[0,3]]},"3883":{"position":[[0,3]]},"3885":{"position":[[0,3],[10,4]]},"3887":{"position":[[0,3]]},"3889":{"position":[[0,3]]},"3891":{"position":[[0,3],[8,4]]},"3893":{"position":[[0,3]]},"3895":{"position":[[0,3]]},"3897":{"position":[[0,3]]},"3899":{"position":[[0,3],[9,3]]},"3901":{"position":[[0,3]]},"3903":{"position":[[0,3],[8,3]]},"3905":{"position":[[0,3],[8,3]]},"3907":{"position":[[0,3]]},"3909":{"position":[[0,3],[13,3]]},"4109":{"position":[[0,3]]}}}],["nft_add_uri",{"_index":1323,"t":{"3881":{"position":[[0,11]]}}}],["nft_calculate_royalti",{"_index":1324,"t":{"3883":{"position":[[0,23]]}}}],["nft_count_nft",{"_index":1325,"t":{"3885":{"position":[[0,14]]}}}],["nft_get_by_did",{"_index":1326,"t":{"3887":{"position":[[0,14]]}}}],["nft_get_info",{"_index":1327,"t":{"3889":{"position":[[0,12]]}}}],["nft_get_nft",{"_index":1328,"t":{"3891":{"position":[[0,12]]}}}],["nft_get_wallet_did",{"_index":1330,"t":{"3895":{"position":[[0,18]]}}}],["nft_get_wallets_with_did",{"_index":1329,"t":{"3893":{"position":[[0,25]]}}}],["nft_mint_bulk",{"_index":1331,"t":{"3897":{"position":[[0,13]]}}}],["nft_mint_nft",{"_index":1332,"t":{"3899":{"position":[[0,12]]}}}],["nft_set_did_bulk",{"_index":1333,"t":{"3901":{"position":[[0,16]]}}}],["nft_set_nft_did",{"_index":1334,"t":{"3903":{"position":[[0,15]]}}}],["nft_set_nft_statu",{"_index":1335,"t":{"3905":{"position":[[0,18]]}}}],["nft_transfer_bulk",{"_index":1336,"t":{"3907":{"position":[[0,17]]}}}],["nft_transfer_nft",{"_index":1337,"t":{"3909":{"position":[[0,16]]}}}],["nftinfo",{"_index":1301,"t":{"3750":{"position":[[0,7]]}}}],["node",{"_index":515,"t":{"1079":{"position":[[10,4]]},"1130":{"position":[[35,5]]},"1231":{"position":[[5,4]]},"1234":{"position":[[35,4]]},"1236":{"position":[[12,4]]},"1238":{"position":[[42,4]]},"1256":{"position":[[35,4]]},"1298":{"position":[[78,4]]},"1910":{"position":[[5,4]]},"2216":{"position":[[5,4]]},"2893":{"position":[[23,4]]},"3224":{"position":[[13,5]]},"3235":{"position":[[11,4]]},"3384":{"position":[[5,4]]},"3459":{"position":[[23,5]]},"3852":{"position":[[5,4]]},"3864":{"position":[[0,4]]},"3868":{"position":[[24,4]]},"3994":{"position":[[7,4]]},"4155":{"position":[[5,4]]}}}],["non",{"_index":57,"t":{"152":{"position":[[0,3]]},"1833":{"position":[[0,3]]},"2104":{"position":[[11,3]]},"3099":{"position":[[8,3]]}}}],["normal",{"_index":46,"t":{"136":{"position":[[13,6]]},"140":{"position":[[0,6]]},"1005":{"position":[[8,6]]},"1843":{"position":[[9,6]]},"3870":{"position":[[6,6]]}}}],["notat",{"_index":889,"t":{"2295":{"position":[[6,8]]},"3482":{"position":[[29,8]]},"3487":{"position":[[6,8]]}}}],["note",{"_index":862,"t":{"2012":{"position":[[0,4]]},"2096":{"position":[[8,5]]},"2164":{"position":[[0,4]]},"2635":{"position":[[11,5]]},"4107":{"position":[[0,4]]}}}],["note2",{"_index":1412,"t":{"4110":{"position":[[0,5]]}}}],["notif",{"_index":522,"t":{"1113":{"position":[[6,13]]},"1430":{"position":[[49,13]]},"1432":{"position":[[39,12]]},"3688":{"position":[[0,13]]},"4023":{"position":[[7,13]]},"4039":{"position":[[4,13]]},"4057":{"position":[[5,12]]}}}],["notifi",{"_index":1156,"t":{"3359":{"position":[[15,8]]}}}],["nschia",{"_index":1089,"t":{"3095":{"position":[[52,6]]}}}],["nsfw",{"_index":720,"t":{"1428":{"position":[[22,4]]}}}],["number",{"_index":693,"t":{"1386":{"position":[[24,6]]}}}],["nvme",{"_index":595,"t":{"1229":{"position":[[41,4]]},"2767":{"position":[[41,4]]},"3284":{"position":[[0,4]]}}}],["object",{"_index":1,"t":{"3":{"position":[[9,10]]},"17":{"position":[[9,10]]},"37":{"position":[[9,10]]},"53":{"position":[[9,10]]},"71":{"position":[[9,10]]},"110":{"position":[[9,10]]},"187":{"position":[[9,10]]},"260":{"position":[[9,10]]},"276":{"position":[[9,10]]},"292":{"position":[[9,10]]},"308":{"position":[[9,10]]},"425":{"position":[[12,7]]},"449":{"position":[[9,10]]},"500":{"position":[[9,10]]},"1035":{"position":[[9,10]]},"1049":{"position":[[9,10]]},"2996":{"position":[[9,10]]},"3010":{"position":[[9,10]]},"3107":{"position":[[9,10]]},"3329":{"position":[[9,10]]}}}],["observ",{"_index":58,"t":{"152":{"position":[[4,8],[16,8]]}}}],["obtain",{"_index":511,"t":{"1063":{"position":[[0,6]]},"2078":{"position":[[0,6]]},"2110":{"position":[[0,6]]},"2373":{"position":[[0,9]]},"3596":{"position":[[0,6]]}}}],["occur",{"_index":136,"t":{"250":{"position":[[27,6]]}}}],["odditi",{"_index":818,"t":{"1797":{"position":[[10,8]]}}}],["offer",{"_index":519,"t":{"1103":{"position":[[18,5]]},"1105":{"position":[[10,5]]},"1107":{"position":[[10,5]]},"1109":{"position":[[4,6]]},"1113":{"position":[[0,5]]},"1296":{"position":[[81,5]]},"1300":{"position":[[10,5],[41,6],[71,6],[108,6]]},"1328":{"position":[[0,6]]},"1329":{"position":[[14,6]]},"1331":{"position":[[18,5],[104,5]]},"1333":{"position":[[22,6]]},"1335":{"position":[[18,5]]},"1337":{"position":[[15,5]]},"1339":{"position":[[17,5]]},"1341":{"position":[[21,6]]},"1343":{"position":[[20,6]]},"1345":{"position":[[61,5]]},"1347":{"position":[[8,6]]},"1349":{"position":[[159,5]]},"1351":{"position":[[50,5]]},"1358":{"position":[[22,5]]},"1360":{"position":[[22,5]]},"1366":{"position":[[46,5]]},"1402":{"position":[[32,6]]},"1432":{"position":[[33,5]]},"1672":{"position":[[0,5]]},"1674":{"position":[[4,6]]},"1676":{"position":[[4,6]]},"1682":{"position":[[0,6]]},"1692":{"position":[[0,6]]},"1694":{"position":[[11,6]]},"1702":{"position":[[0,6]]},"1704":{"position":[[14,6]]},"2168":{"position":[[22,5]]},"2170":{"position":[[22,5]]},"2172":{"position":[[10,5]]},"2174":{"position":[[24,5]]},"2176":{"position":[[24,5]]},"2178":{"position":[[19,5]]},"2188":{"position":[[29,5]]},"2190":{"position":[[36,5]]},"2192":{"position":[[17,5],[50,5]]},"2196":{"position":[[0,5]]},"2570":{"position":[[5,5]]},"2572":{"position":[[5,5]]},"2574":{"position":[[7,5]]},"2576":{"position":[[4,6]]},"2640":{"position":[[7,5]]},"2642":{"position":[[7,6]]},"2644":{"position":[[6,5]]},"2646":{"position":[[7,5]]},"2648":{"position":[[8,6]]},"2650":{"position":[[4,5]]},"2652":{"position":[[4,6]]},"2654":{"position":[[4,5]]},"2656":{"position":[[5,5]]},"3476":{"position":[[0,6]]},"3783":{"position":[[7,5]]},"3825":{"position":[[5,5]]},"3835":{"position":[[5,5]]},"3839":{"position":[[7,5]]},"4074":{"position":[[7,5]]},"4076":{"position":[[7,6]]},"4088":{"position":[[6,5]]},"4090":{"position":[[7,5]]},"4092":{"position":[[8,6]]},"4096":{"position":[[4,5]]},"4098":{"position":[[4,6]]},"4100":{"position":[[4,5]]},"4104":{"position":[[5,5]]}}}],["offici",{"_index":564,"t":{"1194":{"position":[[12,8]]},"1250":{"position":[[17,8]]},"1437":{"position":[[21,10]]},"1889":{"position":[[18,8]]},"2945":{"position":[[31,8]]},"3228":{"position":[[9,8]]},"3233":{"position":[[13,8]]}}}],["og",{"_index":986,"t":{"2662":{"position":[[0,2]]},"2931":{"position":[[21,2]]}}}],["ok",{"_index":592,"t":{"1227":{"position":[[30,2]]}}}],["old",{"_index":938,"t":{"2466":{"position":[[14,3]]}}}],["on",{"_index":569,"t":{"1209":{"position":[[21,3]]},"1211":{"position":[[20,3]]},"1234":{"position":[[31,3]]},"1349":{"position":[[168,3]]},"1404":{"position":[[20,3]]},"2964":{"position":[[9,3]]}}}],["onc",{"_index":1026,"t":{"2769":{"position":[[0,4]]}}}],["open",{"_index":634,"t":{"1300":{"position":[[36,4],[103,4]]},"1349":{"position":[[154,4]]},"2316":{"position":[[21,6]]},"3850":{"position":[[0,4]]},"4153":{"position":[[0,4]]}}}],["open_connect",{"_index":1320,"t":{"3850":{"position":[[0,15]]},"4153":{"position":[[0,15]]}}}],["oper",{"_index":47,"t":{"136":{"position":[[20,9]]},"140":{"position":[[7,9]]},"2144":{"position":[[29,9]]}}}],["optim",{"_index":965,"t":{"2554":{"position":[[4,9]]}}}],["option",{"_index":674,"t":{"1343":{"position":[[27,6]]},"1426":{"position":[[14,7]]},"2116":{"position":[[1,8]]},"3233":{"position":[[40,8]]},"3237":{"position":[[23,8]]}}}],["order",{"_index":686,"t":{"1370":{"position":[[34,5]]}}}],["org",{"_index":233,"t":{"529":{"position":[[24,3]]}}}],["origin",{"_index":1046,"t":{"2931":{"position":[[25,8]]}}}],["orphan",{"_index":234,"t":{"531":{"position":[[0,9]]},"533":{"position":[[0,6]]}}}],["os",{"_index":724,"t":{"1437":{"position":[[42,2]]},"3439":{"position":[[5,2]]}}}],["out",{"_index":615,"t":{"1275":{"position":[[18,3]]},"2466":{"position":[[46,3]]},"2765":{"position":[[14,3]]}}}],["outgo",{"_index":948,"t":{"2504":{"position":[[13,8]]}}}],["output",{"_index":89,"t":{"210":{"position":[[21,6]]},"3138":{"position":[[0,6]]},"3862":{"position":[[21,6]]}}}],["over",{"_index":617,"t":{"1275":{"position":[[46,4]]},"2949":{"position":[[46,4]]}}}],["overclock",{"_index":1163,"t":{"3435":{"position":[[6,9]]}}}],["overflow",{"_index":973,"t":{"2613":{"position":[[0,8]]}}}],["overview",{"_index":975,"t":{"2620":{"position":[[0,8]]},"3402":{"position":[[5,8]]}}}],["own",{"_index":419,"t":{"849":{"position":[[4,5]]},"3357":{"position":[[4,4]]},"3807":{"position":[[4,5]]},"4134":{"position":[[3,5]]}}}],["owner",{"_index":722,"t":{"1432":{"position":[[59,5]]}}}],["p2",{"_index":276,"t":{"610":{"position":[[0,2]]}}}],["p2_address",{"_index":275,"t":{"610":{"position":[[0,10]]}}}],["packag",{"_index":732,"t":{"1451":{"position":[[26,8]]},"2458":{"position":[[5,8]]}}}],["paid",{"_index":703,"t":{"1406":{"position":[[14,4]]}}}],["panel",{"_index":81,"t":{"203":{"position":[[5,5]]},"205":{"position":[[8,5]]}}}],["paper",{"_index":527,"t":{"1124":{"position":[[26,5]]}}}],["paramet",{"_index":1079,"t":{"3044":{"position":[[0,9]]}}}],["parent",{"_index":775,"t":{"1589":{"position":[[44,6]]},"3943":{"position":[[20,6]]}}}],["pars",{"_index":325,"t":{"674":{"position":[[4,5]]}}}],["part",{"_index":1154,"t":{"3355":{"position":[[12,4]]}}}],["parti",{"_index":1074,"t":{"3026":{"position":[[0,7]]},"3323":{"position":[[20,7]]}}}],["partial",{"_index":1041,"t":{"2873":{"position":[[10,8]]},"2968":{"position":[[46,7]]},"2976":{"position":[[49,8]]},"2982":{"position":[[26,8]]},"3050":{"position":[[6,7]]}}}],["particular",{"_index":1064,"t":{"2976":{"position":[[65,10]]}}}],["pass",{"_index":91,"t":{"212":{"position":[[24,7]]},"1267":{"position":[[47,4]]}}}],["passphras",{"_index":372,"t":{"778":{"position":[[15,10]]},"782":{"position":[[12,10]]},"790":{"position":[[17,10]]},"2629":{"position":[[26,11]]},"2631":{"position":[[0,10]]},"2633":{"position":[[8,11]]}}}],["password",{"_index":830,"t":{"1859":{"position":[[9,8]]},"1879":{"position":[[0,8]]}}}],["pay",{"_index":1044,"t":{"2929":{"position":[[12,3]]}}}],["payment",{"_index":277,"t":{"612":{"position":[[0,7]]},"1148":{"position":[[49,7]]},"2887":{"position":[[7,8]]},"2988":{"position":[[51,7]]}}}],["payout",{"_index":494,"t":{"981":{"position":[[4,6]]},"2903":{"position":[[17,7]]},"2918":{"position":[[0,6]]}}}],["peak",{"_index":988,"t":{"2670":{"position":[[4,4]]},"3535":{"position":[[4,4]]}}}],["peer",{"_index":600,"t":{"1244":{"position":[[17,5]]},"1256":{"position":[[40,5]]},"2510":{"position":[[0,4]]},"2716":{"position":[[8,5]]},"2718":{"position":[[8,5]]},"3235":{"position":[[31,5]]},"3646":{"position":[[0,4]]}}}],["pend",{"_index":409,"t":{"835":{"position":[[6,7]]},"1292":{"position":[[44,7]]},"3787":{"position":[[6,7]]},"3829":{"position":[[7,7]]}}}],["peopl",{"_index":670,"t":{"1337":{"position":[[51,6]]}}}],["per",{"_index":114,"t":{"232":{"position":[[16,3]]},"477":{"position":[[13,3]]}}}],["perform",{"_index":785,"t":{"1634":{"position":[[7,8]]},"3435":{"position":[[37,11]]}}}],["period",{"_index":1132,"t":{"3303":{"position":[[15,6]]}}}],["perman",{"_index":823,"t":{"1831":{"position":[[0,9]]},"1833":{"position":[[4,9]]},"2102":{"position":[[11,9]]},"2104":{"position":[[15,9]]}}}],["permiss",{"_index":848,"t":{"1945":{"position":[[16,11]]}}}],["person",{"_index":542,"t":{"1148":{"position":[[17,6]]},"3317":{"position":[[23,8]]}}}],["pfx",{"_index":735,"t":{"1461":{"position":[[14,3]]}}}],["ph",{"_index":1108,"t":{"3184":{"position":[[12,2]]},"3561":{"position":[[13,2]]},"3563":{"position":[[11,2]]}}}],["phase",{"_index":939,"t":{"2466":{"position":[[39,6]]}}}],["phrase",{"_index":655,"t":{"1318":{"position":[[37,6]]},"1918":{"position":[[9,6]]}}}],["pi",{"_index":730,"t":{"1445":{"position":[[30,2]]},"2437":{"position":[[10,2]]},"2492":{"position":[[10,2]]}}}],["pie19b",{"_index":757,"t":{"1533":{"position":[[11,6]]}}}],["plan",{"_index":666,"t":{"1333":{"position":[[2,4]]},"1463":{"position":[[13,5]]}}}],["plot",{"_index":90,"t":{"212":{"position":[[14,5]]},"341":{"position":[[0,5]]},"793":{"position":[[13,8]]},"797":{"position":[[6,8]]},"799":{"position":[[5,8]]},"961":{"position":[[14,5]]},"963":{"position":[[14,5]]},"965":{"position":[[14,5]]},"967":{"position":[[14,5]]},"987":{"position":[[18,4]]},"1067":{"position":[[0,4]]},"1083":{"position":[[9,4]]},"1200":{"position":[[0,8]]},"1203":{"position":[[12,4]]},"1205":{"position":[[23,4]]},"1207":{"position":[[24,8]]},"1209":{"position":[[6,4],[25,4]]},"1211":{"position":[[11,5]]},"1215":{"position":[[3,8],[32,8]]},"1217":{"position":[[3,8]]},"1219":{"position":[[13,8],[86,8]]},"1221":{"position":[[55,4]]},"1223":{"position":[[26,8]]},"1225":{"position":[[25,7]]},"1227":{"position":[[20,5]]},"1267":{"position":[[12,4],[42,4]]},"1273":{"position":[[50,4]]},"1275":{"position":[[6,5],[85,4]]},"1447":{"position":[[38,5]]},"2332":{"position":[[8,5]]},"2334":{"position":[[8,5]]},"2338":{"position":[[4,4]]},"2340":{"position":[[7,4]]},"2342":{"position":[[4,5]]},"2344":{"position":[[4,4]]},"2348":{"position":[[8,5]]},"2350":{"position":[[7,4]]},"2367":{"position":[[38,5]]},"2369":{"position":[[0,5]]},"2412":{"position":[[9,5]]},"2430":{"position":[[12,5]]},"2464":{"position":[[37,5]]},"2466":{"position":[[18,4]]},"2470":{"position":[[59,4]]},"2472":{"position":[[26,8],[72,4]]},"2480":{"position":[[22,4]]},"2484":{"position":[[40,4]]},"2521":{"position":[[4,4]]},"2523":{"position":[[0,4]]},"2556":{"position":[[15,8]]},"2558":{"position":[[9,4]]},"2662":{"position":[[3,5]]},"2664":{"position":[[7,5]]},"2666":{"position":[[0,4]]},"2724":{"position":[[11,5]]},"2755":{"position":[[0,4]]},"2769":{"position":[[27,4],[41,4]]},"2784":{"position":[[11,8]]},"2789":{"position":[[12,8]]},"2818":{"position":[[4,8]]},"2820":{"position":[[4,8]]},"2897":{"position":[[15,4]]},"2899":{"position":[[12,5]]},"2901":{"position":[[20,4]]},"2906":{"position":[[9,4]]},"2927":{"position":[[10,4]]},"2929":{"position":[[32,4]]},"2931":{"position":[[35,5],[54,5]]},"2933":{"position":[[25,5]]},"2982":{"position":[[63,4]]},"2984":{"position":[[26,5]]},"2986":{"position":[[59,5]]},"3060":{"position":[[0,8]]},"3382":{"position":[[0,8]]}}}],["plotman",{"_index":926,"t":{"2404":{"position":[[0,7]]}}}],["plotnft",{"_index":147,"t":{"339":{"position":[[0,7]]}}}],["plotter",{"_index":146,"t":{"337":{"position":[[0,8]]},"792":{"position":[[0,7]]},"795":{"position":[[4,8]]},"2795":{"position":[[13,8]]},"2844":{"position":[[0,8]]},"2861":{"position":[[11,7]]}}}],["plow",{"_index":925,"t":{"2402":{"position":[[0,4]]}}}],["plugin",{"_index":18,"t":{"83":{"position":[[27,7]]},"270":{"position":[[27,7]]},"286":{"position":[[27,7]]},"302":{"position":[[27,7]]},"318":{"position":[[27,7]]},"863":{"position":[[0,7]]},"1961":{"position":[[0,6]]},"1963":{"position":[[12,6]]},"2318":{"position":[[10,6]]},"3785":{"position":[[6,7]]}}}],["plugin_info",{"_index":856,"t":{"1961":{"position":[[0,11]]}}}],["point",{"_index":492,"t":{"977":{"position":[[12,5]]},"979":{"position":[[12,6]]},"1269":{"position":[[42,6]]},"2324":{"position":[[12,5]]},"2700":{"position":[[12,5]]},"2702":{"position":[[16,5]]},"2704":{"position":[[16,5]]},"2883":{"position":[[0,6]]},"2978":{"position":[[24,6]]},"3056":{"position":[[0,6]]},"3156":{"position":[[34,6]]},"3487":{"position":[[19,6]]},"3963":{"position":[[19,5]]}}}],["pool",{"_index":43,"t":{"130":{"position":[[10,4]]},"969":{"position":[[4,4]]},"971":{"position":[[4,4]]},"998":{"position":[[0,7]]},"1081":{"position":[[7,4]]},"1271":{"position":[[21,4]]},"2358":{"position":[[0,7]]},"2664":{"position":[[0,6]]},"2812":{"position":[[0,4]]},"2871":{"position":[[0,4]]},"2875":{"position":[[11,4]]},"2891":{"position":[[13,7]]},"2912":{"position":[[0,4]]},"2920":{"position":[[5,7]]},"2926":{"position":[[0,7]]},"2929":{"position":[[51,5]]},"2933":{"position":[[36,4]]},"2937":{"position":[[12,7]]},"2939":{"position":[[23,4]]},"2941":{"position":[[32,5]]},"2943":{"position":[[19,4]]},"2945":{"position":[[40,4]]},"2947":{"position":[[14,4]]},"2949":{"position":[[5,4]]},"2954":{"position":[[25,4]]},"2956":{"position":[[43,4]]},"2958":{"position":[[41,4],[57,4]]},"2960":{"position":[[35,4],[70,4],[97,4]]},"2962":{"position":[[23,7]]},"2970":{"position":[[5,4]]},"2974":{"position":[[7,5]]},"2984":{"position":[[18,7]]},"2986":{"position":[[51,7]]},"2988":{"position":[[9,7],[92,5]]},"2990":{"position":[[27,4]]},"2992":{"position":[[48,7]]},"3038":{"position":[[0,4]]},"3040":{"position":[[5,4]]},"4112":{"position":[[0,4]]},"4115":{"position":[[8,4]]},"4117":{"position":[[8,4]]}}}],["pool_info",{"_index":1078,"t":{"3040":{"position":[[5,9]]}}}],["port",{"_index":899,"t":{"2316":{"position":[[16,4]]},"2318":{"position":[[41,4]]},"3142":{"position":[[8,5]]},"3455":{"position":[[0,4]]},"3457":{"position":[[12,4]]}}}],["portabl",{"_index":1047,"t":{"2931":{"position":[[45,8]]},"2933":{"position":[[16,8]]}}}],["pospac",{"_index":753,"t":{"1523":{"position":[[21,7]]},"1525":{"position":[[18,7]]},"1527":{"position":[[13,7]]},"1529":{"position":[[19,7]]},"3200":{"position":[[22,7]]},"3210":{"position":[[32,7]]}}}],["possibl",{"_index":619,"t":{"1277":{"position":[[6,8]]},"2478":{"position":[[42,8]]}}}],["post",{"_index":694,"t":{"1388":{"position":[[18,6]]},"3046":{"position":[[0,4]]},"3050":{"position":[[0,4]]},"3208":{"position":[[31,4]]}}}],["postak",{"_index":1116,"t":{"3198":{"position":[[22,7]]},"3212":{"position":[[32,7]]}}}],["potenti",{"_index":524,"t":{"1117":{"position":[[0,9]]},"2180":{"position":[[0,9]]}}}],["pow",{"_index":210,"t":{"488":{"position":[[23,3]]},"3196":{"position":[[22,3]]},"3206":{"position":[[31,3]]}}}],["power",{"_index":585,"t":{"1219":{"position":[[64,5]]},"2765":{"position":[[3,5]]}}}],["practic",{"_index":504,"t":{"1013":{"position":[[14,9]]},"1979":{"position":[[0,8]]}}}],["pre",{"_index":36,"t":{"124":{"position":[[19,3]]}}}],["precursor",{"_index":526,"t":{"1124":{"position":[[0,9]]}}}],["prefarm",{"_index":257,"t":{"582":{"position":[[0,7]]},"584":{"position":[[0,7]]}}}],["prepar",{"_index":747,"t":{"1501":{"position":[[0,9]]}}}],["prerequisit",{"_index":502,"t":{"1009":{"position":[[0,13]]},"1654":{"position":[[0,13]]},"2202":{"position":[[0,13]]},"2584":{"position":[[0,13]]},"3229":{"position":[[0,13]]}}}],["primit",{"_index":347,"t":{"749":{"position":[[0,10]]},"906":{"position":[[18,10]]},"908":{"position":[[18,10]]},"1624":{"position":[[21,9]]}}}],["privaci",{"_index":182,"t":{"415":{"position":[[0,7]]},"3317":{"position":[[4,7]]},"3520":{"position":[[0,7]]}}}],["privat",{"_index":387,"t":{"802":{"position":[[4,7]]},"810":{"position":[[8,7]]},"812":{"position":[[10,7]]},"1849":{"position":[[0,7]]},"3247":{"position":[[33,7]]},"3988":{"position":[[4,7]]}}}],["prize",{"_index":1135,"t":{"3309":{"position":[[3,6]]}}}],["pro",{"_index":1084,"t":{"3081":{"position":[[0,3]]}}}],["process",{"_index":188,"t":{"427":{"position":[[17,10]]},"3301":{"position":[[13,7]]}}}],["processor",{"_index":1029,"t":{"2782":{"position":[[0,9]]}}}],["profil",{"_index":110,"t":{"230":{"position":[[17,7]]},"1414":{"position":[[16,7]]},"1416":{"position":[[20,7]]}}}],["program",{"_index":180,"t":{"410":{"position":[[8,11]]},"473":{"position":[[10,7]]},"475":{"position":[[10,7]]},"2956":{"position":[[5,11]]}}}],["programm",{"_index":1057,"t":{"2960":{"position":[[7,10]]}}}],["project",{"_index":538,"t":{"1144":{"position":[[109,7]]},"1408":{"position":[[25,7]]},"1463":{"position":[[27,7]]},"1914":{"position":[[15,7]]}}}],["proof",{"_index":93,"t":{"214":{"position":[[13,6]]},"216":{"position":[[65,6]]},"228":{"position":[[0,5]]},"490":{"position":[[14,5]]},"563":{"position":[[7,5]]},"851":{"position":[[4,5]]},"873":{"position":[[7,5]]},"1132":{"position":[[10,5]]},"1134":{"position":[[14,5]]},"1184":{"position":[[8,5]]},"1188":{"position":[[9,5],[28,5]]},"1277":{"position":[[25,5]]},"1522":{"position":[[13,6]]},"1678":{"position":[[5,6]]},"2326":{"position":[[4,5]]},"2354":{"position":[[0,5]]},"2563":{"position":[[4,5]]},"2592":{"position":[[7,6]]},"2596":{"position":[[4,6]]},"2602":{"position":[[7,6]]},"2608":{"position":[[4,6]]},"2678":{"position":[[8,5]]},"2680":{"position":[[8,5]]},"2776":{"position":[[4,5]]},"2968":{"position":[[54,6]]},"3136":{"position":[[27,5]]},"3504":{"position":[[4,5]]},"3508":{"position":[[4,6]]},"3514":{"position":[[7,6]]},"3582":{"position":[[7,6]]},"3588":{"position":[[7,6]]},"3596":{"position":[[7,5]]},"3809":{"position":[[4,5]]},"3841":{"position":[[7,5]]}}}],["proofofspac",{"_index":1093,"t":{"3134":{"position":[[0,12]]}}}],["properti",{"_index":1134,"t":{"3305":{"position":[[16,8]]}}}],["propos",{"_index":295,"t":{"643":{"position":[[0,8]]},"645":{"position":[[5,9]]},"656":{"position":[[10,8]]},"658":{"position":[[11,8]]},"662":{"position":[[29,9]]},"664":{"position":[[8,9]]},"666":{"position":[[8,8]]},"674":{"position":[[10,8]]},"678":{"position":[[12,8]]},"689":{"position":[[6,8]]},"693":{"position":[[7,8]]},"705":{"position":[[5,9]]},"713":{"position":[[5,8]]},"733":{"position":[[15,8]]},"735":{"position":[[10,8]]},"737":{"position":[[8,8]]},"743":{"position":[[7,8]]}}}],["protocol",{"_index":817,"t":{"1795":{"position":[[29,8]]},"2871":{"position":[[5,8]]},"3520":{"position":[[8,8]]},"3522":{"position":[[10,8]]},"3524":{"position":[[0,8]]}}}],["pubkey",{"_index":285,"t":{"624":{"position":[[6,7]]},"937":{"position":[[8,6]]}}}],["public",{"_index":398,"t":{"820":{"position":[[4,6]]},"822":{"position":[[4,6]]},"1847":{"position":[[0,6]]},"2807":{"position":[[0,6]]},"3307":{"position":[[3,9]]},"3990":{"position":[[4,6]]}}}],["pull",{"_index":255,"t":{"576":{"position":[[9,4]]}}}],["push",{"_index":279,"t":{"614":{"position":[[0,4]]},"3971":{"position":[[0,4]]},"4005":{"position":[[0,4]]},"4007":{"position":[[0,4]]}}}],["push_transact",{"_index":1377,"t":{"4005":{"position":[[0,17]]}}}],["push_tx",{"_index":278,"t":{"614":{"position":[[0,7]]},"3971":{"position":[[0,7]]},"4007":{"position":[[0,7]]}}}],["put",{"_index":799,"t":{"1748":{"position":[[0,7]]},"3048":{"position":[[0,3]]}}}],["puzzl",{"_index":166,"t":{"389":{"position":[[0,7]]},"441":{"position":[[0,6]]},"1589":{"position":[[30,6]]},"1591":{"position":[[15,6]]},"1718":{"position":[[19,6]]},"1738":{"position":[[19,6]]},"1759":{"position":[[6,6]]},"1765":{"position":[[4,6]]},"1767":{"position":[[4,6]]},"1863":{"position":[[6,6]]},"1867":{"position":[[0,6]]},"1869":{"position":[[0,6]]},"1885":{"position":[[9,6]]},"1887":{"position":[[35,6]]},"1893":{"position":[[4,6],[23,6]]},"1898":{"position":[[8,6]]},"3180":{"position":[[8,6]]},"3525":{"position":[[8,6]]},"3527":{"position":[[8,6]]},"3529":{"position":[[7,6]]},"3945":{"position":[[20,6]]},"3947":{"position":[[20,6]]},"3961":{"position":[[4,6]]}}}],["pw",{"_index":1414,"t":{"4113":{"position":[[0,2]]},"4115":{"position":[[0,2]]},"4117":{"position":[[0,2]]},"4119":{"position":[[0,2]]}}}],["pw_absorb_reward",{"_index":1413,"t":{"4113":{"position":[[0,17]]}}}],["pw_join_pool",{"_index":1416,"t":{"4115":{"position":[[0,12]]}}}],["pw_self_pool",{"_index":1417,"t":{"4117":{"position":[[0,12]]}}}],["pw_statu",{"_index":1418,"t":{"4119":{"position":[[0,9]]}}}],["python",{"_index":725,"t":{"1439":{"position":[[17,6]]},"3148":{"position":[[0,6]]}}}],["q",{"_index":1072,"t":{"2992":{"position":[[36,1]]}}}],["quadrupl",{"_index":957,"t":{"2527":{"position":[[9,9]]}}}],["qualiti",{"_index":958,"t":{"2527":{"position":[[19,7]]},"3091":{"position":[[10,7]]}}}],["question",{"_index":541,"t":{"1146":{"position":[[32,9]]},"1190":{"position":[[27,9]]},"2951":{"position":[[12,9]]},"3361":{"position":[[28,9]]}}}],["quick",{"_index":840,"t":{"1908":{"position":[[0,5]]}}}],["quickli",{"_index":733,"t":{"1457":{"position":[[9,7]]}}}],["ram",{"_index":1038,"t":{"2847":{"position":[[9,3]]}}}],["ramplot",{"_index":1020,"t":{"2747":{"position":[[0,7]]}}}],["random",{"_index":955,"t":{"2527":{"position":[[0,6]]}}}],["rang",{"_index":224,"t":{"521":{"position":[[6,5]]}}}],["raspberri",{"_index":729,"t":{"1445":{"position":[[20,9]]},"2437":{"position":[[0,9]]},"2492":{"position":[[0,9]]}}}],["rate",{"_index":123,"t":{"236":{"position":[[11,5]]},"244":{"position":[[41,4]]},"533":{"position":[[7,4]]}}}],["ratio",{"_index":1065,"t":{"2980":{"position":[[21,5]]}}}],["rational",{"_index":1097,"t":{"3156":{"position":[[0,9]]}}}],["rbb",{"_index":1115,"t":{"3196":{"position":[[50,3]]}}}],["re",{"_index":232,"t":{"529":{"position":[[21,2]]},"1275":{"position":[[82,2]]}}}],["read",{"_index":118,"t":{"234":{"position":[[16,4]]},"586":{"position":[[8,7]]},"1119":{"position":[[8,7]]},"1473":{"position":[[11,7]]},"2198":{"position":[[8,7]]},"2633":{"position":[[0,7]]}}}],["reboot",{"_index":583,"t":{"1219":{"position":[[46,7]]}}}],["receiv",{"_index":621,"t":{"1282":{"position":[[17,7]]},"1320":{"position":[[43,7]]},"1370":{"position":[[43,7]]},"1430":{"position":[[41,7]]},"1898":{"position":[[25,7]]},"1900":{"position":[[17,7]]},"2110":{"position":[[11,7]]},"2873":{"position":[[0,9]]},"2895":{"position":[[8,7]]},"2976":{"position":[[32,9]]},"2978":{"position":[[9,9]]},"3351":{"position":[[34,9]]}}}],["recent",{"_index":1365,"t":{"3963":{"position":[[4,6]]}}}],["recipi",{"_index":787,"t":{"1636":{"position":[[0,9]]},"1640":{"position":[[23,9]]},"1644":{"position":[[0,9]]},"1646":{"position":[[10,9]]}}}],["recommend",{"_index":568,"t":{"1207":{"position":[[8,11]]},"1273":{"position":[[23,11]]},"2789":{"position":[[0,11]]},"3522":{"position":[[20,11]]}}}],["record",{"_index":261,"t":{"584":{"position":[[25,7]]},"1932":{"position":[[18,6]]},"3929":{"position":[[10,6]]},"3931":{"position":[[10,7]]},"3933":{"position":[[10,6]]},"3939":{"position":[[9,7]]},"3941":{"position":[[9,7]]},"3943":{"position":[[9,7]]},"3945":{"position":[[9,7]]},"3947":{"position":[[9,7]]},"3949":{"position":[[9,6]]},"4029":{"position":[[9,7]]},"4031":{"position":[[9,7]]}}}],["recov",{"_index":1114,"t":{"3196":{"position":[[6,10]]},"3198":{"position":[[6,10]]},"3200":{"position":[[6,10]]},"3202":{"position":[[6,10]]}}}],["recoveri",{"_index":466,"t":{"933":{"position":[[31,8]]},"939":{"position":[[8,8]]},"945":{"position":[[4,8]]},"953":{"position":[[11,8]]},"1412":{"position":[[36,8]]},"1426":{"position":[[5,8]]},"3194":{"position":[[4,8]]}}}],["refer",{"_index":19,"t":{"86":{"position":[[0,9]]},"157":{"position":[[0,9]]},"370":{"position":[[0,9]]},"591":{"position":[[0,9]]},"626":{"position":[[21,9]]},"628":{"position":[[0,9]]},"651":{"position":[[0,9]]},"682":{"position":[[0,9]]},"830":{"position":[[0,9]]},"879":{"position":[[0,9]]},"904":{"position":[[25,9]]},"906":{"position":[[38,9]]},"918":{"position":[[0,9]]},"1306":{"position":[[42,9]]},"1449":{"position":[[45,9]]},"2166":{"position":[[17,9]]},"2305":{"position":[[0,9]]},"2569":{"position":[[0,9]]},"2628":{"position":[[13,9]]},"2639":{"position":[[0,9]]},"2738":{"position":[[0,9]]},"2823":{"position":[[0,9]]},"2954":{"position":[[30,9]]},"2956":{"position":[[33,9]]},"2958":{"position":[[31,9]]},"2960":{"position":[[87,9]]},"3173":{"position":[[0,9]]},"3264":{"position":[[0,9]]},"3503":{"position":[[0,9]]},"3581":{"position":[[0,9]]},"3665":{"position":[[0,9]]},"3776":{"position":[[0,9]]},"3880":{"position":[[0,9]]}}}],["refresh",{"_index":887,"t":{"2267":{"position":[[9,9]]},"2348":{"position":[[0,7]]}}}],["refresh_plot",{"_index":915,"t":{"2348":{"position":[[0,13]]}}}],["regist",{"_index":368,"t":{"776":{"position":[[0,8]]},"3561":{"position":[[0,8]]},"3565":{"position":[[0,8]]}}}],["register_for_coin_upd",{"_index":1200,"t":{"3565":{"position":[[0,25]]}}}],["register_for_ph_upd",{"_index":1198,"t":{"3561":{"position":[[0,23]]}}}],["register_servic",{"_index":367,"t":{"776":{"position":[[0,16]]}}}],["regularli",{"_index":618,"t":{"1275":{"position":[[72,9]]}}}],["reject",{"_index":997,"t":{"2686":{"position":[[0,6]]},"2692":{"position":[[0,6]]},"3529":{"position":[[0,6]]},"3541":{"position":[[0,6]]},"3547":{"position":[[0,6]]},"3553":{"position":[[0,6]]},"3557":{"position":[[0,6]]}}}],["reject_additions_request",{"_index":1194,"t":{"3553":{"position":[[0,24]]}}}],["reject_block",{"_index":996,"t":{"2686":{"position":[[0,12]]},"2692":{"position":[[0,13]]}}}],["reject_header_block",{"_index":1196,"t":{"3557":{"position":[[0,20]]}}}],["reject_header_request",{"_index":1188,"t":{"3541":{"position":[[0,21]]}}}],["reject_puzzle_solut",{"_index":1181,"t":{"3529":{"position":[[0,22]]}}}],["reject_removals_request",{"_index":1191,"t":{"3547":{"position":[[0,23]]}}}],["rekey",{"_index":282,"t":{"618":{"position":[[6,5]]},"1839":{"position":[[0,5]]},"1843":{"position":[[16,5],[28,5]]},"2124":{"position":[[0,5]]}}}],["relationship",{"_index":1143,"t":{"3323":{"position":[[4,12]]}}}],["releas",{"_index":339,"t":{"709":{"position":[[0,7]]},"2455":{"position":[[9,7]]}}}],["release_coin",{"_index":338,"t":{"709":{"position":[[0,13]]}}}],["remot",{"_index":895,"t":{"2311":{"position":[[21,6]]},"2922":{"position":[[0,6]]},"3770":{"position":[[33,6]]}}}],["remov",{"_index":371,"t":{"778":{"position":[[0,6]]},"865":{"position":[[0,6]]},"1969":{"position":[[0,6]]},"2350":{"position":[[0,6]]},"2629":{"position":[[17,8]]},"3222":{"position":[[14,8]]},"3543":{"position":[[8,8]]},"3545":{"position":[[8,8]]},"3547":{"position":[[7,8]]},"3827":{"position":[[0,6]]},"3913":{"position":[[18,8]]}}}],["remove_keyring_passphras",{"_index":370,"t":{"778":{"position":[[0,25]]}}}],["remove_plot_directori",{"_index":916,"t":{"2350":{"position":[[0,21]]}}}],["remove_store_id",{"_index":860,"t":{"1969":{"position":[[0,15]]}}}],["remove_subscript",{"_index":428,"t":{"865":{"position":[[0,19]]},"3827":{"position":[[0,20]]}}}],["rental",{"_index":962,"t":{"2537":{"position":[[10,6]]}}}],["reorg",{"_index":1110,"t":{"3186":{"position":[[0,5]]}}}],["reorg_block",{"_index":1109,"t":{"3186":{"position":[[0,12]]}}}],["replac",{"_index":923,"t":{"2393":{"position":[[0,7]]}}}],["replay",{"_index":195,"t":{"437":{"position":[[0,6]]}}}],["replot",{"_index":225,"t":{"521":{"position":[[12,10]]},"1803":{"position":[[6,10]]},"2468":{"position":[[14,6]]},"2482":{"position":[[30,6]]}}}],["repositori",{"_index":251,"t":{"572":{"position":[[10,10]]}}}],["request",{"_index":115,"t":{"232":{"position":[[20,7]]},"576":{"position":[[14,7]]},"2328":{"position":[[0,7]]},"2332":{"position":[[0,7]]},"2674":{"position":[[0,7]]},"2678":{"position":[[0,7]]},"2682":{"position":[[0,7]]},"2688":{"position":[[0,7]]},"2696":{"position":[[0,7]]},"2702":{"position":[[0,7]]},"2708":{"position":[[0,7]]},"2712":{"position":[[0,7]]},"2716":{"position":[[0,7]]},"3525":{"position":[[0,7]]},"3537":{"position":[[0,7]]},"3541":{"position":[[14,7]]},"3543":{"position":[[0,7]]},"3547":{"position":[[16,7]]},"3549":{"position":[[0,7]]},"3553":{"position":[[17,7]]},"3555":{"position":[[0,7]]},"3571":{"position":[[0,7]]},"3575":{"position":[[0,7]]}}}],["request_addit",{"_index":1192,"t":{"3549":{"position":[[0,17]]}}}],["request_block",{"_index":994,"t":{"2682":{"position":[[0,13]]},"2688":{"position":[[0,14]]}}}],["request_block_head",{"_index":1186,"t":{"3537":{"position":[[0,20]]}}}],["request_children",{"_index":1203,"t":{"3571":{"position":[[0,16]]}}}],["request_compact_vdf",{"_index":1010,"t":{"2712":{"position":[[0,19]]}}}],["request_header_block",{"_index":1195,"t":{"3555":{"position":[[0,21]]}}}],["request_mempool_transact",{"_index":1007,"t":{"2708":{"position":[[0,28]]}}}],["request_p",{"_index":1012,"t":{"2716":{"position":[[0,13]]}}}],["request_plot",{"_index":909,"t":{"2332":{"position":[[0,13]]}}}],["request_proof_of_weight",{"_index":992,"t":{"2678":{"position":[[0,23]]}}}],["request_puzzle_solut",{"_index":1179,"t":{"3525":{"position":[[0,23]]}}}],["request_remov",{"_index":1189,"t":{"3543":{"position":[[0,16]]}}}],["request_ses_info",{"_index":1206,"t":{"3575":{"position":[[0,16]]}}}],["request_signage_point_or_end_of_sub_slot",{"_index":1004,"t":{"2702":{"position":[[0,40]]}}}],["request_signatur",{"_index":906,"t":{"2328":{"position":[[0,18]]}}}],["request_transact",{"_index":990,"t":{"2674":{"position":[[0,19]]}}}],["request_unfinished_block",{"_index":1000,"t":{"2696":{"position":[[0,24]]}}}],["requir",{"_index":870,"t":{"2092":{"position":[[0,12]]},"2367":{"position":[[8,12]]},"2383":{"position":[[4,8]]},"2426":{"position":[[7,12]]},"2474":{"position":[[23,12]]},"2490":{"position":[[0,12]]},"2615":{"position":[[14,11]]},"2785":{"position":[[0,8]]},"3344":{"position":[[0,12]]},"3414":{"position":[[9,12]]},"3431":{"position":[[22,12]]}}}],["rescu",{"_index":500,"t":{"998":{"position":[[15,6]]}}}],["reserv",{"_index":35,"t":{"124":{"position":[[10,7]]},"1168":{"position":[[27,7]]},"2194":{"position":[[20,8]]}}}],["resourc",{"_index":9,"t":{"12":{"position":[[11,9]]},"26":{"position":[[11,9]]},"46":{"position":[[11,9]]},"62":{"position":[[11,9]]},"81":{"position":[[11,9]]},"119":{"position":[[11,9]]},"196":{"position":[[11,9]]},"254":{"position":[[0,9]]},"269":{"position":[[11,9]]},"285":{"position":[[11,9]]},"301":{"position":[[11,9]]},"317":{"position":[[11,9]]},"458":{"position":[[11,9]]},"509":{"position":[[11,9]]},"1044":{"position":[[11,9]]},"1056":{"position":[[11,9]]},"3005":{"position":[[11,9]]},"3019":{"position":[[11,9]]},"3116":{"position":[[11,9]]},"3338":{"position":[[11,9]]},"3441":{"position":[[12,9]]}}}],["respond",{"_index":908,"t":{"2330":{"position":[[0,7]]},"2334":{"position":[[0,7]]},"2676":{"position":[[0,7]]},"2680":{"position":[[0,7]]},"2684":{"position":[[0,7]]},"2690":{"position":[[0,7]]},"2698":{"position":[[0,7]]},"2704":{"position":[[0,7]]},"2706":{"position":[[0,7]]},"2714":{"position":[[0,7]]},"2718":{"position":[[0,7]]},"3527":{"position":[[0,7]]},"3539":{"position":[[0,7]]},"3545":{"position":[[0,7]]},"3551":{"position":[[0,7]]},"3559":{"position":[[0,7]]},"3563":{"position":[[0,7]]},"3567":{"position":[[0,7]]},"3573":{"position":[[0,7]]},"3577":{"position":[[0,7]]}}}],["respond_addit",{"_index":1193,"t":{"3551":{"position":[[0,17]]}}}],["respond_block",{"_index":995,"t":{"2684":{"position":[[0,13]]},"2690":{"position":[[0,14]]}}}],["respond_block_head",{"_index":1187,"t":{"3539":{"position":[[0,20]]}}}],["respond_children",{"_index":1205,"t":{"3573":{"position":[[0,16]]}}}],["respond_compact_vdf",{"_index":1011,"t":{"2714":{"position":[[0,19]]}}}],["respond_end_of_sub_slot",{"_index":1006,"t":{"2706":{"position":[[0,23]]}}}],["respond_header_block",{"_index":1197,"t":{"3559":{"position":[[0,21]]}}}],["respond_p",{"_index":1013,"t":{"2718":{"position":[[0,13]]}}}],["respond_plot",{"_index":910,"t":{"2334":{"position":[[0,13]]}}}],["respond_proof_of_weight",{"_index":993,"t":{"2680":{"position":[[0,23]]}}}],["respond_puzzle_solut",{"_index":1180,"t":{"3527":{"position":[[0,23]]}}}],["respond_remov",{"_index":1190,"t":{"3545":{"position":[[0,16]]}}}],["respond_ses_info",{"_index":1208,"t":{"3577":{"position":[[0,16]]}}}],["respond_signage_point",{"_index":1005,"t":{"2704":{"position":[[0,21]]}}}],["respond_signatur",{"_index":907,"t":{"2330":{"position":[[0,18]]}}}],["respond_to_coin_upd",{"_index":1201,"t":{"3567":{"position":[[0,23]]}}}],["respond_to_ph_upd",{"_index":1199,"t":{"3563":{"position":[[0,21]]}}}],["respond_transact",{"_index":991,"t":{"2676":{"position":[[0,19]]}}}],["respond_unfinished_block",{"_index":1001,"t":{"2698":{"position":[[0,24]]}}}],["rest",{"_index":849,"t":{"1949":{"position":[[0,4]]}}}],["resum",{"_index":582,"t":{"1219":{"position":[[6,6]]}}}],["resync",{"_index":1380,"t":{"4011":{"position":[[11,6]]}}}],["retreiv",{"_index":805,"t":{"1773":{"position":[[0,8]]}}}],["retriev",{"_index":846,"t":{"1932":{"position":[[0,8]]},"2277":{"position":[[0,10]]}}}],["reus",{"_index":656,"t":{"1320":{"position":[[28,5]]}}}],["reveal",{"_index":200,"t":{"441":{"position":[[20,7]]},"1767":{"position":[[11,6]]},"1869":{"position":[[7,6]]},"1879":{"position":[[12,8]]},"3504":{"position":[[10,6]]}}}],["revert",{"_index":1112,"t":{"3188":{"position":[[0,6]]},"3271":{"position":[[0,6]]}}}],["revert_block",{"_index":1111,"t":{"3188":{"position":[[0,13]]}}}],["review",{"_index":782,"t":{"1607":{"position":[[0,6]]}}}],["revok",{"_index":972,"t":{"2598":{"position":[[0,6]]},"2610":{"position":[[0,6]]},"3512":{"position":[[0,6]]},"3594":{"position":[[3,6]]}}}],["reward",{"_index":39,"t":{"128":{"position":[[0,6]]},"130":{"position":[[15,6]]},"132":{"position":[[0,7]]},"973":{"position":[[4,6]]},"983":{"position":[[4,6]]},"1000":{"position":[[6,6]]},"1225":{"position":[[86,7]]},"1277":{"position":[[45,6]]},"2875":{"position":[[16,7]]},"2877":{"position":[[19,7]]},"2970":{"position":[[71,7]]},"2974":{"position":[[21,7]]},"3346":{"position":[[0,7]]},"3493":{"position":[[8,6]]},"4113":{"position":[[10,7]]}}}],["right",{"_index":676,"t":{"1345":{"position":[[33,5]]},"3307":{"position":[[13,6]]}}}],["root",{"_index":264,"t":{"598":{"position":[[7,4]]},"835":{"position":[[14,5]]},"853":{"position":[[4,4]]},"855":{"position":[[4,4]]},"2604":{"position":[[0,4]]},"3508":{"position":[[15,4]]},"3588":{"position":[[18,4]]},"3787":{"position":[[14,5]]},"3803":{"position":[[10,4]]},"3811":{"position":[[4,4]]},"3813":{"position":[[4,5]]},"3815":{"position":[[4,4]]},"3829":{"position":[[15,4]]},"4136":{"position":[[17,4]]},"4144":{"position":[[10,4]]}}}],["rout",{"_index":357,"t":{"762":{"position":[[4,6]]},"975":{"position":[[4,6]]},"2346":{"position":[[4,6]]},"3817":{"position":[[4,6]]},"3965":{"position":[[4,6]]},"4146":{"position":[[0,6]]},"4151":{"position":[[4,6]]}}}],["routabl",{"_index":897,"t":{"2314":{"position":[[31,8]]}}}],["royalti",{"_index":700,"t":{"1398":{"position":[[7,9]]},"1400":{"position":[[14,9]]},"1402":{"position":[[8,9]]},"1404":{"position":[[24,7]]},"1406":{"position":[[4,9]]},"3883":{"position":[[14,9]]}}}],["rpc",{"_index":355,"t":{"759":{"position":[[14,4]]},"792":{"position":[[8,4]]},"801":{"position":[[16,4]]},"1314":{"position":[[12,3]]},"1420":{"position":[[5,3]]},"1599":{"position":[[18,3]]},"1904":{"position":[[0,3]]},"1910":{"position":[[10,3]]},"2082":{"position":[[0,3]]},"2178":{"position":[[26,3]]},"2502":{"position":[[0,3]]},"2600":{"position":[[0,3]]},"3661":{"position":[[0,3]]}}}],["rpost",{"_index":1118,"t":{"3202":{"position":[[71,5]]}}}],["rule",{"_index":319,"t":{"668":{"position":[[8,5]]},"711":{"position":[[0,5]]},"741":{"position":[[15,5]]},"1144":{"position":[[13,5]]},"1791":{"position":[[35,4]]},"3099":{"position":[[34,4]]},"3349":{"position":[[29,5]]}}}],["run",{"_index":365,"t":{"772":{"position":[[3,7]]},"780":{"position":[[0,7]]},"1073":{"position":[[0,3]]},"1095":{"position":[[0,3]]},"1154":{"position":[[14,3]]},"1190":{"position":[[43,7]]},"1229":{"position":[[46,7]]},"1234":{"position":[[17,3]]},"1296":{"position":[[6,7]]},"1349":{"position":[[93,7]]},"1445":{"position":[[6,3]]},"1451":{"position":[[55,3]]},"1571":{"position":[[5,3]]},"1714":{"position":[[0,3]]},"1734":{"position":[[0,3]]},"2008":{"position":[[12,3]]},"2010":{"position":[[18,3]]},"2036":{"position":[[0,3]]},"2152":{"position":[[0,7]]},"2767":{"position":[[46,7]]},"2945":{"position":[[17,3]]},"2960":{"position":[[64,3]]},"3257":{"position":[[0,3]]},"3259":{"position":[[0,3]]},"3390":{"position":[[0,7]]},"3431":{"position":[[39,7]]},"3439":{"position":[[27,7]]},"3478":{"position":[[0,3]]}}}],["runnabl",{"_index":15,"t":{"83":{"position":[[0,8]]},"270":{"position":[[0,8]]},"286":{"position":[[0,8]]},"302":{"position":[[0,8]]},"318":{"position":[[0,8]]}}}],["running_servic",{"_index":373,"t":{"780":{"position":[[0,16]]}}}],["runtimeerror",{"_index":579,"t":{"1217":{"position":[[32,12]]}}}],["s",{"_index":85,"t":{"208":{"position":[[29,1]]},"216":{"position":[[41,1]]},"403":{"position":[[9,1]]},"405":{"position":[[5,1]]},"647":{"position":[[15,1]]},"741":{"position":[[13,1]]},"1144":{"position":[[52,1]]},"1158":{"position":[[22,1]]},"1162":{"position":[[13,1]]},"1196":{"position":[[13,1]]},"1234":{"position":[[67,1]]},"1273":{"position":[[21,1]]},"1298":{"position":[[40,1]]},"1310":{"position":[[17,1]]},"1422":{"position":[[53,1]]},"1443":{"position":[[52,1]]},"1449":{"position":[[43,1]]},"1589":{"position":[[14,1]]},"2114":{"position":[[21,1]]},"2269":{"position":[[5,1]]},"2302":{"position":[[16,1]]},"2305":{"position":[[21,1]]},"2311":{"position":[[35,1]]},"2316":{"position":[[14,1]]},"2484":{"position":[[5,1]]},"2525":{"position":[[11,1]]},"2958":{"position":[[29,1]]},"2960":{"position":[[85,1]]},"2964":{"position":[[32,1]]},"2966":{"position":[[34,1]]},"3095":{"position":[[50,1]]},"3122":{"position":[[5,1]]},"3196":{"position":[[48,1]]},"3202":{"position":[[69,1]]},"3210":{"position":[[42,1]]},"3491":{"position":[[19,1]]}}}],["s3",{"_index":857,"t":{"1963":{"position":[[9,2]]}}}],["sa",{"_index":727,"t":{"1443":{"position":[[17,3]]},"3288":{"position":[[0,3]]}}}],["safeti",{"_index":207,"t":{"484":{"position":[[0,6]]}}}],["sale",{"_index":685,"t":{"1368":{"position":[[48,4]]}}}],["same",{"_index":604,"t":{"1256":{"position":[[25,4]]},"1320":{"position":[[38,4]]},"1349":{"position":[[69,4]]},"1396":{"position":[[28,4]]},"1410":{"position":[[20,4]]}}}],["sampl",{"_index":1302,"t":{"3755":{"position":[[12,6]]}}}],["sandbox",{"_index":184,"t":{"419":{"position":[[0,10]]}}}],["sata",{"_index":1129,"t":{"3286":{"position":[[0,4]]}}}],["save",{"_index":586,"t":{"1219":{"position":[[70,4]]},"2486":{"position":[[39,4]]}}}],["sb",{"_index":292,"t":{"637":{"position":[[9,2]]}}}],["scalabl",{"_index":181,"t":{"413":{"position":[[0,11]]}}}],["scan",{"_index":954,"t":{"2525":{"position":[[13,4]]}}}],["scenario",{"_index":96,"t":{"216":{"position":[[17,8]]},"2385":{"position":[[0,8]]},"2387":{"position":[[0,8]]},"2389":{"position":[[0,8]]},"2391":{"position":[[0,8]]}}}],["schedul",{"_index":44,"t":{"132":{"position":[[8,8]]}}}],["script",{"_index":3,"t":{"6":{"position":[[0,6]]},"20":{"position":[[0,6]]},"40":{"position":[[0,6]]},"56":{"position":[[0,6]]},"75":{"position":[[0,6]]},"113":{"position":[[0,6]]},"190":{"position":[[0,6]]},"263":{"position":[[0,6]]},"279":{"position":[[0,6]]},"295":{"position":[[0,6]]},"311":{"position":[[0,6]]},"452":{"position":[[0,6]]},"503":{"position":[[0,6]]},"1038":{"position":[[0,6]]},"2999":{"position":[[0,6]]},"3013":{"position":[[0,6]]},"3110":{"position":[[0,6]]},"3332":{"position":[[0,6]]}}}],["se",{"_index":1207,"t":{"3575":{"position":[[8,3]]},"3577":{"position":[[8,3]]}}}],["search",{"_index":153,"t":{"355":{"position":[[0,6]]},"1457":{"position":[[17,6]]},"3872":{"position":[[4,6]]},"3874":{"position":[[0,6]]},"3876":{"position":[[0,6]]}}}],["secondari",{"_index":572,"t":{"1213":{"position":[[12,9]]}}}],["section",{"_index":1174,"t":{"3482":{"position":[[47,7]]}}}],["secur",{"_index":63,"t":{"160":{"position":[[0,6]]},"604":{"position":[[9,8]]},"1013":{"position":[[5,8]]},"1424":{"position":[[14,8]]},"1525":{"position":[[6,8]]},"1565":{"position":[[0,6]]},"1567":{"position":[[0,6]]},"1579":{"position":[[4,8]]},"1783":{"position":[[4,8]]},"1877":{"position":[[0,8]]},"3024":{"position":[[0,8]]}}}],["secure_the_bag",{"_index":62,"t":{"160":{"position":[[0,14]]}}}],["see",{"_index":598,"t":{"1238":{"position":[[5,6]]},"1326":{"position":[[9,3]]},"1343":{"position":[[12,3]]},"1351":{"position":[[9,3]]},"2954":{"position":[[12,3]]},"2992":{"position":[[12,3]]}}}],["seed",{"_index":654,"t":{"1318":{"position":[[32,4]]}}}],["seeder",{"_index":872,"t":{"2144":{"position":[[22,6]]}}}],["select",{"_index":812,"t":{"1791":{"position":[[25,9]]},"3301":{"position":[[3,9]]},"4055":{"position":[[0,6]]}}}],["select_coin",{"_index":1396,"t":{"4055":{"position":[[0,12]]}}}],["self",{"_index":691,"t":{"1376":{"position":[[21,4]]},"2920":{"position":[[0,4]]},"4117":{"position":[[3,4]]}}}],["selfish",{"_index":228,"t":{"525":{"position":[[0,7]]},"3087":{"position":[[4,7]]}}}],["sell",{"_index":682,"t":{"1364":{"position":[[9,4]]},"1394":{"position":[[32,7]]}}}],["send",{"_index":99,"t":{"216":{"position":[[54,4]]},"676":{"position":[[4,4]]},"1282":{"position":[[9,4]]},"1312":{"position":[[35,4]]},"1362":{"position":[[6,4]]},"1430":{"position":[[32,4]]},"1432":{"position":[[25,4]]},"1666":{"position":[[0,4]]},"1668":{"position":[[0,7]]},"1670":{"position":[[0,7]]},"1680":{"position":[[0,7]]},"1900":{"position":[[0,4]]},"3531":{"position":[[0,4]]},"3694":{"position":[[0,4]]},"3696":{"position":[[0,4]]},"4057":{"position":[[0,4]]},"4059":{"position":[[0,4]]},"4061":{"position":[[0,4]]}}}],["send_notif",{"_index":1397,"t":{"4057":{"position":[[0,17]]}}}],["send_transact",{"_index":1182,"t":{"3531":{"position":[[0,16]]},"4059":{"position":[[0,16]]}}}],["send_transaction_multi",{"_index":1398,"t":{"4061":{"position":[[0,22]]}}}],["sender",{"_index":784,"t":{"1634":{"position":[[0,6]]},"1638":{"position":[[23,6]]},"1642":{"position":[[0,6]]},"1646":{"position":[[0,6]]}}}],["sendtransact",{"_index":1238,"t":{"3627":{"position":[[5,15]]}}}],["separ",{"_index":507,"t":{"1015":{"position":[[15,8]]},"1017":{"position":[[17,8]]}}}],["seri",{"_index":350,"t":{"753":{"position":[[6,6]]}}}],["serial",{"_index":776,"t":{"1591":{"position":[[4,10]]},"1593":{"position":[[0,13]]},"1595":{"position":[[0,13]]},"1597":{"position":[[0,13]]},"3136":{"position":[[13,11]]}}}],["seriou",{"_index":1085,"t":{"3083":{"position":[[0,7]]}}}],["server",{"_index":354,"t":{"759":{"position":[[7,6]]},"801":{"position":[[9,6]]},"2970":{"position":[[10,7]]},"2976":{"position":[[22,6]]},"2990":{"position":[[32,6]]}}}],["servic",{"_index":369,"t":{"776":{"position":[[9,7]]},"780":{"position":[[8,8]]},"784":{"position":[[6,7]]},"786":{"position":[[5,7]]},"2318":{"position":[[17,7]]},"3152":{"position":[[0,8]]},"3424":{"position":[[18,7]]},"3478":{"position":[[9,8]]}}}],["set",{"_index":70,"t":{"169":{"position":[[0,3]]},"171":{"position":[[0,3]]},"395":{"position":[[22,3]]},"399":{"position":[[21,3]]},"405":{"position":[[12,3]]},"412":{"position":[[23,3]]},"647":{"position":[[17,8]]},"782":{"position":[[0,3]]},"824":{"position":[[0,3]]},"890":{"position":[[0,3]]},"947":{"position":[[4,3]]},"981":{"position":[[0,3]]},"983":{"position":[[0,3]]},"1027":{"position":[[0,3]]},"1029":{"position":[[0,3]]},"1213":{"position":[[58,3]]},"1489":{"position":[[0,7]]},"1607":{"position":[[7,8]]},"1829":{"position":[[10,8]]},"1928":{"position":[[0,7]]},"2053":{"position":[[0,3]]},"2134":{"position":[[0,3]]},"2267":{"position":[[5,3]]},"2356":{"position":[[5,3]]},"2629":{"position":[[0,7]]},"2828":{"position":[[0,3]]},"2840":{"position":[[0,3]]},"3190":{"position":[[0,3]]},"3241":{"position":[[0,3]]},"3243":{"position":[[0,3]]},"3455":{"position":[[16,8]]},"3466":{"position":[[15,3]]},"3468":{"position":[[0,8]]},"3901":{"position":[[4,3]]},"3903":{"position":[[4,3]]},"3905":{"position":[[4,3]]},"4009":{"position":[[0,3]]},"4011":{"position":[[0,3]]},"4084":{"position":[[4,3]]}}}],["set_auto_claim",{"_index":1378,"t":{"4009":{"position":[[0,14]]}}}],["set_auto_farm",{"_index":1113,"t":{"3190":{"position":[[0,16]]}}}],["set_did",{"_index":1034,"t":{"2828":{"position":[[0,7]]},"2840":{"position":[[0,7]]}}}],["set_keyring_passphras",{"_index":374,"t":{"782":{"position":[[0,22]]}}}],["set_label",{"_index":399,"t":{"824":{"position":[[0,9]]}}}],["set_nam",{"_index":443,"t":{"890":{"position":[[0,8]]}}}],["set_payout_instruct",{"_index":493,"t":{"981":{"position":[[0,23]]}}}],["set_reward_target",{"_index":496,"t":{"983":{"position":[[0,18]]}}}],["set_wallet_resync_on_startup",{"_index":1379,"t":{"4011":{"position":[[0,28]]}}}],["setdidnam",{"_index":1268,"t":{"3708":{"position":[[5,10]]}}}],["setnftdid",{"_index":1300,"t":{"3747":{"position":[[5,9]]}}}],["setup",{"_index":252,"t":{"574":{"position":[[0,5]]},"1011":{"position":[[0,5]]},"1653":{"position":[[0,5]]},"1656":{"position":[[11,5]]},"1662":{"position":[[0,5]]},"1688":{"position":[[22,5]]},"2204":{"position":[[0,5]]},"2256":{"position":[[16,5]]},"2273":{"position":[[8,5]]},"2583":{"position":[[0,5]]},"3420":{"position":[[22,5]]}}}],["share",{"_index":673,"t":{"1341":{"position":[[12,5]]},"2285":{"position":[[0,6]]},"2970":{"position":[[62,5]]}}}],["short",{"_index":223,"t":{"521":{"position":[[0,5]]}}}],["show",{"_index":163,"t":{"379":{"position":[[0,4]]},"616":{"position":[[0,4]]},"713":{"position":[[0,4]]},"1298":{"position":[[97,5]]},"1302":{"position":[[39,4]]},"1339":{"position":[[31,5]]},"1455":{"position":[[33,4]]},"1646":{"position":[[32,4]]},"2108":{"position":[[0,4]]},"2216":{"position":[[0,4]]},"2218":{"position":[[0,4]]},"2246":{"position":[[0,4]]},"3698":{"position":[[0,4]]}}}],["show_propos",{"_index":340,"t":{"713":{"position":[[0,13]]}}}],["sign",{"_index":191,"t":{"433":{"position":[[0,7]]},"574":{"position":[[13,7]]},"892":{"position":[[0,4]]},"1142":{"position":[[9,4]]},"1434":{"position":[[10,4]]},"1779":{"position":[[0,4]]},"1989":{"position":[[0,7]]},"1995":{"position":[[0,4]]},"2830":{"position":[[0,4]]},"3700":{"position":[[0,4]]},"4021":{"position":[[7,6]]},"4063":{"position":[[0,4]]},"4065":{"position":[[0,4]]}}}],["sign_messag",{"_index":445,"t":{"892":{"position":[[0,12]]},"2830":{"position":[[0,12]]},"3700":{"position":[[0,12]]}}}],["sign_message_by_address",{"_index":1399,"t":{"4063":{"position":[[0,23]]}}}],["sign_message_by_id",{"_index":1400,"t":{"4065":{"position":[[0,18]]}}}],["signag",{"_index":491,"t":{"977":{"position":[[4,7]]},"979":{"position":[[4,7]]},"1269":{"position":[[34,7]]},"2324":{"position":[[4,7]]},"2700":{"position":[[4,7]]},"2702":{"position":[[8,7]]},"2704":{"position":[[8,7]]},"3156":{"position":[[26,7]]},"3963":{"position":[[11,7]]}}}],["signatur",{"_index":189,"t":{"429":{"position":[[0,9]]},"1520":{"position":[[21,10]]},"1912":{"position":[[4,10]]},"1936":{"position":[[14,9]]},"1975":{"position":[[9,10]]},"1977":{"position":[[10,10]]},"2328":{"position":[[8,10]]},"2330":{"position":[[8,10]]},"3036":{"position":[[0,9]]},"3218":{"position":[[10,10]]},"4071":{"position":[[7,9]]}}}],["signmessagebyaddress",{"_index":1242,"t":{"3631":{"position":[[5,20]]}}}],["signmessagebyid",{"_index":1240,"t":{"3629":{"position":[[5,15]]}}}],["simul",{"_index":882,"t":{"2206":{"position":[[11,9]]},"2212":{"position":[[10,9]]},"2218":{"position":[[5,9]]},"2751":{"position":[[0,8]]},"3168":{"position":[[9,8]]}}}],["singl",{"_index":649,"t":{"1312":{"position":[[70,6]]},"1493":{"position":[[11,6]]},"1565":{"position":[[16,6]]},"1690":{"position":[[11,6]]},"2168":{"position":[[9,6]]},"2170":{"position":[[9,6]]},"3257":{"position":[[4,6]]},"3433":{"position":[[6,6]]}}}],["singleton",{"_index":274,"t":{"608":{"position":[[7,9]]},"1827":{"position":[[0,9]]},"1829":{"position":[[0,9]]},"2100":{"position":[[15,9]]},"2106":{"position":[[11,9]]},"2108":{"position":[[9,9]]},"2112":{"position":[[9,9]]},"2114":{"position":[[11,9]]},"2972":{"position":[[17,9]]},"4130":{"position":[[10,9]]},"4134":{"position":[[9,10]]},"4136":{"position":[[3,10]]}}}],["site",{"_index":537,"t":{"1144":{"position":[[101,4]]}}}],["size",{"_index":113,"t":{"232":{"position":[[11,4]]},"421":{"position":[[9,4]]},"473":{"position":[[18,4]]},"479":{"position":[[14,4]]},"1203":{"position":[[17,5]]},"1205":{"position":[[7,4]]},"1223":{"position":[[44,5]]},"1225":{"position":[[13,4]]},"1384":{"position":[[35,4]]},"1799":{"position":[[6,5]]},"2363":{"position":[[2,4]]},"2490":{"position":[[21,4]]},"2730":{"position":[[2,5]]},"2799":{"position":[[5,4]]},"2982":{"position":[[75,4]]},"3166":{"position":[[9,4]]}}}],["sleep",{"_index":932,"t":{"2430":{"position":[[0,5]]}}}],["slot",{"_index":1003,"t":{"2700":{"position":[[32,4]]},"2702":{"position":[[36,4]]},"2706":{"position":[[19,4]]}}}],["slow",{"_index":828,"t":{"1843":{"position":[[23,4]]}}}],["slowdown",{"_index":1087,"t":{"3089":{"position":[[33,8]]},"3095":{"position":[[7,8]]},"3097":{"position":[[9,8]]},"3101":{"position":[[21,8]]}}}],["smart",{"_index":766,"t":{"1577":{"position":[[29,5]]},"1578":{"position":[[30,5]]},"1579":{"position":[[15,5]]},"1583":{"position":[[12,5]]},"1584":{"position":[[16,5]]},"1585":{"position":[[18,5]]}}}],["snapshot",{"_index":602,"t":{"1250":{"position":[[42,8]]},"1539":{"position":[[16,8]]},"1541":{"position":[[26,8]]}}}],["solut",{"_index":192,"t":{"433":{"position":[[12,8]]},"441":{"position":[[11,8]]},"1591":{"position":[[26,8]]},"1775":{"position":[[11,8]]},"1934":{"position":[[11,8]]},"1985":{"position":[[8,8]]},"1987":{"position":[[0,8]]},"3525":{"position":[[15,8]]},"3527":{"position":[[15,8]]},"3529":{"position":[[14,8]]},"3961":{"position":[[15,8]]}}}],["someon",{"_index":789,"t":{"1638":{"position":[[0,7]]},"1640":{"position":[[0,7]]},"2486":{"position":[[20,7]]}}}],["sourc",{"_index":556,"t":{"1164":{"position":[[18,6]]},"1845":{"position":[[0,6]]},"2072":{"position":[[16,6]]},"2435":{"position":[[5,6]]},"2456":{"position":[[5,6]]},"3255":{"position":[[13,7]]},"3418":{"position":[[27,6]]}}}],["space",{"_index":107,"t":{"228":{"position":[[9,5]]},"517":{"position":[[18,5]]},"1132":{"position":[[19,5]]},"1184":{"position":[[17,5]]},"1188":{"position":[[18,5]]},"1225":{"position":[[33,5]]},"1522":{"position":[[23,5]]},"1797":{"position":[[4,5]]},"2326":{"position":[[13,5]]},"2354":{"position":[[9,5]]},"2365":{"position":[[13,5]]},"2486":{"position":[[9,5]]},"2964":{"position":[[34,5]]},"2966":{"position":[[36,5]]},"3136":{"position":[[36,5]]},"3202":{"position":[[22,5]]},"3959":{"position":[[12,5]]}}}],["spam",{"_index":296,"t":{"643":{"position":[[9,4]]}}}],["spec",{"_index":204,"t":{"465":{"position":[[8,5]]},"467":{"position":[[8,5]]},"3122":{"position":[[17,5]]}}}],["special",{"_index":873,"t":{"2148":{"position":[[0,7]]}}}],["specif",{"_index":665,"t":{"1331":{"position":[[88,8]]}}}],["speed",{"_index":1169,"t":{"3459":{"position":[[0,5]]}}}],["spend",{"_index":167,"t":{"391":{"position":[[0,6]]},"559":{"position":[[7,8]]},"600":{"position":[[8,5]]},"639":{"position":[[9,5]]},"697":{"position":[[0,5]]},"733":{"position":[[9,5]]},"888":{"position":[[8,5]]},"943":{"position":[[12,5]]},"945":{"position":[[13,5]]},"1322":{"position":[[18,5]]},"1324":{"position":[[37,5]]},"1388":{"position":[[34,5]]},"1585":{"position":[[4,8]]},"1599":{"position":[[0,5]]},"1640":{"position":[[62,5]]},"1873":{"position":[[0,8]]},"1881":{"position":[[0,5]]},"1938":{"position":[[0,5]]},"1983":{"position":[[0,8]]},"1997":{"position":[[4,5]]},"3220":{"position":[[9,5]]},"3592":{"position":[[3,5]]},"3935":{"position":[[10,6]]},"3937":{"position":[[10,6]]},"4067":{"position":[[0,5]]},"4086":{"position":[[4,5]]}}}],["spend_clawback_coin",{"_index":1401,"t":{"4067":{"position":[[0,20]]}}}],["spendabl",{"_index":663,"t":{"1331":{"position":[[42,9]]},"4041":{"position":[[4,9]]}}}],["spendbundl",{"_index":1252,"t":{"3650":{"position":[[0,11]]}}}],["spendcat",{"_index":1221,"t":{"3604":{"position":[[5,8]]}}}],["spent",{"_index":170,"t":{"393":{"position":[[16,5]]},"1304":{"position":[[39,5]]},"1349":{"position":[[15,5]]}}}],["split",{"_index":1257,"t":{"3674":{"position":[[0,5]]},"4069":{"position":[[0,5]]}}}],["split_coin",{"_index":1402,"t":{"4069":{"position":[[0,11]]}}}],["spreadsheet",{"_index":1100,"t":{"3164":{"position":[[4,11]]}}}],["ssd",{"_index":514,"t":{"1069":{"position":[[9,3]]},"1229":{"position":[[37,3]]},"2484":{"position":[[36,3]]},"2554":{"position":[[0,3]]},"2767":{"position":[[37,3]]}}}],["stake",{"_index":211,"t":{"490":{"position":[[23,5]]}}}],["stale",{"_index":616,"t":{"1275":{"position":[[39,5]]}}}],["stanc",{"_index":719,"t":{"1428":{"position":[[12,6]]}}}],["standalon",{"_index":1040,"t":{"2859":{"position":[[10,10]]}}}],["standard",{"_index":133,"t":{"246":{"position":[[8,8]]},"2086":{"position":[[13,9]]}}}],["start",{"_index":145,"t":{"335":{"position":[[0,5]]},"618":{"position":[[0,5]]},"784":{"position":[[0,5]]},"797":{"position":[[0,5]]},"1085":{"position":[[0,5]]},"1256":{"position":[[57,5]]},"1306":{"position":[[32,5]]},"1449":{"position":[[32,5]]},"1577":{"position":[[4,5]]},"1696":{"position":[[8,7]]},"1815":{"position":[[8,7]]},"1817":{"position":[[8,7]]},"1908":{"position":[[6,5]]},"2212":{"position":[[0,5]]},"2214":{"position":[[0,5]]},"2891":{"position":[[7,5]]},"2939":{"position":[[10,5]]},"3235":{"position":[[0,5]]},"3273":{"position":[[0,5]]},"3610":{"position":[[8,7]]}}}],["start_plot",{"_index":383,"t":{"797":{"position":[[0,14]]}}}],["start_rekey",{"_index":281,"t":{"618":{"position":[[0,11]]}}}],["start_servic",{"_index":375,"t":{"784":{"position":[[0,13]]}}}],["startup",{"_index":934,"t":{"2447":{"position":[[8,7]]},"4011":{"position":[[21,7]]}}}],["state",{"_index":317,"t":{"666":{"position":[[17,5]]},"971":{"position":[[9,5]]},"1156":{"position":[[28,5]]},"2271":{"position":[[0,5]]},"2916":{"position":[[8,5]]},"3569":{"position":[[5,5]]},"3923":{"position":[[15,5]]}}}],["statu",{"_index":159,"t":{"365":{"position":[[18,6]]},"764":{"position":[[4,6]]},"774":{"position":[[8,6]]},"859":{"position":[[9,6]]},"2114":{"position":[[23,6]]},"2132":{"position":[[8,6]]},"2216":{"position":[[10,6]]},"2218":{"position":[[15,6]]},"3275":{"position":[[0,6]]},"3819":{"position":[[9,6]]},"3905":{"position":[[12,6]]},"4001":{"position":[[9,6]]},"4119":{"position":[[3,6]]}}}],["stay",{"_index":1027,"t":{"2773":{"position":[[25,4]]}}}],["step",{"_index":49,"t":{"142":{"position":[[17,5]]},"1011":{"position":[[6,5]]},"1087":{"position":[[5,5]]},"1761":{"position":[[4,5]]},"2094":{"position":[[0,5]]},"2891":{"position":[[26,5]]},"2893":{"position":[[0,4]]},"2895":{"position":[[0,4]]},"2897":{"position":[[0,4]]},"2899":{"position":[[0,4]]},"2901":{"position":[[0,4]]},"2903":{"position":[[0,4]]},"3485":{"position":[[6,4]]}}}],["still",{"_index":633,"t":{"1298":{"position":[[91,5]]},"2480":{"position":[[11,5]]},"3355":{"position":[[34,5]]}}}],["stolen",{"_index":718,"t":{"1426":{"position":[[51,6]]}}}],["stop",{"_index":377,"t":{"786":{"position":[[0,4]]},"799":{"position":[[0,4]]},"2156":{"position":[[0,8]]},"3277":{"position":[[0,4]]},"3852":{"position":[[0,4]]},"4138":{"position":[[3,4]]},"4155":{"position":[[0,4]]}}}],["stop_nod",{"_index":1321,"t":{"3852":{"position":[[0,9]]},"4155":{"position":[[0,9]]}}}],["stop_plot",{"_index":384,"t":{"799":{"position":[[0,13]]}}}],["stop_servic",{"_index":376,"t":{"786":{"position":[[0,12]]}}}],["storag",{"_index":105,"t":{"222":{"position":[[27,7]]},"230":{"position":[[0,7]]},"246":{"position":[[17,7]]},"1067":{"position":[[5,7]]},"2367":{"position":[[0,7]]},"2780":{"position":[[10,7]]},"3077":{"position":[[9,7]]}}}],["store",{"_index":411,"t":{"837":{"position":[[12,5]]},"849":{"position":[[10,6]]},"871":{"position":[[12,5]]},"1443":{"position":[[29,7]]},"1453":{"position":[[35,6]]},"1967":{"position":[[4,5]]},"1969":{"position":[[7,5]]},"2016":{"position":[[14,5]]},"2024":{"position":[[36,5]]},"2026":{"position":[[20,5]]},"2084":{"position":[[9,5]]},"3224":{"position":[[19,5]]},"3789":{"position":[[12,5]]},"3807":{"position":[[10,6]]}}}],["strateg",{"_index":34,"t":{"124":{"position":[[0,9]]},"1168":{"position":[[17,9]]}}}],["strategi",{"_index":559,"t":{"1174":{"position":[[25,8]]}}}],["stray",{"_index":1411,"t":{"4102":{"position":[[4,5]]}}}],["streamabl",{"_index":1092,"t":{"3130":{"position":[[0,10]]}}}],["structur",{"_index":822,"t":{"1827":{"position":[[10,9]]},"2441":{"position":[[10,9]]}}}],["sub",{"_index":452,"t":{"912":{"position":[[0,3]]},"2700":{"position":[[28,3]]},"2702":{"position":[[32,3]]},"2706":{"position":[[15,3]]}}}],["submit",{"_index":1062,"t":{"2968":{"position":[[36,9]]},"3353":{"position":[[23,6]]},"3357":{"position":[[41,6]]},"3829":{"position":[[0,6]]}}}],["submit_pending_root",{"_index":1315,"t":{"3829":{"position":[[0,19]]}}}],["subscrib",{"_index":429,"t":{"867":{"position":[[0,9]]},"2026":{"position":[[0,9]]},"3831":{"position":[[0,9]]}}}],["subscript",{"_index":425,"t":{"857":{"position":[[4,13]]},"865":{"position":[[7,12]]},"3827":{"position":[[7,13]]},"3833":{"position":[[0,13]]}}}],["such",{"_index":942,"t":{"2470":{"position":[[18,4]]}}}],["summari",{"_index":137,"t":{"252":{"position":[[0,7]]},"959":{"position":[[15,7]]},"1662":{"position":[[6,7]]},"2654":{"position":[[10,7]]},"2871":{"position":[[14,7]]},"3032":{"position":[[16,7]]},"4100":{"position":[[10,7]]}}}],["support",{"_index":26,"t":{"91":{"position":[[9,7]]},"578":{"position":[[13,7]]},"987":{"position":[[23,7]]},"1436":{"position":[[0,7]]},"1437":{"position":[[32,9]]},"1439":{"position":[[28,9]]},"2472":{"position":[[14,7]]},"2492":{"position":[[13,7]]},"2988":{"position":[[24,7]]},"2990":{"position":[[48,7]]},"3249":{"position":[[8,7]]},"3363":{"position":[[8,7]]},"3428":{"position":[[9,7]]},"3451":{"position":[[9,7]]}}}],["swap",{"_index":510,"t":{"1031":{"position":[[0,8]]},"1111":{"position":[[4,5]]},"3245":{"position":[[0,4]]}}}],["switch",{"_index":868,"t":{"2074":{"position":[[0,9]]},"2929":{"position":[[44,6]]}}}],["sync",{"_index":45,"t":{"136":{"position":[[5,4]]},"138":{"position":[[5,4]]},"467":{"position":[[16,7]]},"620":{"position":[[0,4]]},"859":{"position":[[4,4]]},"1079":{"position":[[0,4]]},"1221":{"position":[[45,6]]},"1238":{"position":[[57,6]]},"1246":{"position":[[22,7]]},"1290":{"position":[[21,6]]},"1298":{"position":[[42,6],[112,7]]},"1347":{"position":[[15,4]]},"2773":{"position":[[14,6],[30,6]]},"2893":{"position":[[8,4]]},"3470":{"position":[[0,7]]},"3522":{"position":[[5,4]]},"3819":{"position":[[4,4]]},"4001":{"position":[[4,4]]}}}],["system",{"_index":126,"t":{"242":{"position":[[0,6]]},"1430":{"position":[[22,6]]},"1469":{"position":[[41,6]]},"2426":{"position":[[0,6]]},"2784":{"position":[[20,7]]},"2789":{"position":[[21,7]]},"2988":{"position":[[17,6]]},"3441":{"position":[[5,6]]}}}],["systemd",{"_index":935,"t":{"2449":{"position":[[0,7]]},"3420":{"position":[[14,7]]},"3422":{"position":[[13,7]]},"3424":{"position":[[10,7]]}}}],["t",{"_index":553,"t":{"1160":{"position":[[4,1]]},"1267":{"position":[[37,1]]},"1300":{"position":[[90,1]]},"1302":{"position":[[8,1]]},"1312":{"position":[[33,1]]},"1333":{"position":[[69,1]]},"1343":{"position":[[8,1]]},"1469":{"position":[[4,1]]},"2184":{"position":[[12,1]]},"2186":{"position":[[12,1]]},"2478":{"position":[[37,1]]},"2945":{"position":[[10,1]]}}}],["t1",{"_index":952,"t":{"2517":{"position":[[0,2]]}}}],["tab",{"_index":631,"t":{"1298":{"position":[[20,3],[83,3]]}}}],["tabl",{"_index":964,"t":{"2545":{"position":[[34,5]]},"3162":{"position":[[12,5]]}}}],["take",{"_index":681,"t":{"1360":{"position":[[10,4]]},"1392":{"position":[[24,4]]},"2572":{"position":[[0,4]]},"2656":{"position":[[0,4]]},"2949":{"position":[[41,4]]},"2972":{"position":[[27,4]]},"3835":{"position":[[0,4]]},"4104":{"position":[[0,4]]}}}],["take_off",{"_index":968,"t":{"2572":{"position":[[0,10]]},"2656":{"position":[[0,10]]},"3835":{"position":[[0,10]]},"4104":{"position":[[0,10]]}}}],["takeoff",{"_index":1278,"t":{"3720":{"position":[[5,9]]}}}],["taker",{"_index":879,"t":{"2186":{"position":[[0,5]]},"2188":{"position":[[0,5]]},"2190":{"position":[[0,5]]},"2192":{"position":[[32,5]]}}}],["target",{"_index":489,"t":{"973":{"position":[[11,7]]},"983":{"position":[[11,7]]}}}],["tax",{"_index":1136,"t":{"3311":{"position":[[10,5]]}}}],["tb",{"_index":611,"t":{"1265":{"position":[[15,2]]},"3491":{"position":[[21,2]]}}}],["tco",{"_index":1099,"t":{"3164":{"position":[[0,3]]}}}],["team",{"_index":1155,"t":{"3355":{"position":[[22,4]]}}}],["technic",{"_index":560,"t":{"1176":{"position":[[33,9]]},"2953":{"position":[[0,9]]},"2992":{"position":[[26,9]]},"3122":{"position":[[7,9]]}}}],["tell",{"_index":501,"t":{"1003":{"position":[[7,4]]},"1261":{"position":[[9,4]]},"1298":{"position":[[24,4]]},"2976":{"position":[[10,4]]}}}],["temp",{"_index":573,"t":{"1213":{"position":[[22,4]]},"1229":{"position":[[58,4]]},"2767":{"position":[[58,4]]}}}],["temporari",{"_index":1028,"t":{"2780":{"position":[[0,9]]}}}],["terminolog",{"_index":1160,"t":{"3398":{"position":[[0,11]]}}}],["test",{"_index":294,"t":{"639":{"position":[[4,4]]},"1571":{"position":[[0,4]]},"1583":{"position":[[23,5]]},"2154":{"position":[[0,7]]},"2787":{"position":[[5,6]]},"3247":{"position":[[41,7]]}}}],["testnet",{"_index":509,"t":{"1029":{"position":[[7,7]]},"1031":{"position":[[29,7]]},"1819":{"position":[[11,7]]},"2030":{"position":[[13,7]]},"2068":{"position":[[8,7]]},"2074":{"position":[[13,7]]},"2453":{"position":[[0,8]]},"2978":{"position":[[34,7]]},"2984":{"position":[[10,7]]},"3228":{"position":[[18,7]]},"3231":{"position":[[19,7]]},"3233":{"position":[[22,7]]},"3237":{"position":[[7,7]]},"3239":{"position":[[25,7]]},"3243":{"position":[[7,7]]},"3245":{"position":[[25,7]]},"3247":{"position":[[15,7]]},"3249":{"position":[[0,7]]}}}],["text",{"_index":796,"t":{"1722":{"position":[[0,4]]},"1742":{"position":[[0,4]]}}}],["textsf",{"_index":1117,"t":{"3202":{"position":[[50,6]]},"3208":{"position":[[42,6]]}}}],["theoret",{"_index":809,"t":{"1787":{"position":[[9,9]]}}}],["thing",{"_index":1157,"t":{"3367":{"position":[[14,6]]},"3466":{"position":[[8,6]]}}}],["think",{"_index":84,"t":{"208":{"position":[[19,6]]}}}],["those",{"_index":635,"t":{"1300":{"position":[[65,5]]}}}],["thread",{"_index":1123,"t":{"3257":{"position":[[11,8]]},"3259":{"position":[[10,8]]}}}],["through",{"_index":637,"t":{"1300":{"position":[[115,7]]}}}],["time",{"_index":236,"t":{"537":{"position":[[18,4]]},"996":{"position":[[10,4]]},"1115":{"position":[[19,4]]},"1134":{"position":[[23,4]]},"1184":{"position":[[27,4]]},"1188":{"position":[[37,4]]},"1209":{"position":[[35,4]]},"1275":{"position":[[51,4]]},"1382":{"position":[[81,4]]},"2354":{"position":[[19,4]]},"2470":{"position":[[64,5]]},"2472":{"position":[[77,5]]},"2482":{"position":[[9,5]]},"2558":{"position":[[14,5]]},"2778":{"position":[[5,4]]},"2982":{"position":[[93,4]]},"3202":{"position":[[28,4]]}}}],["timelock",{"_index":786,"t":{"1634":{"position":[[37,8]]},"1636":{"position":[[49,8]]}}}],["timelord",{"_index":25,"t":{"89":{"position":[[18,8]]},"91":{"position":[[0,8]]},"93":{"position":[[0,8]]},"523":{"position":[[7,8]]},"1130":{"position":[[46,9]]},"1789":{"position":[[16,9]]},"3342":{"position":[[5,8]]},"3388":{"position":[[9,9]]},"3390":{"position":[[10,8]]},"3392":{"position":[[18,8]]},"3394":{"position":[[14,9]]},"3396":{"position":[[0,9]]},"3414":{"position":[[0,8]]},"3416":{"position":[[13,8]]},"3418":{"position":[[13,8]]},"3420":{"position":[[5,8]]},"3426":{"position":[[18,8]]},"3428":{"position":[[0,8]]},"3430":{"position":[[0,8]]},"3431":{"position":[[49,8]]},"3437":{"position":[[38,8]]},"3439":{"position":[[37,8]]},"3444":{"position":[[9,8]]},"3446":{"position":[[7,8]]},"3451":{"position":[[0,8]]}}}],["timestamp",{"_index":644,"t":{"1304":{"position":[[61,9]]},"4003":{"position":[[4,9]]}}}],["titl",{"_index":14,"t":{"69":{"position":[[7,5]]}}}],["togeth",{"_index":800,"t":{"1748":{"position":[[11,8]]}}}],["token",{"_index":639,"t":{"1302":{"position":[[18,6]]},"1410":{"position":[[43,5]]},"2168":{"position":[[16,5]]},"2170":{"position":[[16,5]]},"2174":{"position":[[18,5]]},"2176":{"position":[[18,5]]},"3472":{"position":[[0,6]]},"3666":{"position":[[4,5]]}}}],["tokenom",{"_index":738,"t":{"1463":{"position":[[52,10]]}}}],["tool",{"_index":125,"t":{"240":{"position":[[12,5]]},"582":{"position":[[40,4]]},"1491":{"position":[[10,4]]},"1563":{"position":[[22,4]]},"1593":{"position":[[25,5]]},"1595":{"position":[[29,5]]},"1597":{"position":[[33,4]]},"1658":{"position":[[10,4]]},"1688":{"position":[[13,4]]},"1710":{"position":[[4,5]]},"1712":{"position":[[9,5]]},"1730":{"position":[[4,5]]},"1732":{"position":[[9,5]]},"1889":{"position":[[11,5]]},"1891":{"position":[[19,4]]},"1894":{"position":[[11,5]]},"2032":{"position":[[25,4]]},"2034":{"position":[[39,4]]},"2036":{"position":[[21,4]]},"2091":{"position":[[20,4]]},"2118":{"position":[[8,4]]}}}],["topic",{"_index":1152,"t":{"3351":{"position":[[5,6]]}}}],["torrent",{"_index":603,"t":{"1250":{"position":[[51,7]]}}}],["total",{"_index":692,"t":{"1384":{"position":[[24,5]]}}}],["track",{"_index":1063,"t":{"2970":{"position":[[31,5]]},"4138":{"position":[[8,8]]},"4140":{"position":[[3,5]]}}}],["trade",{"_index":712,"t":{"1416":{"position":[[35,5]]},"4073":{"position":[[9,7]]}}}],["trademark",{"_index":534,"t":{"1144":{"position":[[54,10]]}}}],["tradeoff",{"_index":1015,"t":{"2728":{"position":[[0,9]]},"2778":{"position":[[10,9]]}}}],["traderecord",{"_index":1287,"t":{"3731":{"position":[[0,11]]}}}],["tradestatu",{"_index":1288,"t":{"3733":{"position":[[0,11]]}}}],["transact",{"_index":31,"t":{"98":{"position":[[0,12]]},"427":{"position":[[0,11]]},"481":{"position":[[10,11]]},"531":{"position":[[10,11]]},"537":{"position":[[0,11]]},"1198":{"position":[[13,12]]},"1282":{"position":[[27,11]]},"1288":{"position":[[54,11]]},"1292":{"position":[[52,11]]},"1312":{"position":[[77,11]]},"1392":{"position":[[12,11],[57,11]]},"2373":{"position":[[10,12]]},"2391":{"position":[[28,12]]},"2672":{"position":[[4,11]]},"2674":{"position":[[8,11]]},"2676":{"position":[[8,11]]},"2708":{"position":[[16,12]]},"3499":{"position":[[16,11]]},"3531":{"position":[[5,11]]},"3533":{"position":[[0,11]]},"3678":{"position":[[19,12]]},"3684":{"position":[[4,11]]},"3686":{"position":[[4,12]]},"4005":{"position":[[5,12]]},"4021":{"position":[[14,11]]},"4025":{"position":[[19,12]]},"4043":{"position":[[4,11]]},"4045":{"position":[[4,12]]},"4047":{"position":[[4,11]]},"4049":{"position":[[4,11]]},"4059":{"position":[[5,11]]},"4061":{"position":[[5,11]]}}}],["transaction_ack",{"_index":1183,"t":{"3533":{"position":[[0,15]]}}}],["transactionrecord",{"_index":1249,"t":{"3642":{"position":[[0,17]]}}}],["transactions_gener",{"_index":30,"t":{"98":{"position":[[0,22]]},"1198":{"position":[[13,22]]}}}],["transactiontyp",{"_index":1250,"t":{"3644":{"position":[[0,15]]}}}],["transfer",{"_index":77,"t":{"179":{"position":[[13,8]]},"181":{"position":[[13,8]]},"894":{"position":[[0,8]]},"949":{"position":[[4,8]]},"1368":{"position":[[33,8]]},"1406":{"position":[[24,12]]},"2055":{"position":[[0,8]]},"2248":{"position":[[0,8]]},"2836":{"position":[[0,8]]},"3907":{"position":[[4,8]]},"3909":{"position":[[4,8]]}}}],["transfernft",{"_index":1296,"t":{"3743":{"position":[[5,11]]}}}],["treasuri",{"_index":303,"t":{"652":{"position":[[17,8]]},"670":{"position":[[8,8]]},"672":{"position":[[8,8]]}}}],["troubleshoot",{"_index":24,"t":{"89":{"position":[[0,15]]},"904":{"position":[[0,15]]},"2307":{"position":[[0,15]]},"2451":{"position":[[0,15]]},"3392":{"position":[[0,15]]},"3426":{"position":[[0,15]]}}}],["trunk",{"_index":230,"t":{"527":{"position":[[13,5]]},"3491":{"position":[[4,5]]}}}],["trust",{"_index":599,"t":{"1244":{"position":[[9,7]]},"1288":{"position":[[36,5]]}}}],["tutori",{"_index":348,"t":{"751":{"position":[[0,9]]}}}],["twice",{"_index":699,"t":{"1396":{"position":[[62,5]]}}}],["two",{"_index":679,"t":{"1349":{"position":[[101,3],[116,3]]}}}],["tx",{"_index":280,"t":{"614":{"position":[[5,2]]},"3919":{"position":[[16,2]]},"3953":{"position":[[20,2]]},"3971":{"position":[[5,2]]},"4007":{"position":[[5,2]]}}}],["txch",{"_index":528,"t":{"1138":{"position":[[13,4]]},"1823":{"position":[[8,4]]}}}],["type",{"_index":190,"t":{"429":{"position":[[10,4]]},"2782":{"position":[[10,4]]},"3134":{"position":[[13,4]]},"3388":{"position":[[0,5]]},"3637":{"position":[[0,5]]},"3730":{"position":[[0,5]]},"3749":{"position":[[0,5]]}}}],["uber",{"_index":132,"t":{"246":{"position":[[0,4]]},"248":{"position":[[0,4]]}}}],["ubuntu",{"_index":874,"t":{"2148":{"position":[[24,6]]}}}],["uncompress",{"_index":919,"t":{"2367":{"position":[[25,12]]},"2795":{"position":[[0,12]]}}}],["unconfirm",{"_index":1259,"t":{"3678":{"position":[[7,11]]},"4025":{"position":[[7,11]]}}}],["uncorrect",{"_index":129,"t":{"244":{"position":[[17,13]]}}}],["unfinish",{"_index":999,"t":{"2694":{"position":[[4,10]]},"2696":{"position":[[8,10]]},"2698":{"position":[[8,10]]},"3967":{"position":[[4,10]]}}}],["uniqu",{"_index":751,"t":{"1520":{"position":[[5,6]]},"1522":{"position":[[5,6]]},"1527":{"position":[[6,6]]}}}],["unknown",{"_index":672,"t":{"1339":{"position":[[39,7]]},"2188":{"position":[[17,7]]}}}],["unlock",{"_index":379,"t":{"788":{"position":[[0,6]]}}}],["unlock_keyr",{"_index":378,"t":{"788":{"position":[[0,14]]}}}],["unoffici",{"_index":835,"t":{"1891":{"position":[[25,10]]}}}],["unsiz",{"_index":819,"t":{"1799":{"position":[[16,7]]}}}],["unsubscrib",{"_index":430,"t":{"869":{"position":[[0,11]]},"3837":{"position":[[0,11]]}}}],["until",{"_index":642,"t":{"1304":{"position":[[45,5]]}}}],["unwind",{"_index":66,"t":{"162":{"position":[[0,6]]},"1569":{"position":[[0,6]]},"1571":{"position":[[10,6]]}}}],["unwind_the_bag",{"_index":65,"t":{"162":{"position":[[0,14]]}}}],["up",{"_index":71,"t":{"169":{"position":[[4,2]]},"171":{"position":[[4,2]]},"731":{"position":[[5,2]]},"1027":{"position":[[4,2]]},"1029":{"position":[[4,2]]},"1142":{"position":[[14,2]]},"1302":{"position":[[44,2]]},"1333":{"position":[[78,2]]},"1489":{"position":[[8,2]]},"1928":{"position":[[8,2]]},"2134":{"position":[[4,2]]},"3241":{"position":[[4,2]]},"3243":{"position":[[4,2]]},"3459":{"position":[[6,2]]},"3466":{"position":[[19,2]]}}}],["updat",{"_index":33,"t":{"98":{"position":[[23,6]]},"622":{"position":[[0,6]]},"699":{"position":[[0,6]]},"871":{"position":[[0,6]]},"896":{"position":[[0,6]]},"951":{"position":[[4,6]]},"953":{"position":[[4,6]]},"2279":{"position":[[0,8]]},"2283":{"position":[[0,7]]},"2397":{"position":[[0,8]]},"2629":{"position":[[8,8]]},"3514":{"position":[[0,6]]},"3561":{"position":[[16,7]]},"3563":{"position":[[14,7]]},"3565":{"position":[[18,7]]},"3567":{"position":[[16,7]]},"3569":{"position":[[11,6]]},"3702":{"position":[[0,6]]},"3781":{"position":[[6,6]]},"4142":{"position":[[3,6]]},"4144":{"position":[[3,6]]}}}],["update_config",{"_index":283,"t":{"622":{"position":[[0,13]]}}}],["update_data_stor",{"_index":431,"t":{"871":{"position":[[0,17]]}}}],["update_derivation_index",{"_index":1264,"t":{"3702":{"position":[[0,23]]}}}],["update_metadata",{"_index":446,"t":{"896":{"position":[[0,15]]}}}],["update_proof",{"_index":1178,"t":{"3514":{"position":[[0,13]]}}}],["upgrad",{"_index":149,"t":{"344":{"position":[[0,7]]},"1254":{"position":[[9,7]]},"1296":{"position":[[46,8]]},"1447":{"position":[[9,7]]}}}],["upload",{"_index":853,"t":{"1951":{"position":[[7,6]]},"1955":{"position":[[0,6]]}}}],["upnp",{"_index":596,"t":{"1232":{"position":[[13,4]]},"1234":{"position":[[80,4]]}}}],["upon",{"_index":704,"t":{"1406":{"position":[[19,4]]}}}],["uri",{"_index":866,"t":{"2051":{"position":[[6,3]]},"2238":{"position":[[6,3]]},"2240":{"position":[[9,3]]},"2242":{"position":[[13,3]]},"2244":{"position":[[12,3]]},"2246":{"position":[[13,4]]},"2838":{"position":[[4,3]]},"3881":{"position":[[8,3]]}}}],["url",{"_index":687,"t":{"1374":{"position":[[25,3]]},"3038":{"position":[[5,3]]}}}],["us",{"_index":246,"t":{"566":{"position":[[0,5]]},"1021":{"position":[[0,5]]},"1023":{"position":[[0,5]]},"1099":{"position":[[0,3]]},"1144":{"position":[[41,5]]},"1148":{"position":[[35,3]]},"1158":{"position":[[10,3]]},"1194":{"position":[[38,4]]},"1229":{"position":[[6,3]]},"1250":{"position":[[9,3]]},"1280":{"position":[[9,3]]},"1349":{"position":[[60,4]]},"1358":{"position":[[28,5]]},"1360":{"position":[[28,5]]},"1404":{"position":[[6,3]]},"1418":{"position":[[9,3],[38,5]]},"1432":{"position":[[10,3]]},"1443":{"position":[[6,3]]},"1461":{"position":[[10,3]]},"1467":{"position":[[24,5]]},"1593":{"position":[[14,5]]},"1595":{"position":[[14,5]]},"1597":{"position":[[14,5]]},"1889":{"position":[[0,5]]},"1891":{"position":[[0,5]]},"1894":{"position":[[0,5]]},"1896":{"position":[[0,5]]},"2014":{"position":[[0,5]]},"2034":{"position":[[18,3]]},"2433":{"position":[[0,5]]},"2486":{"position":[[44,5]]},"2767":{"position":[[6,3]]},"2769":{"position":[[15,4]]},"2962":{"position":[[15,4]]},"2984":{"position":[[6,3]]},"2986":{"position":[[41,3]]},"2988":{"position":[[67,4]]},"3317":{"position":[[16,3]]},"3424":{"position":[[0,5]]},"3437":{"position":[[22,3]]},"3764":{"position":[[17,3]]}}}],["usag",{"_index":352,"t":{"757":{"position":[[6,5]]},"900":{"position":[[21,5]]},"902":{"position":[[21,5]]},"2057":{"position":[[8,5]]},"2118":{"position":[[13,5]]},"2136":{"position":[[0,5]]},"2210":{"position":[[0,5]]},"2250":{"position":[[8,5]]},"2863":{"position":[[4,5]]}}}],["usb",{"_index":593,"t":{"1229":{"position":[[10,3]]},"2767":{"position":[[10,3]]},"3077":{"position":[[18,3]]}}}],["valid",{"_index":48,"t":{"142":{"position":[[6,10]]},"144":{"position":[[7,10]]},"146":{"position":[[5,10]]},"216":{"position":[[59,5]]},"348":{"position":[[0,8]]},"790":{"position":[[0,8]]},"967":{"position":[[20,5]]},"2381":{"position":[[0,10]]},"2644":{"position":[[12,8]]},"3036":{"position":[[10,10]]},"4088":{"position":[[12,8]]}}}],["validate_keyring_passphras",{"_index":380,"t":{"790":{"position":[[0,27]]}}}],["valu",{"_index":168,"t":{"393":{"position":[[0,5]]},"843":{"position":[[9,6]]},"861":{"position":[[4,5]]},"1152":{"position":[[7,5]]},"1345":{"position":[[48,5]]},"2012":{"position":[[24,5]]},"2020":{"position":[[14,6]]},"2543":{"position":[[21,6]]},"3799":{"position":[[9,6]]},"3821":{"position":[[4,5]]}}}],["variabl",{"_index":240,"t":{"548":{"position":[[14,9]]},"1225":{"position":[[48,8]]},"2962":{"position":[[0,8]]},"3482":{"position":[[15,9]]},"3483":{"position":[[6,9]]}}}],["variou",{"_index":1070,"t":{"2988":{"position":[[43,7]]}}}],["vc",{"_index":791,"t":{"1656":{"position":[[8,2]]},"2594":{"position":[[7,2]]},"2596":{"position":[[16,2]]},"2598":{"position":[[9,2]]},"2606":{"position":[[7,2]]},"2608":{"position":[[16,2]]},"2610":{"position":[[9,2]]},"3582":{"position":[[0,2]]},"3584":{"position":[[0,2]]},"3586":{"position":[[0,2]]},"3588":{"position":[[0,2]]},"3590":{"position":[[0,2]]},"3592":{"position":[[0,2]]},"3594":{"position":[[0,2]]}}}],["vc_add_proof",{"_index":1209,"t":{"3582":{"position":[[0,13]]}}}],["vc_get",{"_index":1210,"t":{"3584":{"position":[[0,6]]}}}],["vc_get_list",{"_index":1211,"t":{"3586":{"position":[[0,11]]}}}],["vc_get_proofs_for_root",{"_index":1212,"t":{"3588":{"position":[[0,22]]}}}],["vc_mint",{"_index":1213,"t":{"3590":{"position":[[0,7]]}}}],["vc_revok",{"_index":1215,"t":{"3594":{"position":[[0,9]]}}}],["vc_spend",{"_index":1214,"t":{"3592":{"position":[[0,8]]}}}],["vdf",{"_index":22,"t":{"87":{"position":[[3,3]]},"1134":{"position":[[10,3]]},"1533":{"position":[[26,4]]},"2293":{"position":[[4,3]]},"2295":{"position":[[19,3]]},"2710":{"position":[[12,3]]},"2712":{"position":[[16,3]]},"2714":{"position":[[16,3]]}}}],["verif",{"_index":108,"t":{"228":{"position":[[15,12]]}}}],["verifi",{"_index":433,"t":{"873":{"position":[[0,6]]},"1434":{"position":[[19,6]]},"1441":{"position":[[9,6]]},"1531":{"position":[[4,10]]},"1977":{"position":[[0,9]]},"2114":{"position":[[0,6]]},"2757":{"position":[[0,6]]},"3064":{"position":[[0,9]]},"3839":{"position":[[0,6]]},"3841":{"position":[[0,6]]},"4071":{"position":[[0,6]]}}}],["verify_off",{"_index":1316,"t":{"3839":{"position":[[0,12]]}}}],["verify_proof",{"_index":432,"t":{"873":{"position":[[0,12]]},"3841":{"position":[[0,12]]}}}],["verify_signatur",{"_index":1403,"t":{"4071":{"position":[[0,16]]}}}],["verifysignatur",{"_index":1244,"t":{"3633":{"position":[[5,15]]}}}],["version",{"_index":360,"t":{"766":{"position":[[4,7]]},"1254":{"position":[[20,7],[53,7]]},"1437":{"position":[[45,8]]},"1439":{"position":[[5,8]]},"1887":{"position":[[13,7]]}}}],["versu",{"_index":966,"t":{"2556":{"position":[[4,6]]}}}],["video",{"_index":349,"t":{"753":{"position":[[0,5]]},"2992":{"position":[[20,5]]},"3124":{"position":[[0,5]]}}}],["view",{"_index":816,"t":{"1795":{"position":[[17,4]]},"2020":{"position":[[0,4]]},"2022":{"position":[[0,4]]}}}],["vmware",{"_index":901,"t":{"2318":{"position":[[3,6]]}}}],["volatil",{"_index":545,"t":{"1152":{"position":[[36,8]]}}}],["voltag",{"_index":1165,"t":{"3437":{"position":[[5,7]]}}}],["vote",{"_index":328,"t":{"678":{"position":[[4,4]]},"715":{"position":[[0,4]]},"735":{"position":[[0,4]]}}}],["vs",{"_index":42,"t":{"130":{"position":[[7,2]]},"136":{"position":[[10,2]]},"152":{"position":[[13,2]]},"395":{"position":[[14,2]]},"1140":{"position":[[5,2],[12,2],[20,2]]},"1799":{"position":[[12,2]]},"1801":{"position":[[15,2]]},"2771":{"position":[[7,2]]},"2879":{"position":[[4,2]]},"3220":{"position":[[6,2]]}}}],["wait",{"_index":1042,"t":{"2903":{"position":[[8,4]]}}}],["wallet",{"_index":73,"t":{"171":{"position":[[14,6]]},"173":{"position":[[13,7]]},"175":{"position":[[17,6]]},"177":{"position":[[18,6]]},"357":{"position":[[0,6]]},"768":{"position":[[4,6]]},"875":{"position":[[0,6]]},"919":{"position":[[11,6]]},"941":{"position":[[8,6]]},"947":{"position":[[8,6]]},"1017":{"position":[[10,6]]},"1075":{"position":[[9,6]]},"1077":{"position":[[10,6]]},"1097":{"position":[[9,6]]},"1099":{"position":[[13,6]]},"1242":{"position":[[31,6]]},"1246":{"position":[[15,6]]},"1279":{"position":[[0,6]]},"1290":{"position":[[10,6],[54,6]]},"1296":{"position":[[24,6]]},"1298":{"position":[[13,6]]},"1300":{"position":[[127,6]]},"1302":{"position":[[53,6]]},"1306":{"position":[[52,6]]},"1310":{"position":[[10,6]]},"1312":{"position":[[12,6]]},"1314":{"position":[[24,6]]},"1318":{"position":[[57,6]]},"1343":{"position":[[40,6]]},"1347":{"position":[[42,7]]},"1349":{"position":[[48,6],[105,7]]},"1370":{"position":[[16,6]]},"1414":{"position":[[30,6]]},"1449":{"position":[[55,6]]},"1497":{"position":[[18,6]]},"1516":{"position":[[0,6]]},"1642":{"position":[[32,6]]},"1644":{"position":[[42,6]]},"1928":{"position":[[15,6]]},"2043":{"position":[[13,6]]},"2045":{"position":[[14,6]]},"2214":{"position":[[16,6]]},"2230":{"position":[[13,6]]},"2232":{"position":[[14,6]]},"2893":{"position":[[32,6]]},"2935":{"position":[[46,6]]},"3237":{"position":[[15,6]]},"3535":{"position":[[9,6]]},"3770":{"position":[[40,7]]},"3843":{"position":[[0,6]]},"3893":{"position":[[8,7]]},"3895":{"position":[[8,6]]},"3994":{"position":[[0,6]]},"4011":{"position":[[4,6]]},"4013":{"position":[[0,6]]},"4014":{"position":[[11,6]]},"4016":{"position":[[4,7]]},"4018":{"position":[[0,6]]},"4051":{"position":[[4,6]]},"4053":{"position":[[4,6]]},"4106":{"position":[[4,6]]},"4109":{"position":[[4,6]]},"4112":{"position":[[5,6]]},"4121":{"position":[[3,6]]}}}],["wallet_log_in",{"_index":434,"t":{"875":{"position":[[0,13]]},"3843":{"position":[[0,13]]}}}],["walletbal",{"_index":1254,"t":{"3656":{"position":[[0,13]]}}}],["walletconnect",{"_index":1304,"t":{"3757":{"position":[[10,13]]},"3761":{"position":[[10,13]]},"3764":{"position":[[30,13]]},"3766":{"position":[[5,13]]},"3768":{"position":[[31,13]]},"3770":{"position":[[8,13]]}}}],["walletinfo",{"_index":1247,"t":{"3638":{"position":[[0,10]]}}}],["wallettyp",{"_index":1248,"t":{"3640":{"position":[[0,10]]}}}],["want",{"_index":558,"t":{"1172":{"position":[[9,4]]},"1333":{"position":[[35,4]]}}}],["warp",{"_index":67,"t":{"167":{"position":[[4,4]]}}}],["wear",{"_index":614,"t":{"1275":{"position":[[13,4]]}}}],["web",{"_index":779,"t":{"1597":{"position":[[29,3]]},"1891":{"position":[[15,3]]}}}],["websit",{"_index":750,"t":{"1514":{"position":[[13,7]]}}}],["websocket",{"_index":1095,"t":{"3146":{"position":[[0,10]]}}}],["weight",{"_index":974,"t":{"2617":{"position":[[0,6]]},"2678":{"position":[[17,6]]},"2680":{"position":[[17,6]]}}}],["wes20",{"_index":758,"t":{"1533":{"position":[[19,5]]}}}],["whenev",{"_index":605,"t":{"1256":{"position":[[46,8]]}}}],["which_pubkey",{"_index":284,"t":{"624":{"position":[[0,13]]}}}],["whole",{"_index":881,"t":{"2194":{"position":[[0,5]]}}}],["win",{"_index":499,"t":{"996":{"position":[[18,3]]},"1225":{"position":[[76,3]]},"1265":{"position":[[31,3]]},"1273":{"position":[[42,7]]},"3359":{"position":[[29,3]]}}}],["window",{"_index":143,"t":{"331":{"position":[[0,7]]},"1306":{"position":[[74,7]]},"1449":{"position":[[65,7]]},"1461":{"position":[[55,7]]},"2164":{"position":[[11,7]]},"3371":{"position":[[0,7]]},"3876":{"position":[[7,7]]}}}],["withdraw",{"_index":827,"t":{"1837":{"position":[[0,10]]},"2120":{"position":[[0,10]]}}}],["won",{"_index":945,"t":{"2478":{"position":[[33,3]]}}}],["word",{"_index":652,"t":{"1318":{"position":[[18,4]]}}}],["work",{"_index":12,"t":{"33":{"position":[[16,4]]},"555":{"position":[[24,4]]},"563":{"position":[[16,4]]},"1003":{"position":[[31,7]]},"1188":{"position":[[42,4]]},"1198":{"position":[[36,4]]},"1246":{"position":[[30,4]]},"1398":{"position":[[17,4]]},"3378":{"position":[[6,7]]}}}],["workload",{"_index":109,"t":{"230":{"position":[[8,8]]},"236":{"position":[[17,9]]}}}],["workstat",{"_index":1031,"t":{"2793":{"position":[[0,11]]}}}],["write",{"_index":765,"t":{"1577":{"position":[[10,7]]},"1578":{"position":[[11,7]]},"1583":{"position":[[4,7]]},"1718":{"position":[[0,7]]},"1738":{"position":[[0,7]]}}}],["written",{"_index":1055,"t":{"2956":{"position":[[53,7]]}}}],["wrote",{"_index":1059,"t":{"2960":{"position":[[29,5]]}}}],["wscat",{"_index":351,"t":{"757":{"position":[[0,5]]}}}],["x",{"_index":956,"t":{"2527":{"position":[[7,1]]},"2543":{"position":[[19,1]]},"2982":{"position":[[40,1]]}}}],["xch",{"_index":518,"t":{"1103":{"position":[[10,3]]},"1138":{"position":[[8,3]]},"1140":{"position":[[8,3]]},"1265":{"position":[[35,3]]},"1362":{"position":[[24,3]]},"1392":{"position":[[44,3]]},"2895":{"position":[[21,3]]},"2929":{"position":[[16,3]]}}}],["xxxxxxxx",{"_index":648,"t":{"1312":{"position":[[50,8]]}}}],["y",{"_index":1068,"t":{"2982":{"position":[[73,1]]}}}],["yaml",{"_index":875,"t":{"2158":{"position":[[25,4]]}}}],["z",{"_index":1069,"t":{"2982":{"position":[[91,1]]}}}],["zero",{"_index":662,"t":{"1326":{"position":[[38,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":1,"t":"In this lesson, we talk about Chia Asset Tokens, and how they can be used.","s":"CATs","u":"/academy-cat/","p":1},{"i":15,"t":"This lesson is an overview of DIDs.","s":"DIDs","u":"/academy-did/","p":15},{"i":29,"t":"Welcome to Chia Academy, the scholarly hub for delving deep into Chia blockchain technology. In an age characterized by rapid digital transformation, this institution offers a comprehensive exploration of the Chia blockchain, dissecting its technical intricacies, real-world applications, and the nuances of its secure data handling. As a Chia Academy student, you will dive into the core concepts and functionalities of the Chia blockchain.","s":"Academy Home","u":"/academy-home/","p":29},{"i":35,"t":"In this lesson, we talk about what an NFT is, and some examples of how it can be used.","s":"NFTs","u":"/academy-nft/","p":35},{"i":49,"t":"Puzzle hashes in Chia are 32-byte values. These can be displayed in hex, but this can lead to errors due to typos, and a poor user experience. Therefore, Chia displays puzzle hashes in a custom format called an address. The encoding scheme used is bech32m.","s":"Chia Burn Address","u":"/addresses/","p":49},{"i":51,"t":"In this lesson, we talk about Chia Offers and how they enables safe peer-to-peer trading.","s":"Offers","u":"/academy-offers/","p":51},{"i":65,"t":"chia-architecture","s":"Architecture Overview","u":"/architecture-overview/","p":65},{"i":67,"t":"The lesson pages in Chia Academy are thoughtfully designed to enhance the learning experience for students. Each lesson is organized in a user-friendly and visually appealing manner. The structure typically includes:","s":"Academy Overview","u":"/academy-overview/","p":67},{"i":85,"t":"Reference","s":"ASICs HW VDF","u":"/asic-cli/","p":85},{"i":95,"t":"Full Block","s":"Block Format","u":"/block-format/","p":95},{"i":108,"t":"In this lesson, we review the basics of block formation including the farmers role in validating transactions, forming blocks, and managing the mempool.","s":"How New Blocks are Formed","u":"/block-formation-basics/","p":108},{"i":122,"t":"In Chia, the issuance schedule, also referred to as the block reward schedule, determines how many XCH get created with every block that gets farmed on the network.","s":"Block Rewards","u":"/block-rewards/","p":122},{"i":134,"t":"Block validation in Chia is composed of two parts: header validation and body validation.","s":"Block Validation","u":"/block-validation/","p":134},{"i":148,"t":"This section will explain the different types of keys in the Chia network. It will also cover how the keys are generated, stored, and used. These systems are designed to be flexible enough to support many different configurations and pooling setups and to be resilient to various attacks.","s":"BLS Keys","u":"/bls-keys/","p":148},{"i":154,"t":"Intro","s":"CAT Admin CLI","u":"/cat-admin-cli/","p":154},{"i":164,"t":"Intro","s":"XCH Bridge Guide","u":"/bridge-guide/","p":164},{"i":183,"t":"This doc has been migrated to Check if Things are Working","s":"Check if Things are Working","u":"/check-if-things-are-working/","p":183},{"i":185,"t":"In this lesson, we discuss how the plot filter works, and what the benefits are of using one.","s":"Challenges & Plot Filters","u":"/challenges-plot-filters/","p":185},{"i":199,"t":"\"Is my farm working?\"","s":"Checking Farm Health","u":"/checking-farm-health/","p":199},{"i":218,"t":"The purpose of this page is to provide guidance on how to setup Chia keys for plotting, farming, receiving rewards and managing your wallet.","s":"Key Management","u":"/chia-key-management/","p":218},{"i":224,"t":"Jonmichael Hands, VP Storage, Chia Network. For comments and questions reach out to @LebanonJon on Discord, or @LebanonJon on Twitter","s":"Storage - Chia Farming Workload Analysis","u":"/chia-farming-workload/","p":224},{"i":256,"t":"The Chia protocol is composed of a few different sub-protocols. All protocol messages are sent encoded in Streamable format, using the networking protocol defined in the Networking page. The following documents go into depth into the messages sent by each type of service/node, and how they should be interpreted.","s":"Chia Protocol","u":"/chia-protocol/","p":256},{"i":258,"t":"In this lesson, we'll talk about why you might want to nest puzzles and how to set them up.","s":"Inner Puzzles","u":"/chialisp-inner-puzzle/","p":258},{"i":274,"t":"In this lesson, we review the basics of Chialisp including syntax & structure, inequalities and if statements, and setting up a development environment.","s":"Intro to Chialisp","u":"/chialisp-intro/","p":274},{"i":290,"t":"In this lesson, we go over how to secure coins using signatures.","s":"Signatures","u":"/chialisp-signatures/","p":290},{"i":306,"t":"In this lesson, we go over currying, hashing, and conditions, and submit and use our first Chia Smart Coin.","s":"Smart Coins","u":"/chialisp-smart-coin/","p":306},{"i":322,"t":"We'll start with a brief description of CLVM. For details on the inner workings of CLVM, see our CLVM reference.","s":"CLVM vs EVM","u":"/clvm-vs-evm/","p":322},{"i":326,"t":"This page should provide additional high-level documentation and explanation beyond just chia -h.","s":"CLI Commands Reference","u":"/cli/","p":326},{"i":367,"t":"Intro","s":"Clawback","u":"/clawback-cli/","p":367},{"i":381,"t":"Chia uses the Coin Set model of accounting, under which everything is a coin. When Chia wallets perform certain actions, they must select one or more coins to spend or reserve. (Coin selection is performed automatically by the software; the wallet's user is not involved.)","s":"Coin Selection","u":"/coin-selection/","p":381},{"i":383,"t":"In any given blockchain, one of the most fundamental questions is, \"How do we keep track of the state of the whole system?\" Bitcoin uses the Unspent Transaction Output (UTXO) model. Ethereum, along with many other blockchains, use the account model. Chia uses the coin set model, which is similar to UTXO.","s":"Coin Set Intro","u":"/coin-set-intro/","p":383},{"i":401,"t":"In the account model used in many blockchains such as Ethereum, Solana and Algorand, balances are kept in accounts. These are permanent data structures which do not get destroyed when they send funds.","s":"Coin Set vs Account Model","u":"/coin-set-vs-account/","p":401},{"i":423,"t":"The UTXO and coin set models of accounting are very similar and are often used interchangeably. This is fine in most contexts; coin set is based on UTXO, and there is a much larger difference between the coin set and account models. However, there are a few key differences, which we'll discuss in this section.","s":"Coin Set vs UTXO Model","u":"/coin-set-vs-utxo/","p":423},{"i":431,"t":"When creating smart coins, security concerns should be at the front of your mind. The language is specifically designed to secure money on a network with no centralized authority to enforce rules. The only thing standing in the way of attackers and potentially large sums of money is how you design smart coins.","s":"Security","u":"/coin-set-security/","p":431},{"i":445,"t":"This page has been moved. A comprehensive list of Chialisp conditions is now available on our site dedicated to Chialisp:","s":"Conditions","u":"/conditions/","p":445},{"i":447,"t":"In this lesson, we dive into the coinset model basics and learn what it means to spend a coin in Chia.","s":"Coin-Set Model Intro","u":"/coinset-basics/","p":447},{"i":461,"t":"Cost is a unit of measurement that represents resources expended to record a transaction in a block. It is a sum of a measure of computing power required to execute the programs within it, plus the physical drive space (bytes) required to store data on each node's machine.","s":"Costs","u":"/coin-set-costs/","p":461},{"i":483,"t":"Safety","s":"Analysis","u":"/consensus-analysis/","p":483},{"i":494,"t":"The Chia consensus algorithm relies on timelords running VDFs for periods of time called sub-slots, which are adjusted periodically (and automatically) to take around 10 minutes. During every sub-slot, challenges are released by timelords, and a sort of mini lottery starts, where farmers check their plots for proofs of space. When farmers find a proof of space that qualifies, they broadcast it to the network.","s":"Challenges","u":"/consensus-challenges/","p":494},{"i":498,"t":"In this lesson, we review the basics of consensus, the process by which to determine the true state of a blockchain.","s":"How Chia Consensus Works","u":"/consensus-basics/","p":498},{"i":512,"t":"Majority Attack","s":"Attacks and Countermeasures","u":"/consensus-attacks/","p":512},{"i":535,"t":"In the previous diagrams, there is no place for farmers to specify their rewards, since all blocks are canonical.","s":"Foliage","u":"/consensus-foliage/","p":535},{"i":539,"t":"The following table is a comprehensive list of all forks (planned and activated) on Chia's blockchain. It was last updated on 2024-09-23.","s":"Forks","u":"/consensus-forks/","p":539},{"i":541,"t":"This section is meant to provide a high level overview of Chia's consensus. If you are interested in implementing a new full node, we recommend that you review the source code in order to understand in depth how the consensus is implemented. If you have further questions, feel free to reach out to us on Discord.","s":"Consensus Introduction","u":"/consensus-intro/","p":541},{"i":543,"t":"Figure 7: multiple blocks. Sp1 = signage point 1","s":"Multiple Blocks","u":"/consensus-multiple-blocks/","p":543},{"i":545,"t":"0.1 Important Constants","s":"0 - Constants, Variables and Notation","u":"/constants-variables-notation/","p":545},{"i":552,"t":"What is a Cryptocurrency?","s":"Intro to Cryptocurrencies","u":"/cryptocurrency-intro/","p":552},{"i":565,"t":"Using GitHub","s":"Using Github for Chia Contributions","u":"/contribution/using-github/","p":565},{"i":580,"t":"Chia Network Inc's prefarm is secured by a complex set of custodial rules. This document describes how to use the custody tool to audit the prefarm configuration. A moderate level of technical proficiency is probably needed to understand the details. For a high-level overview of the prefarm custody wallets, see our blog post.","s":"Prefarm Audit Tutorial","u":"/custody/prefarm-audit-tutorial/","p":580},{"i":588,"t":"Intro","s":"Custody Tool","u":"/custody-tool/","p":588},{"i":641,"t":"DAOs are currently under development. Be sure to update to the latest Chia version prior to using the DAO primitive.","s":"DAO Known Issues","u":"/dao-known-issues/","p":641},{"i":649,"t":"Chia DAOs are currently an alpha primitive. This means that DAOs are not yet ready for production use, but you can still test them on either a simulator or a testnet. We recommend against creating DAOs with this primitive on mainnet!","s":"DAO RPCs","u":"/dao-rpc/","p":649},{"i":680,"t":"This document contains a comprehensive reference of Chia DAO CLI commands and options.","s":"DAO CLI","u":"/dao-cli/","p":680},{"i":717,"t":"Chia DAOs are currently an alpha primitive. This means that DAOs are not yet ready for production use, but you can still test them on either a simulator or a testnet. We recommend against creating DAOs with this primitive on mainnet!","s":"DAO CLI Guide","u":"/dao-cli-guide/","p":717},{"i":745,"t":"Welcome to the Chia Network Developer Guides hub! Your gateway to mastering the intricacies of Chia's blockchain and smart transaction platform. Whether you're a seasoned developer, a blockchain enthusiast, or just stepping into the world of decentralized technologies, our documentation is crafted to empower you with knowledge and tools for navigating the Chia ecosystem. From mastering the basics of Chialisp programming to exploring advanced primitives, our guides cover a spectrum of topics designed to elevate your development skills.","s":"Dev Guides Home","u":"/dev-guides-home/","p":745},{"i":755,"t":"This document provides a comprehensive reference to Chia's Daemon RPC API.","s":"Daemon RPC","u":"/daemon-rpc/","p":755},{"i":828,"t":"This page includes a comprehensive list of Chia's Command Line Interface commands for interacting with the DataLayer.","s":"DataLayer CLI","u":"/datalayer-cli/","p":828},{"i":877,"t":"This document is a comprehensive listing of CLI commands for interacting with Chia DIDs.","s":"DID CLI","u":"/did-cli/","p":877},{"i":898,"t":"Welcome to the official documentation site for Chia Network! Here, you'll find a comprehensive resource that guides you through the diverse and innovative world of Chia, a blockchain and smart transaction platform. Whether you're a seasoned developer, a blockchain enthusiast, or someone just beginning to explore the possibilities of decentralized technologies, our documentation is designed to empower you with the knowledge and tools needed to navigate the Chia ecosystem.","s":"Chia Docs Home","u":"/docs-home/","p":898},{"i":910,"t":"Sub-epoch: Sub-epoch N starts when sub-epoch N-1 ends (except for 0th sub-epoch), and it ends at the end of the first slot where 384 \\* (N+1) blocks have been included since genesis.","s":"Epoch and Difficulty","u":"/epoch-and-difficulty/","p":910},{"i":914,"t":"Chia's farmers are analogous to Bitcoin's miners. They earn block rewards and fees by finding valid proofs of space inside their stored plots. The farmer processes don't maintain a copy of the blockchain, but they trust a full node to provide updates. The full node and farmer processes communicate with each other using the farmer protocol.","s":"Farmers","u":"/farmer-architecture/","p":914},{"i":916,"t":"Note about Windows command escaping","s":"DID RPC","u":"/did-rpc/","p":916},{"i":955,"t":"This document provides a comprehensive reference to Chia's Farmer RPC API.","s":"Farmer RPC","u":"/farmer-rpc/","p":955},{"i":985,"t":"As detailed in the plotting section, compressed plots are supported for both plotting and harvesting as of Chia version 2.0. Before you can harvest compressed plots, you need to inform your harvesters of the fact that they exist.","s":"Compressed Plot Farming","u":"/farming-compressed-plots/","p":985},{"i":992,"t":"Rewards in Chia scale with the amount of storage space (hence the name “Proof of Space”). Storage is a commodity and is relatively low power compared to other computing devices. In general, a Chia farmer expects to spend the majority of their investment on disk (generally 80-90%) and the rest on operational expenses. A less efficient farm may spend 50-80% of the cost on disks and the rest on operational expenditures (OpEx) like power and cooling. We can work backward and take into consideration the goals for setting up a Chia farm.","s":"Farming Hardware Considerations","u":"/farming-considerations/","p":992},{"i":994,"t":"Farming is the next step after plotting. Once a plot has been created, you have a chance of winning Chia as long as the file is being stored and the Chia farming software is running.","s":"Farming Basics","u":"/farming-basics/","p":994},{"i":1002,"t":"How to tell if Chia Farming is Working?","s":"Farming FAQ","u":"/farming-faq/","p":1002},{"i":1007,"t":"Another title for this:","s":"How to harvest on other machines that are not your main machine","u":"/farming-on-many-machines/","p":1007},{"i":1025,"t":"These instructions are tailored for Linux. A similar approach could likely be followed for MacOS.","s":"Dual Farming","u":"/farming/dual-farming-testnet-mainnet/","p":1025},{"i":1033,"t":"In this lesson, we go over the plotting process, and what happens when a Farmer wins a challenge.","s":"Farming Overview","u":"/farming-overview/","p":1033},{"i":1047,"t":"In this lesson, we learn how to set up the Chia client, sync our full node using a torrent file, and create our first plot to start farming.","s":"Creating your first Plot","u":"/first-plot/","p":1047},{"i":1059,"t":"The core of Chia's peer-to-peer system is composed of full nodes. Full nodes have several responsibilities:","s":"Full Nodes","u":"/full-node-architecture/","p":1059},{"i":1061,"t":"So you want to be a Chia farmer? You've come to the right place!","s":"Beginner's Guide to Farming","u":"/farming-guide/","p":1061},{"i":1091,"t":"So you want to set up and use a chia wallet? You've come to the right place!","s":"Wallet Guide","u":"/getting-started/wallet-guide/","p":1091},{"i":1121,"t":"Abstract","s":"Green Paper","u":"/green-paper-abstract/","p":1121},{"i":1126,"t":"This guide will act as a glossary for many of the concepts utilised in Chia.","s":"The Great Chia Glossary","u":"/glossary/","p":1126},{"i":1128,"t":"General","s":"FAQ","u":"/faq/","p":1128},{"i":1471,"t":"| Identifier | Publication |","s":"References","u":"/green-paper-references/","p":1471},{"i":1475,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-primer/intro/","s":"1. Intro to Chialisp","u":"/guides/","p":1475},{"i":1477,"t":"In this video, Adam Kelly discusses announcements and oracles.","s":"Announcements, Oracles","u":"/guides/announcements-oracles-video-series/","p":1477},{"i":1479,"t":"Concerns for developing chia apps","s":"Basic structure of an app using chia","u":"/guides/application-structure-tutorial/","p":1479},{"i":1483,"t":"The CAT standard allows you to create fungible tokens on the Chia blockchain. This step-by-step guide will go through creating your own CATs. For info on how CATs are built at the Chialisp level, see our CAT primitive page.","s":"CAT Creation Tutorial","u":"/guides/cat-creation-tutorial/","p":1483},{"i":1505,"t":"CAT1 reached its end of life at block 2,311,760, which occurred on July 26, 2022 at around 17:00 UTC. This was the final block where CAT1 was valid. At this block height, a snapshot was taken of all CAT1 tokens, along with the addresses of where they were being held. CAT1 issuers are now able to issue new CAT2 tokens and airdrop them to the same addresses where the CAT1 tokens were held.","s":"CAT2 Intro and FAQ","u":"/guides/cat2-intro/","p":1505},{"i":1518,"t":"In this section we sketch the main building blocks used in the $\\textsf$ blockchain: unique digital signatures, proofs of space [DFKP15; AAC+17] and verifiable delay functions [Pie19b; BBBF18; Wes20]. The definitions are not fully general, but instead tailored to the particular constructions of PoSpace from [AAC+17] and the VDFs [Pie19b; BBBF18; Wes20] based on sequential squaring.","s":"A - Building Blocks: PoSpace, VDFs and Signatures","u":"/green-paper-appendix/","p":1518},{"i":1537,"t":"CAT1 will reach its end of life at block 2,311,760, which will occur on July 26, 2022 at around 17:00 UTC.","s":"CAT1 Snapshot Generation","u":"/guides/cat2-snapshot/","p":1537},{"i":1549,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-condition-morphing/","s":"Condition Morphing","u":"/guides/chialisp-condition-morphing/","p":1549},{"i":1551,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-bls-signatures/","s":"5. BLS Signatures","u":"/guides/chialisp-bls-signatures/","p":1551},{"i":1553,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-currying/","s":"Currying","u":"/guides/chialisp-currying/","p":1553},{"i":1555,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-first-smart-coin/","s":"4. First Smart Coin","u":"/guides/chialisp-first-smart-coin/","p":1555},{"i":1557,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-inner-puzzles/","s":"Inner Puzzles","u":"/guides/chialisp-inner-puzzles/","p":1557},{"i":1559,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-testnet-setup/","s":"3. Testnet Setup","u":"/guides/chialisp-testnet-setup/","p":1559},{"i":1561,"t":"CAT1 will reach its end of life at block 2,311,760, which will occur on July 26, 2022 at around 17:00 UTC.","s":"CAT2 Token Reissuance","u":"/guides/cat2-issuance/","p":1561},{"i":1573,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-using-modules/","s":"2. Using Modules","u":"/guides/chialisp-using-modules/","p":1573},{"i":1575,"t":"In these videos, Chia developer Matt Hauff covers creating your first smart coin in Chia and running tests through the example of a piggybank smart coin.","s":"Coin Lifecycle and Testing","u":"/guides/coin-lifecycle-and-testing-video-series/","p":1575},{"i":1587,"t":"This tutorial teaches you how to spend a coin with any puzzle using RPC calls. We will be using the password-locked coin puzzle as an example.","s":"RPC Coin Spend","u":"/guides/coin-spend-rpc-tutorial/","p":1587},{"i":1601,"t":"Intro","s":"Clawback User Guide","u":"/guides/clawback-user-guide/","p":1601},{"i":1619,"t":"Intro","s":"Clawback Primitive Guide","u":"/guides/clawback-primitive-guide/","p":1619},{"i":1648,"t":"Intro","s":"CR-CAT Creation Tutorial","u":"/guides/cr-CAT-tutorial/","p":1648},{"i":1684,"t":"For this lesson you will want Chia installed and synced on testnet.","s":"CATs, Offers and NFTs","u":"/guides/crash-course/cats-offers-nfts/","p":1684},{"i":1708,"t":"For this section of the course, you will learn how to set up your development environment, write Chialisp code, and execute it on the command-line.","s":"Chialisp","u":"/guides/crash-course/chialisp/","p":1708},{"i":1728,"t":"For this section of the course, you will learn how to set up your development environment, write Chialisp code, and execute it on the command-line.","s":"Chialisp","u":"/guides/crash-course/intro-to-chialisp/","p":1728},{"i":1756,"t":"Puzzles all have something in common, they output a list of conditions. This tells the blockchain what you want to do with the coin.","s":"Inner Puzzles","u":"/guides/crash-course/inner-puzzles/","p":1756},{"i":1781,"t":"The $\\textsf$ network (chia.net) is a permissionless blockchain that was launched on March 19, 2021. $\\textsf{Chia}$ is a \"longest-chain\" blockchain like Bitcoin, but uses disk-space instead of computation as the main resource to achieve consensus. This holds the promise of being much more ecologically and economically sustainable and more decentralized than a proofs of work (PoW) based blockchain like Bitcoin could be. Figure 1 illustrates one slot of the $\\textsf{Chia}$ blockchain. The main aim of this document is to explain the rationale for this rather complicated design.","s":"1 - Introduction","u":"/green-paper-introduction/","p":1781},{"i":1807,"t":"This course is designed to give you an end-to-end introduction to Chia. We'll start off with a foundational understanding of the Chia blockchain. This includes what blockchains are for and what makes Chia different from other options. Once you understand the basics, we'll learn about plotting and farming. Finally, we'll cover many of the DeFi possibilities including fungible tokens (CATs), non-fungible tokens (NFTs), and writing custom coins in Chialisp.","s":"Introduction","u":"/guides/crash-course/introduction/","p":1807},{"i":1825,"t":"The majority of Chia Network Inc's prefarm is being held in a cold wallet, secured by a complex set of custodial rules. This document will describe the details of the custodial arrangement. A moderate level of technical proficiency is probably needed to understand the details. For a high-level overview of the custody wallet, see our blog post.","s":"Custody Tool Description","u":"/guides/custody-tool-description/","p":1825},{"i":1851,"t":"Everything on the Chia blockchain is a coin. They are often referred to as smart coins because every coin has a Chialisp program associated with it. That program, known as a puzzle, decides how and when the coin can be spent, and what happens when it is. NFTs, CATs, and standard transactions are all defined using puzzles. Another example of something you can do with Chialisp is lock up funds until a certain amount of time has elapsed.","s":"Smart Coins","u":"/guides/crash-course/smart-coins/","p":1851},{"i":1883,"t":"This tutorial teaches you how to lock a coin with a custom-made puzzle.","s":"Custom Puzzle Lock","u":"/guides/custom-puzzle-lock-tutorial/","p":1883},{"i":1902,"t":"So far we've been working with the Chia blockchain directly through the terminal using Chia Dev Tools the Chia command line interface.","s":"Chialisp and TypeScript","u":"/guides/crash-course/chialisp-and-typescript/","p":1902},{"i":1942,"t":"Intro","s":"DataLayer Permissions","u":"/guides/datalayer-permissions/","p":1942},{"i":1971,"t":"In the previous lesson we created our first coin and spent it. This was fun and a good exercise, but had some security problems. Specifically, we used a hashed password. This is very limited because once you spend that coin, your provided solution is revealed and your password can no longer be used securely for anything in the future.","s":"Signatures","u":"/guides/crash-course/signatures/","p":1971},{"i":1999,"t":"Chia developer Matthew Howard gives a high level overview of the concepts involved in developing applications on Chia.","s":"Developing Applications","u":"/guides/developing-applications-video-series/","p":1999},{"i":2001,"t":"In this video, Matt Hauff (aka @quexington), walks you through creating a multiple issuance Chia Asset Token (CAT). Watch the Single Issuance CAT video first before watching this one.","s":"Multiple Issuance CAT","u":"/guides/multiple-issuance-cat-video-series/","p":2001},{"i":2003,"t":"This document will guide you through the process of setting up Chia's DataLayer™ and running a few basic functions.","s":"DataLayer User Guide","u":"/guides/datalayer-user-guide/","p":2003},{"i":2028,"t":"This document will show you how to use Chia's NFT bulk minting tool.","s":"NFT Bulk Minting Tool","u":"/guides/nft-bulk-mint/","p":2028},{"i":2041,"t":"The next section of this tutorial will demonstrate how to create and use DIDs and NFTs on the CLI. If you wish to use RPCs instead, you can skip ahead to the RPC version.","s":"Minting NFTs With CLI","u":"/guides/nft-cli/","p":2041},{"i":2059,"t":"About This Document","s":"NFT Introduction","u":"/guides/nft-intro/","p":2059},{"i":2088,"t":"Intro","s":"Custody Tool User Guide","u":"/guides/custody-tool-user-guide/","p":2088},{"i":2128,"t":"Intro","s":"Observer Wallet Guide","u":"/guides/observer-wallet-guide/","p":2128},{"i":2138,"t":"This tutorial has been migrated to Wallet Guide.","s":"Offers tutorial (GUI)","u":"/guides/offers-gui-tutorial/","p":2138},{"i":2140,"t":"This video is an exercise in using fundamental Chialisp commands to print out the lyrics to the blockchain version of a classic song.","s":"Programming in Chialisp","u":"/guides/programming-chialisp-video-series/","p":2140},{"i":2142,"t":"The Chia Seeder & Crawler is a tool to keep track of the most reliable nodes on the Chia network. Each instance of the Chia Seeder maintains its own separate list of IP addresses of these nodes.","s":"Seeder User Guide","u":"/guides/seeder-user-guide/","p":2142},{"i":2160,"t":"In this video, Adam Kelly discusses security and checking arguments and signatures.","s":"Security, Arguments, Signing","u":"/guides/security-arguments-signing-video-series/","p":2160},{"i":2162,"t":"This tutorial covers Chia offers using the command line interface.","s":"Offers tutorial (CLI)","u":"/guides/offers-cli-tutorial/","p":2162},{"i":2200,"t":"This document will guide you through the process of setting up Chia's Simulator. For additional technical resources, see the following:","s":"Simulator User Guide","u":"/guides/simulator-user-guide/","p":2200},{"i":2226,"t":"In this video, Matt Hauff (aka @quexington), walks you through the one-time issuance of a Chia Asset Token (CAT).","s":"Single Issuance CAT","u":"/guides/single-issuance-cat-video-series/","p":2226},{"i":2228,"t":"The next section of this tutorial will demonstrate how to create and use DIDs and NFTs using RPCs. If you wish to use the CLI instead, head to the CLI section.","s":"Minting NFTs With RPC","u":"/guides/nft-rpc/","p":2228},{"i":2252,"t":"Singletons are a fundamental concept in Chia. In this video, Chia developer Matthew Howard explains what Singletons are and how they're involved in creating Ethereum-like contracts in Chia.","s":"Singleton Contracts","u":"/guides/singleton-contracts-video-series/","p":2252},{"i":2254,"t":"In this video, Chia developer Matt Hauff goes over what you need to set up so that you can start building in the next section: Coin Lifecycle and Testing.","s":"Tools and Setup","u":"/guides/tools-and-setup-video-series/","p":2254},{"i":2258,"t":"Welcome to the Chialisp tutorial series.","s":"Why Chia is Great","u":"/guides/why-chia-is-great-video-series/","p":2258},{"i":2260,"t":"Adam Kelly discusses managing state, coin creation, and announcements in this Chialisp video.","s":"State, Coins, Announcements","u":"/guides/state-coins-announcements-video-series/","p":2260},{"i":2262,"t":"Approximately every 9.375 seconds, the full node sends a new signage point to the farmer, who sends it to each harvester.","s":"Harvester Algorithm","u":"/harvester-algorithm/","p":2262},{"i":2264,"t":"Harvesters are individual machines controlled by a farmer. In a large farming operation, a farmer may be connected to many harvesters.","s":"Harvesters","u":"/harvester-architecture/","p":2264},{"i":2266,"t":"Coin Set Refresher","s":"State","u":"/guides/crash-course/state/","p":2266},{"i":2289,"t":"A key ingredient in longest-chain blockchains are hash-chains as discussed in §4.1 below. While $\\textsf$ also uses a hash-chain (for the foliage chain ${\\cal FC}$), for $\\textsf{Chia}$ we use a new chaining structure called a VDF chain defined in §4.2 below.","s":"4 - Hash and VDF chains","u":"/hash-and-vdf-chains/","p":2289},{"i":2297,"t":"Exposing a Chia daemon to the network is an advanced configuration. This allows other computers to communicate with the Chia daemon, including the ability to create transactions and send XCH.","s":"Setup","u":"/headless-node/","p":2297},{"i":2320,"t":"Harvester protocol source","s":"Harvester Protocol","u":"/harvester-protocol/","p":2320},{"i":2336,"t":"This document provides a comprehensive reference to Chia's Harvester RPC API.","s":"Harvester RPC","u":"/harvester-rpc/","p":2336},{"i":2352,"t":"Chia is a cryptocurrency and blockchain with smart transaction capabilities. It was designed from the ground up to make cryptocurrency easier to use (and harder to lose) than cash.","s":"Introduction to Chia","u":"/introduction/","p":2352},{"i":2362,"t":"K size with compression level","s":"K Sizes","u":"/k-sizes/","p":2362},{"i":2371,"t":"Light client support is another benefit of Proof of Space and Time (PoST) when compared with Proof of Stake (PoS). In PoST, all proofs can be verified objectively and cryptographically, while maintaining the requirement to control an actual resource at a certain point in time. With Chia's consensus, a candidate chain can be compared to an alternate chain objectively for weight, even after being offline for a long time, without relying on a central authority.","s":"Light Clients","u":"/light-clients/","p":2371},{"i":2375,"t":"This doc has been migrated to Logging Reference","s":"Logging Reference","u":"/logging-reference/","p":2375},{"i":2377,"t":"This page details the architecture of keys. For a more general overview of other components, refer to the Architecture Overview page.","s":"Architecture","u":"/key-architecture/","p":2377},{"i":2379,"t":"The mempool (or memory pool) is a collection of transactions stored by full nodes, usually in memory, before they are confirmed on the blockchain. The mempool is not dictated by the consensus rules; a farmer can change how their mempool functions and customize the rules without permission from other full nodes.","s":"Mempool","u":"/mempool/","p":2379},{"i":2399,"t":"Plots are stored in files. They can be moved from one directory to another, and even to another machine (the operating system doesn't matter). Back in 2021, plots took many hours to create with the original ChiaPoS plotter. A typical plotting process went something like this:","s":"Moving Plots","u":"/moving-plots/","p":2399},{"i":2414,"t":"Before we can outline the specification of the $\\textrm{{\\sf Chia}}$ blockchain and its rationale in more detail, we first must understand the general challenges one faces when constructing a PoSpace based blockchain and some of the relevant literature on how to address these challenges.","s":"2 - Longest-Chain Protocols from Efficient Proof Systems","u":"/longest-chain-protocols/","p":2414},{"i":2424,"t":"This page will go into the details of the various different ways to install Chia. If you already installed Chia as part of the Farming Guide, then feel free to skip ahead to the Plotting Basics page.","s":"Advanced Installation","u":"/installation/","p":2424},{"i":2460,"t":"This page will answer your most common questions. Expect it to grow with time.","s":"FAQ","u":"/new-proof-faq/","p":2460},{"i":2488,"t":"In general, the larger your farm, the more powerful your harvesters will need to be. However, keep in mind that one farm can be broken into multiple harvesters, so it it possible to run a large farm without any high-end equipment.","s":"Farming Requirements","u":"/new-proof-farming-requirements/","p":2488},{"i":2494,"t":"Shared networking protocol source","s":"Networking Protocol","u":"/networking-protocol/","p":2494},{"i":2512,"t":"New Matching Algorithm","s":"Technical Details","u":"/new-proof-details/","p":2512},{"i":2539,"t":"This section will go over some of the novel ideas for the proof of space and reasons why they are beneficial.","s":"Technical Overview","u":"/new-proof-technical-overview/","p":2539},{"i":2549,"t":"Memory","s":"Plotting Requirements","u":"/new-proof-plotting-requirements/","p":2549},{"i":2560,"t":"This table gives a rough timeline of what to expect with the new format. We will know the exact timeline (to within a few days) when we enter the locked in period.","s":"Timeline","u":"/new-proof-timeline/","p":2560},{"i":2562,"t":"New Proof Format","s":"Introduction","u":"/new-proof-introduction/","p":2562},{"i":2565,"t":"This doc has been migrated to Node Syncing","s":"Node Syncing","u":"/node-syncing/","p":2565},{"i":2567,"t":"Note about Windows command escaping","s":"Offer CLI","u":"/offer-cli/","p":2567},{"i":2578,"t":"Intro","s":"Verifiable Credentials Guide","u":"/guides/verifiable-credentials-guide/","p":2578},{"i":2612,"t":"Overflow Blocks","s":"Overflow Blocks and Weight","u":"/overflow-blocks/","p":2612},{"i":2619,"t":"Overview","s":"Password Protected Keys","u":"/passphrases-protected-keys/","p":2619},{"i":2637,"t":"Note about Windows command escaping","s":"Offer RPC","u":"/offer-rpc/","p":2637},{"i":2658,"t":"A plot ID is a 32-byte value that is used as a deterministic seed to create an entire plot. In other words, two plots with the same plot ID will create byte-identical plot files. Plot IDs are public values that get put into Proof of Space objects.","s":"Plot IDs","u":"/plot-ids/","p":2658},{"i":2660,"t":"So, what is the plot public key shown in the previous section? The plot public key can technically be any BLS public key. As long as the correct signatures are included in the block, full nodes will allow it. However, BLS allows us to combine many public keys into one, which allows native N-of-N signatures without full nodes noticing that a multi-signature is used. In the current versions of chia-blockchain, we use this to our advantage to increase security. Please note that these schemes are not consensus critical, and therefore some farmers might use different strategies for generating their public keys.","s":"Plot Public Keys","u":"/plot-public-keys/","p":2660},{"i":2668,"t":"Peer protocol source","s":"Peer Protocol","u":"/peer-protocol/","p":2668},{"i":2720,"t":"The Beginner's Guide to Farming will walk you through the steps required to install Chia and create your first plot. You are recommended to follow it prior to getting into the concepts introduced in this section, reviewing our plotting basics helps guide users from a high level perspective.","s":"Plotting Basics","u":"/plotting-basics/","p":2720},{"i":2736,"t":"This document is a comprehensive listing of CLI commands for creating plots from within Chia.","s":"Plotters","u":"/plotters-cli/","p":2736},{"i":2763,"t":"In 2024 we proposed a new proof format. Please see our frequently asked questions for the new format. For additional information, see our new proof format section.","s":"Plotting FAQ","u":"/plotting-faq/","p":2763},{"i":2775,"t":"New proof format","s":"Plotting Hardware","u":"/plotting-hardware/","p":2775},{"i":2797,"t":"When it comes to plotting and farming in Chia, there is no one-size-fits-all solution. Hopefully after reading this section, you will have the information to help you make an informed decision about how to set up your farm.","s":"Plotting Setup","u":"/plotting-setup/","p":2797},{"i":2805,"t":"To create plots, you must have:","s":"How To Plot","u":"/plotting-how-to/","p":2805},{"i":2822,"t":"Reference","s":"NFT CLI","u":"/nft-cli/","p":2822},{"i":2842,"t":"Several Chia plotters are now available. The output (a plot) will be nearly identical for a given k-value and compression level. However, the hardware requirements are different for each plotter.","s":"Plotting Software","u":"/plotting-software/","p":2842},{"i":2865,"t":"Pools allow farmers to smooth out their rewards by earning based on proof of space partials, as opposed to winning blocks.","s":"Pools","u":"/pool-architecture/","p":2865},{"i":2867,"t":"The Chia pool protocol has been designed for security and decentralization. It does not rely on any 3rd party, closed code, or trusted behavior.","s":"Summary","u":"/pool-protocol/","p":2867},{"i":2889,"t":"Due to the increasing network space (netspace), winning blocks in Chia is a very difficult task, and can take months even years for","s":"Pool Farming","u":"/pool-farming/","p":2889},{"i":2994,"t":"In this lesson, we review the Pooling protocol, and how it can benefit a Farmer starting out.","s":"Pools","u":"/pools/","p":2994},{"i":3008,"t":"In this lesson, we talk about what a primitive is, and how it can be used.","s":"Primitives Overview","u":"/primitives-overview/","p":3008},{"i":3022,"t":"This is the initial version of the Chia Pool Protocol. It is designed to be simple, and to be extended later. It relies on farmers having smart coins (referred to as plot NFTs in GUI + CLI) which allow them to switch between pools by making transactions on the blockchain. Furthermore, it decreases the reliance on pools for block production, since the protocol only handles distribution of rewards, and it protects against pools or farmers acting maliciously.","s":"11.2 Chia Pool Protocol 1.0 Specification","u":"/pool-protocol-specification/","p":3022},{"i":3058,"t":"A Proof of Space protocol is one in which:","s":"Proof of Space","u":"/proof-of-space/","p":3058},{"i":3066,"t":"A Verifiable Delay Function, also referred to as a Proof of Time or VDF, is a proof that a sequential function was executed a certain number of times.","s":"Proof of Time (VDFs)","u":"/proof-of-time/","p":3066},{"i":3070,"t":"Curious","s":"Reference Farming Hardware - Farming at Any Level","u":"/reference-farming-hardware/","p":3070},{"i":3085,"t":"In §2 we discussed how costless simulation opens attack vectors for double spending in longest-chain blockchains and how these are addressed in $\\textrm{{\\sf Chia}}$. To show security we assumed that a sufficient fraction of the resource is controlled by honest parties who follow the protocol rules. In reality it's unrealistic to assume that parties will behave altruistically, instead we need to argue that it's rational for parties to follow the protocol rules. Unfortunately costless simulation also makes this task much more challenging than in a PoW based system.","s":"3 - Rational Attackers","u":"/rational-attackers/","p":3085},{"i":3105,"t":"In this lesson, we learn the basic security implementations in Chia and how they protect users from bad actors.","s":"Chia Blockchain Security Intro","u":"/security-basics/","p":3105},{"i":3119,"t":"Chia Network","s":"References","u":"/references/","p":3119},{"i":3128,"t":"Serialization in Chia refers to how objects are converted into bytes for uses such as transmitting to other nodes, storing on disk, or hashing objects.","s":"Serialization Protocol","u":"/serialization-protocol/","p":3128},{"i":3140,"t":"The Chia node and services come with a JSON RPC API server that allows you to access information and control the services.","s":"RPC Overview","u":"/rpc/","p":3140},{"i":3154,"t":"Each sub-slot in both the challenge chain and the reward chain is divided into 64 smaller VDFs. Between each of these smaller VDFs is a point called a signage point. Timelords publish the VDF output and proof when they reach each signage point.","s":"Signage and Infusion Points","u":"/signage-and-infusion-points/","p":3154},{"i":3160,"t":"If you opt to create compressed plots, you will need to decide on the level of compression.","s":"Choosing a compression level","u":"/plotting-compression/","p":3160},{"i":3170,"t":"Intro","s":"Simulator RPC Reference","u":"/simulator-rpc/","p":3170},{"i":3192,"t":"In this Section we have a look at two closely related security properties of longest-chain blockchains, namely recovery from malicious majority (aka. 51% attacks) and security under dynamic availability. We'll discuss proofs of work, stake and space, for the latter two also looking at how adding VDFs changes the picture.","s":"6 - Recovering from 51% Attacks and Dynamic Availability","u":"/recovering-from-51-percent-attacks/","p":3192},{"i":3216,"t":"A spend bundle is a set of spends of multiple coins, which is usually submitted to full nodes for inclusion into the blockchain. In Bitcoin, the equivalent data structure would be the transaction.","s":"Spend Bundles","u":"/spend-bundles/","p":3216},{"i":3226,"t":"testnet11 is the only supported testnet. Older testnets may remain active, but Chia Network Inc. longer officially supports them.","s":"Testnets","u":"/testnets/","p":3226},{"i":3251,"t":"To have reproducible results the aim should be to limit caching effects. For that:","s":"FIO","u":"/storage-benchmarks/","p":3251},{"i":3261,"t":"Intro","s":"Simulator CLI Reference","u":"/simulator-cli/","p":3261},{"i":3279,"t":"The fastest plot creation is done completely in memory, but requires a server with a large amount of DRAM (256 GB for BladeBit CUDA, or 416 GB for BladeBit RAM). Most consumer motherboards don't support this much memory, so temporary storage must be used. This typically comes in the form of an SSD.","s":"SSD Endurance","u":"/ssd-endurance/","p":3279},{"i":3290,"t":"If we only used one VDF (for the reward chain), the inclusion or exclusion of blocks would allow control of the challenge for the next slot. This means that an attacker could try many different combinations of blocks, and choose the challenge that suits them best, to obtain more wins in the next slot.","s":"Three VDF Chains","u":"/three-vdf-chains/","p":3290},{"i":3294,"t":"A timelord keeps track of the current peak, which includes an infused block at a certain height, and signage points from the peak onward. A timelord might receive new blocks to infuse, new peaks (blocks which are already infused), or new signage points.","s":"Timelord Algorithm","u":"/timelord-algorithm/","p":3294},{"i":3296,"t":"1. General.","s":"Chia Academy Program and Contest Terms and Conditions","u":"/timelord-contest-rules/","p":3296},{"i":3327,"t":"In this lesson, we dive into the role that Timelords play in the consensus by using VDFs to generate challenges.","s":"What are Timelords","u":"/timelord-basics/","p":3327},{"i":3341,"t":"ASIC Timelord/Chia Academy Contest","s":"Timelord Contest Overview","u":"/timelord-contest/","p":3341},{"i":3365,"t":"This doc assumes you know how to use the CLI. Using the CLI is the best way to troubleshoot (and to do everything Chia too). The Installation page and the CLI Commands Reference page have useful info to get you familiar with the CLI.","s":"Check if Things are Working","u":"/troubleshooting/check-if-things-are-working/","p":3365},{"i":3386,"t":"Timelords support the network by creating sequential proofs of time (using a Verifiable Delay Function) and broadcasting them approximately every nine seconds. This provides \"deterministic randomness\", which is used to decide the winning proofs of space.","s":"Timelords","u":"/timelord-architecture/","p":3386},{"i":3400,"t":"This doc assumes you have chia installed and will overview both the CLI and GUI methods of identifying various keys.","s":"Locating Keys","u":"/troubleshooting/locating-keys/","p":3400},{"i":3412,"t":"DO NOT overclock ASICs, overclocking diminishes the life of the ASIC!","s":"Timelords","u":"/timelord-install/","p":3412},{"i":3443,"t":"Checking Timelord Logs","s":"Timelords","u":"/troubleshooting/timelords/","p":3443},{"i":3453,"t":"Forwarding port 8444 can solve many sync issues and it also helps improve Chia's overall network health.","s":"Node Syncing","u":"/troubleshooting/node-syncing/","p":3453},{"i":3465,"t":"Getting Things Set Up","s":"Using the Chia GUI","u":"/using-the-gui/","p":3465},{"i":3480,"t":"In this section we finally outline the design of the $\\textsf$ blockchain as illustrated in Figure 1 from its basic building blocks PoSpace, VDFs and Signatures. These primitives are specified in §A. We'll use greek letters $\\sigma$ to denote PoSpace, $\\tau$ for VDFs and $\\mu$ for Signatures.","s":"5 - The Chia\\textsf{Chia}Chia Blockchain","u":"/the-chia-blockchain/","p":3480},{"i":3501,"t":"This document is a comprehensive listing of CLI commands for interacting with Chia VCs.","s":"Verifiable Credentials","u":"/vc-cli/","p":3501},{"i":3516,"t":"Wallets can communicate with full nodes through the wallet protocol. This is similar to Bitcoin's SPV protocol: it allows verification of transactions and block weight, without the bandwidth and CPU requirements of full nodes.","s":"Wallets","u":"/wallet-architecture/","p":3516},{"i":3518,"t":"Wallet protocol source","s":"Wallet Protocol","u":"/wallet-protocol/","p":3518},{"i":3579,"t":"Note about Windows command escaping","s":"Verifiable Credentials RPCs","u":"/vc-rpc/","p":3579},{"i":3598,"t":"Commands","s":"CAT Commands","u":"/walletconnect-cats/","p":3598},{"i":3608,"t":"WalletConnect is a communications protocol that allows decentralized applications (dApps) and wallets to securely interact with each other. Chia supports WalletConnect and exposes various RPCs for requesting wallet actions from a web application.","s":"General Commands","u":"/walletconnect-commands/","p":3608},{"i":3658,"t":"Intro","s":"WalletConnect Developer Guide","u":"/walletconnect-developer-guide/","p":3658},{"i":3663,"t":"This document is a reference for Chia's wallet CLI commands. The following wallet commands are documented on their own dedicated pages:","s":"Wallet CLI","u":"/wallet-cli/","p":3663},{"i":3704,"t":"Commands","s":"DID Commands","u":"/walletconnect-dids/","p":3704},{"i":3710,"t":"Commands","s":"Offer Commands","u":"/walletconnect-offers/","p":3710},{"i":3735,"t":"Commands","s":"NFT Commands","u":"/walletconnect-nfts/","p":3735},{"i":3752,"t":"Intro","s":"WalletConnect User Guide","u":"/walletconnect-user-guide/","p":3752},{"i":3772,"t":"Note about Windows command escaping","s":"DataLayer RPC","u":"/datalayer-rpc/","p":3772},{"i":3854,"t":"Chia blockchain nodes consist of several components that each handle different aspects of farming, harvesting, the wallet and general management of a node. Each component creates entries in a single log file debug.log.","s":"Logging Reference","u":"/troubleshooting/logging-reference/","p":3854},{"i":3878,"t":"Note about Windows command escaping","s":"NFT RPC","u":"/nft-rpc/","p":3878},{"i":3911,"t":"The full node RPC API is exposed by the full node, by default on port 8555. This port must not be exposed publicly for","s":"Full Node RPC","u":"/full-node-rpc/","p":3911},{"i":3973,"t":"This document provides a comprehensive reference to Chia's Wallet RPC API (minus the DID and NFT RPCs, which are documented on their own dedicated pages).","s":"Wallet RPC","u":"/wallet-rpc/","p":3973}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,3.05,1,4.821,2,1.183,3,5.408,4,4.604,5,2.105]],["t/15",[0,3.451,6,4.815,7,5.75]],["t/29",[2,1.264,8,2.193,9,3.72,10,2.809,11,2.523,12,2.809,13,2.809,14,2.342,15,2.334,16,2.809,17,2.809,18,2.809,19,2.523,20,2.809,21,2.809,22,2.334,23,1.577,24,2.334,25,2.809,26,2.081,27,2.523,28,2.809,29,2.334,30,2.334,31,2.809,32,1.577,33,2.193,34,2.334,35,2.523,36,2.334,37,2.523,38,2.081,39,1.987]],["t/35",[0,3.173,1,5.015,5,2.19,40,4.427,41,5.286]],["t/49",[2,0.969,5,1.137,42,3.618,43,3.947,44,3.156,45,2.744,46,2.92,47,5.329,48,3.514,49,3.514,50,3.514,51,3.156,52,3.514,53,3.514,54,2.603,55,3.156,56,3.156,57,2.744,58,2.385,59,2.603,60,2.603,61,3.156,62,3.156,63,3.514]],["t/51",[0,2.733,1,4.319,2,1.06,22,4.845,64,5.831,65,5.831,66,6.338,67,5.831]],["t/65",[2,1.4,68,6.917]],["t/67",[0,2.809,2,0.748,9,3.421,35,3.697,54,3.049,55,3.697,69,2.312,70,4.117,71,2.443,72,4.117,73,2.794,74,2.518,75,4.117,76,4.117,77,4.117,78,4.117,79,4.117,80,3.049,81,3.421,82,2.6]],["t/85",[83,4.114]],["t/95",[84,4.571,85,3.539]],["t/108",[0,2.329,58,3.373,82,3.138,85,3.148,86,3.515,87,2.949,88,2.653,89,4.462,90,3.879,91,2.866,92,4.462,93,3.879,94,4.462]],["t/122",[2,0.877,83,2.46,85,3.085,95,4.01,96,6.713,97,3.048,98,4.334,99,2.864,100,4.334,101,2.218,102,4.01,103,2.641,104,2.356]],["t/134",[2,1.024,85,2.59,90,6.527,105,4.683,106,4.683,107,5.061,108,5.636,109,5.636]],["t/148",[2,0.681,5,1.213,71,2.225,99,2.225,104,1.83,110,1.911,111,3.115,112,3.534,113,3.367,114,3.798,115,2.777,116,2.225,117,2.545,118,2.777,119,3.749,120,3.749,121,2.545,122,3.115,123,2.652,124,3.115,125,3.749,126,2.927,127,2.652]],["t/154",[128,4.209]],["t/164",[128,4.209]],["t/183",[129,5.015,130,3.906,131,5.286,132,5.626,133,4.277]],["t/185",[0,2.831,5,1.954,133,3.815,134,3.95,135,2.831,136,6.041,137,5.019,138,3.392]],["t/199",[103,4.215,133,4.865]],["t/218",[2,0.931,69,2.875,93,3.998,97,3.234,103,2.802,114,3.476,124,4.255,135,2.399,139,5.12,140,3.132,141,5.12,142,4.598,143,2.954]],["t/224",[2,0.903,104,2.425,144,4.969,145,4.969,146,4.969,147,4.129,148,4.969,149,3.68,150,3.515,151,3.68,152,6.85,153,4.462,154,4.969]],["t/256",[2,0.613,5,1.091,58,2.29,61,3.029,69,1.894,74,2.063,104,2.521,105,2.803,112,2.13,113,3.029,155,3.95,156,2.633,157,2.633,158,5.165,159,5.165,160,3.373,161,2.803,162,2.29,163,1.391,164,2.29,165,3.029,166,3.029,167,1.719,168,3.373]],["t/258",[0,2.831,1,4.474,42,4.1,169,4.1,170,4.474,171,6.041,172,2.949,173,3.306]],["t/274",[0,2.399,80,3.793,82,3.234,86,3.622,87,3.039,172,2.499,173,2.802,174,2.499,175,5.12,176,5.12,177,5.12,178,3.039,179,4.255]],["t/290",[0,2.936,5,2.027,32,3.518,164,4.253,180,4.641,181,2.996,182,4.432]],["t/306",[0,2.475,2,0.96,5,1.708,43,3.912,164,3.585,180,3.912,181,2.525,183,4.743,184,4.123,185,4.743,186,3.336,187,3.336]],["t/322",[83,2.692,133,3.336,169,3.585,188,3.585,189,5.281,190,5.281,191,8.091,192,3.585,193,4.743,194,3.736]],["t/326",[2,1.024,69,3.164,140,3.447,163,2.324,195,4.683,196,3.825,197,3.447,198,5.636,199,5.636,200,5.636]],["t/367",[128,4.209]],["t/381",[2,0.954,5,1.113,54,2.55,138,1.933,143,3.026,172,1.68,181,3.399,201,2.55,202,2.687,203,2.86,204,2.86,205,5.246,206,2.55,207,3.091,208,5.246,209,2.336,210,2.336,211,3.442,212,3.091,213,3.091,214,1.552,215,2.86]],["t/383",[2,0.601,5,2.005,14,2.134,91,1.907,99,1.962,118,2.449,138,1.857,149,2.449,172,1.614,181,1.581,201,4.592,202,2.582,216,2.97,217,2.747,218,2.582,219,2.747,220,2.747,221,3.307,222,2.449,223,3.307,224,2.582,225,4.569,226,2.747,227,2.97,228,2.582]],["t/401",[5,1.437,14,1.864,33,3.469,80,3.291,99,2.637,201,3.291,202,4.945,226,3.692,229,3.99,230,4.443,231,4.443,232,4.443,233,4.443,234,4.443,235,4.443,236,3.692,237,3.99]],["t/423",[5,1.113,110,1.754,112,3.314,114,2.336,134,2.251,156,2.687,169,2.336,172,3.103,181,3.039,201,3.886,202,4.096,225,4.711,228,2.687,238,2.86,239,3.442,240,3.442,241,3.442,242,2.435,243,2.687,244,3.091,245,2.86]],["t/431",[32,2.992,71,3.163,101,1.615,104,1.715,127,2.486,132,2.92,181,2.548,187,3.366,246,3.156,247,3.514,248,3.156,249,3.514,250,2.92,251,5.329,252,3.156,253,3.156,254,3.514,255,2.603,256,3.514,257,2.92,258,3.514,259,2.744,260,3.156]],["t/445",[23,3.062,69,3.062,174,3.561,184,4.257,261,4.897,262,3.565,263,4.531,264,4.531,265,3.335,266,4.531]],["t/447",[0,2.641,2,1.024,36,4.683,73,3.825,87,3.345,181,2.694,201,4.174,210,3.825,267,5.636,268,4.4]],["t/461",[33,2.687,45,2.687,74,2.105,85,1.582,91,1.986,117,2.336,167,1.754,214,1.552,260,3.091,269,3.091,270,3.442,271,5.246,272,3.442,273,2.435,274,3.442,275,3.442,276,2.687,277,2.86,278,3.711,279,2.687,280,2.86,281,2.86,282,3.442,283,3.442,284,3.442,285,1.884,286,2.86]],["t/483",[287,8.072]],["t/494",[2,0.502,59,2.046,88,2.359,104,1.349,131,2.157,135,1.295,157,3.45,188,1.875,212,2.481,285,2.418,288,1.806,289,2.481,290,2.157,291,2.999,292,2.046,293,1.745,294,3.968,295,1.875,296,3.273,297,2.763,298,2.296,299,2.157,300,2.763,301,2.763,302,2.763,303,1.875,304,2.763,305,2.763,306,2.763,307,2.763,308,2.252,309,2.296,310,2.763,311,2.481]],["t/498",[0,2.733,14,2.446,86,4.125,87,3.461,98,5.237,220,4.845,288,3.813,312,4.125,313,5.831]],["t/512",[127,5.448,314,6.013]],["t/535",[85,2.776,88,3.225,97,3.815,315,5.019,316,6.041,317,5.019,318,5.425,319,6.041]],["t/539",[2,0.877,14,2.025,23,2.71,162,3.276,214,2.176,262,3.155,320,4.334,321,4.826,322,4.826,323,4.334,324,4.826,325,4.01,326,4.334,327,4.826,328,4.826]],["t/541",[2,0.613,6,2.205,84,2.002,86,2.386,110,1.719,140,2.063,149,2.498,150,2.386,151,2.498,153,3.029,165,3.029,167,1.719,196,2.29,197,2.063,214,1.521,288,3.377,329,3.373,330,3.373,331,4.639,332,2.063,333,2.633,334,2.498,335,2.633,336,3.373,337,2.498,338,3.373,339,3.029,340,3.029]],["t/543",[85,2.776,341,5.019,342,6.041,343,4.716,344,6.041,345,4.716,346,4.474,347,4.1]],["t/545",[347,4.789,348,6.336,349,7.055,350,7.055]],["t/552",[351,7.249]],["t/565",[5,2.491,352,7.702]],["t/580",[2,0.557,5,0.991,6,2.004,26,2.27,32,1.721,104,1.496,122,2.547,143,1.768,163,1.264,172,1.496,192,2.081,194,2.168,196,2.081,197,2.934,214,1.382,255,2.27,337,2.27,353,2.547,354,5.307,355,2.753,356,5.307,357,2.753,358,2.168,359,3.065,360,2.753,361,2.753,362,2.753,363,2.004,364,2.753,365,2.547]],["t/588",[128,4.209]],["t/641",[2,0.931,5,1.656,178,3.039,203,4.255,325,4.255,366,5.459,367,3.793,368,5.12,369,5.12,370,3.622,371,4.598,372,3.476]],["t/649",[2,0.767,5,1.365,101,1.939,268,3.295,333,3.295,366,5.598,367,3.126,372,4.143,373,3.79,374,3.79,375,3.507,376,3.79,377,3.295,378,3.295,379,3.126,380,3.507,381,3.79]],["t/680",[2,1.06,23,3.274,83,2.972,163,2.405,366,4.553,382,5.831,383,3.567,384,2.68,385,5.237]],["t/717",[2,0.767,5,1.365,101,1.939,268,3.295,333,3.295,366,5.598,367,3.126,372,4.143,373,3.79,374,3.79,375,3.507,376,3.79,377,3.295,378,3.295,379,3.126,380,3.507,381,3.79]],["t/745",[2,0.932,8,1.934,11,2.225,14,1.697,15,2.059,24,2.059,27,2.225,29,2.059,71,1.471,87,1.471,91,1.429,104,1.209,115,1.835,163,1.022,174,1.209,178,3.043,187,1.565,214,1.117,280,2.059,358,1.753,372,1.682,386,2.556,387,2.478,388,4.046,389,2.225,390,2.225,391,2.059,392,2.225,393,2.225,394,1.934,395,1.835,396,2.478,397,2.225,398,2.225,399,2.225,400,2.225,401,2.225,402,2.478,403,2.478,404,2.478,405,2.478]],["t/755",[2,1.06,23,3.274,83,2.972,140,3.567,163,2.405,214,2.629,406,5.237,407,3.567,408,4.125]],["t/828",[2,0.96,23,2.965,69,2.965,82,3.336,214,2.381,262,3.453,384,3.282,409,3.912,410,4.388,411,4.123,412,4.743]],["t/877",[2,1.098,7,4.716,23,3.392,163,2.491,262,3.95,383,3.695,384,2.776,411,4.716]],["t/898",[2,0.993,8,2.122,14,1.829,15,2.259,23,1.526,24,2.259,29,2.259,71,1.613,91,1.568,104,1.327,163,1.798,169,1.845,178,1.613,187,1.717,265,1.663,273,1.923,309,2.259,358,1.923,363,1.777,386,1.717,389,2.441,390,2.441,391,2.259,392,2.441,393,2.441,395,2.013,397,2.441,398,2.441,399,2.441,400,2.441,413,2.441,414,2.718,415,1.663,416,2.718,417,2.718,418,2.718,419,2.718,420,2.259]],["t/910",[82,2.368,85,1.723,157,5.796,186,2.368,188,2.545,296,2.777,347,3.798,421,7.423,422,6.012,423,4.735,424,3.749,425,3.749,426,3.749,427,3.749]],["t/914",[2,0.519,5,0.924,14,1.198,74,1.747,84,2.693,85,1.313,88,3.433,90,2.23,97,1.804,117,1.939,135,1.339,140,1.747,155,1.604,167,2.313,214,2.046,222,2.116,285,1.563,308,1.456,309,2.374,312,3.21,325,2.374,428,2.857,429,2.857,430,2.566,431,2.857,432,2.857,433,2.566,434,2.374,435,2.374,436,2.857,437,2.566,438,2.23]],["t/916",[384,3.242,439,4.789,440,4.991,441,4.991]],["t/955",[2,1.06,23,3.274,83,2.972,88,3.113,140,3.567,163,2.405,214,2.629,407,3.567,408,4.125]],["t/985",[2,0.73,110,2.048,121,2.728,135,3.598,192,2.728,348,3.609,363,2.627,370,2.842,442,4.598,443,3.339,444,4.733,445,2.842,446,3.137,447,3.137,448,4.018,449,4.018]],["t/992",[2,0.87,88,1.199,97,1.419,103,2.042,116,2.215,133,1.419,147,3.101,172,1.096,173,1.229,210,2.533,269,2.017,276,1.753,277,3.101,285,2.042,298,1.866,308,1.145,314,1.753,450,2.246,451,1.866,452,2.246,453,2.017,454,2.246,455,2.246,456,2.246,457,2.017,458,2.246,459,1.866,460,2.246,461,3.101,462,3.732,463,2.246,464,3.732,465,3.101,466,2.246,467,2.246,468,2.246,469,2.246,470,2.246,471,2.246,472,2.246,473,2.246,474,2.246,475,2.246]],["t/994",[2,1.151,101,2.042,103,3.466,117,3.016,135,2.968,213,3.99,292,3.291,394,3.469,476,3.291,477,3.692,478,4.443,479,3.143,480,3.692,481,3.291,482,3.291]],["t/1002",[2,1.282,103,3.861,133,4.456,483,6.336]],["t/1007",[484,6.013,485,7.702]],["t/1025",[162,4.253,228,4.892,486,6.266,487,5.627,488,6.266,489,6.266,490,6.266]],["t/1033",[0,2.733,88,3.113,135,2.733,164,3.958,180,4.319,303,3.958,312,4.125,479,4.125,491,5.237]],["t/1047",[0,2.139,2,0.83,5,1.476,73,3.098,84,2.709,101,2.097,103,2.498,135,2.139,167,2.326,172,2.228,173,2.498,186,2.883,188,3.098,481,3.381,492,4.099,493,3.563,494,4.564]],["t/1059",[2,0.931,37,4.598,66,5.81,84,4.15,105,4.255,118,3.793,167,3.564,214,2.309,495,4.255,496,5.12]],["t/1061",[2,1.139,88,3.346,170,4.641,317,5.206,497,5.206,498,4.641,499,5.627]],["t/1091",[2,1.024,5,1.823,143,3.251,170,4.174,172,2.751,173,3.084,317,4.683,497,4.683,498,4.174,499,5.061]],["t/1121",[500,8.072]],["t/1126",[2,1.139,38,4.641,99,3.719,386,3.958,501,5.627,502,6.266,503,6.266]],["t/1128",[116,4.791]],["t/1471",[504,6.917,505,6.4]],["t/1475",[128,2.939,130,3.251,163,2.324,174,4.08,265,3.447,506,3.685,507,3.685,508,5.636]],["t/1477",[134,4.256,509,4.111,510,5.408,511,5.408,512,5.845,513,6.509]],["t/1479",[2,1.282,178,4.187,246,6.336,514,7.055]],["t/1483",[2,0.697,4,2.713,14,1.609,69,2.153,101,2.615,164,2.603,174,1.872,194,2.713,197,2.346,372,2.603,386,2.422,394,4.443,415,2.346,515,5.56,516,3.444,517,2.422,518,3.444,519,3.444,520,3.835]],["t/1505",[4,3.822,60,3.189,85,2.483,90,2.088,150,1.892,227,2.402,263,2.223,299,2.088,332,1.636,423,1.892,445,1.892,482,1.981,521,5.639,522,2.088,523,2.223,524,2.223,525,2.223,526,2.223,527,2.223,528,2.223,529,2.088,530,2.223,531,2.223,532,2.223,533,2.402,534,2.675,535,2.675,536,3.866,537,2.675,538,2.402,539,2.675,540,2.675,541,2.402]],["t/1518",[5,0.924,14,1.198,19,2.566,39,2.021,85,1.313,110,1.456,116,1.696,182,2.021,242,2.021,285,1.563,293,1.804,308,1.456,487,2.566,529,3.543,542,2.857,543,2.566,544,2.374,545,2.23,546,2.857,547,2.857,548,4.538,549,2.23,550,2.374,551,4.538,552,4.538,553,4.538,554,2.857,555,2.857,556,2.116,557,2.857,558,2.566,559,2.374,560,2.374,561,2.857]],["t/1537",[85,2.156,150,3.319,299,3.663,423,3.319,445,3.319,521,3.898,522,3.663,523,3.898,524,3.898,525,3.898,526,3.898,527,3.898,528,3.898,529,3.663,530,3.898,531,3.898]],["t/1549",[130,3.251,163,2.324,174,4.08,184,4.4,265,3.447,506,3.685,507,3.685,562,5.636]],["t/1551",[130,3.251,163,2.324,174,4.08,182,3.986,265,3.447,506,3.685,507,3.685,563,5.061]],["t/1553",[130,3.364,163,2.405,174,4.149,183,5.237,265,3.567,506,3.813,507,3.813]],["t/1555",[130,3.145,163,2.248,174,4.014,181,2.607,186,3.444,187,3.444,265,3.335,506,3.565,507,3.565]],["t/1557",[42,3.825,130,3.251,163,2.324,174,4.08,193,5.061,265,3.447,506,3.685,507,3.685]],["t/1559",[124,4.683,130,3.251,163,2.324,174,4.08,265,3.447,379,4.174,506,3.685,507,3.685]],["t/1561",[85,2.156,150,3.319,299,3.663,423,3.319,445,3.319,521,3.898,522,3.663,523,3.898,524,3.898,525,3.898,526,3.898,527,3.898,528,3.898,529,3.663,530,3.898,531,3.898]],["t/1573",[5,1.823,130,3.251,163,2.324,174,4.08,265,3.447,506,3.685,507,3.685,564,5.636]],["t/1575",[2,1.151,41,3.469,101,2.042,115,3.291,178,2.637,181,3.028,186,2.807,187,4,292,3.291,377,3.469,415,2.718,509,2.807,565,3.469,566,3.469,567,4.443]],["t/1587",[5,2.216,41,3.879,42,4.65,59,3.68,181,3.275,210,3.373,407,3.039,568,3.373,569,4.462,570,4.462,571,3.879]],["t/1601",[128,4.209]],["t/1619",[128,4.209]],["t/1648",[128,4.209]],["t/1684",[0,3.05,2,1.183,170,4.821,379,4.821,493,5.082,572,4.821]],["t/1708",[73,3.476,110,2.61,172,2.499,173,2.802,174,2.499,178,3.039,179,4.255,279,3.998,335,3.998,384,2.353,409,3.793,573,4.255,574,4.255]],["t/1728",[73,3.476,110,2.61,172,2.499,173,2.802,174,2.499,178,3.039,179,4.255,279,3.998,335,3.998,384,2.353,409,3.793,573,4.255,574,4.255]],["t/1756",[14,2.364,42,3.825,170,4.174,181,2.694,184,4.4,224,4.4,262,3.685,483,5.061,575,4.683,576,5.061]],["t/1781",[2,0.862,5,0.717,14,2.32,71,1.315,104,1.082,111,1.842,133,1.4,138,1.244,163,0.914,209,2.505,222,2.734,242,1.568,243,1.73,273,1.568,276,1.73,285,1.213,288,1.449,296,1.642,308,1.13,341,1.842,347,1.504,395,1.642,461,1.842,482,1.642,543,3.314,545,3.702,556,1.642,577,2.216,578,2.216,579,2.216,580,2.216,581,2.216,582,1.99,583,1.73,584,1.504,585,2.216,586,2.216,587,2.216,588,2.216,589,2.216,590,2.216,591,1.99,592,1.99,593,1.99,594,1.99,595,2.216]],["t/1807",[2,0.972,4,3.007,14,1.783,40,1.722,57,2.056,71,1.563,73,1.787,82,2.685,87,1.563,99,1.563,103,1.441,112,1.663,115,1.95,135,1.234,169,3.628,174,1.285,181,1.259,188,1.787,337,3.149,385,2.365,420,2.188,423,3.007,477,2.188,515,1.95,518,3.817,532,2.188,573,2.188,574,2.188,596,2.188,597,2.633,598,2.633,599,1.95,600,2.633,601,2.633]],["t/1825",[2,0.547,6,1.968,26,2.23,32,1.69,104,1.469,143,2.728,163,1.241,172,1.469,192,3.21,194,2.129,196,2.043,197,2.893,214,1.357,255,2.23,314,2.35,337,2.23,353,2.501,354,2.704,355,2.704,356,5.246,357,2.704,360,2.704,361,2.704,362,2.704,363,1.968,364,2.704,365,2.501,482,2.23,536,2.704,602,3.01,603,3.01]],["t/1851",[2,0.538,5,0.957,14,1.241,40,1.934,41,2.309,42,3.166,83,1.507,91,1.706,161,2.457,173,1.618,174,2.276,181,3.134,187,1.868,204,2.457,206,2.191,237,2.656,280,3.875,295,2.008,451,2.457,484,2.309,491,2.656,515,2.191,516,2.656,571,2.309,575,2.457,604,2.957,605,2.957,606,2.457,607,2.656,608,2.957,609,2.957]],["t/1883",[42,4.253,57,4.892,181,2.996,568,4.253,569,5.627,571,4.892,610,6.266]],["t/1902",[2,1.382,5,1.517,14,1.968,133,2.963,358,3.319,384,2.156,409,3.475,410,3.898,415,2.87,497,3.898,611,4.691,612,4.691,613,4.691,614,4.691]],["t/1942",[128,4.209]],["t/1971",[0,1.613,5,1.697,32,2.946,43,2.55,101,1.582,140,2.105,181,2.508,186,2.174,210,2.336,238,2.86,250,2.86,315,2.86,477,2.86,570,4.711,607,3.091,615,3.442,616,3.442,617,3.091,618,3.442,619,3.091,620,3.091,621,3.442,622,3.091,623,3.442,624,3.442]],["t/1999",[2,1.271,6,3.348,30,4.255,38,3.793,178,4.15,196,3.476,197,3.132,215,4.255,596,4.255,625,4.598,626,4.598]],["t/2001",[2,0.713,3,3.261,4,2.776,95,4.809,101,1.803,138,2.204,186,2.479,343,3.064,415,2.4,446,3.064,509,3.656,515,4.287,565,3.064,566,3.064,627,3.261,628,3.524,629,3.261,630,5.788,631,3.524]],["t/2003",[2,0.931,39,3.622,87,3.039,156,3.998,163,2.111,172,2.499,173,2.802,214,2.309,292,3.793,312,3.622,386,3.234,412,4.598,415,3.132]],["t/2028",[2,1.06,5,1.886,40,3.813,163,2.405,214,2.629,358,4.125,632,5.237,633,5.831,634,5.831]],["t/2041",[5,2.088,7,3.563,40,2.984,101,2.097,110,2.326,370,3.228,383,2.792,407,3.948,476,3.381,556,3.381,568,3.098,635,4.099,636,4.099,637,4.099,638,4.099]],["t/2059",[163,3.329]],["t/2088",[128,4.209]],["t/2128",[128,4.209]],["t/2138",[130,4.07,143,4.07,386,4.456,568,4.789]],["t/2140",[5,1.656,14,2.148,151,3.793,174,2.499,217,4.255,370,3.622,384,2.353,509,3.234,617,4.598,639,5.12,640,5.12,641,5.12,642,5.12]],["t/2142",[2,1.303,60,3.126,74,2.581,104,2.06,167,3.111,218,3.295,219,3.507,262,2.759,358,2.985,435,3.507,643,6.104,644,4.22,645,4.22,646,4.22,647,4.22,648,4.22]],["t/2160",[32,3.392,131,4.716,134,3.95,182,4.273,509,3.815,510,5.019,511,5.019,649,6.041]],["t/2162",[2,1.098,5,1.954,22,5.019,115,4.474,384,2.776,409,4.474,410,5.019,568,4.1]],["t/2200",[2,0.903,26,3.68,162,3.373,163,2.049,172,2.425,173,2.719,194,3.515,195,4.129,214,2.24,273,3.515,312,3.515,378,3.879,386,3.138,415,3.039]],["t/2226",[2,0.903,3,4.129,4,3.515,95,4.129,138,2.79,295,3.373,415,3.039,509,3.138,515,3.68,565,3.879,566,3.879,627,4.129,628,4.462,629,4.129]],["t/2228",[5,2.423,7,3.563,40,2.984,101,2.097,110,3.29,383,3.948,407,2.792,476,3.381,556,3.381,568,3.098,635,4.099,636,4.099,650,4.564]],["t/2252",[2,1.361,38,3.381,101,2.097,111,3.792,178,2.709,215,3.792,217,3.792,226,3.792,391,3.792,509,2.883,625,4.099,626,4.099,651,6.455,652,4.564]],["t/2254",[2,0.83,110,2.326,172,2.228,173,2.498,178,2.709,180,3.381,181,2.182,188,3.098,363,2.984,377,3.563,476,3.381,509,2.883,544,3.792,565,3.563,566,3.563,653,4.564,654,4.564]],["t/2258",[8,5.508,174,3.444,568,4.789,655,7.055]],["t/2260",[93,4.4,134,3.685,174,2.751,181,2.694,220,4.683,509,3.56,510,4.683,511,4.683,512,5.061,656,5.061]],["t/2262",[74,3.039,84,2.949,88,2.653,167,2.533,236,5.692,332,3.039,345,3.879,346,3.68,444,3.373,657,4.462,658,4.969,659,4.969,660,4.462]],["t/2264",[88,3.813,99,3.134,103,2.89,259,4.123,286,4.388,444,4.847,465,4.388,661,5.281,662,3.912,663,5.281]],["t/2266",[172,3.595,181,3.521,664,7.365]],["t/2289",[2,0.589,5,1.621,14,1.36,43,3.712,59,2.402,80,2.402,114,2.201,134,2.12,161,2.694,293,2.048,332,1.983,347,2.201,445,2.294,545,3.913,583,2.532,584,5.345,665,3.243,666,5.011,667,5.011,668,3.243,669,3.243,670,3.243]],["t/2297",[2,1.173,82,2.883,91,2.633,100,4.099,101,2.097,104,2.228,122,3.792,236,3.792,276,3.563,401,4.099,406,5.797,438,3.563,517,2.883,671,3.792,672,4.564]],["t/2320",[155,4.135,334,5.455,444,4.999]],["t/2336",[2,1.06,23,3.274,83,2.972,140,3.567,163,2.405,214,2.629,407,3.567,408,4.125,444,3.958]],["t/2352",[2,0.853,5,1.517,14,1.968,71,2.784,91,2.706,173,2.567,187,2.963,351,5.911,599,3.475,673,4.691,674,4.691,675,4.691,676,4.691,677,4.691,678,4.691]],["t/2362",[197,4.315,442,5.508,679,6.336,680,6.336]],["t/2371",[2,0.471,121,1.76,137,2.154,206,1.92,214,1.169,252,2.328,253,2.328,273,1.834,278,1.834,285,1.419,288,1.695,290,2.024,295,3.59,308,2.696,346,1.92,365,3.488,435,2.154,457,3.77,480,2.154,482,1.92,484,2.024,492,2.328,549,2.024,584,2.849,662,1.92,681,2.592,682,2.328,683,2.592,684,3.488,685,2.592,686,2.592,687,2.592,688,2.592,689,2.328,690,2.154,691,2.592,692,1.92]],["t/2375",[83,3.596,129,5.226,130,4.07,693,5.862]],["t/2377",[6,4.669,68,6.413,69,4.01,83,2.692,114,3.585,116,3.134,192,3.585,209,3.585,694,4.743]],["t/2379",[14,1.506,39,2.539,57,2.802,84,3.214,88,1.916,91,2.07,94,5.856,117,2.436,123,2.539,167,2.76,255,4.011,288,2.347,446,2.802,692,2.658,695,4.499,696,3.589,697,3.223,698,3.589,699,3.589,700,3.223,701,3.589]],["t/2399",[81,2.803,99,2.002,101,1.55,117,2.29,118,2.498,135,2.942,138,1.894,261,3.029,286,2.803,312,2.386,434,2.803,465,2.803,481,2.498,484,4.033,575,2.803,582,3.029,690,2.803,702,3.373,703,3.373,704,3.373,705,3.373,706,3.373,707,3.373,708,3.373,709,3.373,710,3.029,711,3.373]],["t/2414",[2,0.697,14,2.387,60,2.84,116,2.276,138,2.153,186,2.422,192,2.603,209,2.603,242,2.713,250,3.186,303,3.863,337,2.84,446,2.994,558,3.444,559,3.186,594,3.444,712,3.444,713,3.444,714,3.444,715,3.835,716,3.835,717,3.835]],["t/2424",[2,1.09,69,3.366,87,2.443,103,2.253,107,3.697,112,2.6,126,3.214,135,1.929,164,2.794,192,2.794,257,3.421,339,3.697,340,3.697,386,2.6,572,4.44,637,3.697,638,3.697,718,3.697]],["t/2460",[69,3.518,149,4.641,295,4.253,459,5.206,576,5.627,719,6.266,720,6.266]],["t/2488",[103,3.815,116,2.385,138,2.256,196,2.728,209,2.728,218,3.137,244,3.609,248,3.609,259,3.137,277,3.339,292,2.976,343,3.137,363,2.627,420,3.339,423,2.842,444,3.998,692,2.976,721,4.018,722,4.018]],["t/2494",[104,3.444,155,3.961,334,5.226,723,7.055]],["t/2512",[289,6.614,332,4.505,724,7.365]],["t/2539",[110,2.972,164,3.958,180,4.319,285,3.191,308,2.972,725,5.831,726,5.831,727,5.831,728,5.831]],["t/2549",[695,6.707]],["t/2560",[58,3.185,156,3.663,281,3.898,294,4.213,320,4.213,332,2.87,459,3.898,571,3.663,596,3.898,729,4.691,730,6.582,731,4.213,732,4.691,733,4.691,734,4.691]],["t/2562",[58,4.999,308,3.754,332,4.505]],["t/2565",[129,5.226,130,4.07,167,3.596,493,5.508]],["t/2567",[384,3.242,439,4.789,440,4.991,441,4.991]],["t/2578",[128,4.209]],["t/2612",[85,3.539,735,7.702]],["t/2619",[6,5.278]],["t/2637",[384,3.242,439,4.789,440,4.991,441,4.991]],["t/2658",[5,1.091,44,3.029,45,4.033,46,4.292,101,2.374,106,2.803,135,3.749,285,1.846,308,1.719,481,2.498,505,2.803,541,3.029,684,2.803,736,6.277,737,3.029,738,3.373,739,3.373,740,3.373,741,3.029,742,3.373]],["t/2660",[2,0.378,5,1.465,14,0.872,26,1.54,32,1.167,56,1.867,62,1.867,82,1.313,84,2.076,85,0.955,88,1.11,99,1.234,110,1.06,112,1.313,114,4.022,116,1.234,135,1.639,138,1.167,167,1.783,182,3.204,288,1.359,315,1.728,367,1.54,370,1.471,422,3.142,439,1.411,480,1.728,505,4.923,517,2.861,563,3.142,692,1.54,743,2.079,744,2.079,745,1.867,746,2.079,747,2.079,748,2.079,749,2.079,750,1.867,751,1.867,752,2.079,753,2.079]],["t/2668",[66,6.119,155,4.135,334,5.455]],["t/2720",[2,0.626,38,2.55,54,2.55,86,2.435,87,2.043,101,1.582,102,2.86,103,1.884,110,1.754,135,2.458,162,2.336,186,2.174,196,2.336,197,2.105,214,1.552,278,2.435,333,2.687,371,3.091,386,3.314,394,2.687,415,2.105,572,2.55,629,2.86,754,3.442,755,3.442,756,2.86,757,3.442]],["t/2736",[2,1.06,23,3.274,101,2.68,135,2.733,163,2.405,262,3.813,281,4.845,383,3.567,384,2.68]],["t/2763",[58,4.937,110,2.206,149,3.206,194,4.397,195,3.597,308,3.169,326,3.888,332,4.449,447,3.38,751,3.888,758,4.329,759,4.329,760,4.329]],["t/2775",[58,4.999,308,3.754,332,4.505]],["t/2797",[2,0.787,103,3.402,110,2.206,135,2.029,138,2.431,172,2.113,173,2.369,447,4.854,498,3.206,599,3.206,620,3.888,680,3.888,756,3.597,761,4.329,762,4.329,763,4.329,764,4.329]],["t/2805",[101,3.539,135,3.609]],["t/2822",[83,4.114]],["t/2842",[2,0.787,46,3.597,74,2.648,112,2.734,135,2.029,197,2.648,216,3.888,224,3.38,263,3.597,264,3.597,278,3.062,442,3.38,495,3.597,679,3.888,710,5.583,741,3.888,765,4.329,766,4.329]],["t/2865",[85,2.283,88,2.653,97,3.138,123,3.515,151,3.68,242,3.515,285,2.719,308,2.533,430,4.462,479,3.515,517,3.138,767,4.969,768,4.969,769,4.969]],["t/2867",[2,0.931,32,2.875,71,3.039,123,3.622,155,2.875,290,3.998,335,3.998,395,3.793,437,4.598,770,5.12,771,4.598,772,4.598,773,5.12]],["t/2889",[2,0.877,51,4.334,85,2.218,104,2.356,238,4.01,285,2.641,298,4.01,479,3.414,690,4.01,750,4.334,774,4.826,775,4.826,776,4.334,777,4.826,778,4.826]],["t/2994",[0,2.831,86,4.273,88,3.225,123,4.273,137,5.019,151,4.474,155,3.392,188,4.1]],["t/3008",[0,3.306,1,5.226,5,2.282,372,4.789]],["t/3022",[2,0.494,14,1.14,34,2.259,40,1.777,71,1.613,83,1.385,85,1.249,88,2.328,91,1.568,97,1.717,123,4.421,135,1.274,155,2.449,181,1.3,187,1.717,245,2.259,290,2.122,370,1.923,375,2.259,380,2.259,383,1.663,501,2.441,517,1.717,599,2.013,779,2.718,780,2.718,781,2.718,782,2.718,783,2.718,784,2.441,785,2.718,786,2.718,787,2.718,788,2.718,789,2.718,790,2.441,791,2.441]],["t/3058",[138,3.961,155,3.961,285,3.861,308,3.596]],["t/3066",[39,4.845,83,2.533,206,3.68,279,3.879,293,3.138,295,4.65,308,3.491,549,3.879,550,4.129,560,4.129,792,4.969]],["t/3070",[793,8.072]],["t/3085",[2,0.408,14,0.942,32,1.261,60,1.664,118,1.664,127,1.589,134,1.468,155,2.095,162,2.533,209,1.525,210,1.525,214,1.682,242,1.589,243,1.753,255,2.764,273,1.589,303,1.525,363,1.468,378,2.913,445,1.589,556,1.664,583,1.753,584,1.525,591,2.017,599,1.664,632,2.017,662,1.664,713,2.017,714,2.017,771,4.299,776,2.017,794,3.732,795,2.246,796,2.246,797,2.246,798,3.101,799,2.246,800,2.246,801,2.246,802,2.246,803,2.246,804,2.246,805,2.246,806,2.246,807,2.246,808,2.246]],["t/3105",[0,2.641,2,1.024,32,3.164,54,4.174,73,3.825,87,3.345,331,5.061,790,5.061,809,5.636,810,5.636]],["t/3119",[2,1.4,104,3.759]],["t/3128",[2,0.903,5,1.607,43,3.68,45,3.879,83,2.533,117,3.373,167,2.533,229,4.462,461,4.129,684,5.692,811,4.969,812,4.969,813,4.969]],["t/3140",[2,0.931,166,6.28,167,2.61,407,3.132,408,3.622,447,3.998,498,3.793,517,3.234,662,3.793,814,5.12,815,4.598,816,5.12]],["t/3154",[59,2.55,74,3.888,97,2.174,150,2.435,157,2.687,224,2.687,245,2.86,291,2.336,293,4.015,296,2.55,303,2.336,308,1.754,345,4.096,346,4.708,443,2.86,584,3.561,817,3.442,818,3.442,819,5.246,820,3.442]],["t/3160",[101,2.776,135,2.831,197,3.695,363,3.95,442,6.093,606,5.019,821,6.041]],["t/3170",[128,4.209]],["t/3192",[14,1.31,32,2.732,106,4.043,110,1.591,127,2.209,133,1.972,134,2.041,169,2.119,203,2.594,264,2.594,285,1.709,293,1.972,308,1.591,314,2.438,453,2.804,583,2.438,584,2.119,627,2.594,682,2.804,700,2.804,772,2.804,791,2.804,822,4.866,823,3.122,824,3.122,825,3.122,826,3.122,827,3.122,828,3.122,829,3.122,830,3.122]],["t/3216",[14,1.915,33,3.563,80,3.381,84,2.709,91,2.633,167,2.326,172,2.228,181,2.182,185,4.099,210,4.382,222,3.381,343,3.563,697,4.099,831,4.564,832,4.099,833,4.564]],["t/3226",[2,0.931,104,2.499,121,4.747,323,4.598,353,4.255,379,5.179,413,4.598,622,4.598,834,5.12,835,5.12,836,5.12]],["t/3251",[593,5.845,619,5.845,837,6.509,838,6.509,839,6.509,840,6.509]],["t/3261",[128,4.209]],["t/3279",[5,1.029,81,2.643,92,2.857,121,2.16,135,1.491,147,2.643,243,2.484,259,2.484,278,2.25,433,2.857,434,2.643,451,2.643,498,2.356,656,2.857,695,4.103,815,2.857,841,3.181,842,3.181,843,3.181,844,3.181,845,3.181,846,4.938,847,4.938,848,3.181,849,3.181,850,3.181,851,3.181,852,3.181,853,3.181,854,3.181]],["t/3290",[5,1.113,85,2.411,97,2.174,99,2.043,112,2.174,127,2.435,138,1.933,209,2.336,268,2.687,293,2.174,296,3.886,303,3.561,476,3.886,479,2.435,517,2.174,584,2.336,662,2.55,745,3.091,832,3.091,855,3.442,856,3.442,857,3.442,858,3.442,859,3.091,860,3.442]],["t/3294",[82,2.267,85,2.997,142,3.223,206,2.658,218,2.802,219,2.982,291,3.676,332,3.989,345,4.228,346,4.011,367,2.658,533,3.223,718,3.223,861,6.521,862,6.521,863,3.589]],["t/3296",[116,4.571,347,5.228]],["t/3327",[0,2.641,5,1.823,36,4.683,89,5.061,116,3.345,288,3.685,291,3.825,293,3.56,303,3.825,864,5.636]],["t/3341",[2,1.231,9,5.626,291,4.596,865,6.081,866,6.771]],["t/3365",[2,0.73,5,2.255,69,3.307,83,2.048,129,2.976,204,3.339,257,3.339,383,4.696,384,1.847,519,3.609,572,2.976,731,3.609,798,3.339,859,3.609,867,4.018,868,4.018]],["t/3386",[5,1.872,39,2.776,101,1.803,104,1.916,121,2.664,140,2.4,285,2.148,291,2.664,295,2.664,308,2.95,311,3.524,479,2.776,549,3.064,550,3.261,560,3.261,606,3.261,657,3.524,660,3.524,737,3.524,869,3.924,870,3.924]],["t/3400",[2,0.96,6,3.453,114,3.585,126,4.123,129,3.912,383,3.23,443,4.388,504,4.743,572,3.912,784,4.743,798,4.388,871,5.281]],["t/3412",[522,5.082,865,7.35,872,8.185,873,6.509]],["t/3443",[131,5.75,291,4.999,693,6.119]],["t/3453",[2,0.903,99,2.949,104,2.425,214,2.24,493,3.879,538,4.462,756,4.129,874,4.969,875,4.462,876,4.969,877,4.969,878,4.969,879,4.969,880,4.969]],["t/3465",[102,5.862,132,5.862,172,3.444,173,3.861]],["t/3480",[5,1.137,14,1.474,71,2.086,85,1.615,87,2.086,110,1.791,169,2.385,182,3.77,293,3.366,318,3.156,341,2.92,347,2.385,372,2.385,532,2.92,544,2.92,545,2.744,559,4.428,592,3.156,712,3.156,881,3.514,882,3.514,883,3.514,884,3.514,885,3.514,886,3.514]],["t/3501",[2,1.098,23,3.392,163,2.491,262,3.95,383,3.695,384,2.776,411,4.716,887,6.041]],["t/3516",[84,3.435,85,1.803,91,2.264,143,3.339,155,3.25,167,2.95,214,1.769,222,2.907,228,3.064,278,2.776,415,2.4,438,3.064,517,2.479,689,3.524,692,2.907,888,3.924,889,3.924,890,3.924,891,3.924]],["t/3518",[143,4.248,155,4.135,334,5.455]],["t/3579",[384,3.242,439,4.789,440,4.991,441,4.991]],["t/3598",[384,3.709]],["t/3608",[2,0.73,30,4.894,32,2.256,74,2.458,121,2.728,126,3.137,143,3.397,155,2.256,207,3.609,395,2.976,407,2.458,411,3.137,438,3.137,517,2.538,671,3.339,892,5.89,893,4.018,894,4.018,895,4.018]],["t/3658",[128,4.209]],["t/3663",[2,0.931,69,2.875,83,2.61,143,4.034,162,3.476,163,2.884,214,2.309,266,4.255,383,3.132,384,3.213]],["t/3704",[384,3.709]],["t/3710",[384,3.709]],["t/3735",[384,3.709]],["t/3752",[128,4.209]],["t/3772",[384,3.242,439,4.789,440,4.991,441,4.991]],["t/3854",[2,0.681,14,1.573,34,3.115,74,3.422,93,2.927,101,1.723,103,2.052,112,2.368,116,2.225,143,2.163,167,2.852,444,2.545,481,2.777,495,3.115,631,3.367,693,4.649,694,5.025,896,3.749,897,3.749,898,3.749,899,3.749]],["t/3878",[384,3.242,439,4.789,440,4.991,441,4.991]],["t/3911",[84,4.15,167,3.564,407,3.132,408,3.622,671,5.81,875,6.28,900,5.12,901,5.12,902,5.12]],["t/3973",[2,0.877,23,2.71,40,3.155,69,2.71,83,2.46,140,2.952,143,2.784,163,2.768,214,2.176,266,4.01,407,4.106,408,3.414,903,4.826]]],"invertedIndex":[["0",{"_index":348,"t":{"545":{"position":[[0,1]]},"985":{"position":[[122,1]]}}}],["00",{"_index":530,"t":{"1505":{"position":[[94,2]]},"1537":{"position":[[99,2]]},"1561":{"position":[[99,2]]}}}],["09",{"_index":327,"t":{"539":{"position":[[131,2]]}}}],["0th",{"_index":425,"t":{"910":{"position":[[66,3]]}}}],["1",{"_index":347,"t":{"543":{"position":[[47,1]]},"545":{"position":[[2,1]]},"910":{"position":[[47,1],[139,1]]},"1781":{"position":[[431,1]]},"2289":{"position":[[81,1]]},"3296":{"position":[[0,1]]},"3480":{"position":[[99,1]]}}}],["10",{"_index":300,"t":{"494":{"position":[[167,2]]}}}],["17",{"_index":529,"t":{"1505":{"position":[[91,2]]},"1518":{"position":[[141,2],[314,2]]},"1537":{"position":[[96,2]]},"1561":{"position":[[96,2]]}}}],["19",{"_index":581,"t":{"1781":{"position":[[91,2]]}}}],["2",{"_index":445,"t":{"985":{"position":[[120,1]]},"1505":{"position":[[38,1]]},"1537":{"position":[[41,1]]},"1561":{"position":[[41,1]]},"2289":{"position":[[251,1]]},"3085":{"position":[[4,1]]}}}],["2021",{"_index":582,"t":{"1781":{"position":[[95,4]]},"2399":{"position":[[151,4]]}}}],["2022",{"_index":528,"t":{"1505":{"position":[[76,4]]},"1537":{"position":[[81,4]]},"1561":{"position":[[81,4]]}}}],["2024",{"_index":326,"t":{"539":{"position":[[126,4]]},"2763":{"position":[[3,4]]}}}],["23",{"_index":328,"t":{"539":{"position":[[134,2]]}}}],["256",{"_index":845,"t":{"3279":{"position":[[107,3]]}}}],["26",{"_index":527,"t":{"1505":{"position":[[72,2]]},"1537":{"position":[[77,2]]},"1561":{"position":[[77,2]]}}}],["311",{"_index":523,"t":{"1505":{"position":[[40,3]]},"1537":{"position":[[43,3]]},"1561":{"position":[[43,3]]}}}],["32",{"_index":44,"t":{"49":{"position":[[26,2]]},"2658":{"position":[[15,2]]}}}],["375",{"_index":659,"t":{"2262":{"position":[[22,3]]}}}],["384",{"_index":426,"t":{"910":{"position":[[129,3]]}}}],["3rd",{"_index":770,"t":{"2867":{"position":[[100,3]]}}}],["4",{"_index":666,"t":{"2289":{"position":[[79,1],[249,1]]}}}],["416",{"_index":849,"t":{"3279":{"position":[[136,3]]}}}],["50",{"_index":469,"t":{"992":{"position":[[351,2]]}}}],["51",{"_index":826,"t":{"3192":{"position":[[150,2]]}}}],["64",{"_index":818,"t":{"3154":{"position":[[79,2]]}}}],["7",{"_index":342,"t":{"543":{"position":[[7,1]]}}}],["760",{"_index":524,"t":{"1505":{"position":[[44,3]]},"1537":{"position":[[47,3]]},"1561":{"position":[[47,3]]}}}],["80",{"_index":462,"t":{"992":{"position":[[273,2],[354,2]]}}}],["8444",{"_index":876,"t":{"3453":{"position":[[16,4]]}}}],["8555",{"_index":901,"t":{"3911":{"position":[[70,4]]}}}],["9",{"_index":658,"t":{"2262":{"position":[[20,1]]}}}],["90",{"_index":463,"t":{"992":{"position":[[276,2]]}}}],["aac",{"_index":548,"t":{"1518":{"position":[[137,3],[310,3]]}}}],["abil",{"_index":672,"t":{"2297":{"position":[[147,7]]}}}],["abstract",{"_index":500,"t":{"1121":{"position":[[0,8]]}}}],["academi",{"_index":9,"t":{"29":{"position":[[16,7],[344,7]]},"67":{"position":[[25,7]]},"3341":{"position":[[19,7]]}}}],["access",{"_index":816,"t":{"3140":{"position":[[78,6]]}}}],["account",{"_index":202,"t":{"381":{"position":[[32,10]]},"383":{"position":[[235,7]]},"401":{"position":[[7,7],[106,8]]},"423":{"position":[[32,10],[217,7]]}}}],["achiev",{"_index":585,"t":{"1781":{"position":[[230,7]]}}}],["act",{"_index":501,"t":{"1126":{"position":[[16,3]]},"3022":{"position":[[441,6]]}}}],["action",{"_index":207,"t":{"381":{"position":[[112,7]]},"3608":{"position":[[215,7]]}}}],["activ",{"_index":323,"t":{"539":{"position":[[70,9]]},"3226":{"position":[[67,6]]}}}],["actor",{"_index":810,"t":{"3105":{"position":[[104,6]]}}}],["actual",{"_index":686,"t":{"2371":{"position":[[234,6]]}}}],["ad",{"_index":829,"t":{"3192":{"position":[[290,6]]}}}],["adam",{"_index":510,"t":{"1477":{"position":[[15,4]]},"2160":{"position":[[15,4]]},"2260":{"position":[[0,4]]}}}],["addit",{"_index":195,"t":{"326":{"position":[[25,10]]},"2200":{"position":[[85,10]]},"2763":{"position":[[106,10]]}}}],["address",{"_index":60,"t":{"49":{"position":[[211,7]]},"1505":{"position":[[227,9],[348,9]]},"2142":{"position":[[169,9]]},"2414":{"position":[[263,7]]},"3085":{"position":[[131,9]]}}}],["adjust",{"_index":297,"t":{"494":{"position":[[110,8]]}}}],["advanc",{"_index":401,"t":{"745":{"position":[[437,8]]},"2297":{"position":[[44,8]]}}}],["advantag",{"_index":749,"t":{"2660":{"position":[[431,9]]}}}],["ag",{"_index":16,"t":{"29":{"position":[[99,3]]}}}],["against",{"_index":380,"t":{"649":{"position":[[180,7]]},"717":{"position":[[180,7]]},"3022":{"position":[[416,7]]}}}],["ahead",{"_index":638,"t":{"2041":{"position":[[145,5]]},"2424":{"position":[[165,5]]}}}],["aim",{"_index":593,"t":{"1781":{"position":[[498,3]]},"3251":{"position":[[33,3]]}}}],["airdrop",{"_index":540,"t":{"1505":{"position":[[323,7]]}}}],["aka",{"_index":627,"t":{"2001":{"position":[[27,3]]},"2226":{"position":[[27,3]]},"3192":{"position":[[145,3]]}}}],["algorand",{"_index":231,"t":{"401":{"position":[[75,8]]}}}],["algorithm",{"_index":289,"t":{"494":{"position":[[19,9]]},"2512":{"position":[[13,9]]}}}],["allow",{"_index":517,"t":{"1483":{"position":[[17,6]]},"2297":{"position":[[73,6]]},"2660":{"position":[[199,5],[222,6],[276,6]]},"2865":{"position":[[6,5]]},"3022":{"position":[[196,5]]},"3140":{"position":[[64,6]]},"3290":{"position":[[91,5]]},"3516":{"position":[[115,6]]},"3608":{"position":[[48,6]]}}}],["along",{"_index":227,"t":{"383":{"position":[[192,5]]},"1505":{"position":[[212,5]]}}}],["alpha",{"_index":373,"t":{"649":{"position":[[27,5]]},"717":{"position":[[27,5]]}}}],["alreadi",{"_index":718,"t":{"2424":{"position":[[89,7]]},"3294":{"position":[[213,7]]}}}],["altern",{"_index":688,"t":{"2371":{"position":[[341,9]]}}}],["altruist",{"_index":805,"t":{"3085":{"position":[[364,14]]}}}],["amount",{"_index":451,"t":{"992":{"position":[[31,6]]},"1851":{"position":[[411,6]]},"3279":{"position":[[91,6]]}}}],["analog",{"_index":428,"t":{"914":{"position":[[19,9]]}}}],["announc",{"_index":512,"t":{"1477":{"position":[[36,13]]},"2260":{"position":[[56,13]]}}}],["anoth",{"_index":484,"t":{"1007":{"position":[[0,7]]},"1851":{"position":[[324,7]]},"2371":{"position":[[24,7]]},"2399":{"position":[[67,7],[88,7]]}}}],["answer",{"_index":719,"t":{"2460":{"position":[[15,6]]}}}],["anyth",{"_index":623,"t":{"1971":{"position":[[313,8]]}}}],["api",{"_index":408,"t":{"755":{"position":[[70,3]]},"955":{"position":[[70,3]]},"2336":{"position":[[73,3]]},"3140":{"position":[[48,3]]},"3911":{"position":[[18,3]]},"3973":{"position":[[70,3]]}}}],["app",{"_index":514,"t":{"1479":{"position":[[29,4]]}}}],["appeal",{"_index":78,"t":{"67":{"position":[[165,9]]}}}],["applic",{"_index":30,"t":{"29":{"position":[[275,12]]},"1999":{"position":[[97,12]]},"3608":{"position":[[69,12],[234,11]]}}}],["approach",{"_index":489,"t":{"1025":{"position":[[53,8]]}}}],["approxim",{"_index":657,"t":{"2262":{"position":[[0,13]]},"3386":{"position":[[126,13]]}}}],["architectur",{"_index":68,"t":{"65":{"position":[[5,12]]},"2377":{"position":[[22,12],[106,12]]}}}],["argu",{"_index":806,"t":{"3085":{"position":[[399,5]]}}}],["argument",{"_index":649,"t":{"2160":{"position":[[58,9]]}}}],["around",{"_index":299,"t":{"494":{"position":[[160,6]]},"1505":{"position":[[84,6]]},"1537":{"position":[[89,6]]},"1561":{"position":[[89,6]]}}}],["arrang",{"_index":603,"t":{"1825":{"position":[[177,11]]}}}],["asic",{"_index":865,"t":{"3341":{"position":[[0,4]]},"3412":{"position":[[17,5],[64,4]]}}}],["ask",{"_index":760,"t":{"2763":{"position":[[66,5]]}}}],["aspect",{"_index":897,"t":{"3854":{"position":[[79,7]]}}}],["asset",{"_index":3,"t":{"1":{"position":[[35,5]]},"2001":{"position":[[97,5]]},"2226":{"position":[[95,5]]}}}],["associ",{"_index":604,"t":{"1851":{"position":[[129,10]]}}}],["assum",{"_index":798,"t":{"3085":{"position":[[187,7],[332,6]]},"3365":{"position":[[9,7]]},"3400":{"position":[[9,7]]}}}],["attack",{"_index":127,"t":{"148":{"position":[[280,7]]},"431":{"position":[[235,9]]},"512":{"position":[[9,6]]},"3085":{"position":[[49,6]]},"3192":{"position":[[154,7]]},"3290":{"position":[[160,8]]}}}],["audit",{"_index":359,"t":{"580":{"position":[[130,5]]}}}],["author",{"_index":253,"t":{"431":{"position":[[169,9]]},"2371":{"position":[[452,9]]}}}],["automat",{"_index":212,"t":{"381":{"position":[[206,13]]},"494":{"position":[[137,13]]}}}],["avail",{"_index":264,"t":{"445":{"position":[[77,9]]},"2842":{"position":[[30,9]]},"3192":{"position":[[190,12]]}}}],["back",{"_index":705,"t":{"2399":{"position":[[143,4]]}}}],["backward",{"_index":473,"t":{"992":{"position":[[463,8]]}}}],["bad",{"_index":809,"t":{"3105":{"position":[[100,3]]}}}],["balanc",{"_index":232,"t":{"401":{"position":[[85,8]]}}}],["bandwidth",{"_index":890,"t":{"3516":{"position":[[181,9]]}}}],["base",{"_index":242,"t":{"423":{"position":[[139,5]]},"1518":{"position":[[355,5]]},"1781":{"position":[[384,5]]},"2414":{"position":[[200,5]]},"2865":{"position":[[59,5]]},"3085":{"position":[[557,5]]}}}],["basic",{"_index":87,"t":{"108":{"position":[[30,6]]},"274":{"position":[[30,6]]},"447":{"position":[[47,6]]},"498":{"position":[[30,6]]},"745":{"position":[[393,6]]},"1807":{"position":[[259,6]]},"2003":{"position":[[99,5]]},"2424":{"position":[[187,6]]},"2720":{"position":[[236,6]]},"3105":{"position":[[29,5]]},"3480":{"position":[[110,5]]}}}],["bbbf18",{"_index":552,"t":{"1518":{"position":[[185,6],[340,6]]}}}],["be",{"_index":482,"t":{"994":{"position":[[128,5]]},"1505":{"position":[[256,5]]},"1781":{"position":[[275,5]]},"1825":{"position":[[46,5]]},"2371":{"position":[[392,5]]}}}],["bech32m",{"_index":63,"t":{"49":{"position":[[248,7]]}}}],["befor",{"_index":446,"t":{"985":{"position":[[125,6]]},"2001":{"position":[[158,6]]},"2379":{"position":[[102,6]]},"2414":{"position":[[0,6]]}}}],["begin",{"_index":419,"t":{"898":{"position":[[293,9]]}}}],["beginn",{"_index":754,"t":{"2720":{"position":[[4,8]]}}}],["behav",{"_index":804,"t":{"3085":{"position":[[357,6]]}}}],["behavior",{"_index":773,"t":{"2867":{"position":[[135,8]]}}}],["below",{"_index":667,"t":{"2289":{"position":[[83,5],[253,5]]}}}],["benefici",{"_index":728,"t":{"2539":{"position":[[98,10]]}}}],["benefit",{"_index":137,"t":{"185":{"position":[[67,8]]},"2371":{"position":[[32,7]]},"2994":{"position":[[63,7]]}}}],["best",{"_index":859,"t":{"3290":{"position":[[259,4]]},"3365":{"position":[[67,4]]}}}],["between",{"_index":245,"t":{"423":{"position":[[192,7]]},"3022":{"position":[[217,7]]},"3154":{"position":[[96,7]]}}}],["beyond",{"_index":199,"t":{"326":{"position":[[77,6]]}}}],["bitcoin",{"_index":222,"t":{"383":{"position":[[124,7]]},"914":{"position":[[32,7]]},"1781":{"position":[[154,7],[406,7]]},"3216":{"position":[[132,7]]},"3516":{"position":[[88,7]]}}}],["bl",{"_index":563,"t":{"1551":{"position":[[83,3]]},"2660":{"position":[[106,3],[218,3]]}}}],["bladebit",{"_index":847,"t":{"3279":{"position":[[118,8],[147,8]]}}}],["block",{"_index":85,"t":{"95":{"position":[[5,5]]},"108":{"position":[[40,5],[119,6]]},"122":{"position":[[56,5],[126,5]]},"134":{"position":[[0,5]]},"461":{"position":[[94,5]]},"535":{"position":[[92,6]]},"543":{"position":[[19,6]]},"910":{"position":[[142,6]]},"914":{"position":[[60,5]]},"1505":{"position":[[32,5],[121,5],[157,5]]},"1518":{"position":[[44,6]]},"1537":{"position":[[35,5]]},"1561":{"position":[[35,5]]},"2612":{"position":[[9,6]]},"2660":{"position":[[176,5]]},"2865":{"position":[[115,6]]},"2889":{"position":[[56,6]]},"3022":{"position":[[325,5]]},"3290":{"position":[[78,6],[210,6]]},"3294":{"position":[[70,5],[167,6],[196,6]]},"3480":{"position":[[125,6]]},"3516":{"position":[[155,5]]}}}],["blockchain",{"_index":14,"t":{"29":{"position":[[70,10],[214,10],[430,10]]},"383":{"position":[[13,10],[214,11]]},"401":{"position":[[34,11]]},"498":{"position":[[105,10]]},"539":{"position":[[91,10]]},"745":{"position":[[102,10],[184,10]]},"898":{"position":[[172,10],[254,10]]},"914":{"position":[[193,10]]},"1483":{"position":[[66,10]]},"1518":{"position":[[73,10]]},"1756":{"position":[[87,10]]},"1781":{"position":[[53,10],[138,10],[390,10],[477,10]]},"1807":{"position":[[134,10],[165,11]]},"1851":{"position":[[23,10]]},"1902":{"position":[[40,10]]},"2140":{"position":[[96,10]]},"2289":{"position":[[34,11]]},"2352":{"position":[[29,10]]},"2379":{"position":[[135,10]]},"2414":{"position":[[69,10],[206,10]]},"2660":{"position":[[400,10]]},"3022":{"position":[[261,10]]},"3085":{"position":[[101,11]]},"3192":{"position":[[91,11]]},"3216":{"position":[[117,10]]},"3480":{"position":[[63,10]]},"3854":{"position":[[5,10]]}}}],["blog",{"_index":364,"t":{"580":{"position":[[317,4]]},"1825":{"position":[[335,4]]}}}],["bodi",{"_index":109,"t":{"134":{"position":[[73,4]]}}}],["both",{"_index":443,"t":{"985":{"position":[[72,4]]},"3154":{"position":[[17,4]]},"3400":{"position":[[59,4]]}}}],["brief",{"_index":189,"t":{"322":{"position":[[19,5]]}}}],["broadcast",{"_index":311,"t":{"494":{"position":[[384,9]]},"3386":{"position":[[108,12]]}}}],["broken",{"_index":721,"t":{"2488":{"position":[[128,6]]}}}],["build",{"_index":544,"t":{"1518":{"position":[[35,8]]},"2254":{"position":[[97,8]]},"3480":{"position":[[116,8]]}}}],["built",{"_index":520,"t":{"1483":{"position":[[167,5]]}}}],["bulk",{"_index":633,"t":{"2028":{"position":[[50,4]]}}}],["bundl",{"_index":831,"t":{"3216":{"position":[[8,6]]}}}],["byte",{"_index":45,"t":{"49":{"position":[[29,4]]},"461":{"position":[[220,5]]},"2658":{"position":[[18,4],[152,4]]},"3128":{"position":[[63,5]]}}}],["cach",{"_index":839,"t":{"3251":{"position":[[56,7]]}}}],["cal",{"_index":669,"t":{"2289":{"position":[[155,3]]}}}],["call",{"_index":59,"t":{"49":{"position":[[201,6]]},"494":{"position":[[82,6]]},"1587":{"position":[[72,5]]},"2289":{"position":[[218,6]]},"3154":{"position":[[142,6]]}}}],["candid",{"_index":687,"t":{"2371":{"position":[[303,9]]}}}],["canon",{"_index":319,"t":{"535":{"position":[[103,9]]}}}],["capabl",{"_index":673,"t":{"2352":{"position":[[63,12]]}}}],["cash",{"_index":678,"t":{"2352":{"position":[[175,4]]}}}],["cat",{"_index":515,"t":{"1483":{"position":[[4,3],[136,4],[158,4],[204,3]]},"1807":{"position":[[386,4]]},"1851":{"position":[[261,4]]},"2001":{"position":[[110,3],[142,3]]},"2226":{"position":[[108,3]]}}}],["cat1",{"_index":521,"t":{"1505":{"position":[[0,4],[133,4],[199,4],[268,4],[368,4]]},"1537":{"position":[[0,4]]},"1561":{"position":[[0,4]]}}}],["cat2",{"_index":539,"t":{"1505":{"position":[[307,4]]}}}],["central",{"_index":252,"t":{"431":{"position":[[157,11]]},"2371":{"position":[[444,7]]}}}],["certain",{"_index":206,"t":{"381":{"position":[[104,7]]},"1851":{"position":[[403,7]]},"2371":{"position":[[255,7]]},"3066":{"position":[[126,7]]},"3294":{"position":[[81,7]]}}}],["chain",{"_index":584,"t":{"1781":{"position":[[131,5]]},"2289":{"position":[[28,5],[55,6],[123,5],[146,5],[199,8],[231,5]]},"2371":{"position":[[313,5],[351,5]]},"3085":{"position":[[95,5]]},"3154":{"position":[[36,5],[57,5]]},"3192":{"position":[[85,5]]},"3290":{"position":[[40,5]]}}}],["challeng",{"_index":303,"t":{"494":{"position":[[202,10]]},"1033":{"position":[[87,9]]},"2414":{"position":[[151,10],[277,10]]},"3085":{"position":[[531,11]]},"3154":{"position":[[26,9]]},"3290":{"position":[[112,9],[233,9]]},"3327":{"position":[[101,10]]}}}],["chanc",{"_index":478,"t":{"994":{"position":[[82,6]]}}}],["chang",{"_index":700,"t":{"2379":{"position":[[212,6]]},"3192":{"position":[[302,7]]}}}],["character",{"_index":17,"t":{"29":{"position":[[103,13]]}}}],["check",{"_index":131,"t":{"183":{"position":[[30,5]]},"494":{"position":[[289,5]]},"2160":{"position":[[49,8]]},"3443":{"position":[[0,8]]}}}],["chia",{"_index":2,"t":{"1":{"position":[[30,4]]},"29":{"position":[[11,4],[65,4],[209,4],[339,4],[425,4]]},"49":{"position":[[17,4],[154,4]]},"51":{"position":[[30,4]]},"65":{"position":[[0,4]]},"67":{"position":[[20,4]]},"122":{"position":[[3,4]]},"134":{"position":[[20,4]]},"148":{"position":[[61,4]]},"218":{"position":[[64,4]]},"224":{"position":[[30,4]]},"256":{"position":[[4,4]]},"306":{"position":[[91,4]]},"326":{"position":[[89,4]]},"381":{"position":[[0,4],[83,4]]},"383":{"position":[[250,4]]},"447":{"position":[[97,4]]},"494":{"position":[[4,4]]},"539":{"position":[[84,4]]},"541":{"position":[[58,4]]},"580":{"position":[[0,4]]},"641":{"position":[[70,4]]},"649":{"position":[[0,4]]},"680":{"position":[[52,4]]},"717":{"position":[[0,4]]},"745":{"position":[[15,4],[95,4],[358,4]]},"755":{"position":[[52,4]]},"828":{"position":[[43,4]]},"877":{"position":[[78,4]]},"898":{"position":[[47,4],[164,4],[460,4]]},"914":{"position":[[0,4]]},"955":{"position":[[52,4]]},"985":{"position":[[107,4]]},"992":{"position":[[11,4],[192,4],[527,4]]},"994":{"position":[[100,4],[149,4]]},"1002":{"position":[[15,4]]},"1047":{"position":[[43,4]]},"1059":{"position":[[12,4]]},"1061":{"position":[[20,4]]},"1091":{"position":[[32,4]]},"1126":{"position":[[71,4]]},"1479":{"position":[[24,4]]},"1483":{"position":[[61,4]]},"1575":{"position":[[17,4],[84,4]]},"1684":{"position":[[30,4]]},"1781":{"position":[[23,4],[110,4],[470,4]]},"1807":{"position":[[66,4],[129,4],[200,4]]},"1825":{"position":[[16,4]]},"1851":{"position":[[18,4]]},"1902":{"position":[[35,4],[87,4],[106,4]]},"1999":{"position":[[0,4],[113,4]]},"2001":{"position":[[92,4]]},"2003":{"position":[[63,4]]},"2028":{"position":[[39,4]]},"2142":{"position":[[4,4],[84,4],[119,4]]},"2162":{"position":[[21,4]]},"2200":{"position":[[63,4]]},"2226":{"position":[[90,4]]},"2252":{"position":[[40,4],[61,4],[184,4]]},"2254":{"position":[[15,4]]},"2289":{"position":[[179,4]]},"2297":{"position":[[11,4],[120,4]]},"2336":{"position":[[52,4]]},"2352":{"position":[[0,4]]},"2371":{"position":[[283,4]]},"2414":{"position":[[61,4]]},"2424":{"position":[[76,4],[107,4]]},"2660":{"position":[[395,4]]},"2720":{"position":[[84,4]]},"2736":{"position":[[88,4]]},"2797":{"position":[[41,4]]},"2842":{"position":[[8,4]]},"2867":{"position":[[4,4]]},"2889":{"position":[[66,4]]},"3022":{"position":[[35,4]]},"3085":{"position":[[158,4]]},"3105":{"position":[[63,4]]},"3119":{"position":[[0,4]]},"3128":{"position":[[17,4]]},"3140":{"position":[[4,4]]},"3226":{"position":[[79,4]]},"3341":{"position":[[14,4]]},"3365":{"position":[[114,4]]},"3400":{"position":[[26,4]]},"3453":{"position":[[74,4]]},"3501":{"position":[[78,4]]},"3608":{"position":[[140,4]]},"3663":{"position":[[33,4]]},"3854":{"position":[[0,4]]},"3973":{"position":[[52,4]]}}}],["chialisp",{"_index":174,"t":{"274":{"position":[[40,8]]},"445":{"position":[[50,8],[112,8]]},"745":{"position":[[403,8]]},"1475":{"position":[[39,8],[61,8],[74,8]]},"1483":{"position":[[180,8]]},"1549":{"position":[[39,8],[61,8],[74,8]]},"1551":{"position":[[39,8],[61,8],[74,8]]},"1553":{"position":[[39,8],[61,8],[74,8]]},"1555":{"position":[[39,8],[61,8],[74,8]]},"1557":{"position":[[39,8],[61,8],[74,8]]},"1559":{"position":[[39,8],[61,8],[74,8]]},"1573":{"position":[[39,8],[61,8],[74,8]]},"1708":{"position":[[97,8]]},"1728":{"position":[[97,8]]},"1807":{"position":[[449,8]]},"1851":{"position":[[112,8],[369,8]]},"2140":{"position":[[47,8]]},"2258":{"position":[[15,8]]},"2260":{"position":[[78,8]]}}}],["chiapo",{"_index":709,"t":{"2399":{"position":[[207,7]]}}}],["choos",{"_index":857,"t":{"3290":{"position":[[222,6]]}}}],["classic",{"_index":641,"t":{"2140":{"position":[[120,7]]}}}],["cli",{"_index":383,"t":{"680":{"position":[[61,3]]},"877":{"position":[[44,3]]},"2041":{"position":[[94,3]]},"2228":{"position":[[122,3],[147,3]]},"2736":{"position":[[44,3]]},"3022":{"position":[[185,3]]},"3365":{"position":[[41,3],[56,3],[155,3],[229,3]]},"3400":{"position":[[68,3]]},"3501":{"position":[[44,3]]},"3663":{"position":[[47,3]]}}}],["client",{"_index":492,"t":{"1047":{"position":[[48,6]]},"2371":{"position":[[6,6]]}}}],["close",{"_index":772,"t":{"2867":{"position":[[111,6]]},"3192":{"position":[[38,7]]}}}],["clvm",{"_index":191,"t":{"322":{"position":[[40,4],[83,4],[97,4]]}}}],["code",{"_index":335,"t":{"541":{"position":[[171,4]]},"1708":{"position":[[106,4]]},"1728":{"position":[[106,4]]},"2867":{"position":[[118,4]]}}}],["coin",{"_index":181,"t":{"290":{"position":[[41,5]]},"306":{"position":[[102,4]]},"381":{"position":[[14,4],[72,4],[150,5],[178,4]]},"383":{"position":[[264,4]]},"423":{"position":[[13,4],[127,4],[204,4]]},"431":{"position":[[20,5],[305,5]]},"447":{"position":[[89,4]]},"1555":{"position":[[95,4]]},"1575":{"position":[[76,4],[148,4]]},"1587":{"position":[[41,4],[116,4]]},"1756":{"position":[[127,4]]},"1807":{"position":[[440,5]]},"1851":{"position":[[39,4],[81,5],[101,4],[207,4]]},"1883":{"position":[[40,4]]},"1971":{"position":[[44,4],[219,4]]},"2254":{"position":[[127,4]]},"2260":{"position":[[37,4]]},"2266":{"position":[[0,4]]},"3022":{"position":[[144,5]]},"3216":{"position":[[46,5]]}}}],["coinset",{"_index":267,"t":{"447":{"position":[[33,7]]}}}],["cold",{"_index":602,"t":{"1825":{"position":[[62,4]]}}}],["collect",{"_index":696,"t":{"2379":{"position":[[34,10]]}}}],["com",{"_index":507,"t":{"1475":{"position":[[70,3]]},"1549":{"position":[[70,3]]},"1551":{"position":[[70,3]]},"1553":{"position":[[70,3]]},"1555":{"position":[[70,3]]},"1557":{"position":[[70,3]]},"1559":{"position":[[70,3]]},"1573":{"position":[[70,3]]}}}],["combin",{"_index":745,"t":{"2660":{"position":[[235,7]]},"3290":{"position":[[194,12]]}}}],["come",{"_index":498,"t":{"1061":{"position":[[40,4]]},"1091":{"position":[[52,4]]},"2797":{"position":[[8,5]]},"3140":{"position":[[27,4]]},"3279":{"position":[[271,5]]}}}],["command",{"_index":384,"t":{"680":{"position":[[65,8]]},"828":{"position":[[50,7],[73,8]]},"877":{"position":[[48,8]]},"916":{"position":[[19,7]]},"1708":{"position":[[134,7]]},"1728":{"position":[[134,7]]},"1902":{"position":[[111,7]]},"2140":{"position":[[56,8]]},"2162":{"position":[[43,7]]},"2567":{"position":[[19,7]]},"2637":{"position":[[19,7]]},"2736":{"position":[[48,8]]},"3365":{"position":[[159,8]]},"3501":{"position":[[48,8]]},"3579":{"position":[[19,7]]},"3598":{"position":[[0,8]]},"3663":{"position":[[51,8],[82,8]]},"3704":{"position":[[0,8]]},"3710":{"position":[[0,8]]},"3735":{"position":[[0,8]]},"3772":{"position":[[19,7]]},"3878":{"position":[[19,7]]}}}],["comment",{"_index":148,"t":{"224":{"position":[[48,8]]}}}],["commod",{"_index":454,"t":{"992":{"position":[[103,9]]}}}],["common",{"_index":576,"t":{"1756":{"position":[[30,6]]},"2460":{"position":[[32,6]]}}}],["commun",{"_index":438,"t":{"914":{"position":[[287,11]]},"2297":{"position":[[99,11]]},"3516":{"position":[[12,11]]},"3608":{"position":[[19,14]]}}}],["compar",{"_index":457,"t":{"992":{"position":[[141,8]]},"2371":{"position":[[79,8],[326,8]]}}}],["complet",{"_index":843,"t":{"3279":{"position":[[34,10]]}}}],["complex",{"_index":355,"t":{"580":{"position":[[43,7]]},"1825":{"position":[[88,7]]}}}],["complic",{"_index":595,"t":{"1781":{"position":[[563,11]]}}}],["compon",{"_index":694,"t":{"2377":{"position":[[81,10]]},"3854":{"position":[[41,10],[161,9]]}}}],["compos",{"_index":105,"t":{"134":{"position":[[28,8]]},"256":{"position":[[21,8]]},"1059":{"position":[[42,8]]}}}],["comprehens",{"_index":23,"t":{"29":{"position":[[176,13]]},"445":{"position":[[28,13]]},"539":{"position":[[25,13]]},"680":{"position":[[25,13]]},"755":{"position":[[25,13]]},"828":{"position":[[21,13]]},"877":{"position":[[19,13]]},"898":{"position":[[81,13]]},"955":{"position":[[25,13]]},"2336":{"position":[[25,13]]},"2736":{"position":[[19,13]]},"3501":{"position":[[19,13]]},"3973":{"position":[[25,13]]}}}],["compress",{"_index":442,"t":{"985":{"position":[[37,10],[148,10]]},"2362":{"position":[[12,11]]},"2842":{"position":[[110,11]]},"3160":{"position":[[21,10],[79,11]]}}}],["comput",{"_index":276,"t":{"461":{"position":[[129,9]]},"992":{"position":[[159,9]]},"1781":{"position":[[194,11]]},"2297":{"position":[[86,9]]}}}],["concept",{"_index":38,"t":{"29":{"position":[[389,8]]},"1126":{"position":[[50,8]]},"1999":{"position":[[65,8]]},"2252":{"position":[[29,7]]},"2720":{"position":[[176,8]]}}}],["concern",{"_index":246,"t":{"431":{"position":[[36,8]]},"1479":{"position":[[0,8]]}}}],["condit",{"_index":184,"t":{"306":{"position":[[50,10]]},"445":{"position":[[59,10]]},"1549":{"position":[[83,9]]},"1756":{"position":[[60,10]]}}}],["configur",{"_index":122,"t":{"148":{"position":[[215,14]]},"580":{"position":[[148,13]]},"2297":{"position":[[53,13]]}}}],["confirm",{"_index":698,"t":{"2379":{"position":[[118,9]]}}}],["connect",{"_index":663,"t":{"2264":{"position":[[105,9]]}}}],["consensu",{"_index":288,"t":{"494":{"position":[[9,9]]},"498":{"position":[[40,9]]},"541":{"position":[[65,9],[216,9]]},"1781":{"position":[[238,9]]},"2371":{"position":[[290,9]]},"2379":{"position":[[182,9]]},"2660":{"position":[[502,9]]},"3327":{"position":[[65,9]]}}}],["consider",{"_index":474,"t":{"992":{"position":[[486,13]]}}}],["consist",{"_index":896,"t":{"3854":{"position":[[22,7]]}}}],["constant",{"_index":350,"t":{"545":{"position":[[14,9]]}}}],["construct",{"_index":558,"t":{"1518":{"position":[[279,13]]},"2414":{"position":[[177,12]]}}}],["consum",{"_index":851,"t":{"3279":{"position":[[167,8]]}}}],["contain",{"_index":382,"t":{"680":{"position":[[14,8]]}}}],["contest",{"_index":866,"t":{"3341":{"position":[[27,7]]}}}],["context",{"_index":241,"t":{"423":{"position":[[117,8]]}}}],["contract",{"_index":652,"t":{"2252":{"position":[[171,9]]}}}],["control",{"_index":662,"t":{"2264":{"position":[[35,10]]},"2371":{"position":[[223,7]]},"3085":{"position":[[241,10]]},"3140":{"position":[[101,7]]},"3290":{"position":[[97,7]]}}}],["convert",{"_index":812,"t":{"3128":{"position":[[48,9]]}}}],["cool",{"_index":472,"t":{"992":{"position":[[442,7]]}}}],["copi",{"_index":436,"t":{"914":{"position":[[181,4]]}}}],["core",{"_index":37,"t":{"29":{"position":[[384,4]]},"1059":{"position":[[4,4]]}}}],["correct",{"_index":744,"t":{"2660":{"position":[[137,7]]}}}],["cost",{"_index":269,"t":{"461":{"position":[[0,4]]},"992":{"position":[[365,4]]}}}],["costless",{"_index":794,"t":{"3085":{"position":[[23,8],[480,8]]}}}],["cours",{"_index":573,"t":{"1708":{"position":[[24,6]]},"1728":{"position":[[24,6]]},"1807":{"position":[[5,6]]}}}],["cover",{"_index":115,"t":{"148":{"position":[[88,5]]},"745":{"position":[[469,5]]},"1575":{"position":[[43,6]]},"1807":{"position":[[322,5]]},"2162":{"position":[[14,6]]}}}],["cpu",{"_index":891,"t":{"3516":{"position":[[195,3]]}}}],["craft",{"_index":396,"t":{"745":{"position":[[291,7]]}}}],["crawler",{"_index":644,"t":{"2142":{"position":[[18,7]]}}}],["creat",{"_index":101,"t":{"122":{"position":[[107,7]]},"431":{"position":[[5,8]]},"649":{"position":[[188,8]]},"717":{"position":[[188,8]]},"994":{"position":[[62,7]]},"1047":{"position":[[101,6]]},"1483":{"position":[[31,6],[118,8]]},"1575":{"position":[[50,8]]},"1971":{"position":[[26,7]]},"2001":{"position":[[63,8]]},"2041":{"position":[[58,6]]},"2228":{"position":[[58,6]]},"2252":{"position":[[148,8]]},"2297":{"position":[[158,6]]},"2399":{"position":[[182,6]]},"2658":{"position":[[69,6],[145,6]]},"2720":{"position":[[93,6]]},"2736":{"position":[[61,8]]},"2805":{"position":[[3,6]]},"3160":{"position":[[14,6]]},"3386":{"position":[[33,8]]},"3854":{"position":[[171,7]]}}}],["creation",{"_index":656,"t":{"2260":{"position":[[42,8]]},"3279":{"position":[[17,8]]}}}],["critic",{"_index":752,"t":{"2660":{"position":[[512,8]]}}}],["cryptocurr",{"_index":351,"t":{"552":{"position":[[10,14]]},"2352":{"position":[[10,14],[120,14]]}}}],["cryptograph",{"_index":685,"t":{"2371":{"position":[[167,17]]}}}],["cuda",{"_index":848,"t":{"3279":{"position":[[127,4]]}}}],["curiou",{"_index":793,"t":{"3070":{"position":[[0,7]]}}}],["current",{"_index":367,"t":{"641":{"position":[[9,9]]},"649":{"position":[[14,9]]},"717":{"position":[[14,9]]},"2660":{"position":[[375,7]]},"3294":{"position":[[30,7]]}}}],["curri",{"_index":183,"t":{"306":{"position":[[27,8]]},"1553":{"position":[[83,8]]}}}],["custodi",{"_index":356,"t":{"580":{"position":[[58,9],[114,7],[292,7]]},"1825":{"position":[[103,9],[167,9],[311,7]]}}}],["custom",{"_index":57,"t":{"49":{"position":[[187,6]]},"1807":{"position":[[433,6]]},"1883":{"position":[[52,6]]},"2379":{"position":[[251,9]]}}}],["daemon",{"_index":406,"t":{"755":{"position":[[59,6]]},"2297":{"position":[[16,6],[125,6]]}}}],["dao",{"_index":366,"t":{"641":{"position":[[0,4],[102,3]]},"649":{"position":[[5,4],[60,4],[197,4]]},"680":{"position":[[57,3]]},"717":{"position":[[5,4],[60,4],[197,4]]}}}],["dapp",{"_index":893,"t":{"3608":{"position":[[83,5]]}}}],["data",{"_index":33,"t":{"29":{"position":[[319,4]]},"401":{"position":[[136,4]]},"461":{"position":[[245,4]]},"3216":{"position":[[156,4]]}}}],["datalay",{"_index":412,"t":{"828":{"position":[[107,9]]},"2003":{"position":[[70,9]]}}}],["day",{"_index":733,"t":{"2560":{"position":[[122,4]]}}}],["debug",{"_index":899,"t":{"3854":{"position":[[208,5]]}}}],["decentr",{"_index":395,"t":{"745":{"position":[[242,13]]},"898":{"position":[[335,13]]},"1781":{"position":[[342,13]]},"2867":{"position":[[58,16]]},"3608":{"position":[[55,13]]}}}],["decid",{"_index":606,"t":{"1851":{"position":[[182,7]]},"3160":{"position":[[56,6]]},"3386":{"position":[[219,6]]}}}],["decis",{"_index":764,"t":{"2797":{"position":[[184,8]]}}}],["decreas",{"_index":787,"t":{"3022":{"position":[[289,9]]}}}],["dedic",{"_index":266,"t":{"445":{"position":[[99,9]]},"3663":{"position":[[119,9]]},"3973":{"position":[[137,9]]}}}],["deep",{"_index":13,"t":{"29":{"position":[[55,4]]}}}],["default",{"_index":900,"t":{"3911":{"position":[[54,7]]}}}],["defi",{"_index":600,"t":{"1807":{"position":[[340,4]]}}}],["defin",{"_index":161,"t":{"256":{"position":[[155,7]]},"1851":{"position":[[301,7]]},"2289":{"position":[[237,7]]}}}],["definit",{"_index":554,"t":{"1518":{"position":[[205,11]]}}}],["delay",{"_index":550,"t":{"1518":{"position":[[160,5]]},"3066":{"position":[[13,5]]},"3386":{"position":[[88,5]]}}}],["delv",{"_index":12,"t":{"29":{"position":[[47,7]]}}}],["demonstr",{"_index":635,"t":{"2041":{"position":[[39,11]]},"2228":{"position":[[39,11]]}}}],["denot",{"_index":884,"t":{"3480":{"position":[[236,6]]}}}],["depth",{"_index":165,"t":{"256":{"position":[[219,5]]},"541":{"position":[[202,5]]}}}],["describ",{"_index":357,"t":{"580":{"position":[[89,9]]},"1825":{"position":[[139,8]]}}}],["descript",{"_index":190,"t":{"322":{"position":[[25,11]]}}}],["design",{"_index":71,"t":{"67":{"position":[[50,8]]},"148":{"position":[[158,8]]},"431":{"position":[[111,8],[292,6]]},"745":{"position":[[496,8]]},"898":{"position":[[384,8]]},"1781":{"position":[[575,6]]},"1807":{"position":[[15,8]]},"2352":{"position":[[84,8]]},"2867":{"position":[[32,8]]},"3022":{"position":[[61,8]]},"3480":{"position":[[39,6]]}}}],["destroy",{"_index":235,"t":{"401":{"position":[[169,9]]}}}],["detail",{"_index":192,"t":{"322":{"position":[[50,7]]},"580":{"position":[[242,7]]},"985":{"position":[[3,8]]},"1825":{"position":[[152,7],[269,7]]},"2377":{"position":[[10,7]]},"2414":{"position":[[106,6]]},"2424":{"position":[[27,7]]}}}],["determin",{"_index":98,"t":{"122":{"position":[[79,10]]},"498":{"position":[[75,9]]}}}],["determinist",{"_index":737,"t":{"2658":{"position":[[47,13]]},"3386":{"position":[[175,13]]}}}],["dev",{"_index":614,"t":{"1902":{"position":[[92,3]]}}}],["develop",{"_index":178,"t":{"274":{"position":[[128,11]]},"641":{"position":[[25,11]]},"745":{"position":[[28,9],[171,9],[521,11]]},"898":{"position":[[241,9]]},"1479":{"position":[[13,10]]},"1575":{"position":[[22,9]]},"1708":{"position":[[66,11]]},"1728":{"position":[[66,11]]},"1999":{"position":[[5,9],[86,10]]},"2252":{"position":[[66,9]]},"2254":{"position":[[20,9]]}}}],["devic",{"_index":458,"t":{"992":{"position":[[169,7]]}}}],["dfkp15",{"_index":547,"t":{"1518":{"position":[[129,6]]}}}],["diagram",{"_index":316,"t":{"535":{"position":[[16,8]]}}}],["dictat",{"_index":699,"t":{"2379":{"position":[[166,8]]}}}],["did",{"_index":7,"t":{"15":{"position":[[30,4]]},"877":{"position":[[83,4]]},"2041":{"position":[[73,4]]},"2228":{"position":[[73,4]]}}}],["differ",{"_index":112,"t":{"148":{"position":[[30,9],[205,9]]},"256":{"position":[[39,9]]},"423":{"position":[[181,10],[262,11]]},"1807":{"position":[[205,9]]},"2424":{"position":[[50,9]]},"2660":{"position":[[559,9]]},"2842":{"position":[[168,9]]},"3290":{"position":[[184,9]]},"3854":{"position":[[69,9]]}}}],["difficult",{"_index":775,"t":{"2889":{"position":[[81,9]]}}}],["digit",{"_index":19,"t":{"29":{"position":[[126,7]]},"1518":{"position":[[92,7]]}}}],["diminish",{"_index":873,"t":{"3412":{"position":[[37,10]]}}}],["directli",{"_index":612,"t":{"1902":{"position":[[51,8]]}}}],["directori",{"_index":702,"t":{"2399":{"position":[[54,9]]}}}],["discord",{"_index":153,"t":{"224":{"position":[[99,7]]},"541":{"position":[[305,7]]}}}],["discuss",{"_index":134,"t":{"185":{"position":[[19,7]]},"423":{"position":[[287,7]]},"1477":{"position":[[26,9]]},"2160":{"position":[[26,9]]},"2260":{"position":[[11,9]]},"2289":{"position":[[65,9]]},"3085":{"position":[[9,9]]},"3192":{"position":[[210,7]]}}}],["disk",{"_index":461,"t":{"992":{"position":[[257,4],[373,5]]},"1781":{"position":[[172,4]]},"3128":{"position":[[126,4]]}}}],["display",{"_index":47,"t":{"49":{"position":[[55,9],[159,8]]}}}],["dissect",{"_index":25,"t":{"29":{"position":[[226,10]]}}}],["distribut",{"_index":789,"t":{"3022":{"position":[[375,12]]}}}],["dive",{"_index":36,"t":{"29":{"position":[[370,4]]},"447":{"position":[[19,4]]},"3327":{"position":[[19,4]]}}}],["divers",{"_index":416,"t":{"898":{"position":[[132,7]]}}}],["divid",{"_index":817,"t":{"3154":{"position":[[66,7]]}}}],["doc",{"_index":129,"t":{"183":{"position":[[5,3]]},"2375":{"position":[[5,3]]},"2565":{"position":[[5,3]]},"3365":{"position":[[5,3]]},"3400":{"position":[[5,3]]}}}],["document",{"_index":163,"t":{"256":{"position":[[201,9]]},"326":{"position":[[47,13]]},"580":{"position":[[80,8]]},"680":{"position":[[5,8]]},"745":{"position":[[274,13]]},"755":{"position":[[5,8]]},"877":{"position":[[5,8]]},"898":{"position":[[24,13],[367,13]]},"955":{"position":[[5,8]]},"1475":{"position":[[5,8]]},"1549":{"position":[[5,8]]},"1551":{"position":[[5,8]]},"1553":{"position":[[5,8]]},"1555":{"position":[[5,8]]},"1557":{"position":[[5,8]]},"1559":{"position":[[5,8]]},"1573":{"position":[[5,8]]},"1781":{"position":[[510,8]]},"1825":{"position":[[125,8]]},"2003":{"position":[[5,8]]},"2028":{"position":[[5,8]]},"2059":{"position":[[11,8]]},"2200":{"position":[[5,8]]},"2336":{"position":[[5,8]]},"2736":{"position":[[5,8]]},"3501":{"position":[[5,8]]},"3663":{"position":[[5,8],[95,10]]},"3973":{"position":[[5,8],[113,10]]}}}],["doesn",{"_index":703,"t":{"2399":{"position":[[126,5]]}}}],["don",{"_index":433,"t":{"914":{"position":[[164,3]]},"3279":{"position":[[189,3]]}}}],["done",{"_index":842,"t":{"3279":{"position":[[29,4]]}}}],["doubl",{"_index":797,"t":{"3085":{"position":[[68,6]]}}}],["dram",{"_index":844,"t":{"3279":{"position":[[101,4]]}}}],["drive",{"_index":284,"t":{"461":{"position":[[207,5]]}}}],["due",{"_index":51,"t":{"49":{"position":[[101,3]]},"2889":{"position":[[0,3]]}}}],["dure",{"_index":302,"t":{"494":{"position":[[179,6]]}}}],["dynam",{"_index":827,"t":{"3192":{"position":[[182,7]]}}}],["each",{"_index":74,"t":{"67":{"position":[[108,4]]},"256":{"position":[[251,4]]},"461":{"position":[[253,4]]},"914":{"position":[[304,4]]},"2142":{"position":[[98,4]]},"2262":{"position":[[106,4]]},"2842":{"position":[[182,4]]},"3154":{"position":[[0,4],[104,4],[225,4]]},"3608":{"position":[[128,4]]},"3854":{"position":[[57,4],[156,4]]}}}],["earn",{"_index":430,"t":{"914":{"position":[[55,4]]},"2865":{"position":[[51,7]]}}}],["easier",{"_index":675,"t":{"2352":{"position":[[135,6]]}}}],["ecolog",{"_index":588,"t":{"1781":{"position":[[291,12]]}}}],["econom",{"_index":589,"t":{"1781":{"position":[[308,12]]}}}],["ecosystem",{"_index":400,"t":{"745":{"position":[[363,9]]},"898":{"position":[[465,9]]}}}],["effect",{"_index":840,"t":{"3251":{"position":[[64,7]]}}}],["effici",{"_index":468,"t":{"992":{"position":[[326,9]]}}}],["elaps",{"_index":609,"t":{"1851":{"position":[[430,7]]}}}],["elev",{"_index":404,"t":{"745":{"position":[[508,7]]}}}],["empow",{"_index":397,"t":{"745":{"position":[[302,7]]},"898":{"position":[[396,7]]}}}],["enabl",{"_index":64,"t":{"51":{"position":[[55,7]]}}}],["encod",{"_index":61,"t":{"49":{"position":[[224,8]]},"256":{"position":[[95,7]]}}}],["end",{"_index":423,"t":{"910":{"position":[[49,4],[89,4],[101,3]]},"1505":{"position":[[17,3]]},"1537":{"position":[[20,3]]},"1561":{"position":[[20,3]]},"1807":{"position":[[39,3],[46,3]]},"2488":{"position":[[216,3]]}}}],["enforc",{"_index":254,"t":{"431":{"position":[[182,7]]}}}],["enhanc",{"_index":72,"t":{"67":{"position":[[62,7]]}}}],["enough",{"_index":120,"t":{"148":{"position":[[182,6]]}}}],["enter",{"_index":734,"t":{"2560":{"position":[[136,5]]}}}],["enthusiast",{"_index":393,"t":{"745":{"position":[[195,10]]},"898":{"position":[[265,10]]}}}],["entir",{"_index":739,"t":{"2658":{"position":[[79,6]]}}}],["entri",{"_index":898,"t":{"3854":{"position":[[179,7]]}}}],["environ",{"_index":179,"t":{"274":{"position":[[140,11]]},"1708":{"position":[[78,11]]},"1728":{"position":[[78,11]]}}}],["epoch",{"_index":421,"t":{"910":{"position":[[4,5],[15,5],[39,5],[74,5]]}}}],["equip",{"_index":722,"t":{"2488":{"position":[[220,9]]}}}],["equival",{"_index":833,"t":{"3216":{"position":[[145,10]]}}}],["error",{"_index":50,"t":{"49":{"position":[[94,6]]}}}],["escap",{"_index":441,"t":{"916":{"position":[[27,8]]},"2567":{"position":[[27,8]]},"2637":{"position":[[27,8]]},"3579":{"position":[[27,8]]},"3772":{"position":[[27,8]]},"3878":{"position":[[27,8]]}}}],["ethereum",{"_index":226,"t":{"383":{"position":[[182,8]]},"401":{"position":[[54,8]]},"2252":{"position":[[157,8]]}}}],["even",{"_index":690,"t":{"2371":{"position":[[381,4]]},"2399":{"position":[[80,4]]},"2889":{"position":[[117,4]]}}}],["everyth",{"_index":204,"t":{"381":{"position":[[56,10]]},"1851":{"position":[[0,10]]},"3365":{"position":[[103,10]]}}}],["exact",{"_index":732,"t":{"2560":{"position":[[90,5]]}}}],["exampl",{"_index":41,"t":{"35":{"position":[[55,8]]},"1575":{"position":[[119,7]]},"1587":{"position":[[134,7]]},"1851":{"position":[[332,7]]}}}],["except",{"_index":424,"t":{"910":{"position":[[55,6]]}}}],["exclus",{"_index":855,"t":{"3290":{"position":[[65,9]]}}}],["execut",{"_index":279,"t":{"461":{"position":[[157,7]]},"1708":{"position":[[116,7]]},"1728":{"position":[[116,7]]},"3066":{"position":[[115,8]]}}}],["exercis",{"_index":617,"t":{"1971":{"position":[[87,8]]},"2140":{"position":[[17,8]]}}}],["exist",{"_index":449,"t":{"985":{"position":[[223,5]]}}}],["expect",{"_index":459,"t":{"992":{"position":[[204,7]]},"2460":{"position":[[50,6]]},"2560":{"position":[[45,6]]}}}],["expend",{"_index":274,"t":{"461":{"position":[[56,8]]}}}],["expenditur",{"_index":470,"t":{"992":{"position":[[407,12]]}}}],["expens",{"_index":466,"t":{"992":{"position":[[309,8]]}}}],["experi",{"_index":55,"t":{"49":{"position":[[131,10]]},"67":{"position":[[83,10]]}}}],["explain",{"_index":111,"t":{"148":{"position":[[18,7]]},"1781":{"position":[[525,7]]},"2252":{"position":[[91,8]]}}}],["explan",{"_index":198,"t":{"326":{"position":[[65,11]]}}}],["explor",{"_index":24,"t":{"29":{"position":[[190,11]]},"745":{"position":[[427,9]]},"898":{"position":[[306,7]]}}}],["expos",{"_index":671,"t":{"2297":{"position":[[0,8]]},"3608":{"position":[[172,7]]},"3911":{"position":[[25,7],[98,7]]}}}],["extend",{"_index":781,"t":{"3022":{"position":[[94,8]]}}}],["face",{"_index":715,"t":{"2414":{"position":[[166,5]]}}}],["fact",{"_index":448,"t":{"985":{"position":[[208,4]]}}}],["familiar",{"_index":868,"t":{"3365":{"position":[[211,8]]}}}],["far",{"_index":611,"t":{"1902":{"position":[[3,3]]}}}],["farm",{"_index":103,"t":{"122":{"position":[[142,6]]},"199":{"position":[[7,4]]},"218":{"position":[[88,7]]},"992":{"position":[[336,4],[532,4]]},"994":{"position":[[0,7],[154,7]]},"1002":{"position":[[20,7]]},"1047":{"position":[[132,7]]},"1807":{"position":[[298,7]]},"2264":{"position":[[70,7]]},"2424":{"position":[[127,7]]},"2488":{"position":[[28,4],[116,4],[194,4]]},"2720":{"position":[[24,7]]},"2797":{"position":[[30,7],[218,4]]},"3854":{"position":[[90,7]]}}}],["farmer",{"_index":88,"t":{"108":{"position":[[70,7]]},"494":{"position":[[281,7],[333,7]]},"535":{"position":[[48,7]]},"914":{"position":[[7,7],[147,6],[270,6],[325,6]]},"955":{"position":[[59,6]]},"992":{"position":[[197,6]]},"1033":{"position":[[73,6]]},"1061":{"position":[[25,6]]},"2262":{"position":[[82,6]]},"2264":{"position":[[51,6],[91,6]]},"2379":{"position":[[201,6]]},"2660":{"position":[[541,7]]},"2865":{"position":[[12,7]]},"2994":{"position":[[73,6]]},"3022":{"position":[[123,7],[433,7]]}}}],["fastest",{"_index":841,"t":{"3279":{"position":[[4,7]]}}}],["fc",{"_index":670,"t":{"2289":{"position":[[159,2]]}}}],["fee",{"_index":431,"t":{"914":{"position":[[78,4]]}}}],["feel",{"_index":339,"t":{"541":{"position":[[273,4]]},"2424":{"position":[[147,4]]}}}],["few",{"_index":156,"t":{"256":{"position":[[35,3]]},"423":{"position":[[254,3]]},"2003":{"position":[[95,3]]},"2560":{"position":[[118,3]]}}}],["figur",{"_index":341,"t":{"543":{"position":[[0,6]]},"1781":{"position":[[424,6]]},"3480":{"position":[[92,6]]}}}],["file",{"_index":481,"t":{"994":{"position":[[120,4]]},"1047":{"position":[[91,4]]},"2399":{"position":[[20,5]]},"2658":{"position":[[172,5]]},"3854":{"position":[[203,4]]}}}],["filter",{"_index":136,"t":{"185":{"position":[[40,6]]}}}],["final",{"_index":532,"t":{"1505":{"position":[[115,5]]},"1807":{"position":[[307,7]]},"3480":{"position":[[19,7]]}}}],["find",{"_index":309,"t":{"494":{"position":[[341,4]]},"898":{"position":[[74,4]]},"914":{"position":[[86,7]]}}}],["fine",{"_index":240,"t":{"423":{"position":[[104,4]]}}}],["first",{"_index":186,"t":{"306":{"position":[[85,5]]},"910":{"position":[[112,5]]},"1047":{"position":[[112,5]]},"1555":{"position":[[83,5]]},"1575":{"position":[[64,5]]},"1971":{"position":[[38,5]]},"2001":{"position":[[152,5]]},"2414":{"position":[[117,5]]},"2720":{"position":[[105,5]]}}}],["fit",{"_index":761,"t":{"2797":{"position":[[68,4]]}}}],["flexibl",{"_index":119,"t":{"148":{"position":[[173,8]]}}}],["foliag",{"_index":668,"t":{"2289":{"position":[[138,7]]}}}],["follow",{"_index":162,"t":{"256":{"position":[[191,9]]},"539":{"position":[[4,9]]},"1025":{"position":[[78,8]]},"2200":{"position":[[125,9]]},"2720":{"position":[[140,6]]},"3085":{"position":[[274,6],[439,6]]},"3663":{"position":[[65,9]]}}}],["fork",{"_index":321,"t":{"539":{"position":[[51,5]]}}}],["form",{"_index":92,"t":{"108":{"position":[[111,7]]},"3279":{"position":[[284,4]]}}}],["format",{"_index":58,"t":{"49":{"position":[[194,6]]},"108":{"position":[[46,9]]},"256":{"position":[[117,6]]},"2560":{"position":[[65,6]]},"2562":{"position":[[10,6]]},"2763":{"position":[[32,6],[94,6],[148,6]]},"2775":{"position":[[10,6]]}}}],["forward",{"_index":874,"t":{"3453":{"position":[[0,10]]}}}],["foundat",{"_index":598,"t":{"1807":{"position":[[95,12]]}}}],["fraction",{"_index":800,"t":{"3085":{"position":[[213,8]]}}}],["free",{"_index":340,"t":{"541":{"position":[[278,4]]},"2424":{"position":[[152,4]]}}}],["frequent",{"_index":759,"t":{"2763":{"position":[[55,10]]}}}],["friendli",{"_index":76,"t":{"67":{"position":[[143,8]]}}}],["front",{"_index":247,"t":{"431":{"position":[[62,5]]}}}],["full",{"_index":84,"t":{"95":{"position":[[0,4]]},"541":{"position":[[120,4]]},"914":{"position":[[222,4],[256,4]]},"1047":{"position":[[65,4]]},"1059":{"position":[[54,4],[66,4]]},"2262":{"position":[[39,4]]},"2379":{"position":[[71,4],[301,4]]},"2660":{"position":[[183,4],[316,4]]},"3216":{"position":[[83,4]]},"3516":{"position":[[29,4],[215,4]]},"3911":{"position":[[4,4],[40,4]]}}}],["fulli",{"_index":555,"t":{"1518":{"position":[[225,5]]}}}],["fun",{"_index":615,"t":{"1971":{"position":[[72,3]]}}}],["function",{"_index":39,"t":{"29":{"position":[[402,15]]},"1518":{"position":[[166,9]]},"2003":{"position":[[105,9]]},"2379":{"position":[[237,9]]},"3066":{"position":[[19,8],[102,8]]},"3386":{"position":[[94,8]]}}}],["fund",{"_index":237,"t":{"401":{"position":[[194,5]]},"1851":{"position":[[389,5]]}}}],["fundament",{"_index":217,"t":{"383":{"position":[[41,11]]},"2140":{"position":[[35,11]]},"2252":{"position":[[17,11]]}}}],["fungibl",{"_index":518,"t":{"1483":{"position":[[38,8]]},"1807":{"position":[[369,8],[397,8]]}}}],["further",{"_index":338,"t":{"541":{"position":[[254,7]]}}}],["furthermor",{"_index":786,"t":{"3022":{"position":[[273,11]]}}}],["futur",{"_index":624,"t":{"1971":{"position":[[329,6]]}}}],["gateway",{"_index":387,"t":{"745":{"position":[[55,7]]}}}],["gb",{"_index":846,"t":{"3279":{"position":[[111,2],[140,2]]}}}],["gener",{"_index":116,"t":{"148":{"position":[[111,9]]},"992":{"position":[[181,7],[263,9]]},"1128":{"position":[[0,7]]},"1518":{"position":[[231,7]]},"2377":{"position":[[55,7]]},"2414":{"position":[[143,7]]},"2488":{"position":[[3,7]]},"2660":{"position":[[584,10]]},"3296":{"position":[[3,7]]},"3327":{"position":[[92,8]]},"3854":{"position":[[126,7]]}}}],["genesi",{"_index":427,"t":{"910":{"position":[[174,7]]}}}],["get",{"_index":102,"t":{"122":{"position":[[137,4]]},"2720":{"position":[[159,7]]},"3465":{"position":[[0,7]]}}}],["github",{"_index":352,"t":{"565":{"position":[[6,6]]}}}],["give",{"_index":596,"t":{"1807":{"position":[[27,4]]},"1999":{"position":[[30,5]]},"2560":{"position":[[11,5]]}}}],["given",{"_index":216,"t":{"383":{"position":[[7,5]]},"2842":{"position":[[92,5]]}}}],["glossari",{"_index":502,"t":{"1126":{"position":[[25,8]]}}}],["go",{"_index":164,"t":{"256":{"position":[[211,2]]},"290":{"position":[[19,2]]},"306":{"position":[[19,2]]},"1033":{"position":[[19,2]]},"1483":{"position":[[107,2]]},"2424":{"position":[[15,2]]},"2539":{"position":[[18,2]]}}}],["goal",{"_index":475,"t":{"992":{"position":[[504,5]]}}}],["goe",{"_index":653,"t":{"2254":{"position":[[41,4]]}}}],["good",{"_index":616,"t":{"1971":{"position":[[82,4]]}}}],["greek",{"_index":881,"t":{"3480":{"position":[[210,5]]}}}],["ground",{"_index":674,"t":{"2352":{"position":[[102,6]]}}}],["grow",{"_index":720,"t":{"2460":{"position":[[63,4]]}}}],["gui",{"_index":784,"t":{"3022":{"position":[[179,3]]},"3400":{"position":[[76,3]]}}}],["guid",{"_index":386,"t":{"745":{"position":[[38,6],[462,6]]},"898":{"position":[[109,6]]},"1126":{"position":[[5,5]]},"1483":{"position":[[96,5]]},"2003":{"position":[[19,5]]},"2138":{"position":[[42,5]]},"2200":{"position":[[19,5]]},"2424":{"position":[[135,5]]},"2720":{"position":[[15,5],[249,5]]}}}],["guidanc",{"_index":141,"t":{"218":{"position":[[39,8]]}}}],["h",{"_index":200,"t":{"326":{"position":[[95,1]]}}}],["hand",{"_index":145,"t":{"224":{"position":[[11,5]]}}}],["handl",{"_index":34,"t":{"29":{"position":[[324,8]]},"3022":{"position":[[367,7]]},"3854":{"position":[[62,6]]}}}],["happen",{"_index":491,"t":{"1033":{"position":[[58,7]]},"1851":{"position":[[235,7]]}}}],["harder",{"_index":676,"t":{"2352":{"position":[[154,6]]}}}],["hardwar",{"_index":766,"t":{"2842":{"position":[[142,8]]}}}],["harvest",{"_index":444,"t":{"985":{"position":[[90,10],[140,7],[190,10]]},"2262":{"position":[[111,9]]},"2264":{"position":[[0,10],[123,10]]},"2320":{"position":[[0,9]]},"2336":{"position":[[59,9]]},"2488":{"position":[[57,10],[149,10]]},"3854":{"position":[[99,10]]}}}],["hash",{"_index":43,"t":{"49":{"position":[[7,6],[175,6]]},"306":{"position":[[37,7]]},"1971":{"position":[[153,6]]},"2289":{"position":[[50,4],[118,4]]},"3128":{"position":[[135,7]]}}}],["hauff",{"_index":566,"t":{"1575":{"position":[[37,5]]},"2001":{"position":[[20,5]]},"2226":{"position":[[20,5]]},"2254":{"position":[[35,5]]}}}],["have",{"_index":783,"t":{"3022":{"position":[[131,6]]}}}],["head",{"_index":650,"t":{"2228":{"position":[[135,4]]}}}],["header",{"_index":108,"t":{"134":{"position":[[51,6]]}}}],["health",{"_index":880,"t":{"3453":{"position":[[97,6]]}}}],["height",{"_index":533,"t":{"1505":{"position":[[163,6]]},"3294":{"position":[[89,6]]}}}],["held",{"_index":536,"t":{"1505":{"position":[[262,4],[385,4]]},"1825":{"position":[[52,4]]}}}],["help",{"_index":756,"t":{"2720":{"position":[[243,5]]},"2797":{"position":[[158,4]]},"3453":{"position":[[60,5]]}}}],["henc",{"_index":452,"t":{"992":{"position":[[56,5]]}}}],["here",{"_index":414,"t":{"898":{"position":[[61,4]]}}}],["hex",{"_index":48,"t":{"49":{"position":[[68,3]]}}}],["high",{"_index":196,"t":{"326":{"position":[[36,4]]},"541":{"position":[[35,4]]},"580":{"position":[[257,4]]},"1825":{"position":[[284,4]]},"1999":{"position":[[38,4]]},"2488":{"position":[[211,4]]},"2720":{"position":[[268,4]]}}}],["hold",{"_index":586,"t":{"1781":{"position":[[254,5]]}}}],["honest",{"_index":801,"t":{"3085":{"position":[[255,6]]}}}],["hopefulli",{"_index":762,"t":{"2797":{"position":[[87,9]]}}}],["hour",{"_index":707,"t":{"2399":{"position":[[173,5]]}}}],["howard",{"_index":626,"t":{"1999":{"position":[[23,6]]},"2252":{"position":[[84,6]]}}}],["http",{"_index":506,"t":{"1475":{"position":[[53,5]]},"1549":{"position":[[53,5]]},"1551":{"position":[[53,5]]},"1553":{"position":[[53,5]]},"1555":{"position":[[53,5]]},"1557":{"position":[[53,5]]},"1559":{"position":[[53,5]]},"1573":{"position":[[53,5]]}}}],["hub",{"_index":11,"t":{"29":{"position":[[39,3]]},"745":{"position":[[45,3]]}}}],["id",{"_index":736,"t":{"2658":{"position":[[7,2],[137,2],[184,3]]}}}],["idea",{"_index":726,"t":{"2539":{"position":[[44,5]]}}}],["ident",{"_index":741,"t":{"2658":{"position":[[157,9]]},"2842":{"position":[[76,9]]}}}],["identifi",{"_index":504,"t":{"1471":{"position":[[2,10]]},"3400":{"position":[[91,11]]}}}],["illustr",{"_index":592,"t":{"1781":{"position":[[433,11]]},"3480":{"position":[[77,11]]}}}],["implement",{"_index":331,"t":{"541":{"position":[[101,12],[229,11]]},"3105":{"position":[[44,15]]}}}],["import",{"_index":349,"t":{"545":{"position":[[4,9]]}}}],["improv",{"_index":878,"t":{"3453":{"position":[[66,7]]}}}],["inc",{"_index":353,"t":{"580":{"position":[[13,3]]},"1825":{"position":[[29,3]]},"3226":{"position":[[92,3]]}}}],["includ",{"_index":82,"t":{"67":{"position":[[207,8]]},"108":{"position":[[56,9]]},"274":{"position":[[49,9]]},"828":{"position":[[10,8]]},"910":{"position":[[159,8]]},"1807":{"position":[[151,8],[359,9]]},"2297":{"position":[[133,9]]},"2660":{"position":[[160,8]]},"3294":{"position":[[50,8]]}}}],["inclus",{"_index":832,"t":{"3216":{"position":[[98,9]]},"3290":{"position":[[52,9]]}}}],["increas",{"_index":750,"t":{"2660":{"position":[[444,8]]},"2889":{"position":[[11,10]]}}}],["individu",{"_index":661,"t":{"2264":{"position":[[15,10]]}}}],["inequ",{"_index":176,"t":{"274":{"position":[[79,12]]}}}],["info",{"_index":519,"t":{"1483":{"position":[[146,4]]},"3365":{"position":[[195,4]]}}}],["inform",{"_index":447,"t":{"985":{"position":[[178,6]]},"2763":{"position":[[117,11]]},"2797":{"position":[[143,11],[175,8]]},"3140":{"position":[[85,11]]}}}],["infus",{"_index":862,"t":{"3294":{"position":[[62,7],[177,6],[221,7]]}}}],["ingredi",{"_index":665,"t":{"2289":{"position":[[6,10]]}}}],["initi",{"_index":779,"t":{"3022":{"position":[[12,7]]}}}],["inner",{"_index":193,"t":{"322":{"position":[[65,5]]},"1557":{"position":[[83,5]]}}}],["innov",{"_index":417,"t":{"898":{"position":[[144,10]]}}}],["insid",{"_index":432,"t":{"914":{"position":[[116,6]]}}}],["instal",{"_index":572,"t":{"1684":{"position":[[35,9]]},"2424":{"position":[[68,7],[97,9]]},"2720":{"position":[[76,7]]},"3365":{"position":[[129,12]]},"3400":{"position":[[31,9]]}}}],["instanc",{"_index":646,"t":{"2142":{"position":[[103,8]]}}}],["instead",{"_index":556,"t":{"1518":{"position":[[244,7]]},"1781":{"position":[[183,7]]},"2041":{"position":[[123,7]]},"2228":{"position":[[126,7]]},"3085":{"position":[[380,7]]}}}],["institut",{"_index":21,"t":{"29":{"position":[[155,11]]}}}],["instruct",{"_index":486,"t":{"1025":{"position":[[6,12]]}}}],["interact",{"_index":411,"t":{"828":{"position":[[86,11]]},"877":{"position":[[61,11]]},"3501":{"position":[[61,11]]},"3608":{"position":[[114,8]]}}}],["interchang",{"_index":239,"t":{"423":{"position":[[79,15]]}}}],["interest",{"_index":330,"t":{"541":{"position":[[87,10]]}}}],["interfac",{"_index":410,"t":{"828":{"position":[[63,9]]},"1902":{"position":[[124,9]]},"2162":{"position":[[56,9]]}}}],["interpret",{"_index":168,"t":{"256":{"position":[[301,11]]}}}],["intricaci",{"_index":27,"t":{"29":{"position":[[251,11]]},"745":{"position":[[80,11]]}}}],["intro",{"_index":128,"t":{"154":{"position":[[0,5]]},"164":{"position":[[0,5]]},"367":{"position":[[0,5]]},"588":{"position":[[0,5]]},"1475":{"position":[[90,5]]},"1601":{"position":[[0,5]]},"1619":{"position":[[0,5]]},"1648":{"position":[[0,5]]},"1942":{"position":[[0,5]]},"2088":{"position":[[0,5]]},"2128":{"position":[[0,5]]},"2578":{"position":[[0,5]]},"3170":{"position":[[0,5]]},"3261":{"position":[[0,5]]},"3658":{"position":[[0,5]]},"3752":{"position":[[0,5]]}}}],["introduc",{"_index":755,"t":{"2720":{"position":[[185,10]]}}}],["introduct",{"_index":597,"t":{"1807":{"position":[[50,12]]}}}],["invest",{"_index":460,"t":{"992":{"position":[[243,10]]}}}],["involv",{"_index":215,"t":{"381":{"position":[[262,8]]},"1999":{"position":[[74,8]]},"2252":{"position":[[136,8]]}}}],["ip",{"_index":648,"t":{"2142":{"position":[[166,2]]}}}],["issu",{"_index":538,"t":{"1505":{"position":[[297,5]]},"3453":{"position":[[41,6]]}}}],["issuanc",{"_index":95,"t":{"122":{"position":[[13,8]]},"2001":{"position":[[83,8],[133,8]]},"2226":{"position":[[76,8]]}}}],["issuer",{"_index":537,"t":{"1505":{"position":[[273,7]]}}}],["jonmichael",{"_index":144,"t":{"224":{"position":[[0,10]]}}}],["json",{"_index":814,"t":{"3140":{"position":[[39,4]]}}}],["juli",{"_index":526,"t":{"1505":{"position":[[67,4]]},"1537":{"position":[[72,4]]},"1561":{"position":[[72,4]]}}}],["k",{"_index":679,"t":{"2362":{"position":[[0,1]]},"2842":{"position":[[98,1]]}}}],["keep",{"_index":218,"t":{"383":{"position":[[78,4]]},"2142":{"position":[[39,4]]},"2488":{"position":[[94,4]]},"3294":{"position":[[11,5]]}}}],["kelli",{"_index":511,"t":{"1477":{"position":[[20,5]]},"2160":{"position":[[20,5]]},"2260":{"position":[[5,5]]}}}],["kept",{"_index":233,"t":{"401":{"position":[[98,4]]}}}],["key",{"_index":114,"t":{"148":{"position":[[49,4],[102,4]]},"218":{"position":[[69,4]]},"423":{"position":[[258,3]]},"2289":{"position":[[2,3]]},"2377":{"position":[[38,4]]},"2660":{"position":[[28,3],[79,3],[117,3],[255,4],[608,4]]},"3400":{"position":[[111,4]]}}}],["know",{"_index":731,"t":{"2560":{"position":[[81,4]]},"3365":{"position":[[21,4]]}}}],["knowledg",{"_index":398,"t":{"745":{"position":[[319,9]]},"898":{"position":[[417,9]]}}}],["known",{"_index":605,"t":{"1851":{"position":[[163,5]]}}}],["languag",{"_index":249,"t":{"431":{"position":[[86,8]]}}}],["larg",{"_index":259,"t":{"431":{"position":[[261,5]]},"2264":{"position":[[64,5]]},"2488":{"position":[[188,5]]},"3279":{"position":[[85,5]]}}}],["larger",{"_index":244,"t":{"423":{"position":[[174,6]]},"2488":{"position":[[16,6]]}}}],["last",{"_index":324,"t":{"539":{"position":[[110,4]]}}}],["later",{"_index":782,"t":{"3022":{"position":[[103,5]]}}}],["latest",{"_index":369,"t":{"641":{"position":[[63,6]]}}}],["latter",{"_index":828,"t":{"3192":{"position":[[259,6]]}}}],["launch",{"_index":579,"t":{"1781":{"position":[[73,8]]}}}],["lead",{"_index":49,"t":{"49":{"position":[[86,4]]}}}],["learn",{"_index":73,"t":{"67":{"position":[[74,8]]},"447":{"position":[[58,5]]},"1047":{"position":[[19,5]]},"1708":{"position":[[41,5]]},"1728":{"position":[[41,5]]},"1807":{"position":[[273,5]]},"3105":{"position":[[19,5]]}}}],["lebanonjon",{"_index":152,"t":{"224":{"position":[[85,10],[112,10]]}}}],["less",{"_index":467,"t":{"992":{"position":[[321,4]]}}}],["lesson",{"_index":0,"t":{"1":{"position":[[8,6]]},"15":{"position":[[5,6]]},"35":{"position":[[8,6]]},"51":{"position":[[8,6]]},"67":{"position":[[4,6],[113,6]]},"108":{"position":[[8,6]]},"185":{"position":[[8,6]]},"258":{"position":[[8,6]]},"274":{"position":[[8,6]]},"290":{"position":[[8,6]]},"306":{"position":[[8,6]]},"447":{"position":[[8,6]]},"498":{"position":[[8,6]]},"1033":{"position":[[8,6]]},"1047":{"position":[[8,6]]},"1684":{"position":[[9,6]]},"1971":{"position":[[16,6]]},"2994":{"position":[[8,6]]},"3008":{"position":[[8,6]]},"3105":{"position":[[8,6]]},"3327":{"position":[[8,6]]}}}],["letter",{"_index":882,"t":{"3480":{"position":[[216,7]]}}}],["level",{"_index":197,"t":{"326":{"position":[[41,5]]},"541":{"position":[[40,5]]},"580":{"position":[[174,5],[262,5]]},"1483":{"position":[[189,5]]},"1825":{"position":[[201,5],[289,5]]},"1999":{"position":[[43,5]]},"2362":{"position":[[24,5]]},"2720":{"position":[[273,5]]},"2842":{"position":[[122,5]]},"3160":{"position":[[70,5]]}}}],["life",{"_index":522,"t":{"1505":{"position":[[24,4]]},"1537":{"position":[[27,4]]},"1561":{"position":[[27,4]]},"3412":{"position":[[52,4]]}}}],["lifecycl",{"_index":654,"t":{"2254":{"position":[[132,9]]}}}],["light",{"_index":681,"t":{"2371":{"position":[[0,5]]}}}],["limit",{"_index":619,"t":{"1971":{"position":[[183,7]]},"3251":{"position":[[50,5]]}}}],["line",{"_index":409,"t":{"828":{"position":[[58,4]]},"1708":{"position":[[142,4]]},"1728":{"position":[[142,4]]},"1902":{"position":[[119,4]]},"2162":{"position":[[51,4]]}}}],["linux",{"_index":488,"t":{"1025":{"position":[[36,5]]}}}],["list",{"_index":262,"t":{"445":{"position":[[42,4]]},"539":{"position":[[39,4]]},"828":{"position":[[35,4]]},"877":{"position":[[33,7]]},"1756":{"position":[[52,4]]},"2142":{"position":[[158,4]]},"2736":{"position":[[33,7]]},"3501":{"position":[[33,7]]}}}],["literatur",{"_index":717,"t":{"2414":{"position":[[242,10]]}}}],["ll",{"_index":169,"t":{"258":{"position":[[19,2]]},"322":{"position":[[3,2]]},"423":{"position":[[284,2]]},"898":{"position":[[71,2]]},"1807":{"position":[[75,2],[270,2],[319,2]]},"3192":{"position":[[207,2]]},"3480":{"position":[[203,2]]}}}],["lock",{"_index":571,"t":{"1587":{"position":[[109,6]]},"1851":{"position":[[381,4]]},"1883":{"position":[[33,4]]},"2560":{"position":[[146,6]]}}}],["log",{"_index":693,"t":{"2375":{"position":[[30,7]]},"3443":{"position":[[18,4]]},"3854":{"position":[[199,3],[214,3]]}}}],["long",{"_index":480,"t":{"994":{"position":[[108,4]]},"2371":{"position":[[412,4]]},"2660":{"position":[[125,4]]}}}],["longer",{"_index":622,"t":{"1971":{"position":[[285,6]]},"3226":{"position":[[97,6]]}}}],["longest",{"_index":583,"t":{"1781":{"position":[[123,7]]},"2289":{"position":[[20,7]]},"3085":{"position":[[87,7]]},"3192":{"position":[[77,7]]}}}],["look",{"_index":822,"t":{"3192":{"position":[[26,4],[275,7]]}}}],["lose",{"_index":677,"t":{"2352":{"position":[[164,4]]}}}],["lotteri",{"_index":307,"t":{"494":{"position":[[259,7]]}}}],["low",{"_index":456,"t":{"992":{"position":[[131,3]]}}}],["lyric",{"_index":640,"t":{"2140":{"position":[[82,6]]}}}],["machin",{"_index":286,"t":{"461":{"position":[[265,7]]},"2264":{"position":[[26,8]]},"2399":{"position":[[96,7]]}}}],["maco",{"_index":490,"t":{"1025":{"position":[[91,5]]}}}],["made",{"_index":610,"t":{"1883":{"position":[[59,4]]}}}],["main",{"_index":543,"t":{"1518":{"position":[[30,4]]},"1781":{"position":[[213,4],[493,4]]}}}],["mainnet",{"_index":381,"t":{"649":{"position":[[225,7]]},"717":{"position":[[225,7]]}}}],["maintain",{"_index":435,"t":{"914":{"position":[[170,8]]},"2142":{"position":[[131,9]]},"2371":{"position":[[192,11]]}}}],["major",{"_index":314,"t":{"512":{"position":[[0,8]]},"992":{"position":[[225,8]]},"1825":{"position":[[4,8]]},"3192":{"position":[[135,8]]}}}],["make",{"_index":599,"t":{"1807":{"position":[[194,5]]},"2352":{"position":[[115,4]]},"2797":{"position":[[167,4]]},"3022":{"position":[[234,6]]},"3085":{"position":[[505,5]]}}}],["malici",{"_index":791,"t":{"3022":{"position":[[448,11]]},"3192":{"position":[[125,9]]}}}],["manag",{"_index":93,"t":{"108":{"position":[[131,8]]},"218":{"position":[[119,8]]},"2260":{"position":[[21,8]]},"3854":{"position":[[134,10]]}}}],["mani",{"_index":99,"t":{"122":{"position":[[94,4]]},"148":{"position":[[200,4]]},"383":{"position":[[203,4]]},"401":{"position":[[29,4]]},"1126":{"position":[[38,4]]},"1807":{"position":[[328,4]]},"2264":{"position":[[118,4]]},"2399":{"position":[[168,4]]},"2660":{"position":[[243,4]]},"3290":{"position":[[179,4]]},"3453":{"position":[[31,4]]}}}],["manner",{"_index":79,"t":{"67":{"position":[[175,6]]}}}],["march",{"_index":580,"t":{"1781":{"position":[[85,5]]}}}],["master",{"_index":388,"t":{"745":{"position":[[66,9],[379,9]]}}}],["match",{"_index":724,"t":{"2512":{"position":[[4,8]]}}}],["matt",{"_index":565,"t":{"1575":{"position":[[32,4]]},"2001":{"position":[[15,4]]},"2226":{"position":[[15,4]]},"2254":{"position":[[30,4]]}}}],["matter",{"_index":704,"t":{"2399":{"position":[[134,6]]}}}],["matthew",{"_index":625,"t":{"1999":{"position":[[15,7]]},"2252":{"position":[[76,7]]}}}],["mean",{"_index":268,"t":{"447":{"position":[[72,5]]},"649":{"position":[[49,5]]},"717":{"position":[[49,5]]},"3290":{"position":[[146,5]]}}}],["meant",{"_index":329,"t":{"541":{"position":[[16,5]]}}}],["measur",{"_index":271,"t":{"461":{"position":[[18,11],[118,7]]}}}],["memori",{"_index":695,"t":{"2379":{"position":[[16,6],[94,6]]},"2549":{"position":[[0,6]]},"3279":{"position":[[48,6],[213,6]]}}}],["mempool",{"_index":94,"t":{"108":{"position":[[144,7]]},"2379":{"position":[[4,7],[151,7],[229,7]]}}}],["messag",{"_index":158,"t":{"256":{"position":[[77,8],[234,8]]}}}],["method",{"_index":871,"t":{"3400":{"position":[[80,7]]}}}],["migrat",{"_index":130,"t":{"183":{"position":[[18,8]]},"1475":{"position":[[23,8]]},"1549":{"position":[[23,8]]},"1551":{"position":[[23,8]]},"1553":{"position":[[23,8]]},"1555":{"position":[[23,8]]},"1557":{"position":[[23,8]]},"1559":{"position":[[23,8]]},"1573":{"position":[[23,8]]},"2138":{"position":[[23,8]]},"2375":{"position":[[18,8]]},"2565":{"position":[[18,8]]}}}],["mind",{"_index":248,"t":{"431":{"position":[[76,4]]},"2488":{"position":[[102,4]]}}}],["miner",{"_index":429,"t":{"914":{"position":[[42,6]]}}}],["mini",{"_index":306,"t":{"494":{"position":[[254,4]]}}}],["mint",{"_index":634,"t":{"2028":{"position":[[55,7]]}}}],["minu",{"_index":903,"t":{"3973":{"position":[[75,5]]}}}],["minut",{"_index":301,"t":{"494":{"position":[[170,7]]}}}],["model",{"_index":201,"t":{"381":{"position":[[23,5]]},"383":{"position":[[175,5],[243,5],[273,5]]},"401":{"position":[[15,5]]},"423":{"position":[[22,6],[225,6]]},"447":{"position":[[41,5]]}}}],["moder",{"_index":360,"t":{"580":{"position":[[165,8]]},"1825":{"position":[[192,8]]}}}],["modul",{"_index":564,"t":{"1573":{"position":[[89,7]]}}}],["money",{"_index":251,"t":{"431":{"position":[[130,5],[275,5]]}}}],["month",{"_index":777,"t":{"2889":{"position":[[110,6]]}}}],["more",{"_index":209,"t":{"381":{"position":[[145,4]]},"1781":{"position":[[286,4],[337,4]]},"2377":{"position":[[50,4]]},"2414":{"position":[[101,4]]},"2488":{"position":[[38,4]]},"3085":{"position":[[526,4]]},"3290":{"position":[[275,4]]}}}],["morph",{"_index":562,"t":{"1549":{"position":[[93,8]]}}}],["motherboard",{"_index":852,"t":{"3279":{"position":[[176,12]]}}}],["move",{"_index":261,"t":{"445":{"position":[[19,5]]},"2399":{"position":[[39,5]]}}}],["mu",{"_index":886,"t":{"3480":{"position":[[274,2]]}}}],["much",{"_index":243,"t":{"423":{"position":[[169,4]]},"1781":{"position":[[281,4]]},"3085":{"position":[[521,4]]},"3279":{"position":[[208,4]]}}}],["multi",{"_index":748,"t":{"2660":{"position":[[343,5]]}}}],["multipl",{"_index":343,"t":{"543":{"position":[[10,8]]},"2001":{"position":[[74,8]]},"2488":{"position":[[140,8]]},"3216":{"position":[[37,8]]}}}],["n",{"_index":422,"t":{"910":{"position":[[21,1],[45,1],[137,1]]},"2660":{"position":[[290,1],[295,1]]}}}],["name",{"_index":453,"t":{"992":{"position":[[66,4]]},"3192":{"position":[[104,6]]}}}],["nativ",{"_index":746,"t":{"2660":{"position":[[283,6]]}}}],["navig",{"_index":399,"t":{"745":{"position":[[343,10]]},"898":{"position":[[447,8]]}}}],["nearli",{"_index":765,"t":{"2842":{"position":[[69,6]]}}}],["need",{"_index":363,"t":{"580":{"position":[[217,6]]},"898":{"position":[[437,6]]},"985":{"position":[[170,4]]},"1825":{"position":[[244,6]]},"2254":{"position":[[60,4]]},"2488":{"position":[[73,4]]},"3085":{"position":[[391,4]]},"3160":{"position":[[48,4]]}}}],["nest",{"_index":171,"t":{"258":{"position":[[55,4]]}}}],["net",{"_index":577,"t":{"1781":{"position":[[28,3]]}}}],["netspac",{"_index":774,"t":{"2889":{"position":[[37,8]]}}}],["network",{"_index":104,"t":{"122":{"position":[[156,7]]},"148":{"position":[[66,7]]},"224":{"position":[[35,7]]},"256":{"position":[[135,10],[170,10]]},"431":{"position":[[141,7]]},"494":{"position":[[404,7]]},"580":{"position":[[5,7]]},"745":{"position":[[20,7]]},"898":{"position":[[52,7]]},"1781":{"position":[[14,7]]},"1825":{"position":[[21,7]]},"2142":{"position":[[89,7]]},"2297":{"position":[[30,7]]},"2494":{"position":[[7,10]]},"2889":{"position":[[22,7]]},"3119":{"position":[[5,7]]},"3226":{"position":[[84,7]]},"3386":{"position":[[22,7]]},"3453":{"position":[[89,7]]}}}],["new",{"_index":332,"t":{"541":{"position":[[116,3]]},"1505":{"position":[[303,3]]},"2262":{"position":[[57,3]]},"2289":{"position":[[195,3]]},"2512":{"position":[[0,3]]},"2560":{"position":[[61,3]]},"2562":{"position":[[0,3]]},"2763":{"position":[[22,3],[90,3],[138,3]]},"2775":{"position":[[0,3]]},"3294":{"position":[[163,3],[185,3],[234,3]]}}}],["next",{"_index":476,"t":{"994":{"position":[[15,4]]},"2041":{"position":[[4,4]]},"2228":{"position":[[4,4]]},"2254":{"position":[[113,4]]},"3290":{"position":[[130,4],[292,4]]}}}],["nft",{"_index":40,"t":{"35":{"position":[[38,3]]},"1807":{"position":[[414,4]]},"1851":{"position":[[255,4]]},"2028":{"position":[[46,3]]},"2041":{"position":[[82,4]]},"2228":{"position":[[82,4]]},"3022":{"position":[[171,4]]},"3973":{"position":[[93,3]]}}}],["nine",{"_index":869,"t":{"3386":{"position":[[146,4]]}}}],["node",{"_index":167,"t":{"256":{"position":[[272,4]]},"461":{"position":[[258,4]]},"541":{"position":[[125,4]]},"914":{"position":[[227,4],[261,4]]},"1047":{"position":[[70,4]]},"1059":{"position":[[59,5],[71,5]]},"2142":{"position":[[71,5],[188,5]]},"2262":{"position":[[44,4]]},"2379":{"position":[[76,5],[306,5]]},"2565":{"position":[[30,4]]},"2660":{"position":[[188,5],[321,5]]},"3128":{"position":[[108,5]]},"3140":{"position":[[9,4]]},"3216":{"position":[[88,5]]},"3516":{"position":[[34,5],[220,5]]},"3854":{"position":[[16,5],[150,4]]},"3911":{"position":[[9,4],[45,4]]}}}],["non",{"_index":601,"t":{"1807":{"position":[[393,3]]}}}],["note",{"_index":439,"t":{"916":{"position":[[0,4]]},"2567":{"position":[[0,4]]},"2637":{"position":[[0,4]]},"2660":{"position":[[470,4]]},"3579":{"position":[[0,4]]},"3772":{"position":[[0,4]]},"3878":{"position":[[0,4]]}}}],["notic",{"_index":747,"t":{"2660":{"position":[[327,8]]}}}],["novel",{"_index":725,"t":{"2539":{"position":[[38,5]]}}}],["now",{"_index":263,"t":{"445":{"position":[[73,3]]},"1505":{"position":[[285,3]]},"2842":{"position":[[26,3]]}}}],["nuanc",{"_index":31,"t":{"29":{"position":[[297,7]]}}}],["number",{"_index":792,"t":{"3066":{"position":[[134,6]]}}}],["object",{"_index":684,"t":{"2371":{"position":[[151,11],[357,11]]},"2658":{"position":[[239,7]]},"3128":{"position":[[36,7],[143,7]]}}}],["obtain",{"_index":860,"t":{"3290":{"position":[[268,6]]}}}],["occur",{"_index":525,"t":{"1505":{"position":[[55,8]]},"1537":{"position":[[63,5]]},"1561":{"position":[[63,5]]}}}],["offer",{"_index":22,"t":{"29":{"position":[[167,6]]},"51":{"position":[[35,6]]},"2162":{"position":[[26,6]]}}}],["offici",{"_index":413,"t":{"898":{"position":[[15,8]]},"3226":{"position":[[104,10]]}}}],["offlin",{"_index":691,"t":{"2371":{"position":[[398,7]]}}}],["older",{"_index":835,"t":{"3226":{"position":[[41,5]]}}}],["on",{"_index":138,"t":{"185":{"position":[[89,3]]},"381":{"position":[[138,3]]},"383":{"position":[[25,3]]},"1781":{"position":[[445,3]]},"2001":{"position":[[179,3]]},"2226":{"position":[[67,3]]},"2399":{"position":[[50,3]]},"2414":{"position":[[162,3]]},"2488":{"position":[[112,3]]},"2660":{"position":[[265,3]]},"2797":{"position":[[59,3]]},"3058":{"position":[[29,3]]},"3290":{"position":[[16,3]]}}}],["onc",{"_index":477,"t":{"994":{"position":[[41,4]]},"1807":{"position":[[235,4]]},"1971":{"position":[[199,4]]}}}],["onward",{"_index":863,"t":{"3294":{"position":[[130,6]]}}}],["open",{"_index":795,"t":{"3085":{"position":[[43,5]]}}}],["oper",{"_index":465,"t":{"992":{"position":[[297,11],[395,11]]},"2264":{"position":[[78,9]]},"2399":{"position":[[109,9]]}}}],["opex",{"_index":471,"t":{"992":{"position":[[421,4]]}}}],["oppos",{"_index":769,"t":{"2865":{"position":[[96,7]]}}}],["opt",{"_index":821,"t":{"3160":{"position":[[7,3]]}}}],["option",{"_index":385,"t":{"680":{"position":[[78,7]]},"1807":{"position":[[226,7]]}}}],["oracl",{"_index":513,"t":{"1477":{"position":[[54,7]]}}}],["order",{"_index":336,"t":{"541":{"position":[[179,5]]}}}],["organ",{"_index":75,"t":{"67":{"position":[[123,9]]}}}],["origin",{"_index":708,"t":{"2399":{"position":[[198,8]]}}}],["out",{"_index":151,"t":{"224":{"position":[[77,3]]},"541":{"position":[[292,3]]},"2140":{"position":[[74,3]]},"2865":{"position":[[30,3]]},"2994":{"position":[[89,3]]}}}],["outlin",{"_index":712,"t":{"2414":{"position":[[14,7]]},"3480":{"position":[[27,7]]}}}],["output",{"_index":224,"t":{"383":{"position":[[161,6]]},"1756":{"position":[[43,6]]},"2842":{"position":[[45,6]]},"3154":{"position":[[192,6]]}}}],["over",{"_index":180,"t":{"290":{"position":[[22,4]]},"306":{"position":[[22,4]]},"1033":{"position":[[22,4]]},"2254":{"position":[[46,4]]},"2539":{"position":[[21,4]]}}}],["overal",{"_index":879,"t":{"3453":{"position":[[81,7]]}}}],["overclock",{"_index":872,"t":{"3412":{"position":[[7,9],[24,12]]}}}],["overflow",{"_index":735,"t":{"2612":{"position":[[0,8]]}}}],["overview",{"_index":6,"t":{"15":{"position":[[18,8]]},"541":{"position":[[46,8]]},"580":{"position":[[268,8]]},"1825":{"position":[[295,8]]},"1999":{"position":[[49,8]]},"2377":{"position":[[63,8],[119,8]]},"2619":{"position":[[0,8]]},"3400":{"position":[[50,8]]}}}],["page",{"_index":69,"t":{"67":{"position":[[11,5]]},"218":{"position":[[20,4]]},"256":{"position":[[181,4]]},"326":{"position":[[5,4]]},"445":{"position":[[5,4]]},"828":{"position":[[5,4]]},"1483":{"position":[[218,4]]},"2377":{"position":[[5,4],[128,4]]},"2424":{"position":[[5,4],[194,4]]},"2460":{"position":[[5,4]]},"3365":{"position":[[142,4],[178,4]]},"3663":{"position":[[129,5]]},"3973":{"position":[[147,5]]}}}],["part",{"_index":107,"t":{"134":{"position":[[44,5]]},"2424":{"position":[[115,4]]}}}],["parti",{"_index":771,"t":{"2867":{"position":[[104,5]]},"3085":{"position":[[262,7],[344,7],[428,7]]}}}],["partial",{"_index":768,"t":{"2865":{"position":[[83,8]]}}}],["particular",{"_index":557,"t":{"1518":{"position":[[268,10]]}}}],["password",{"_index":570,"t":{"1587":{"position":[[100,8]]},"1971":{"position":[[160,8],[269,8]]}}}],["peak",{"_index":861,"t":{"3294":{"position":[[38,4],[125,4],[189,5]]}}}],["peer",{"_index":66,"t":{"51":{"position":[[68,4],[76,4]]},"1059":{"position":[[19,4],[27,4]]},"2668":{"position":[[0,4]]}}}],["perform",{"_index":205,"t":{"381":{"position":[[96,7],[196,9]]}}}],["period",{"_index":294,"t":{"494":{"position":[[66,7],[119,12]]},"2560":{"position":[[156,6]]}}}],["perman",{"_index":234,"t":{"401":{"position":[[126,9]]}}}],["permiss",{"_index":701,"t":{"2379":{"position":[[279,10]]}}}],["permissionless",{"_index":578,"t":{"1781":{"position":[[38,14]]}}}],["perspect",{"_index":757,"t":{"2720":{"position":[[279,11]]}}}],["physic",{"_index":283,"t":{"461":{"position":[[198,8]]}}}],["pictur",{"_index":830,"t":{"3192":{"position":[[314,7]]}}}],["pie19b",{"_index":551,"t":{"1518":{"position":[[177,6],[332,6]]}}}],["piggybank",{"_index":567,"t":{"1575":{"position":[[132,9]]}}}],["place",{"_index":317,"t":{"535":{"position":[[38,5]]},"1061":{"position":[[58,5]]},"1091":{"position":[[70,5]]}}}],["plan",{"_index":322,"t":{"539":{"position":[[58,7]]}}}],["platform",{"_index":389,"t":{"745":{"position":[[135,8]]},"898":{"position":[[205,8]]}}}],["play",{"_index":864,"t":{"3327":{"position":[[53,4]]}}}],["pleas",{"_index":751,"t":{"2660":{"position":[[463,6]]},"2763":{"position":[[40,6]]}}}],["plot",{"_index":135,"t":{"185":{"position":[[35,4]]},"218":{"position":[[78,8]]},"494":{"position":[[301,5]]},"914":{"position":[[136,5]]},"985":{"position":[[19,8],[48,5],[77,8],[159,5]]},"994":{"position":[[31,8],[48,4]]},"1033":{"position":[[31,8]]},"1047":{"position":[[118,4]]},"1807":{"position":[[285,8]]},"2399":{"position":[[0,5],[157,5],[234,8]]},"2424":{"position":[[178,8]]},"2658":{"position":[[2,4],[86,4],[112,5],[132,4],[167,4],[179,4]]},"2660":{"position":[[16,4],[67,4]]},"2720":{"position":[[111,4],[227,8]]},"2736":{"position":[[70,5]]},"2797":{"position":[[17,8]]},"2805":{"position":[[10,5]]},"2842":{"position":[[55,4]]},"3022":{"position":[[166,4]]},"3160":{"position":[[32,5]]},"3279":{"position":[[12,4]]}}}],["plotter",{"_index":710,"t":{"2399":{"position":[[215,7]]},"2842":{"position":[[13,8],[187,7]]}}}],["plu",{"_index":282,"t":{"461":{"position":[[189,4]]}}}],["po",{"_index":683,"t":{"2371":{"position":[[109,3]]}}}],["point",{"_index":346,"t":{"543":{"position":[[41,5]]},"2262":{"position":[[69,5]]},"2371":{"position":[[263,5]]},"3154":{"position":[[136,5],[159,5],[238,5]]},"3294":{"position":[[109,6],[246,6]]}}}],["pool",{"_index":123,"t":{"148":{"position":[[234,7]]},"2379":{"position":[[23,4]]},"2865":{"position":[[0,5]]},"2867":{"position":[[9,4]]},"2994":{"position":[[30,7]]},"3022":{"position":[[40,4],[225,5],[315,5],[424,5]]}}}],["poor",{"_index":53,"t":{"49":{"position":[[121,4]]}}}],["port",{"_index":875,"t":{"3453":{"position":[[11,4]]},"3911":{"position":[[65,4],[81,4]]}}}],["pospac",{"_index":559,"t":{"1518":{"position":[[296,7]]},"2414":{"position":[[192,7]]},"3480":{"position":[[132,7],[243,7]]}}}],["possibl",{"_index":420,"t":{"898":{"position":[[318,13]]},"1807":{"position":[[345,13]]},"2488":{"position":[[170,8]]}}}],["post",{"_index":365,"t":{"580":{"position":[[322,4]]},"1825":{"position":[[340,4]]},"2371":{"position":[[68,4],[118,4]]}}}],["potenti",{"_index":258,"t":{"431":{"position":[[249,11]]}}}],["pow",{"_index":591,"t":{"1781":{"position":[[379,3]]},"3085":{"position":[[553,3]]}}}],["power",{"_index":277,"t":{"461":{"position":[[139,5]]},"992":{"position":[[135,5],[432,5]]},"2488":{"position":[[43,8]]}}}],["prefarm",{"_index":354,"t":{"580":{"position":[[19,7],[140,7],[284,7]]},"1825":{"position":[[35,7]]}}}],["previou",{"_index":315,"t":{"535":{"position":[[7,8]]},"1971":{"position":[[7,8]]},"2660":{"position":[[45,8]]}}}],["primer",{"_index":508,"t":{"1475":{"position":[[83,6]]}}}],["primit",{"_index":372,"t":{"641":{"position":[[106,9]]},"649":{"position":[[33,9],[212,9]]},"717":{"position":[[33,9],[212,9]]},"745":{"position":[[446,10]]},"1483":{"position":[[208,9]]},"3008":{"position":[[37,9]]},"3480":{"position":[[168,10]]}}}],["print",{"_index":639,"t":{"2140":{"position":[[68,5]]}}}],["prior",{"_index":371,"t":{"641":{"position":[[83,5]]},"2720":{"position":[[150,5]]}}}],["probabl",{"_index":362,"t":{"580":{"position":[[208,8]]},"1825":{"position":[[235,8]]}}}],["problem",{"_index":618,"t":{"1971":{"position":[[119,8]]}}}],["process",{"_index":312,"t":{"498":{"position":[[55,7]]},"914":{"position":[[154,9],[277,9]]},"1033":{"position":[[40,7]]},"2003":{"position":[[41,7]]},"2200":{"position":[[41,7]]},"2399":{"position":[[243,7]]}}}],["product",{"_index":375,"t":{"649":{"position":[[87,10]]},"717":{"position":[[87,10]]},"3022":{"position":[[331,10]]}}}],["profici",{"_index":361,"t":{"580":{"position":[[193,11]]},"1825":{"position":[[220,11]]}}}],["program",{"_index":280,"t":{"461":{"position":[[169,8]]},"745":{"position":[[412,11]]},"1851":{"position":[[121,7],[154,7]]}}}],["promis",{"_index":587,"t":{"1781":{"position":[[264,7]]}}}],["proof",{"_index":308,"t":{"494":{"position":[[311,6],[348,5]]},"914":{"position":[[100,6]]},"992":{"position":[[72,5]]},"1518":{"position":[[112,6]]},"1781":{"position":[[363,6]]},"2371":{"position":[[43,5],[93,5],[128,6]]},"2539":{"position":[[58,5]]},"2562":{"position":[[4,5]]},"2658":{"position":[[224,5]]},"2763":{"position":[[26,5],[142,5]]},"2775":{"position":[[4,5]]},"2865":{"position":[[68,5]]},"3058":{"position":[[2,5]]},"3066":{"position":[[51,5],[78,5]]},"3154":{"position":[[203,5]]},"3192":{"position":[[218,6]]},"3386":{"position":[[53,6],[238,6]]}}}],["properti",{"_index":824,"t":{"3192":{"position":[[63,10]]}}}],["propos",{"_index":758,"t":{"2763":{"position":[[11,8]]}}}],["protect",{"_index":790,"t":{"3022":{"position":[[407,8]]},"3105":{"position":[[81,7]]}}}],["protocol",{"_index":155,"t":{"256":{"position":[[9,8],[53,9],[68,8],[146,8]]},"914":{"position":[[332,8]]},"2320":{"position":[[10,8]]},"2494":{"position":[[18,8]]},"2668":{"position":[[5,8]]},"2867":{"position":[[14,8]]},"2994":{"position":[[38,8]]},"3022":{"position":[[45,8],[353,8]]},"3058":{"position":[[17,8]]},"3085":{"position":[[285,8],[450,8]]},"3516":{"position":[[59,8],[102,8]]},"3518":{"position":[[7,8]]},"3608":{"position":[[34,8]]}}}],["provid",{"_index":140,"t":{"218":{"position":[[31,7]]},"326":{"position":[[17,7]]},"541":{"position":[[25,7]]},"755":{"position":[[14,8]]},"914":{"position":[[235,7]]},"955":{"position":[[14,8]]},"1971":{"position":[[230,8]]},"2336":{"position":[[14,8]]},"3386":{"position":[[165,8]]},"3973":{"position":[[14,8]]}}}],["public",{"_index":505,"t":{"1471":{"position":[[36,11]]},"2658":{"position":[[192,6]]},"2660":{"position":[[21,6],[72,6],[110,6],[248,6],[601,6]]}}}],["publicli",{"_index":902,"t":{"3911":{"position":[[106,8]]}}}],["publish",{"_index":820,"t":{"3154":{"position":[[176,7]]}}}],["purpos",{"_index":139,"t":{"218":{"position":[[4,7]]}}}],["put",{"_index":742,"t":{"2658":{"position":[[215,3]]}}}],["puzzl",{"_index":42,"t":{"49":{"position":[[0,6],[168,6]]},"258":{"position":[[60,7]]},"1557":{"position":[[89,7]]},"1587":{"position":[[55,6],[121,6]]},"1756":{"position":[[0,7]]},"1851":{"position":[[174,6],[315,7]]},"1883":{"position":[[64,6]]}}}],["qualifi",{"_index":310,"t":{"494":{"position":[[368,9]]}}}],["question",{"_index":149,"t":{"224":{"position":[[61,9]]},"383":{"position":[[53,9]]},"541":{"position":[[262,9]]},"2460":{"position":[[39,9]]},"2763":{"position":[[72,9]]}}}],["quexington",{"_index":628,"t":{"2001":{"position":[[32,10]]},"2226":{"position":[[32,10]]}}}],["ram",{"_index":850,"t":{"3279":{"position":[[156,3]]}}}],["random",{"_index":870,"t":{"3386":{"position":[[189,10]]}}}],["rapid",{"_index":18,"t":{"29":{"position":[[120,5]]}}}],["ration",{"_index":807,"t":{"3085":{"position":[[415,8]]}}}],["rational",{"_index":594,"t":{"1781":{"position":[[537,9]]},"2414":{"position":[[88,9]]}}}],["re",{"_index":391,"t":{"745":{"position":[[157,2]]},"898":{"position":[[227,2]]},"2252":{"position":[[133,2]]}}}],["reach",{"_index":150,"t":{"224":{"position":[[71,5]]},"541":{"position":[[286,5]]},"1505":{"position":[[5,7]]},"1537":{"position":[[10,5]]},"1561":{"position":[[10,5]]},"3154":{"position":[[219,5]]}}}],["read",{"_index":763,"t":{"2797":{"position":[[103,7]]}}}],["readi",{"_index":374,"t":{"649":{"position":[[77,5]]},"717":{"position":[[77,5]]}}}],["real",{"_index":28,"t":{"29":{"position":[[264,4]]}}}],["realiti",{"_index":802,"t":{"3085":{"position":[[304,7]]}}}],["reason",{"_index":727,"t":{"2539":{"position":[[77,7]]}}}],["receiv",{"_index":142,"t":{"218":{"position":[[97,9]]},"3294":{"position":[[155,7]]}}}],["recommend",{"_index":333,"t":{"541":{"position":[[134,9]]},"649":{"position":[[170,9]]},"717":{"position":[[170,9]]},"2720":{"position":[[125,11]]}}}],["record",{"_index":275,"t":{"461":{"position":[[68,6]]}}}],["recoveri",{"_index":825,"t":{"3192":{"position":[[111,8]]}}}],["refer",{"_index":83,"t":{"85":{"position":[[0,9]]},"122":{"position":[[37,8]]},"322":{"position":[[102,9]]},"680":{"position":[[39,9]]},"755":{"position":[[39,9]]},"955":{"position":[[39,9]]},"1851":{"position":[[60,8]]},"2336":{"position":[[39,9]]},"2375":{"position":[[38,9]]},"2377":{"position":[[93,5]]},"2822":{"position":[[0,9]]},"3022":{"position":[[151,8]]},"3066":{"position":[[34,8]]},"3128":{"position":[[22,6]]},"3365":{"position":[[168,9]]},"3663":{"position":[[19,9]]},"3973":{"position":[[39,9]]}}}],["refresh",{"_index":664,"t":{"2266":{"position":[[9,9]]}}}],["rel",{"_index":455,"t":{"992":{"position":[[120,10]]}}}],["relat",{"_index":823,"t":{"3192":{"position":[[46,7]]}}}],["releas",{"_index":304,"t":{"494":{"position":[[217,8]]}}}],["relev",{"_index":716,"t":{"2414":{"position":[[233,8]]}}}],["reli",{"_index":290,"t":{"494":{"position":[[29,6]]},"2371":{"position":[[431,7]]},"2867":{"position":[[88,4]]},"3022":{"position":[[113,6]]}}}],["reliabl",{"_index":645,"t":{"2142":{"position":[[62,8]]}}}],["relianc",{"_index":788,"t":{"3022":{"position":[[303,8]]}}}],["remain",{"_index":836,"t":{"3226":{"position":[[60,6]]}}}],["repres",{"_index":272,"t":{"461":{"position":[[35,10]]}}}],["reproduc",{"_index":837,"t":{"3251":{"position":[[8,12]]}}}],["request",{"_index":894,"t":{"3608":{"position":[[197,10]]}}}],["requir",{"_index":278,"t":{"461":{"position":[[145,8],[227,8]]},"2371":{"position":[[208,11]]},"2720":{"position":[[64,8]]},"2842":{"position":[[151,12]]},"3279":{"position":[[60,8]]},"3516":{"position":[[199,12]]}}}],["reserv",{"_index":211,"t":{"381":{"position":[[168,7]]}}}],["resili",{"_index":125,"t":{"148":{"position":[[259,9]]}}}],["resourc",{"_index":273,"t":{"461":{"position":[[46,9]]},"898":{"position":[[95,8]]},"1781":{"position":[[218,8]]},"2200":{"position":[[106,9]]},"2371":{"position":[[241,8]]},"3085":{"position":[[229,8]]}}}],["respons",{"_index":496,"t":{"1059":{"position":[[90,16]]}}}],["rest",{"_index":464,"t":{"992":{"position":[[289,4],[387,4]]}}}],["result",{"_index":838,"t":{"3251":{"position":[[21,7]]}}}],["reveal",{"_index":621,"t":{"1971":{"position":[[251,8]]}}}],["review",{"_index":86,"t":{"108":{"position":[[19,6]]},"274":{"position":[[19,6]]},"498":{"position":[[19,6]]},"541":{"position":[[153,6]]},"2720":{"position":[[213,9]]},"2994":{"position":[[19,6]]}}}],["reward",{"_index":97,"t":{"122":{"position":[[62,6]]},"218":{"position":[[107,7]]},"535":{"position":[[73,7]]},"914":{"position":[[66,7]]},"992":{"position":[[0,7]]},"2865":{"position":[[40,7]]},"3022":{"position":[[391,7]]},"3154":{"position":[[50,6]]},"3290":{"position":[[33,6]]}}}],["right",{"_index":499,"t":{"1061":{"position":[[52,5]]},"1091":{"position":[[64,5]]}}}],["role",{"_index":89,"t":{"108":{"position":[[78,4]]},"3327":{"position":[[33,4]]}}}],["rough",{"_index":729,"t":{"2560":{"position":[[19,5]]}}}],["rpc",{"_index":407,"t":{"755":{"position":[[66,3]]},"955":{"position":[[66,3]]},"1587":{"position":[[68,3]]},"2041":{"position":[[118,4],[158,3]]},"2228":{"position":[[93,4]]},"2336":{"position":[[69,3]]},"3140":{"position":[[44,3]]},"3608":{"position":[[188,4]]},"3911":{"position":[[14,3]]},"3973":{"position":[[66,3],[97,4]]}}}],["rule",{"_index":255,"t":{"431":{"position":[[190,5]]},"580":{"position":[[68,5]]},"1825":{"position":[[113,5]]},"2379":{"position":[[192,5],[265,5]]},"3085":{"position":[[294,5],[459,5]]}}}],["run",{"_index":292,"t":{"494":{"position":[[49,7]]},"994":{"position":[[174,7]]},"1575":{"position":[[93,7]]},"2003":{"position":[[85,7]]},"2488":{"position":[[182,3]]}}}],["s",{"_index":214,"t":{"381":{"position":[[248,1]]},"461":{"position":[[263,1]]},"539":{"position":[[89,1]]},"541":{"position":[[63,1]]},"580":{"position":[[17,1]]},"745":{"position":[[100,1]]},"755":{"position":[[57,1]]},"828":{"position":[[48,1]]},"914":{"position":[[5,1],[40,1]]},"955":{"position":[[57,1]]},"1059":{"position":[[17,1]]},"1825":{"position":[[33,1]]},"2003":{"position":[[68,1]]},"2028":{"position":[[44,1]]},"2200":{"position":[[68,1]]},"2336":{"position":[[57,1]]},"2371":{"position":[[288,1]]},"2720":{"position":[[13,1]]},"3085":{"position":[[315,1],[413,1]]},"3453":{"position":[[79,1]]},"3516":{"position":[[96,1]]},"3663":{"position":[[38,1]]},"3973":{"position":[[57,1]]}}}],["safe",{"_index":65,"t":{"51":{"position":[[63,4]]}}}],["safeti",{"_index":287,"t":{"483":{"position":[[0,6]]}}}],["same",{"_index":541,"t":{"1505":{"position":[[343,4]]},"2658":{"position":[[127,4]]}}}],["scale",{"_index":450,"t":{"992":{"position":[[16,5]]}}}],["schedul",{"_index":96,"t":{"122":{"position":[[22,8],[69,8]]}}}],["scheme",{"_index":62,"t":{"49":{"position":[[233,6]]},"2660":{"position":[[486,7]]}}}],["scholarli",{"_index":10,"t":{"29":{"position":[[29,9]]}}}],["season",{"_index":392,"t":{"745":{"position":[[162,8]]},"898":{"position":[[232,8]]}}}],["second",{"_index":660,"t":{"2262":{"position":[[26,7]]},"3386":{"position":[[151,7]]}}}],["section",{"_index":110,"t":{"148":{"position":[[5,7]]},"423":{"position":[[303,7]]},"541":{"position":[[5,7]]},"985":{"position":[[28,7]]},"1518":{"position":[[8,7]]},"1708":{"position":[[9,7]]},"1728":{"position":[[9,7]]},"2041":{"position":[[9,7]]},"2228":{"position":[[9,7],[151,7]]},"2254":{"position":[[118,7]]},"2539":{"position":[[5,7]]},"2660":{"position":[[54,7]]},"2720":{"position":[[204,7]]},"2763":{"position":[[155,7]]},"2797":{"position":[[116,7]]},"3192":{"position":[[8,7]]},"3480":{"position":[[8,7]]}}}],["secur",{"_index":32,"t":{"29":{"position":[[312,6]]},"290":{"position":[[34,6]]},"431":{"position":[[27,8],[123,6]]},"580":{"position":[[30,7]]},"1825":{"position":[[75,7]]},"1971":{"position":[[110,8],[300,8]]},"2160":{"position":[[36,8]]},"2660":{"position":[[453,8]]},"2867":{"position":[[45,8]]},"3085":{"position":[[175,8]]},"3105":{"position":[[35,8]]},"3192":{"position":[[54,8],[167,8]]},"3608":{"position":[[105,8]]}}}],["see",{"_index":194,"t":{"322":{"position":[[89,3]]},"580":{"position":[[309,3]]},"1483":{"position":[[196,3]]},"1825":{"position":[[327,3]]},"2200":{"position":[[117,3]]},"2763":{"position":[[47,3],[130,3]]}}}],["seed",{"_index":738,"t":{"2658":{"position":[[61,4]]}}}],["seeder",{"_index":643,"t":{"2142":{"position":[[9,6],[124,6]]}}}],["select",{"_index":208,"t":{"381":{"position":[[131,6],[183,9]]}}}],["send",{"_index":236,"t":{"401":{"position":[[189,4]]},"2262":{"position":[[49,5],[94,5]]},"2297":{"position":[[182,4]]}}}],["sent",{"_index":159,"t":{"256":{"position":[[90,4],[243,4]]}}}],["separ",{"_index":647,"t":{"2142":{"position":[[149,8]]}}}],["sequenti",{"_index":560,"t":{"1518":{"position":[[364,10]]},"3066":{"position":[[91,10]]},"3386":{"position":[[42,10]]}}}],["seri",{"_index":655,"t":{"2258":{"position":[[33,6]]}}}],["serial",{"_index":811,"t":{"3128":{"position":[[0,13]]}}}],["server",{"_index":815,"t":{"3140":{"position":[[52,6]]},"3279":{"position":[[71,6]]}}}],["servic",{"_index":166,"t":{"256":{"position":[[264,7]]},"3140":{"position":[[18,8],[113,8]]}}}],["set",{"_index":172,"t":{"258":{"position":[[79,3]]},"274":{"position":[[115,7]]},"381":{"position":[[19,3]]},"383":{"position":[[269,3]]},"423":{"position":[[18,3],[132,3],[209,3]]},"580":{"position":[[51,3]]},"992":{"position":[[514,7]]},"1047":{"position":[[32,3]]},"1091":{"position":[[15,3]]},"1708":{"position":[[54,3]]},"1728":{"position":[[54,3]]},"1825":{"position":[[96,3]]},"2003":{"position":[[52,7]]},"2200":{"position":[[52,7]]},"2254":{"position":[[68,3]]},"2266":{"position":[[5,3]]},"2797":{"position":[[206,3]]},"3216":{"position":[[20,3]]},"3465":{"position":[[15,3]]}}}],["setup",{"_index":124,"t":{"148":{"position":[[242,6]]},"218":{"position":[[58,5]]},"1559":{"position":[[91,5]]}}}],["sever",{"_index":495,"t":{"1059":{"position":[[82,7]]},"2842":{"position":[[0,7]]},"3854":{"position":[[33,7]]}}}],["sf",{"_index":714,"t":{"2414":{"position":[[58,2]]},"3085":{"position":[[155,2]]}}}],["share",{"_index":723,"t":{"2494":{"position":[[0,6]]}}}],["show",{"_index":632,"t":{"2028":{"position":[[19,4]]},"3085":{"position":[[170,4]]}}}],["shown",{"_index":743,"t":{"2660":{"position":[[32,5]]}}}],["sigma",{"_index":883,"t":{"3480":{"position":[[226,5]]}}}],["signag",{"_index":345,"t":{"543":{"position":[[33,7]]},"2262":{"position":[[61,7]]},"3154":{"position":[[151,7],[230,7]]},"3294":{"position":[[101,7],[238,7]]}}}],["signatur",{"_index":182,"t":{"290":{"position":[[53,10]]},"1518":{"position":[[100,10]]},"1551":{"position":[[87,10]]},"2160":{"position":[[72,10]]},"2660":{"position":[[145,10],[297,10],[349,9]]},"3480":{"position":[[150,10],[282,10]]}}}],["similar",{"_index":228,"t":{"383":{"position":[[289,7]]},"423":{"position":[[52,7]]},"1025":{"position":[[45,7]]},"3516":{"position":[[77,7]]}}}],["simpl",{"_index":780,"t":{"3022":{"position":[[76,6]]}}}],["simul",{"_index":378,"t":{"649":{"position":[[143,9]]},"717":{"position":[[143,9]]},"2200":{"position":[[70,9]]},"3085":{"position":[[32,10],[489,10]]}}}],["singl",{"_index":631,"t":{"2001":{"position":[[126,6]]},"3854":{"position":[[192,6]]}}}],["singleton",{"_index":651,"t":{"2252":{"position":[[0,10],[105,10]]}}}],["site",{"_index":265,"t":{"445":{"position":[[94,4]]},"898":{"position":[[38,4]]},"1475":{"position":[[48,4]]},"1549":{"position":[[48,4]]},"1551":{"position":[[48,4]]},"1553":{"position":[[48,4]]},"1555":{"position":[[48,4]]},"1557":{"position":[[48,4]]},"1559":{"position":[[48,4]]},"1573":{"position":[[48,4]]}}}],["size",{"_index":680,"t":{"2362":{"position":[[2,4]]},"2797":{"position":[[63,4]]}}}],["sketch",{"_index":542,"t":{"1518":{"position":[[19,6]]}}}],["skill",{"_index":405,"t":{"745":{"position":[[533,6]]}}}],["skip",{"_index":637,"t":{"2041":{"position":[[140,4]]},"2424":{"position":[[160,4]]}}}],["slot",{"_index":296,"t":{"494":{"position":[[93,5],[196,4]]},"910":{"position":[[118,4]]},"1781":{"position":[[449,4]]},"3154":{"position":[[9,4]]},"3290":{"position":[[135,4],[297,4]]}}}],["smaller",{"_index":819,"t":{"3154":{"position":[[82,7],[118,7]]}}}],["smart",{"_index":187,"t":{"306":{"position":[[96,5]]},"431":{"position":[[14,5],[299,5]]},"745":{"position":[[117,5]]},"898":{"position":[[187,5]]},"1555":{"position":[[89,5]]},"1575":{"position":[[70,5],[142,5]]},"1851":{"position":[[75,5]]},"2352":{"position":[[45,5]]},"3022":{"position":[[138,5]]}}}],["smooth",{"_index":767,"t":{"2865":{"position":[[23,6]]}}}],["snapshot",{"_index":534,"t":{"1505":{"position":[[173,8]]}}}],["softwar",{"_index":213,"t":{"381":{"position":[[227,8]]},"994":{"position":[[162,8]]}}}],["solana",{"_index":230,"t":{"401":{"position":[[64,6]]}}}],["solut",{"_index":620,"t":{"1971":{"position":[[239,8]]},"2797":{"position":[[77,8]]}}}],["solv",{"_index":877,"t":{"3453":{"position":[[25,5]]}}}],["someon",{"_index":418,"t":{"898":{"position":[[280,7]]}}}],["someth",{"_index":575,"t":{"1756":{"position":[[17,9]]},"1851":{"position":[[343,9]]},"2399":{"position":[[256,9]]}}}],["song",{"_index":642,"t":{"2140":{"position":[[128,4]]}}}],["sort",{"_index":305,"t":{"494":{"position":[[246,4]]}}}],["sourc",{"_index":334,"t":{"541":{"position":[[164,6]]},"2320":{"position":[[19,6]]},"2494":{"position":[[27,6]]},"2668":{"position":[[14,6]]},"3518":{"position":[[16,6]]}}}],["sp1",{"_index":344,"t":{"543":{"position":[[27,3]]}}}],["space",{"_index":285,"t":{"461":{"position":[[213,5]]},"494":{"position":[[321,5],[357,5]]},"914":{"position":[[110,5]]},"992":{"position":[[49,5],[81,5]]},"1518":{"position":[[122,5]]},"1781":{"position":[[177,5]]},"2371":{"position":[[52,5]]},"2539":{"position":[[67,5]]},"2658":{"position":[[233,5]]},"2865":{"position":[[77,5]]},"2889":{"position":[[30,5]]},"3058":{"position":[[11,5]]},"3192":{"position":[[244,5]]},"3386":{"position":[[248,5]]}}}],["specif",{"_index":250,"t":{"431":{"position":[[98,12]]},"1971":{"position":[[129,12]]},"2414":{"position":[[26,13]]}}}],["specifi",{"_index":318,"t":{"535":{"position":[[59,7]]},"3480":{"position":[[183,9]]}}}],["spectrum",{"_index":402,"t":{"745":{"position":[[477,8]]}}}],["spend",{"_index":210,"t":{"381":{"position":[[159,5]]},"447":{"position":[[81,5]]},"992":{"position":[[215,5],[345,5]]},"1587":{"position":[[33,5]]},"1971":{"position":[[208,5]]},"3085":{"position":[[75,8]]},"3216":{"position":[[2,5],[27,6]]}}}],["spent",{"_index":607,"t":{"1851":{"position":[[219,5]]},"1971":{"position":[[53,5]]}}}],["spv",{"_index":888,"t":{"3516":{"position":[[98,3]]}}}],["squar",{"_index":561,"t":{"1518":{"position":[[375,8]]}}}],["ssd",{"_index":854,"t":{"3279":{"position":[[295,3]]}}}],["stake",{"_index":682,"t":{"2371":{"position":[[102,5]]},"3192":{"position":[[234,5]]}}}],["stand",{"_index":256,"t":{"431":{"position":[[212,8]]}}}],["standard",{"_index":516,"t":{"1483":{"position":[[8,8]]},"1851":{"position":[[271,8]]}}}],["start",{"_index":188,"t":{"322":{"position":[[6,5]]},"494":{"position":[[267,6]]},"910":{"position":[[23,6]]},"1047":{"position":[[126,5]]},"1807":{"position":[[78,5]]},"2254":{"position":[[91,5]]},"2994":{"position":[[80,8]]}}}],["state",{"_index":220,"t":{"383":{"position":[[96,5]]},"498":{"position":[[94,5]]},"2260":{"position":[[30,5]]}}}],["statement",{"_index":177,"t":{"274":{"position":[[99,10]]}}}],["step",{"_index":394,"t":{"745":{"position":[[215,8]]},"994":{"position":[[20,4]]},"1483":{"position":[[83,4],[91,4]]},"2720":{"position":[[58,5]]}}}],["still",{"_index":376,"t":{"649":{"position":[[115,5]]},"717":{"position":[[115,5]]}}}],["storag",{"_index":147,"t":{"224":{"position":[[21,7]]},"992":{"position":[[41,7],[90,7]]},"3279":{"position":[[234,7]]}}}],["store",{"_index":117,"t":{"148":{"position":[[122,6]]},"461":{"position":[[239,5]]},"914":{"position":[[129,6]]},"994":{"position":[[134,6]]},"2379":{"position":[[61,6]]},"2399":{"position":[[10,6]]},"3128":{"position":[[115,7]]}}}],["strategi",{"_index":753,"t":{"2660":{"position":[[569,10]]}}}],["streamabl",{"_index":160,"t":{"256":{"position":[[106,10]]}}}],["structur",{"_index":80,"t":{"67":{"position":[[187,9]]},"274":{"position":[[68,9]]},"401":{"position":[[141,10]]},"2289":{"position":[[208,9]]},"3216":{"position":[[161,9]]}}}],["student",{"_index":35,"t":{"29":{"position":[[352,7]]},"67":{"position":[[98,8]]}}}],["sub",{"_index":157,"t":{"256":{"position":[[49,3]]},"494":{"position":[[89,3],[192,3]]},"910":{"position":[[0,3],[11,3],[35,3],[70,3]]},"3154":{"position":[[5,3]]}}}],["submit",{"_index":185,"t":{"306":{"position":[[66,6]]},"3216":{"position":[[70,9]]}}}],["such",{"_index":229,"t":{"401":{"position":[[46,4]]},"3128":{"position":[[78,4]]}}}],["suffici",{"_index":799,"t":{"3085":{"position":[[202,10]]}}}],["suit",{"_index":858,"t":{"3290":{"position":[[248,5]]}}}],["sum",{"_index":260,"t":{"431":{"position":[[267,4]]},"461":{"position":[[109,3]]}}}],["support",{"_index":121,"t":{"148":{"position":[[192,7]]},"985":{"position":[[58,9]]},"2371":{"position":[[13,7]]},"3226":{"position":[[22,9],[115,8]]},"3279":{"position":[[195,7]]},"3386":{"position":[[10,7]]},"3608":{"position":[[145,8]]}}}],["sure",{"_index":368,"t":{"641":{"position":[[41,4]]}}}],["sustain",{"_index":590,"t":{"1781":{"position":[[321,11]]}}}],["switch",{"_index":785,"t":{"3022":{"position":[[210,6]]}}}],["sync",{"_index":493,"t":{"1047":{"position":[[56,4]]},"1684":{"position":[[49,6]]},"2565":{"position":[[35,7]]},"3453":{"position":[[36,4]]}}}],["syntax",{"_index":175,"t":{"274":{"position":[[59,6]]}}}],["system",{"_index":118,"t":{"148":{"position":[[146,7]]},"383":{"position":[[115,6]]},"1059":{"position":[[32,6]]},"2399":{"position":[[119,6]]},"3085":{"position":[[563,6]]}}}],["t",{"_index":434,"t":{"914":{"position":[[168,1]]},"2399":{"position":[[132,1]]},"3279":{"position":[[193,1]]}}}],["tabl",{"_index":320,"t":{"539":{"position":[[14,5]]},"2560":{"position":[[5,5]]}}}],["tailor",{"_index":487,"t":{"1025":{"position":[[23,8]]},"1518":{"position":[[252,8]]}}}],["take",{"_index":298,"t":{"494":{"position":[[155,4]]},"992":{"position":[[476,4]]},"2889":{"position":[[105,4]]}}}],["taken",{"_index":535,"t":{"1505":{"position":[[186,5]]}}}],["talk",{"_index":1,"t":{"1":{"position":[[19,4]]},"35":{"position":[[19,4]]},"51":{"position":[[19,4]]},"258":{"position":[[22,4]]},"3008":{"position":[[19,4]]}}}],["task",{"_index":776,"t":{"2889":{"position":[[91,4]]},"3085":{"position":[[516,4]]}}}],["tau",{"_index":885,"t":{"3480":{"position":[[254,3]]}}}],["teach",{"_index":569,"t":{"1587":{"position":[[14,7]]},"1883":{"position":[[14,7]]}}}],["technic",{"_index":26,"t":{"29":{"position":[[241,9]]},"580":{"position":[[183,9]]},"1825":{"position":[[210,9]]},"2200":{"position":[[96,9]]},"2660":{"position":[[87,11]]}}}],["technolog",{"_index":15,"t":{"29":{"position":[[81,10]]},"745":{"position":[[256,12]]},"898":{"position":[[349,12]]}}}],["tell",{"_index":483,"t":{"1002":{"position":[[7,4]]},"1756":{"position":[[77,5]]}}}],["temporari",{"_index":853,"t":{"3279":{"position":[[224,9]]}}}],["termin",{"_index":613,"t":{"1902":{"position":[[72,8]]}}}],["test",{"_index":377,"t":{"649":{"position":[[121,4]]},"717":{"position":[[121,4]]},"1575":{"position":[[101,5]]},"2254":{"position":[[146,7]]}}}],["testnet",{"_index":379,"t":{"649":{"position":[[158,7]]},"717":{"position":[[158,7]]},"1559":{"position":[[83,7]]},"1684":{"position":[[59,7]]},"3226":{"position":[[32,7],[47,8]]}}}],["testnet11",{"_index":834,"t":{"3226":{"position":[[0,9]]}}}],["textrm",{"_index":713,"t":{"2414":{"position":[[49,6]]},"3085":{"position":[[146,6]]}}}],["textsf",{"_index":545,"t":{"1518":{"position":[[65,6]]},"1781":{"position":[[6,6],[103,6],[463,6]]},"2289":{"position":[[98,6],[172,6]]},"3480":{"position":[[55,6]]}}}],["therefor",{"_index":56,"t":{"49":{"position":[[143,9]]},"2660":{"position":[[526,9]]}}}],["thing",{"_index":132,"t":{"183":{"position":[[39,6]]},"431":{"position":[[206,5]]},"3465":{"position":[[8,6]]}}}],["thoughtfulli",{"_index":70,"t":{"67":{"position":[[37,12]]}}}],["through",{"_index":415,"t":{"898":{"position":[[120,7]]},"1483":{"position":[[110,7]]},"1575":{"position":[[107,7]]},"1902":{"position":[[60,7]]},"2001":{"position":[[55,7]]},"2003":{"position":[[29,7]]},"2200":{"position":[[29,7]]},"2226":{"position":[[55,7]]},"2720":{"position":[[46,7]]},"3516":{"position":[[40,7]]}}}],["time",{"_index":295,"t":{"494":{"position":[[77,4]]},"1851":{"position":[[421,4]]},"2226":{"position":[[71,4]]},"2371":{"position":[[62,4],[272,4],[417,4]]},"2460":{"position":[[73,4]]},"3066":{"position":[[60,4],[144,5]]},"3386":{"position":[[63,4]]}}}],["timelin",{"_index":730,"t":{"2560":{"position":[[25,8],[96,8]]}}}],["timelord",{"_index":291,"t":{"494":{"position":[[39,9],[229,9]]},"3154":{"position":[[166,9]]},"3294":{"position":[[2,8],[140,8]]},"3327":{"position":[[43,9]]},"3341":{"position":[[5,8]]},"3386":{"position":[[0,9]]},"3443":{"position":[[9,8]]}}}],["titl",{"_index":485,"t":{"1007":{"position":[[8,5]]}}}],["token",{"_index":4,"t":{"1":{"position":[[41,6]]},"1483":{"position":[[47,6]]},"1505":{"position":[[204,6],[312,6],[373,6]]},"1807":{"position":[[378,6],[406,6]]},"2001":{"position":[[103,5]]},"2226":{"position":[[101,5]]}}}],["took",{"_index":706,"t":{"2399":{"position":[[163,4]]}}}],["tool",{"_index":358,"t":{"580":{"position":[[122,4]]},"745":{"position":[[333,5]]},"898":{"position":[[431,5]]},"1902":{"position":[[96,5]]},"2028":{"position":[[63,4]]},"2142":{"position":[[31,4]]}}}],["topic",{"_index":403,"t":{"745":{"position":[[489,6]]}}}],["torrent",{"_index":494,"t":{"1047":{"position":[[83,7]]}}}],["track",{"_index":219,"t":{"383":{"position":[[83,5]]},"2142":{"position":[[44,5]]},"3294":{"position":[[17,5]]}}}],["trade",{"_index":67,"t":{"51":{"position":[[81,7]]}}}],["transact",{"_index":91,"t":{"108":{"position":[[97,12]]},"383":{"position":[[149,11]]},"461":{"position":[[77,11]]},"745":{"position":[[123,11]]},"898":{"position":[[193,11]]},"1851":{"position":[[280,12]]},"2297":{"position":[[165,12]]},"2352":{"position":[[51,11]]},"2379":{"position":[[48,12]]},"3022":{"position":[[241,12]]},"3216":{"position":[[184,11]]},"3516":{"position":[[138,12]]}}}],["transform",{"_index":20,"t":{"29":{"position":[[134,14]]}}}],["transmit",{"_index":813,"t":{"3128":{"position":[[86,12]]}}}],["tri",{"_index":856,"t":{"3290":{"position":[[175,3]]}}}],["troubleshoot",{"_index":867,"t":{"3365":{"position":[[79,12]]}}}],["true",{"_index":313,"t":{"498":{"position":[[89,4]]}}}],["trust",{"_index":437,"t":{"914":{"position":[[214,5]]},"2867":{"position":[[127,7]]}}}],["tutori",{"_index":568,"t":{"1587":{"position":[[5,8]]},"1883":{"position":[[5,8]]},"2041":{"position":[[25,8]]},"2138":{"position":[[5,8]]},"2162":{"position":[[5,8]]},"2228":{"position":[[25,8]]},"2258":{"position":[[24,8]]}}}],["twitter",{"_index":154,"t":{"224":{"position":[[126,7]]}}}],["two",{"_index":106,"t":{"134":{"position":[[40,3]]},"2658":{"position":[[108,3]]},"3192":{"position":[[34,3],[266,3]]}}}],["type",{"_index":113,"t":{"148":{"position":[[40,5]]},"256":{"position":[[256,4]]}}}],["typic",{"_index":81,"t":{"67":{"position":[[197,9]]},"2399":{"position":[[226,7]]},"3279":{"position":[[261,9]]}}}],["typo",{"_index":52,"t":{"49":{"position":[[108,5]]}}}],["under",{"_index":203,"t":{"381":{"position":[[44,5]]},"641":{"position":[[19,5]]},"3192":{"position":[[176,5]]}}}],["understand",{"_index":337,"t":{"541":{"position":[[188,10]]},"580":{"position":[[227,10]]},"1807":{"position":[[108,13],[244,10]]},"1825":{"position":[[254,10]]},"2414":{"position":[[128,10]]}}}],["unfortun",{"_index":808,"t":{"3085":{"position":[[466,13]]}}}],["uniqu",{"_index":546,"t":{"1518":{"position":[[85,6]]}}}],["unit",{"_index":270,"t":{"461":{"position":[[10,4]]}}}],["unrealist",{"_index":803,"t":{"3085":{"position":[[317,11]]}}}],["unspent",{"_index":223,"t":{"383":{"position":[[141,7]]}}}],["until",{"_index":608,"t":{"1851":{"position":[[395,5]]}}}],["up",{"_index":173,"t":{"258":{"position":[[88,2]]},"274":{"position":[[123,2]]},"992":{"position":[[522,2]]},"1047":{"position":[[36,2]]},"1091":{"position":[[19,2]]},"1708":{"position":[[58,2]]},"1728":{"position":[[58,2]]},"1851":{"position":[[386,2]]},"2003":{"position":[[60,2]]},"2200":{"position":[[60,2]]},"2254":{"position":[[72,2]]},"2352":{"position":[[109,2]]},"2797":{"position":[[210,2]]},"3465":{"position":[[19,2]]}}}],["updat",{"_index":325,"t":{"539":{"position":[[115,7]]},"641":{"position":[[49,6]]},"914":{"position":[[243,7]]}}}],["us",{"_index":5,"t":{"1":{"position":[[69,4]]},"35":{"position":[[81,4]]},"49":{"position":[[240,4]]},"148":{"position":[[134,4]]},"185":{"position":[[83,5]]},"256":{"position":[[125,5]]},"290":{"position":[[47,5]]},"306":{"position":[[77,3]]},"381":{"position":[[5,4]]},"383":{"position":[[132,4],[227,3],[255,4]]},"401":{"position":[[21,4]]},"423":{"position":[[74,4]]},"565":{"position":[[0,5]]},"580":{"position":[[106,3]]},"641":{"position":[[92,5]]},"649":{"position":[[98,3]]},"717":{"position":[[98,3]]},"914":{"position":[[315,5]]},"1047":{"position":[[75,5]]},"1091":{"position":[[26,3]]},"1518":{"position":[[51,4]]},"1573":{"position":[[83,5]]},"1587":{"position":[[62,5],[90,5]]},"1781":{"position":[[167,4]]},"1851":{"position":[[309,5]]},"1902":{"position":[[81,5]]},"1971":{"position":[[146,4],[295,4]]},"2028":{"position":[[35,3]]},"2041":{"position":[[69,3],[114,3]]},"2140":{"position":[[29,5]]},"2162":{"position":[[33,5]]},"2228":{"position":[[69,3],[87,5],[114,3]]},"2289":{"position":[[111,4],[189,3]]},"2352":{"position":[[145,3]]},"2658":{"position":[[37,4]]},"2660":{"position":[[362,4],[415,3],[555,3]]},"3008":{"position":[[69,4]]},"3128":{"position":[[73,4]]},"3279":{"position":[[250,4]]},"3290":{"position":[[11,4]]},"3327":{"position":[[78,5]]},"3365":{"position":[[33,3],[46,5],[188,6]]},"3386":{"position":[[69,5],[211,4]]},"3480":{"position":[[206,3]]}}}],["user",{"_index":54,"t":{"49":{"position":[[126,4]]},"67":{"position":[[138,4]]},"381":{"position":[[250,4]]},"2720":{"position":[[255,5]]},"3105":{"position":[[89,5]]}}}],["usual",{"_index":697,"t":{"2379":{"position":[[83,7]]},"3216":{"position":[[62,7]]}}}],["utc",{"_index":531,"t":{"1505":{"position":[[97,3]]},"1537":{"position":[[102,3]]},"1561":{"position":[[102,3]]}}}],["utilis",{"_index":503,"t":{"1126":{"position":[[59,8]]}}}],["utxo",{"_index":225,"t":{"383":{"position":[[169,4],[300,4]]},"423":{"position":[[4,4],[148,4]]}}}],["valid",{"_index":90,"t":{"108":{"position":[[86,10]]},"134":{"position":[[6,10],[58,10],[78,10]]},"914":{"position":[[94,5]]},"1505":{"position":[[142,5]]}}}],["valu",{"_index":46,"t":{"49":{"position":[[34,6]]},"2658":{"position":[[23,5],[199,6]]},"2842":{"position":[[100,5]]}}}],["variou",{"_index":126,"t":{"148":{"position":[[272,7]]},"2424":{"position":[[42,7]]},"3400":{"position":[[103,7]]},"3608":{"position":[[180,7]]}}}],["vc",{"_index":887,"t":{"3501":{"position":[[83,3]]}}}],["vdf",{"_index":293,"t":{"494":{"position":[[57,4]]},"1518":{"position":[[326,4]]},"2289":{"position":[[227,3]]},"3066":{"position":[[68,3]]},"3154":{"position":[[90,4],[126,4],[188,3]]},"3192":{"position":[[297,4]]},"3290":{"position":[[20,3]]},"3327":{"position":[[84,4]]},"3480":{"position":[[141,4],[263,4]]}}}],["ve",{"_index":497,"t":{"1061":{"position":[[37,2]]},"1091":{"position":[[49,2]]},"1902":{"position":[[10,2]]}}}],["vector",{"_index":796,"t":{"3085":{"position":[[56,7]]}}}],["veri",{"_index":238,"t":{"423":{"position":[[47,4]]},"1971":{"position":[[178,4]]},"2889":{"position":[[76,4]]}}}],["verif",{"_index":889,"t":{"3516":{"position":[[122,12]]}}}],["verifi",{"_index":549,"t":{"1518":{"position":[[149,10]]},"2371":{"position":[[142,8]]},"3066":{"position":[[2,10]]},"3386":{"position":[[77,10]]}}}],["version",{"_index":370,"t":{"641":{"position":[[75,7]]},"985":{"position":[[112,7]]},"2041":{"position":[[162,7]]},"2140":{"position":[[107,7]]},"2660":{"position":[[383,8]]},"3022":{"position":[[20,7]]}}}],["video",{"_index":509,"t":{"1477":{"position":[[8,5]]},"1575":{"position":[[9,6]]},"2001":{"position":[[8,5],[146,5]]},"2140":{"position":[[5,5]]},"2160":{"position":[[8,5]]},"2226":{"position":[[8,5]]},"2252":{"position":[[54,5]]},"2254":{"position":[[8,5]]},"2260":{"position":[[87,5]]}}}],["visual",{"_index":77,"t":{"67":{"position":[[156,8]]}}}],["vp",{"_index":146,"t":{"224":{"position":[[18,2]]}}}],["walk",{"_index":629,"t":{"2001":{"position":[[45,5]]},"2226":{"position":[[45,5]]},"2720":{"position":[[37,4]]}}}],["wallet",{"_index":143,"t":{"218":{"position":[[133,6]]},"381":{"position":[[88,7],[241,6]]},"580":{"position":[[300,7]]},"1091":{"position":[[37,6]]},"1825":{"position":[[67,6],[319,6]]},"2138":{"position":[[35,6]]},"3516":{"position":[[0,7],[52,6]]},"3518":{"position":[[0,6]]},"3608":{"position":[[94,7],[208,6]]},"3663":{"position":[[40,6],[75,6]]},"3854":{"position":[[115,6]]},"3973":{"position":[[59,6]]}}}],["walletconnect",{"_index":892,"t":{"3608":{"position":[[0,13],[154,13]]}}}],["want",{"_index":170,"t":{"258":{"position":[[47,4]]},"1061":{"position":[[7,4]]},"1091":{"position":[[7,4]]},"1684":{"position":[[25,4]]},"1756":{"position":[[107,4]]}}}],["watch",{"_index":630,"t":{"2001":{"position":[[116,5],[165,8]]}}}],["way",{"_index":257,"t":{"431":{"position":[[228,3]]},"2424":{"position":[[60,4]]},"3365":{"position":[[72,3]]}}}],["web",{"_index":895,"t":{"3608":{"position":[[230,3]]}}}],["weight",{"_index":689,"t":{"2371":{"position":[[373,6]]},"3516":{"position":[[161,6]]}}}],["welcom",{"_index":8,"t":{"29":{"position":[[0,7]]},"745":{"position":[[0,7]]},"898":{"position":[[0,7]]},"2258":{"position":[[0,7]]}}}],["went",{"_index":711,"t":{"2399":{"position":[[251,4]]}}}],["wes20",{"_index":553,"t":{"1518":{"position":[[193,5],[348,5]]}}}],["whether",{"_index":390,"t":{"745":{"position":[[145,7]]},"898":{"position":[[215,7]]}}}],["whole",{"_index":221,"t":{"383":{"position":[[109,5]]}}}],["win",{"_index":479,"t":{"994":{"position":[[92,7]]},"1033":{"position":[[80,4]]},"2865":{"position":[[107,7]]},"2889":{"position":[[48,7]]},"3290":{"position":[[280,4]]},"3386":{"position":[[230,7]]}}}],["window",{"_index":440,"t":{"916":{"position":[[11,7]]},"2567":{"position":[[11,7]]},"2637":{"position":[[11,7]]},"3579":{"position":[[11,7]]},"3772":{"position":[[11,7]]},"3878":{"position":[[11,7]]}}}],["wish",{"_index":636,"t":{"2041":{"position":[[106,4]]},"2228":{"position":[[106,4]]}}}],["within",{"_index":281,"t":{"461":{"position":[[178,6]]},"2560":{"position":[[109,6]]},"2736":{"position":[[81,6]]}}}],["without",{"_index":692,"t":{"2371":{"position":[[423,7]]},"2379":{"position":[[271,7]]},"2488":{"position":[[199,7]]},"2660":{"position":[[308,7]]},"3516":{"position":[[169,7]]}}}],["word",{"_index":740,"t":{"2658":{"position":[[101,5]]}}}],["work",{"_index":133,"t":{"183":{"position":[[50,7]]},"185":{"position":[[47,5]]},"199":{"position":[[12,7]]},"322":{"position":[[71,8]]},"992":{"position":[[458,4]]},"1002":{"position":[[31,7]]},"1781":{"position":[[373,4]]},"1902":{"position":[[18,7]]},"3192":{"position":[[228,4]]}}}],["world",{"_index":29,"t":{"29":{"position":[[269,5]]},"745":{"position":[[233,5]]},"898":{"position":[[155,5]]}}}],["write",{"_index":574,"t":{"1708":{"position":[[91,5]]},"1728":{"position":[[91,5]]},"1807":{"position":[[425,7]]}}}],["xch",{"_index":100,"t":{"122":{"position":[[99,3]]},"2297":{"position":[[187,3]]}}}],["year",{"_index":778,"t":{"2889":{"position":[[122,5]]}}}]],"pipeline":["stemmer"]}},{"documents":[],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[],"invertedIndex":[],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"In this lesson, we talk about Chia Asset Tokens, and how they can be used.","s":"CATs","u":"/academy-cat/","h":"","p":1},{"i":4,"t":"Issuance: Understand the basic types of issuance rules.","s":"Learning objectives","u":"/academy-cat/","h":"#learning-objectives","p":1},{"i":7,"t":"Expand for the full script 0:00 A Chia Asset Token, or CAT, is a type of fungible token that can be minted from XCH. These tokens can take many different forms from a separate form of currency, to representing a collection of identical assets. 0:20 A CAT can have different properties, determined by it's TAIL, or Token Asset Issuance Limiter. This TAIL determines how the CAT is issued, how it can be subsequently spent, and whether it can be melted back into XCH. 0:40 A CAT wraps an inner puzzle that controls ownership of the coin. This is typically the standard transaction puzzle to facilitate sending the CATs to a Chia wallet. For the TAIL, there are 2 standard puzzles, Single-Issuance, and Multi-Issuance. The Single-Issuance TAIL is more restrictive and is designed to make sure the supply is maintained. 1:00 With this TAIL, only the CATs minted at creation are valid, and they cannot be melted back into XCH. The Multi-Issuance TAIL allows more identical CATs to be issued in the future, as long as the original issuance key is used. This is useful if the total number of tokens needed is unknown. 1:20 While these are the standard puzzles, a TAIL can be customized to allow any desired behavior.","s":"Script","u":"/academy-cat/","h":"#script","p":1},{"i":9,"t":"Fungibility: CATs are fungible, meaning they can be exchanged for each other at will. There are no editions, lot numbers, or anything else that would differentiate two CATs from the same issuance. Melting: Melting a CAT (if allowed by the TAIL) converts the underlying value of the CAT back to XCH which can then be used for other coins. A CAT can only ever be melted into the same amount of XCH used to create the CAT.","s":"Common gotchas","u":"/academy-cat/","h":"#common-gotchas","p":1},{"i":11,"t":"Question 1 - CATs vs. NFTs True or False; A CAT is a special type of NFT. Answer (expand when ready to see the answer) False. A CAT is fungible, whereas an NFT is non-fungible and represents a unique item. Question 2 - TAILs What are the standard types of TAILs? Answer (expand when ready to see the answer) Single-Issuance and Multi-Issuance.","s":"Knowledge check","u":"/academy-cat/","h":"#knowledge-check","p":1},{"i":14,"t":"More about primitives: guides for each primitive, and how to use them. In depth CAT overview: describing the CAT standard, and how to issue them. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/academy-cat/","h":"#links","p":1},{"i":16,"t":"This lesson is an overview of DIDs.","s":"DIDs","u":"/academy-did/","h":"","p":15},{"i":18,"t":"Identity Ownership: Understand the differences in data ownership between decentralized and non-decentralized identities.","s":"Learning objectives","u":"/academy-did/","h":"#learning-objectives","p":15},{"i":21,"t":"Expand for the full script 0:00 DIDs, or decentralized identifiers, provide a way to identify users or organizations in a decentralized way. DIDs can be used as account identifiers. 0:20 For example, someone using a specific service would create a DID associated with that service that they control. They could use this DID to authorize access to the service, and manage assets the service may provide and permissions it may request. 0:40 In non-decentralized environments, the account information is controlled and owned by the service provider. With decentralized identities, the identity and the data associated with it, are controlled and owned by the user. This allows the user to use the DID with many different services and in many different contexts, and control the information associated with it.","s":"Script","u":"/academy-did/","h":"#script","p":15},{"i":23,"t":"DIDs are NFTs: DIDs are actually a special type of NFT. This ensures uniqueness and that only one entitiy has control of any one DID. DID limits: A user can generate many DIDs and associate each one with different services or assets.","s":"Common gotchas","u":"/academy-did/","h":"#common-gotchas","p":15},{"i":25,"t":"Question 1 - DID issuance True or False; A DID is issued by a service provider to identify a user. Answer (expand when ready to see the answer) False. The DID is created by the user, and associated with a service provider. This allows the user to use one DID for many different services. Question 2 - DID limits How many DIDs can a user have? Answer (expand when ready to see the answer) There is no practical limit to the number of DIDs a user can create.","s":"Knowledge check","u":"/academy-did/","h":"#knowledge-check","p":15},{"i":28,"t":"More about primitives: guides for each primitive, and how to use them. In depth DID guide: how to create a DID. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/academy-did/","h":"#links","p":15},{"i":30,"t":"Welcome to Chia Academy, the scholarly hub for delving deep into Chia blockchain technology. In an age characterized by rapid digital transformation, this institution offers a comprehensive exploration of the Chia blockchain, dissecting its technical intricacies, real-world applications, and the nuances of its secure data handling. As a Chia Academy student, you will dive into the core concepts and functionalities of the Chia blockchain.","s":"Academy Home","u":"/academy-home/","h":"","p":29},{"i":32,"t":"Below, you'll find several curated courses covering everything from the basics of blockchain technology, to the specifics of Chialisp and implementation. Courses can be taken in any order, so feel free to explore at your leisure. Chialisp Overview​ Learn Learn Learn Learn Blockchain Basics​ Learn Learn Learn Learn Learn Plotting & Farming​ Learn Learn Learn Learn Primitives​ Learn Learn Learn Learn","s":"Courses","u":"/academy-home/","h":"#courses","p":29},{"i":34,"t":"Check out the Academy Overview page for a breakdown on how the courses are presented and organized.","s":"How the courses work","u":"/academy-home/","h":"#how-the-courses-work","p":29},{"i":36,"t":"In this lesson, we talk about what an NFT is, and some examples of how it can be used.","s":"NFTs","u":"/academy-nft/","h":"","p":35},{"i":38,"t":"Fungibility: Understand what makes something fungible. Uses and Value: Understand the use of NFTs, and what makes something valuable.","s":"Learning objectives","u":"/academy-nft/","h":"#learning-objectives","p":35},{"i":41,"t":"Expand for the full script 0:00 NFTs, or non-fungible tokens, can be used to provide proof of ownership, handle licenses and royalties, and ensure uniqueness for digital entities and even real-world items. 0:20 Let's start at the basics. An item is non-fungible if it can not be interchanged for another identical item. For example, an original painting, a driver's license, or even a family heirloom. These items are unique and can't be substituted for something of \"equal value\" since any other item would not have the same properties. 0:40 Since digital items can be inherently duplicated, we need to pair the item with something that isn't. An NFT is a token on the blockchain that represents an item. This item could be physical and the NFT is a sort of registry of ownership on the blockchain, or the item could be digital, with the NFT serving as the non-interchangeable component. 1:00 NFTs can be used to provide ownership provenance, such as the sale and resale of digital art. They can also provide a mechanism of distributing royalties to the original author upon resale. 1:20 NFTs can also provide a method of verifying and transferring more ethereal concepts such as digital memberships and ecosystem specific assets. It's an important point that just because something is non-fungible, it is not inherently valuable. For example, a family heirloom is non-fungible, and may have emotional value to one person, 1:40 but it does not have true value outside of a specific context. NFTs are a tool that is useful for providing a new way to work with digital items. They do not themselves create value.","s":"Script","u":"/academy-nft/","h":"#script","p":35},{"i":43,"t":"Size Limitations: Because there is a limit to how large a single transaction can be, it is very rare to have the digital item itself embedded in the NFT. The token will instead contain a reference to the item that is hosted elsewhere. NFTs are Data: It is common to think of some type of image or art when thinking of NFTs. This is a very limited view. NFTs are essentially data objects that can contain references to other digital assets, or simply be the data object itself. The referenced asset may be a piece of digital art, but it could just as easily be a document, contract, application, etc.","s":"Common gotchas","u":"/academy-nft/","h":"#common-gotchas","p":35},{"i":45,"t":"Question 1 - Fungibility What makes something fungible? Answer (expand when ready to see the answer) Something is fungibile if it can be easily substituted for another item. Question 2 - Physical vs. Digital True or False; An NFT can really only represent digital assets. Answer (expand when ready to see the answer) False. An NFT can also represent physical assets, and serves as a registry on the blockchain. Question 3 - Value True or False; Minting and NFT makes the underlying asset valuable. Answer (expand when ready to see the answer) False. Simply being an NFT does not make it valuable. NFTs are a tool to handle digital assets in a new way.","s":"Knowledge check","u":"/academy-nft/","h":"#knowledge-check","p":35},{"i":48,"t":"More about primitives: guides for each primitive, and how to use them. In depth NFT guide: how to mint an NFT. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/academy-nft/","h":"#links","p":35},{"i":50,"t":"You can send unwanted tokens to this addresses to make them unspendable: Mainnet burn address: xch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ks6e8mvy Testnet burn address: txch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ksh7qddh warning Do not send anything to these addresses unless you want it to be inaccessible forever. A traditional bech32m puzzle hash for a burn address is all zeros ending in \"dead\": 0x000000000000000000000000000000000000000000000000000000000000dead. Converting this to an address, you end up with the burn addresses above. You can use a puzzle hash converter to verify for yourself.","s":"Chia Burn Address","u":"/addresses/","h":"","p":49},{"i":52,"t":"In this lesson, we talk about Chia Offers and how they enables safe peer-to-peer trading.","s":"Offers","u":"/academy-offers/","h":"","p":51},{"i":54,"t":"Peer-to-peer trading: Understand what offers are and how they enable P2P trading. Managing offer files: Learn how to share, accept, and cancel offers.","s":"Learning objectives","u":"/academy-offers/","h":"#learning-objectives","p":51},{"i":57,"t":"Expand for the full script 0:00 Chia Offers are used to trade assets between two parties safely and securely in a direct, peer-to-peer transaction. They can be used to trade any combination of assets including XCH, CATs, and NFTs. 0:20 When an offer is accepted, the trade happens atomically, meaning the entirety of the trade settles simultaneously with no counterparty risk. The creator of an offer specifies the assets they wish to offer as well as the assets they wish to receive. 0:40 An offer file is then created, represented as a string of characters containing an incomplete and partially signed spend bundle. The creator can then share this offer file through any means, such as email, QR code, and offer file exchange services. Anyone that sees an offer file and wants to accept the trade can do so by signing and completing the other side of the spend bundle and submit it to the blockchain to be settled atomically. 1:00 Assets with smart contracts attached such as NFTs that include creator royalties are also enforced. If a creator wishes to cancel an existing offer, they can simply spend any of the assets offered to invalidate it. 1:20 Offers can also be set to automatically expire after a certain amount of time if nobody takes it. Offer files allow for true peer-to-peer transactions, introducing a new way to create safe and decentralized liquid markets for assets on the Chia blockchain.","s":"Script","u":"/academy-offers/","h":"#script","p":51},{"i":59,"t":"Locked coins: Some wallets including the GUI Reference Wallet will indicate part of the balance of an asset as \"locked\" or \"unspendable\" if an Offer was created offering that asset. In truth, those coins aren't actually unspendable but if they are spent, any offer(s) that use those coins will be invalid. In order to not lock up more than the offered amount, one can split their coins into smaller amounts prior to creating an offer. Canceling open offers: If an offer has been previously shared (e.g. uploaded to dexie) and the creator wishes to cancel it, they need to cancel with the \"Cancel on blockchain\" function enabled to ensure the offer is truly invalidated and not just deleted locally. Blockchain fees: Accepting an offer is an on-chain transaction and hence requires a transaction fee to be prioritized when blocks are full. The creator can embed fees as part of the offer file but the buyer can also optionally include a transaction fee as well.","s":"Common gotchas","u":"/academy-offers/","h":"#common-gotchas","p":51},{"i":61,"t":"Question 1 - Supported assets True or False; An offer file is only for trading NFTs. Answer (expand when ready to see the answer) False. An offer file can be used to trade any combination of assets including (but not limited to) XCH, CATs, and NFTs. Offer files can also be used with other types of coins such as Verifiable Credentials or DataLayer singletons. Question 2 - NFT Royalties True or False; When creating an offer for NFTs, creator royalties (if any) must be included. Answer (expand when ready to see the answer) True. If an NFT specifies a creator royalty, this amount must be included as part of the requested assets to be considered valid. Royalties are applied to XCH and CATs that are a part of the offer. Wallets will automatically calculate and include these coins to be sent to the NFT creator.","s":"Knowledge check","u":"/academy-offers/","h":"#knowledge-check","p":51},{"i":64,"t":"More about primitives: guides for each primitive, and how to use them. CLI Guide: documentation on how to interact with offers with the CLI. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels. Offer file exchanges: a bulletin board system for sharing and discovering offer files.","s":"Links","u":"/academy-offers/","h":"#links","p":51},{"i":66,"t":"The above diagram shows Chia's network architecture. A single machine can run more than one of these processes. In fact, the default configuration is to run four processes together: Farmer, Full Node, Harvester, and Wallet. Many farmers will also choose to run the Electron GUI and Pool processes. Additionally, a few farmers, especially those with multi-PiB farms, will choose to run a Timelord. Let's discuss each of these processes, and the protocols that connect them, separately.","s":"Architecture Overview","u":"/architecture-overview/","h":"","p":65},{"i":68,"t":"The lesson pages in Chia Academy are thoughtfully designed to enhance the learning experience for students. Each lesson is organized in a user-friendly and visually appealing manner. The structure typically includes:","s":"Academy Overview","u":"/academy-overview/","h":"","p":67},{"i":70,"t":"Each lesson starts with a clear and descriptive title that informs students about the topic they are about to explore.","s":"Lesson title","u":"/academy-overview/","h":"#lesson-title","p":67},{"i":72,"t":"A set of specific learning objectives is provided at the beginning of the lesson. These objectives outline what students will be able to understand or do by the end of the lesson, setting clear expectations. Learning Objective 1 Learning Objective 2 Learning Objective 3","s":"Learning objectives","u":"/academy-overview/","h":"#learning-objectives","p":67},{"i":74,"t":"The core content in each lesson is conveyed through structured, short format videos followed by scripts. This hybrid visual and text approach ensures accessibility and caters to diverse learning preferences.","s":"Content","u":"/academy-overview/","h":"#content","p":67},{"i":76,"t":"Each of the short format videos will be proceeded by the script used for creating the video. This written format ensures ease of translation catering to diverse learners. Expand for the full script 00:00 This is an example of how the scripts will be provided including timestamps. 00:20 The timestamps are provided in set intervals and are formatted as minutes:seconds (MM:SS).","s":"Script","u":"/academy-overview/","h":"#script","p":67},{"i":78,"t":"While lessons are thoughtfully designed to facilitate learning, there are some common pitfalls or challenges that a learner might face. These will be described after the script for each lesson. Gotcha 1: Description of gotcha 1. Gotcha 2: Description of gotcha 2. Gotcha 3: Description of gotcha 3.","s":"Common gotchas","u":"/academy-overview/","h":"#common-gotchas","p":67},{"i":80,"t":"Each lesson contains a brief self-assessment quiz designed to gauge learners' comprehension and retention of the video material. These assessments reinforce key concepts and help learners self-assess their understanding. The quiz section has two components, questions and answers. The questions contain lesson-applicable questions and the answers contain the corresponding answers. Since this is a self assessment, you can of course skip the questions and go straight to the answers; but, we strongly recommend that you take the time to solve the question on your own before checking the answer. Question 1 What format is used for timestamps in the content scripts? Answer (expand when ready to see the answer) MM:SS or minutes:seconds Question 2 What is the serialized form of this Chialisp puzzle? (mod (arg1 arg2) (+ arg1 arg2)) Answer (expand when ready to see the answer) (+ 2 5) Question 3 What is the Chialisp puzzle for squaring a passed argument? Answer (expand when ready to see the answer) (mod (arg) (defun square (number) (* number number) ) (square arg) )","s":"Knowledge check","u":"/academy-overview/","h":"#knowledge-check","p":67},{"i":82,"t":"Links to additional reading materials, videos, or external resources may be provided for learners who wish to delve deeper into the lessons subject.","s":"Additional resources","u":"/academy-overview/","h":"#additional-resources","p":67},{"i":84,"t":"Runnable plugins are for Chialisp and clvm are provided with all applicable lessons. Take some time to familiarize yourself with the tools and learn how to best make use of them throughout the lessons. Each plugin has a series of components: Language: The language of the plugin (Chialisp or clvm) is in the top right corner. Solution: The top section is the input or solution. Puzzle: The bottom section is the puzzle. Run: Each plugin has a play/run button to the right of the language identifier. Result: After clicking run, the result of the puzzle appears below the puzzle. Cost: After clicking run, the clvm cost of the puzzle is calculated and appears in the bottom right corner. Errors: After clicking run, the plugin checks for and provides any errors in place of the result section. info The plugins only validate the formatting and completeness of the code; they do not check for any potential exploits. Chialisp plugin​ When clicking run, the puzzle will first be serialized into clvm (similar to the run command) then the solution will be passed into the serialized puzzle (similar to the brun command). The below example is a Chialisp puzzle that squares the number passed as an argument. Note the number (5) is used in the solution top section and the Chialisp formatted puzzle is entered in the puzzle bottom section. Clicking run on this puzzle will return 25 as the result. (5) (5) (mod (arg) (defun square (number) (* number number) ) (square arg) ) (mod (arg) (defun square (number) (* number number) ) (square arg) ) Chialisp Clvm plugin​ When clicking run, the solution will be passed into the serialized puzzle (similar to the brun command). The below example uses the serialized puzzle from above that squares the number passed as an argument. Note the number (5) is used in the solution top section and the serialized puzzle is entered in the puzzle bottom section. Clicking run on this puzzle will return 25 as the result. (5) (5) (a (q 2 2 (c 2 (c 5 ()))) (c (q 18 5 5) 1)) (a (q 2 2 (c 2 (c 5 ()))) (c (q 18 5 5) 1)) CLVM","s":"Runnable Chialisp and clvm plugins","u":"/academy-overview/","h":"#runnable-chialisp-and-clvm-plugins","p":67},{"i":88,"t":"Functionality: Run the ASIC HW VDF Software Usage: hw_vdf_client [OPTIONS] PORT [N_VDFS] Options: Long Command Type Required Description --freq INTEGER False set ASIC frequency [%d, 200 - 2200] --voltage INTEGER False set board voltage [.88, 0.7 - 1.0] --ip TEXT False timelord IP address [localhost] --vdfs-mask TEXT False mask for enabling VDF engines [7, 1 - 7] --vdf-threads TEXT False number of software threads per VDF engine [4, 2 - 64] --proof-threads TEXT False number of proof threads per VDF engine [3, 1 - 63] --auto-freq-period TEXT False auto-adjust frequency every N seconds [0, 10 - inf] --list TEXT False list available devices and exit --help None False Show a help message and exit Example 1 - Run the ASIC software with defaults hw_vdf_client 8000 3 Response: 2024-04-12T10:32:05.898 Setting frequency to 1100.000000 MHz 2024-04-12T10:32:06.016 Frequency is 1100.000000 MHz 2024-04-12T10:32:06.020 Board voltage is 0.875 V 2024-04-12T10:32:06.020 Setting voltage to 0.880 V 2024-04-12T10:32:06.021 Board voltage is now 0.875 V 2024-04-12T10:32:06.032 Board current is 0.698 A 2024-04-12T10:32:06.043 Board power is 0.610 W 2024-04-12T10:32:06.049 Connecting to 127.0.0.1:8000 2024-04-12T10:32:06.049 VDF 0: Connected to timelord, waiting for challenge Example 2 - Run the ASIC software with auto-frequency, initial frequency, and defined ip hw_vdf_client --freq 1500 --auto-freq 60 --ip 192.168.0.122 8000 3 Response: 2024-04-12T10:32:05.898 Setting frequency to 1500.000000 MHz 2024-04-12T10:32:06.016 Frequency is 1500.000000 MHz 2024-04-12T10:32:06.020 Board voltage is 0.875 V 2024-04-12T10:32:06.020 Setting voltage to 0.880 V 2024-04-12T10:32:06.021 Board voltage is now 0.875 V 2024-04-12T10:32:06.032 Board current is 0.698 A 2024-04-12T10:32:06.043 Board power is 0.610 W 2024-04-12T10:32:06.049 Connecting to 192.168.0.122:8000 2024-04-12T10:32:06.049 VDF 0: Connected to timelord, waiting for challenge Example 3 - Run the ASIC software with defined ip and only 1 vdf (i.e. defaults for cluster) hw_vdf_client --ip 192.168.0.122 8000 1 Response: 2024-04-12T10:32:05.898 Setting frequency to 1100.000000 MHz 2024-04-12T10:32:06.016 Frequency is 1100.000000 MHz 2024-04-12T10:32:06.020 Board voltage is 0.875 V 2024-04-12T10:32:06.020 Setting voltage to 0.880 V 2024-04-12T10:32:06.021 Board voltage is now 0.875 V 2024-04-12T10:32:06.032 Board current is 0.698 A 2024-04-12T10:32:06.043 Board power is 0.610 W 2024-04-12T10:32:06.049 Connecting to 192.168.0.122:8000 2024-04-12T10:32:06.049 VDF 0: Connected to timelord, waiting for challenge","s":"hw_vdf_client","u":"/asic-cli/","h":"#hw_vdf_client","p":85},{"i":90,"t":"For troubleshooting steps please refer to the documentation here.","s":"Troubleshooting a Timelord","u":"/asic-cli/","h":"#troubleshooting-a-timelord","p":85},{"i":92,"t":"Join Our Discord and jump into the #support channel for support","s":"Timelord support","u":"/asic-cli/","h":"#timelord-support","p":85},{"i":94,"t":"For FAQ please refer to the documentation here.","s":"Timelord FAQ","u":"/asic-cli/","h":"#timelord-faq","p":85},{"i":97,"t":"The full block is the data structure that contains all information required for validating and adding block N, assuming all blocks up to N - 1 have already been added. FullBlocks are sent over the network protocol, and also sometimes stored on disk for the purpose of serving other nodes in the future. The FullBlock has fields for both the trunk and the foliage of the blockchain. The header_hash, which is used as the block identifier, is the hash of the foliage field in streamable format (see the Serialization Protocol page). This commits to all relevant data and to all previous blocks. finished_sub_sots: List[EndOfSubSlotBundle]: This contains all sub-slots that have been completed since the previous block in the chain (block N-1). reward_chain_block: RewardChainBlock: This is trunk data for the reward chain and challenge chain, including vdf outputs and proof of space. challenge_chain_sp_proof: Optional[VDFProof]: Proof of the VDF for the challenge chain signage point, not provided for the first signage point, since that is and end of sub slot. challenge_chain_ip_proof VDFProof: VDF proof from the previous cc infusion, up the infusion point. reward_chain_sp_proof: Optional[VDFProof]: Proof of the VDF for the reward chain signage point, not provided for the first signage point, since that is and end of sub slot. reward_chain_ip_proof VDFProof: VDF proof from the previous rc infusion, up to the infusion point. infused_challenge_chain_ip_proof: Optional[VDFProof]: The ICC proof, only present if deficit < 16 foliage: Foliage: Foliage data for the reward chain block, the hash of this is the header_hash. foliage_transaction_block: Optional[FoliageTransactionBlock]: Transaction related metadata that is relevant for light clients (not actual transactions), only for tx blocks. transactions_info: Optional[TransactionsInfo]: Transaction related metadata that is not relevant for light clients (not actual transactions), only for tx blocks. transactions_generator: Optional[SerializedProgram]: A clvm/rust program that generates all transactions (spends). See the next section for an important update due to the 2.1.0 hard fork. transactions_generator_ref_list: List[uint32]: A list of block heights of previous generators referenced by this block's generator.","s":"Full Block","u":"/block-format/","h":"#full-block","p":95},{"i":99,"t":"Chia underwent a hard fork in version 2.1.0. This included updates to the transactions_generator code.","s":"transactions_generator update","u":"/block-format/","h":"#transactions_generator-update","p":95},{"i":101,"t":"The hard fork will activate at block 5 496 000, which is expected to occur in June 2024. All nodes need to be compatible with the new implementation prior to this block.","s":"When","u":"/block-format/","h":"#when","p":95},{"i":103,"t":"Among other changes, the transactions_generator code was ported to Rust. There were multiple reasons for this update: As an optimization -- Rust is generally more performant than Python To support back refs To make block validation faster To enable compression with block refs by referencing subtrees of prior transactions","s":"Why","u":"/block-format/","h":"#why","p":95},{"i":105,"t":"The code for these changes is held in two primary locations: The clvm_rs repo has the new serialization and deserialization code. The chia_rs repo has the consensus generator code. The Rust program for running the generator is run_block_generator.rs.","s":"Where","u":"/block-format/","h":"#where","p":95},{"i":107,"t":"Two important changes went into this update: Allow serializing CLVM in a new, more compact form. This doesn't affect how CLVM is executed, it's just a matter of encoding. It does have some important consequences: Farmers can effectively stuff more transactions into blocks, because with a more compact encoding, you can fit more for the same byte-cost. The new implementation can take advantage of the de-duplication in the new serialization format, by caching tree-hashes. This effectively de-duplicates the work of hashing puzzles. About the new serialization format: The atom 0xfe is followed by another atom, which is interpreted as a path into the environment (the same form as in CLVM). It references a node from a part of the tree that has already been deserialized (thus, allowing for de-duplicating sub-trees). The generator ROM implementation was ported from CLVM to Rust. This also doesn't affect the behavior of anything (other than the CLVM cost, as explained below). It just speeds up block validation. About the generator ROM: It is the code that invokes the generator in a block. The return value is a list of spends. The ROM validates all spends by checking the puzzle hashes and calling into all puzzles passing in their solutions. The work done by the ROM no longer charges a CLVM cost, which has two primary benefits: It allows farmers to put more transactions into blocks. It makes it easier for the farmer to predict the total cost of a block as it's including transactions. CHIP-0011 contains more info about the generator optimizations.","s":"What","u":"/block-format/","h":"#what","p":95},{"i":109,"t":"In this lesson, we review the basics of block formation including the farmers role in validating transactions, forming blocks, and managing the mempool.","s":"How New Blocks are Formed","u":"/block-formation-basics/","h":"","p":108},{"i":111,"t":"Transaction Validation: Learn how nodes validate transactions for inclusion in a block. Block Formation: Understand farmers role in forming blocks. Mempool: Review the mempool basics for transaction inclusion and removal.","s":"Learning objectives","u":"/block-formation-basics/","h":"#learning-objectives","p":108},{"i":114,"t":"Expand for the full script 00:00 Every time a transaction occurs, it first gets sent to a full node (a node that is staying synced with the current state of the network), which verifies that it is a valid transaction. 00:15 This verification ensures that the conditions and signatures are valid, and that the coins being spent are currently unspent and valid. The transaction is then added to the mempool waiting to be included in a block. 00:30 A Farmer that wins the challenge will form a block by retrieving transactions from the mempool, usually based on fee amount, until the maximum block size is reached. The block is then signed and added to the chain, 00:45 and the relevant transactions are cleared from the mempool. In this way, transactions are propagated throughout the network very quickly, through the mempool, but are only confirmed once included in a block. 01:00","s":"Script","u":"/block-formation-basics/","h":"#script","p":108},{"i":116,"t":"Transaction Validation: Transactions are validated by all nodes not only while blocks are being formed but also when the newly infused blocks are sent from peers, this eliminates a malicious actors ability from altering transactions even if they have the fastest timelord and have farmed the block. Block Formation vs Infusion: Block formation is the process of combining proofs of space with transactions (the foliage) and is performed by the farmer while block infusion is the process of adding blocks to the chain itself and is performed by timelords. Mempool: All spend bundles (transactions) from the mempool that will be included in a block are aggregated together during block formation, this means that the specific spend bundle for a given transaction is not stored on-chain and is only available in the mempool.","s":"Common gotchas","u":"/block-formation-basics/","h":"#common-gotchas","p":108},{"i":118,"t":"Question 1 - Transaction Validation What system validates transactions in Chia? A. Timelords B. Farmers C. Harvesters D. Full Nodes Answer (expand when ready to see the answer) D. Full Nodes Question 2 - Block Formation Is the below statement True or False? Full nodes are responsible for infusing blocks while timelords are responsible for forming blocks. Answer (expand when ready to see the answer) False, it is timelords that infuse blocks to the chain and the role of full nodes to form blocks while creating proofs of space. Question 3 - Mempool What is the Mempool? A. Temporary storage on the network where transactions are queued before being confirmed. B. The amount of system memory the blockchain can access. C. The total size of all current plots on the network. D. Another name for the chia blockchain database. Answer (expand when ready to see the answer) A. Temporary storage on the network where transactions are queued before being confirmed.","s":"Knowledge check","u":"/block-formation-basics/","h":"#knowledge-check","p":108},{"i":121,"t":"Transaction validation overview: dives into the requirements for validating the blocks body (which contains the transactions). Block formation overview: explores the intricacies of the full nodes role in block formation and when transaction blocks are formed. Block Infusion detailed documentation: detailed information on how and when blocks are infused in the chain. Mempool detailed documentation: detailed information on all aspects of mempool inclusion scenarios and how the mempool is updated. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/block-formation-basics/","h":"#links","p":108},{"i":123,"t":"In Chia, the issuance schedule, also referred to as the block reward schedule, determines how many XCH get created with every block that gets farmed on the network. 1 XCH, or 1 Chia, is equivalent to 1,000,000,000,000 or 1x10^12 or 1 trillion mojos. All consensus code uses mojos; XCH is used as a conveniently larger unit.","s":"Block Rewards","u":"/block-rewards/","h":"","p":122},{"i":125,"t":"The first block of the network pays out 21 million XCH, divided into a 1/8 coin and a 7/8 coin, to an address that Chia Network Inc controls. The purpose and future usage of the funds is described in the business white paper.","s":"Strategic Reserve (pre-farm)","u":"/block-rewards/","h":"#strategic-reserve-pre-farm","p":122},{"i":127,"t":"All other coins go through a formula, where the block reward starts at 2 XCH per block, and halves every 3 years, a total of 4 times. The exact block at which halvings occur is 32 * 6 * 24 * 365 * 3 * x, where x is the index of the halving, starting at 1. Years 0-2 (index 1): 2 XCH Years 3-5 (index 2): 1 XCH Years 6-8 (index 3): 0.5 XCH Years 9-11 (index 4): 0.25 XCH Years 12 and beyond (index 5): 0.125 XCH After the start of year 12, 0.125 XCH is created in perpetuity.","s":"Halvings","u":"/block-rewards/","h":"#halvings","p":122},{"i":129,"t":"In most cryptocurrencies, the creator of a block pays themselves based on the current block reward. In Chia, there is a slight difference -- block rewards are paid in a future block, depending on whether the farmer's block is a transaction block or not. Option 1: If the farmer's block is a transaction block, the farmer will get paid on the next transaction block. Option 2: If the farmer's block is not a transaction block, the farmer will get paid on the next transaction block after the next transaction block (next next). Fees are also paid at the same time. Let's say a farmer creates a transaction block with 4.9 XCH of outputs, but 5 XCH of inputs (excluding reward claims). In this case, they will receive the remaining 0.1 XCH as a fee, plus their block reward, for a total of 2.1 XCH, in the next transaction block. Therefore, Chia coins are never destroyed. In a given block, any portion of a spent coin that is not added into a new coin will be sent to the farmer as a fee. This topic is covered in more detail in the Mempool page.","s":"Reward claims","u":"/block-rewards/","h":"#reward-claims","p":122},{"i":131,"t":"The block reward is divided into two coins. The first coin goes to the farmer puzzle hash, which is specified by the farmer, and usually goes straight to the farmer's wallet. This contains 1/8 of the total value. This is referred to as the farmer coin. The second coin, with 7/8 of the value, is called the pool coin. This coin can go to one of two places: If a pool public key is specified for the winning plot, then the reward is sent to the address signed by that public key. The pool public key is usually used for solo farming, and sent directly to the farmer's wallet. Otherwise, a pool address must be encoded into the plot, and the reward is sent to the address. The pool address is usually used along with the official Chia pooling protocol, and a pay-to-singleton address is used.","s":"Farmer vs Pool reward","u":"/block-rewards/","h":"#farmer-vs-pool-reward","p":122},{"i":133,"t":"As detailed in the Business white paper, the network's emissions schedule is as follows (where year 0 is the first year of mainnet's existence): Years Final Block Final Month (Approx.) Block Reward (total) Pool Reward Farmer Reward 0 - 2 5 045 760 March 2024 2 XCH 1.75 XCH 0.25 XCH 3 - 5 10 091 520 March 2027 1 XCH 0.875 XCH 0.125 XCH 6 - 8 15 137 280 March 2030 0.5 XCH 0.4375 XCH 0.0625 XCH 9 - 11 20 183 040 March 2033 0.25 XCH 0.21875 XCH 0.03125 XCH 12 - ∞ ∞ ∞ 0.125 XCH 0.109375 XCH 0.015625 XCH Note that the rewards are adjusted according to a block height, not a timestamp. The Final Block column is therefore accurate as the last block before the rewards are modified. The months and years are only estimates based on when the block heights are likely to be reached.","s":"Rewards schedule","u":"/block-rewards/","h":"#rewards-schedule","p":122},{"i":135,"t":"Block validation in Chia is composed of two parts: header validation and body validation. The header validation performs consensus algorithm-related checks, such as proof of space and time, signage points and infusion points, previous block hashes, foliage hashes, and timestamps. Notably, it does not validate any CLVM, coin spends, or signatures. Usually, for efficiency, light clients will want to validate headers but not the body. Body validation entails running all puzzles for spent coins, reading the coin database, verifying signatures, checking for duplicate or invalid removals and additions, etc. Validating a block in Chia will require access to some blocks in the past, up to a maximum theoretical value of three times the max number of blocks in a slot (3x128=384), but usually only a few are needed. Also, information regarding previous sub-epochs and epochs is needed for validation, as well as the current system timestamp. Implementations can cache only some recent blocks instead of storing all blocks in memory. chia-blockchain maintains a database of BlockRecords, which contain only the important pieces of block information required for validating future blocks.","s":"Block Validation","u":"/block-validation/","h":"","p":134},{"i":137,"t":"There are two cases when a node might verify blocks. During a full sync, where the node is trying to catch up to the most recent block, starting from an old block height. In this case, the node is able to download many blocks at once. During normal operation, where the node is caught up to the most recent block, and is only downloading one block every few seconds. We'll cover both of these cases below.","s":"Full Sync vs Normal Operation","u":"/block-validation/","h":"#full-sync-vs-normal-operation","p":134},{"i":139,"t":"Full sync is the process by which a full node downloads and validates all of the blocks in the blockchain and catches up to the most recent block. Full sync is important, because it allows new nodes to validate that a blockchain is the heaviest -- and thus, the currently valid -- chain. It allows everyone to come to consensus on the current state, regardless of when they come online, or for how long they go offline. The method of full sync can vary between implementations, but the high level algorithm is the following: Connect to other peers on the network, by querying the DNS introducer, and crawling the network. Check the current weight of the peak of the peers, and select a few peers to sync from. Download and validate a weight proof, to ensure that the given peak has real work behind it. Download and validate all blocks in the blockchain, in batches. Weight proofs are important, because they prevent other peers from lying to us about what the heaviest peak is. They also prevent us from downloading potentially useless data. Once the full node is caught up to the blockchain, it can properly farm, access the coin state, etc.","s":"Full Sync","u":"/block-validation/","h":"#full-sync","p":134},{"i":141,"t":"Normal operation is the process by which a full node continuously gossips and receives blocks with other peers, always following the heaviest peak. If our node is at weight 2000, and we see that a peer has a peak at weight 2100, then we fetch that block from the peer. Usually, this is done in two phases: The unfinished block is propagated across the network, along with all information up to the signage point, transactions, etc. The finished block, which includes infusion point VDFs, is also propagated. This typically excludes the transactions, which were already sent in step 1. Normal operation is much less CPU-intensive than full sync, since there is only one block every 18 seconds, and one transaction block every 52 seconds, on average. Low-power machines like the Raspberry PI 4 should be able to easily continue normal operation.","s":"Normal Operation","u":"/block-validation/","h":"#normal-operation","p":134},{"i":143,"t":"The following sections list all of the required checks to ensure validity of a block. Please note that the official protocol and specification are defined by the chia-blockchain reference implementation, and not by this documentation page.","s":"Block Validation Steps","u":"/block-validation/","h":"#block-validation-steps","p":134},{"i":145,"t":"Check that the previous block exists in the blockchain, or that it is genesis. Check finished slots that have been crossed since prev_b= the previous block in the chain. Check sub-slot challenge hash for genesis block. Check sub-slot challenge hash for non-genesis block. Check sub-slot challenge hash for empty slot. Validate that genesis block has no ICC=Infused challenge chain. Validate that there is not icc iff icc_challenge hash is None. Check infused challenge chain sub-slot VDF. Check infused challenge sub-slot hash in challenge chain, deficit 16. Check infused challenge sub-slot hash not included for other deficits. Check infused challenge sub-slot hash in reward sub-slot. If no icc, check that the cc=challenge chain doesn't include it. If no icc, check that the rc=reward chain doesn't include it. Check sub-epoch summary hash is None for empty slots. Check new difficulty and ssi if applicable. Check new difficulty and ssi are None if we don't finish epoch. Check challenge sub-slot hash in reward sub-slot. Check end of reward slot VDF. Check challenge chain sub-slot VDF. Check deficit (MIN_SUB.. deficit edge case for genesis block) If prev sb had deficit 0, resets deficit to MIN_BLOCK_PER_CHALLENGE_BLOCK Otherwise, deficit stays the same at the slot ends, cannot reset until 0 Check sub-epoch summary Check that genesis block does not have sub-epoch summary Check that we finished a slot and we finished a sub-epoch Check the actual sub-epoch is correct Check that we don't have to include a sub-epoch summary Check if the number of blocks is less than the max Check proof of space Check signage point index Check required iters check signage point index 0 has no cc sp and no rc sp Check no overflows in the first sub-slot of a new epoch Check total iters Check reward chain sp proof Check reward chain sp signature Check cc sp vdf Check cc sp sig Check is_transaction_block Check foliage block signature by plot key Check foliage block signature by plot key Check unfinished reward chain block hash Check pool target max height Check pre-farm puzzle hashes for genesis block. If pospace has a pool pk, check pool target signature. Should not check this for genesis block. Otherwise, the plot is associated with a contract puzzle hash, not a public key, so check pool contract ph Check extension data if applicable. None for mainnet. Check if foliage block is present Check foliage block hash Check prev block hash for genesis and non-genesis The filter hash in the Foliage Block must be the hash of the filter The timestamp in Foliage Block must not be over 5 minutes in the future, and the timestamp must be greater than the previous transaction block timestamp Check block height for genesis and non-genesis Check block weight for genesis and non-genesis Check challenge chain infusion point VDF Check reward chain infusion point VDF Check infused challenge chain infusion point VDF Check reward block hash Check reward block is_transaction_block","s":"Header Validation","u":"/block-validation/","h":"#header-validation","p":134},{"i":147,"t":"For non transaction-blocs: foliage block, transaction filter, transactions info, and generator must be empty. If it is a block but not a transaction block, there is no body to validate. Check that all fields are None, and return. For blocks, foliage block, transactions info must not be empty. The transaction info hash in the Foliage block must match the transaction info. The foliage block hash in the foliage block must match the foliage block. The reward claims must be valid for the previous blocks, and current block fees. No transactions before INITIAL_TRANSACTION_FREEZE timestamp (this check has been removed). The generator root must be the hash of the serialized bytes of the generator for this block (or zeroes if no generator) Check the transactions generator reference list: The generator_ref_list must be the hash of the serialized bytes of the generator ref list for this block (or 'one' bytes [0x01] if no generator) The generator ref list length must be less than or equal to MAX_GENERATOR_REF_LIST_SIZE entries The generator ref list must not point to a height >= this block's height If we have a generator reference list, we must have a generator Check that cost <= MAX_BLOCK_COST_CLVM The CLVM program must not return any errors Check that the correct cost is in the transactions info Check additions for max coin amount (be careful to check for 64 bit overflows in other languages. This is the max 64 bit unsigned integer) Validate addition and removal merkle set roots. The additions and removals must result in the correct filter. Check for duplicate outputs in additions. Check for duplicate spends inside block. Check if removals exist and were not previously spent. (coin_db up to the fork point + fork block + this_block). Be careful with forks and with ephemeral coins (added and removed in same block). Check that the total coin amount for added is <= removed. Check that the assert fee sum <= fees, and that each reserved fee is non-negative. Check that the fee amount + farmer reward < maximum coin amount. Check that the computed fees are equal to the fees in the block header. Verify that removed coin puzzle_hashes match with calculated puzzle_hashes. Verify CLVM conditions. Verify aggregated signature.","s":"Body Validation","u":"/block-validation/","h":"#body-validation","p":134},{"i":149,"t":"This section will explain the different types of keys in the Chia network. It will also cover how the keys are generated, stored, and used. These systems are designed to be flexible enough to support many different configurations and pooling setups and to be resilient to various attacks. All Chia keys are BLS-12-381 private keys, following the IETF specification, the EIP-2333 specification for key derivation and BIP 44 registered. Private keys are 32 bytes, public keys 48 bytes, and signatures 96 bytes (public keys are points in G1, signatures are points in G2.) warning There is a slight difference between Chia's implementation and EIP-2333, as described in the next section. BLS signatures allow for many features and optimizations, such as non-interactive m/n thresholds, aggregation of all signatures in a block, and tricks like combining two coins into the same transaction. Private keys can be generated by using a 24-word mnemonic phrase, which users can use to back up and restore their wallets. A 24-word mnemonic phrase is used as entropy in order to generate a private BLS key. The recommended method of key backup is to store the 24-word phrase offline. Recovery can then be performed by entering the 24-word phrase. The private key is not required for recovery. In theory, wallet recovery could also be performed from the master private key alone. However, there are some caveats: Chia Network Inc has not attempted this, and has no plans to attempt it. In fact, as far as we know, nobody has attempted it, so it is not guaranteed to work. It is not supported, and likely never will be supported. Use at your own risk Because this is not supported, you would need to create your own wallet in order to perform this recovery Even after a successful wallet recovery, you would not be able to recover your 24-word mnemonic phrase. The phrase is used as entropy to generate a private key; a phrase cannot be generated from a private key The BLS master private key is stored in the OS keychain, which usually requires password authentication and is encrypted. note In theory, wallet recovery should be possible on a new system by copying the keychain from a system on which the wallet has already been installed. However, this is not supported. The only supported method of wallet recovery is with the 24-word seed phrase. The master private key can be used to derive child keys, which can further be used to derive child keys, etc. The number of levels can be infinite. BLS public keys can be combined to form a new public key, which can be used to validate aggregate signatures. Each time the wallet generates a new address to receive funds, it creates a new BLS private key. The farmer and pool only use the first key in the current codebase, but they can be updated to generate a new key every time a block is won, for additional privacy. When it comes to getting paid, a program is created that uses one of the wallet BLS public keys. This program, called a puzzle, is hashed to generate a puzzle hash. The puzzle hash is then converted to an address in bech32m format, for easy error correction and usability. So an address is analogous to a wallet child BLS public key, the private key of which can be derived from the master seed.","s":"BLS Keys","u":"/bls-keys/","h":"","p":148},{"i":151,"t":"Chia's plot format uses keys compliant with the IRTF CFRG BLS standard. After Chia had already committed to this standard, a new optional change was introduced to the salt format. Chia uses the following salt: \"BLS-SIG-KEYGEN-SALT-\" (i.e., an ASCII string comprising 20 octets) Whereas the optional change uses a slightly different salt: H(\"BLS-SIG-KEYGEN-SALT-\") (i.e., the hash of an ASCII string comprising 20 octets) Both of these salts are described in the BLS signature specification, which states: For compatibility with prior versions of this document, implementations SHOULD allow applications to choose the salt value. Therefore, the salt Chia uses is compatible with this specification. For your reference, here is the change that was introduced after Chia's plot format had been finalized: Procedure: 1. salt = \"BLS-SIG-KEYGEN-SALT-\" 2. SK = 0 3. while SK == 0: 4. salt = H(salt) 5. PRK = HKDF-Extract(salt, IKM || I2OSP(0, 1)) 6. OKM = HKDF-Expand(PRK, key_info || I2OSP(L, 2), L) 7. SK = OS2IP(OKM) mod r 8. return SK KeyGen is the RECOMMENDED way of generating secret keys, but its use is not required for compatibility, and implementations MAY use a different KeyGen procedure. For security, such an alternative KeyGen procedure MUST output SK that is statistically close to uniformly random in the range 1 <= SK < r.","s":"Difference between Chia and EIP-2333","u":"/bls-keys/","h":"#difference-between-chia-and-eip-2333","p":148},{"i":153,"t":"There are two ways in which child keys can be derived from parent keys: non-observer and observer (also called hardened and unhardened). Non-observer keys are the default, and only supported, method in the EIP-2333 spec. They are secure, since each key is cryptographically separated -- revealing one key has no impact on the security of its ancestors or siblings. However, non-observer keys are limited in functionality, because they can only be derived through private derivation. That is, a parent private key can be used to derive a child private key, but a parent public key cannot be used to derive a child public key. Observer keys do allow public derivation. This enables view-only wallets that support viewing all of your public keys, using only the root (master) public key. This is what is usually done for Bitcoin Hierarchical Deterministic (HD) view-only wallets. It enables more privacy when compared to systems like Ethereum, which reuse the same address for all transactions. One advantage of observer keys is tax calculation: if you use a different address for each transaction, you only need to give your accountant your parent public key, who can use it to derive all of your child addresses. This would not be possible with non-observer keys. The main security drawback of observer keys is that if you accidentally reveal a single child private key, along with the parent public key, then your parent private key and all sibling keys can be calculated as well. At the time of Chia's mainnet launch in March and May 2021, only non-observer keys were used. Beginning with the Light Wallet Beta release (December 2021), observer keys are supported -- and preferred -- for view only-wallet support. The first full release with built-in support for observer keys is 1.3 (February 2022).","s":"Non-Observer vs Observer Keys","u":"/bls-keys/","h":"#non-observer-vs-observer-keys","p":148},{"i":156,"t":"This document is a reference guide for Chia's CAT Admin Tool, located in the CAT-admin-tool repository. To set up your environment (including installing this tool), follow our CAT Creation Tutorial.","s":"Intro","u":"/cat-admin-cli/","h":"#intro","p":154},{"i":159,"t":"Functionality: Create and administer Chia Asset Tokens (CATs) Usage: cats [OPTIONS] Options: Short Command Long Command Type Required Description -l --tail TEXT True The TAIL program to launch this CAT with -c --curry TEXT False An argument to curry into the TAIL -s --solution TEXT False The solution to the TAIL program [default: ()] -t --send-to TEXT True The address these CATs will appear at once they are issued -a --amount INTEGER True The amount to issue in mojos (regular XCH will be used to fund this) -m --fee INTEGER False The fees for the transaction, in mojos [default: 0] -d --authorized-provider TEXT False A trusted DID that can issue VCs that are allowed to trade the CAT. Specifying this option will make the CAT a CR (credential restricted) CAT. Requires specifying either --proofs-checker or --cr-flag -r --proofs-checker TEXT False The program that checks the proofs of a VC for a CR-CAT. Specifying this option requires a value for --authorized-providers -v --cr-flag TEXT False Specify a list of flags to check a VC for in order to authorize this CR-CAT. Specifying this option requires a value for --authorized-providers. Cannot be used if a custom --proofs-checker is specified. -f --fingerprint INTEGER False The wallet fingerprint to use as funds -sig --signature TEXT False A signature to aggregate with the transaction -as --spend TEXT False An additional spend to aggregate with the transaction -b --as-bytes None False Output the spend bundle as a sequence of bytes instead of JSON -sc --select-coin None False Stop the process once a coin from the wallet has been selected and return the coin -q --quiet None False Quiet mode will not ask to push transaction to the network -p --push None False Automatically push transaction to the network in quiet mode --root-path PATH False The root folder where the config lies [default: ~/.chia/mainnet] --wallet-rpc-port INTEGER False The RPC port the wallet service is running on --help None False Show a help message and exit Example 1 - select a coin from the wallet with a value of at least 1 XCH (1 trillion mojos) Request: cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to txch1jk4r06xsj0fnwqk57322yjqzkdyx7kh8h8kvxus3l68tjnkf05aqd9uevs --amount 1000000000000 --as-bytes --select-coin Response: { \"amount\": 1999731499999, \"parent_coin_info\": \"0x3179dd9b38f7c4e4de532e346cfefb33affda1f2860ed68aeb0e70c38a5c9f6e\", \"puzzle_hash\": \"0x74fcdd0e27ead17559cf9eaf791c62a6517c0c4fcf5ac3a6f014857571fc7608\" } Name: 345dd430bcd7a413f8feed25c382d83855edd6ccceb41d1dbc293ca8e49e6b2d The \"parent_coin_info\", \"puzzle_hash\", and \"amount\" values are hashed together to create the coin's \"Name\". Example 2 - Push a transaction to the network, currying an inner puzzle hash into the TAIL Request: cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to txch19k6cl5syzvxgkgulr7m49v2r57yh0aanm23hrffgd89j4nj3ywhqxadyqr --amount 1000000000000 --as-bytes --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 Response: The transaction has been created, would you like to push it to the network? (Y/N)y Successfully pushed the transaction to the network Asset ID: 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d Eve Coin ID: 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b After pushing the transaction, the new ID and Eve Coin (singleton parent coin) will be shown. Example 3 - Mint a new CR-CAT First, select a coin to use for the minting. Flags included in this example (CR-specific flags are in bold): --tail: The tail to use; in this case we'll use a single-issuance TAIL --send-to: The address to send the CR-CATs to upon minting --authorized-provider: The DID that is authorized to issue VCs containing the required proof(s) for this CAT --cr-flag: The proof(s) required for owning this CR-CAT --amount: The number of mojos for this issuance (1 million mojos = 1 thousand CR-CATs) -m: The transaction fee, in mojos --as-bytes: Use bytes instead of JSON --select-coin: Instead of minting the CAT, just select a coin to use for the isuance cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to txch1ek6ln2ejdsec6l734x8tggk9j5sepl8nfqjer5yt2dr905f04prqmcjcc5 --authorized-provider did:chia:1x23lnyd2xjefnfly075ngk79duf0yxna35cp86mgnnp4t33senfs4cah7u --cr-flag \"test_proof1\" --amount 1000000 -m 1000 --as-bytes --select-coin Response: { \"amount\": 999694993543, \"parent_coin_info\": \"0x3ad9ec3ab9039047106476b4b23d05c46a7f02a6114c4eaf82792c3229e74416\", \"puzzle_hash\": \"0xa8180f3997eeda1804508c1f4dbe55ef17808fe2df970bba408807b10e7dd9ba\" } Name: c5519ac8ef55043b23bef45b1326d445f2c4af579f13dc0cdec10335ccb0a809 In the above repsonse, Name is the ID of the coin to be used for the minting. Next, run the same command again, but remove the --select-coin flag and add --curry 0x (the 0x is required and important here): cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to txch1ek6ln2ejdsec6l734x8tggk9j5sepl8nfqjer5yt2dr905f04prqmcjcc5 --authorized-provider did:chia:1x23lnyd2xjefnfly075ngk79duf0yxna35cp86mgnnp4t33senfs4cah7u --cr-flag \"test_proof1\" --amount 1000000 -m 1000 --as-bytes --curry 0xc5519ac8ef55043b23bef45b1326d445f2c4af579f13dc0cdec10335ccb0a809 Response: Successfully pushed the transaction to the network Asset ID: 262a2c2cbb09414652006c4da139a186b3a110bb57cd5d76b6785e4811f1c77c Eve Coin ID: 692a4f63c56815a33510088a255d695aea472d0f03bb9f0d5cdd5c91a82821f2 Just as with standard CATs, the CR-CAT has been minted and sent to its destination address. Asset ID can now be added in the destination wallet. In this case, the destination wallet is the holder of a VC with the proof required to hold this CR-CAT. To verify this, run the vcs get CLI command: chia wallet vcs get Proofs: - f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 - test_proof1 - test_proof2 Launcher ID: 1e3cd9da1d4545700c8c26fb7ba452cf28b1c7d78b5fa7434307d32a435718c8 Coin ID: addf46fac52aac510b31a7dc025528411b5013d89c81174f4726b63a5dc0d395 Inner Address: txch166pzqd55p2emp9sqaflvyc8x2s4qn4eexrxgrlfwf8khuefp5fqswe84mu Proof Hash: f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 This VC contains the proof that was added to the CR-CAT (test_proof1). Once the CR-CAT has been added to this Chia wallet, it will be displayed as type CRCAT. For example: chia wallet show Response: CAT 262a2c2cbb094146...: -Total Balance: 1000.0 (1000000 mojo) -Balance Pending VC Approval: 0.0 (0 mojo) -Pending Total Balance: 1000.0 (1000000 mojo) -Spendable: 1000.0 (1000000 mojo) -Type: CRCAT -Asset ID: 262a2c2cbb09414652006c4da139a186b3a110bb57cd5d76b6785e4811f1c77c -Wallet ID: 5","s":"cats","u":"/cat-admin-cli/","h":"#cats","p":154},{"i":161,"t":"Functionality: Create a tree of coins from a .csv file containing puzzlehash:amount pairs. Useful for setting up CAT airdrops. Usage: secure_the_bag [OPTIONS] Options: Short Command Long Command Type Required Description -c --curry TEXT False An argument to curry into the TAIL -a --amount INTEGER True The amount to issue in mojos (regular XCH will be used to fund this) -stbtp --secure-the-bag-targets-path TEXT True Path to CSV file containing targets of secure the bag (inner puzzle hash + amount). The total value of the coins in this file must match the value of the amount flag. If they don't match, an error will be thrown. -lw --leaf-width INTEGER True Secure the bag leaf width [default: 100] -pr --prefix TEXT True Address prefix [default: xch] --help NONE False Show a help message and exit Create a coin tree from a CSV file, currying a coin ID that was obtained from the cats command secure_the_bag --tail .\\reference_tails\\genesis_by_coin_id.clsp.hex --amount 1000000000000 --secure-the-bag-targets-path C:\\Users\\User\\Downloads\\spacebucks.csv --prefix txch --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 The response will be a list of coins created in the tree. The command's progress will also be displayed. The last two lines of the output will be the root puzzle hash and address of the tree: ... Secure the bag root puzzle hash: 17060adf6856d2904c4fe90c9690b710cf758aee5968718e2fbfd12f7b9d817f Secure the bag root address: txch19k6cl5syzvxgkgulr7m49v2r57yh0aanm23hrffgd89j4nj3ywhqxadyqr","s":"secure_the_bag","u":"/cat-admin-cli/","h":"#secure_the_bag","p":154},{"i":163,"t":"Functionality: Given a coin tree, airdrop CATs to a set of pre-committed puzzle hashes obtained from a .csv file. Requires a coin tree obtained as a result of running the secure_the_bag command. Usage: secure_the_bag [OPTIONS] Options: Short Command Long Command Type Required Description -ecid --eve-coin-id TEXT True ID of coin that was spent to create secured bag -th --tail-hash TEXT True TAIL hash / Asset ID of CAT to unwind from secured bag of CATs -stbtp --secure-the-bag-targets-path TEXT True Path to CSV file containing targets of secure the bag (inner puzzle hash + amount) -utph, --unwind-target-puzzle-hash TEXT False Puzzle hash of target to unwind from secured bag. This is a useful option for testing a single unwind -wi --wallet-id INTEGER False The wallet id to use (typically 1) -f --fingerprint INTEGER False The wallet fingerprint to use as funds -uf --unwind-fee INTEGER True Fee paid for each unwind spend. Enough mojos must be available to cover all spends [default: 500000] -lw --leaf-width INTEGER True Secure the bag leaf width (number of tokens to unwind in one block) [default: 100] --help NONE False Show a help message and exit Unwind a bag that has been secured with the above example, using a puzzle hash unwind_the_bag --eve-coin-id 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b --tail-hash 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d --secure-the-bag-targets-path C:\\Users\\User\\Downloads\\spacebucks.csv --unwind-fee 500000 --wallet-id 1 --unwind-target-puzzle-hash af85d83ff01ec4b6f37d85d038e68736adc6cc9bb2c48c9d0973605448f73f3f This example will airdrop the appropriate number of coins to the given puzzle hash. You will need to confirm each coin as it is dropped.","s":"unwind_the_bag","u":"/cat-admin-cli/","h":"#unwind_the_bag","p":154},{"i":166,"t":"A cryptocurrency bridge is a powerful tool that enables seamless transfers of digital assets between different blockchain networks, breaking down the barriers of blockchain interoperability. The first Chia blockchain bridge by Warp.Green is now available, paving the way for anyone to access XCH. As the first of many bridges to come, Warp.Green marks an exciting milestone in our journey toward greater access to chia (XCH). To help you get started, here's a introductory guide on how to use the Warp.Green bridge.","s":"Intro","u":"/bridge-guide/","h":"#intro","p":164},{"i":168,"t":"The Warp.green bridge is a messaging protocol that enables bridging assets between Chia and other blockchains. It is an open-source project located on GitHub. It was developed by Warp.green, which is not affiliated with Chia Network Inc. This guide will show you how to send ETH from the Base blockchain (an Ethereum L2) to the Chia blockchain. The transfer will take a total of 15-20 minutes, though the initial setup could take considerably longer if you are not familiar with the technologies involved. info It is also possible to bridge assets from Ethereum to Chia, but we chose the Base chain for this guide because it tends to have lower fees. In addition, it is possible to bridge assets in the other direction: from Chia to Ethereum/Base. This guide doesn't demonstrate this functionality, but the basic technique is quite similar. Finally, note that the bridge is set up to allow for bridging any Chia or Ethereum asset. However, only a limited number of assets are currently supported. A list of supported assets is maintained at warp.green/bridge/assets.","s":"The Warp.green Bridge","u":"/bridge-guide/","h":"#the-warpgreen-bridge","p":164},{"i":170,"t":"MetaMask is one of the most popular wallets for storing digital assets such as ETH, and it supports the Base blockchain. We will use MetaMask for this guide, so if you want to follow along, you will need to install it as a web browser extension. But don't worry – if you want to use a different Base wallet, the instructions will likely be similar. After you have installed MetaMask, click the browser extension button (\"1\" in the following image), then click the dropdown to change blockchains (\"2\"): By default, Ethereum's mainnet will be selected. The Warp.green bridge will work with this network, but for this guide, we will use Base instead. Click + Add network: Several supported networks will be displayed. Locate Base Mainnet and click Add: Verify that you are adding the correct network. The Chain ID for the Base mainnet is 8453. Make sure this number is shown, and click Approve: The network should be added successfully. Click Switch to Base Mainnet: You will be given some important info about this network. Read this info carefully, then click Got it: In order to use this wallet for the bridge, you will need to add funds. In this example, the MetaMask wallet was funded with 0.0057 ETH on the Base blockchain: After your Ethereum wallet has been funded, you can set up a Chia wallet.","s":"Set up MetaMask","u":"/bridge-guide/","h":"#set-up-metamask","p":164},{"i":172,"t":"While several Chia wallets exist, currently the bridge only supports wallets that use WalletConnect, as well as Goby. For this example, we will use the Chia reference wallet. See our wallet guide for instructions on setting up this wallet. You will need to add some XCH to the reference wallet in order to pay fees. In the image below, the wallet contains 0.001 XCH. Typically, this amount will be sufficient. We're going to send a wrapped form of ETH to the Chia reference wallet. If you are using Chia 2.3.1 or later, your wallet will automatically recognize the wrapped ETH, but it's still a good idea to add this asset manually. info Regardless of which blockchain you are using, when you receive a bridged token, it will be a \"wrapped\" version of the native token. The Warp.green bridge calls its tokens \"warped\" instead of \"wrapped\". There is no material difference between these two terms; they can be used interchangeably. Click MANAGE TOKEN LIST: Locate Base Warped milliETH and click the slider to enable this asset. Feel free to double-check that the asset's ID matches the one from the asset list on Warp.green's website: Your wallet will add Base Warped milliETH: info One Base Warped milliETH is the equivalent to 1/1000 of one ETH. This denomination was chosen due to the differences in decimals on Chia and Ethereum.","s":"Set up a Chia wallet","u":"/bridge-guide/","h":"#set-up-a-chia-wallet","p":164},{"i":174,"t":"Using the same browser where you installed MetaMask, browse to warp.green/bridge. In order to use the bridge, you will need to connect both of your wallets.","s":"Connect your wallets to the bridge","u":"/bridge-guide/","h":"#connect-your-wallets-to-the-bridge","p":164},{"i":176,"t":"Click Connect ETH Wallet: Click MetaMask (or whichever wallet you used on the Ethereum side): Select the account(s) you want to connect to the bridge. If you just installed MetaMask, there will only be one account. Click Next: Click Connect to connect your MetaMask wallet to the bridge: Your MetaMask wallet is now connected to the bridge.","s":"Connect your ETH wallet","u":"/bridge-guide/","h":"#connect-your-eth-wallet","p":164},{"i":178,"t":"Click Connect Wallet: Click Wallet Connect if you are using the Chia reference wallet: You will be shown a QR code (not shown here). In this example, we'll click the Copy Link button. Next, open your reference wallet, click the WalletConnect icon (\"1\" in the image below), then click ADD CONNECTION (\"2\"): Paste the link you previously copied, and click CONTINUE: Your Chia reference wallet will now be connected to the bridge. Click CLOSE: The bridge will request an address from your wallet. It may perform other requests as well. Click CONFIRM for each request: Return to your web browser. You should see Connected displayed under Wallet Connect. If so, you can close this dialog:","s":"Connect your Chia wallet","u":"/bridge-guide/","h":"#connect-your-chia-wallet","p":164},{"i":180,"t":"The bridge will ask you to enter an amount to transfer. By default, the asset to transfer will be USDC. However, in this example, we will transfer ETH: Enter the amount to transfer. Also, verify that the From and To chains are accurate. For this example, we will transfer 0.001 ETH from Base to Chia. info The Base blockchain will charge a fee, so you will not be able to send the full amount in your MetaMask wallet. In this example, 0.00000465 ETH was the required fee. This fee will vary, depending on which blockchain you are using, and how busy the network is. After you have verified this info, click Bridge: In Step 1 of the transfer, you will be given one more chance to verify the accuracy of everything you have entered. caution Be sure to read this dialog carefully, and verify that all information contained within is accurate. note on fees Several fees may apply when using the bridge: Each blockchain charges a fee to use its network. The size of each fee depends on how busy the network is, as well as how long you are willing to wait for your transaction to be confirmed. Generally speaking, the fees on Base are significantly lower than those on Ethereum. On Chia, the network is often not busy enough to require any fees. In addition, a \"toll\" is automatically deducted for using the bridge. The toll is a small charge (either 0.001 XCH or 0.00001 ETH, depending on the chain where the transaction originated), collected solely to prevent network spam. This money does not go to the bridge or to its operators. Instead, it is redirected to the farmer/miner of the block which includes your transaction. Finally, the bridge itself charges a 0.3% tip for using the protocol. This tip is split among the bridge validators and helps to cover the costs associated with maintaining the bridge. For more information, see warp.green's documentation. If everything looks good, click Initiate Bridging: MetaMask will pop up, and you will be shown the details of your transfer. This includes the current blockchain fee amount. Click Confirm to accept the fee and initiate the transfer: You will now be taken to Step 2 of the transfer. Before completing the transfer, you will need to wait around 10-15 minutes; the exact time can vary a bit. The reason for this delay is to avoid funds being lost in blockchain reorgs: Leave this browser window open, and return to it after 15 minutes.","s":"Initiate the transfer","u":"/bridge-guide/","h":"#initiate-the-transfer","p":164},{"i":182,"t":"After waiting for around 15 minutes, the transfer will reach Step 3. Click Generate Offer via Wallet: Change to your Chia reference wallet. You may see a dialog asking for permission to execute getWallets. If so, Click CONFIRM: You may need to grant permission to execute one or more additional methods. Click CONFIRM on these dialogs. Eventually, you will see a dialog with a SHOW OFFER DETAILS button. Click this button: You will be shown the details of the transfer from the bridge to your wallet. By default, no blockchain fee will be used. However, if you have available funds (the small circle in the image below), we recommend that you add a fee in order to expedite the transfer. Either way, leave the In exchange for side of the dialog blank. Click CLOSE when you are finished reviewing this dialog: If you added a blockchain fee, it will now appear in the Confirmation Request dialog. Click CONFIRM: Return to your web browser. The transfer will now be in progress. This should be completed in 1-5 minutes, depending on how busy the Chia network is, along with the size of your fee: After the transfer has completed, return to the reference wallet. It should now contain the Base Warped milliETH. In this example, the bridge charged a 0.3% fee, so 0.997 wmilliETH.b was transferred. Recall that this amount is worth 0.000997 ETH: Congratulations! You have successfully transferred ETH from the Base chain to Chia. If you would like to exchange the wmilliETH.b for another asset, you could head to a decentralized exchange such as dexie.space, or an AMM such as tibetswap.io.","s":"Complete the transfer","u":"/bridge-guide/","h":"#complete-the-transfer","p":164},{"i":184,"t":"This doc has been migrated to Check if Things are Working","s":"Check if Things are Working","u":"/check-if-things-are-working/","h":"","p":183},{"i":186,"t":"In this lesson, we discuss how the plot filter works, and what the benefits are of using one.","s":"Challenges & Plot Filters","u":"/challenges-plot-filters/","h":"","p":185},{"i":188,"t":"Plot Filters: Understand the basics of how the plot filter works, as well as the benefits of using one. Challenge Generation: Understand how the challenge is generated by the Timelord and sent to the Farmer.","s":"Learning objectives","u":"/challenges-plot-filters/","h":"#learning-objectives","p":185},{"i":191,"t":"Expand for the full script 0:00 The Timelord generates a new challenge about every 9 seconds. This is then hashed with the ID of each plot. 0:20 If the hash starts with 9 zeroes, the plot is considered eligible for harvesting. This is called the plot filter. The Plot Filter serves as a decentralizing force to further randomize the winner, as well as reduce the total compute needed for each challenge. 0:40 When a farmer receives a challenge, the harvester first determines which plots are valid and pass the plot filter, then produces potential proofs of space and submits them to the Timelord for verification and review. 1:00 The Timelord will choose the Proof of Space that most closely meets the challenge, and using the challenge and provided Proof of Space as inputs, runs a VDF to prove that time has passed and produces the next challenge.","s":"Script","u":"/challenges-plot-filters/","h":"#script","p":185},{"i":193,"t":"Are valid proofs filtered out?: It is very possible that a valid proof of space would be contained in a filtered plot. This affects every farmer equally though, and the benefits of further decentralization are well worth it.","s":"Common gotchas","u":"/challenges-plot-filters/","h":"#common-gotchas","p":185},{"i":195,"t":"Question 1 - Challenge Frequency About how often will a Timelord generate a new challenge? Answer (expand when ready to see the answer) About every 9 seconds Question 2 - Filter Benefits What are the two significant benefits of using a plot filter? Answer (expand when ready to see the answer) It further decentralizes the network. It reduces the amount of compute needed, improving network efficiency","s":"Knowledge check","u":"/challenges-plot-filters/","h":"#knowledge-check","p":185},{"i":198,"t":"More farming basics: overviews of plotting, pooling, and rewards. In depth architecture overview: describing the interactions between Farmers, Harvesters, Wallets, etc. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/challenges-plot-filters/","h":"#links","p":185},{"i":200,"t":"\"Is my farm working?\" It's one of the most common questions farmers ask themselves. This is understandable -- it is possible for those with small- and medium-size farms to go weeks or months without winning a block reward, even if everything is working properly. The easiest mitigation against this anxiety is to join a pool. Your pool will occasionally send you partial challenges in order to estimate your farm's size. If everything is working properly, your pool will report a size for your farm that comes close to its actual size. Beyond joining a pool, there are a few other things you can do to make sure your farm is working properly, whether you use the GUI or the CLI.","s":"Checking Farm Health","u":"/checking-farm-health/","h":"","p":199},{"i":202,"t":"The new Farm and Harvest panels in 2.0 make it easy to get an overview of your farm's health.","s":"GUI health","u":"/checking-farm-health/","h":"#gui-health","p":199},{"i":204,"t":"Here is how to interpret each of the statistics in the above image: Farm Health​ Sync status -- Shows whether your full node is synced. Plots passing filter -- Shows whether the \"correct\" number of plots are passing the plot filter. The popup, as shown in the above image, contains several stats. As long as the numbers next to Total plots passing filter and Expected Total plots passing filter are similar, this aspect of your farm is working properly. Missing signage points -- Chia's consensus is designed such that 64 signage points are broadcast every 10 minutes, or 9216 signage points per day. You are ineligible to win a block at any missed signage points. It is normal to miss a few signage points per day, for example due to a temporary outage in your local network. However, if you miss 100 or more signage points per day, there is likely something wrong. The two most common causes for this are that your harvester is overwhelmed (fix this by moving some HDDs to another harvester), or that your network is experiencing frequent outages. Stale partials -- Your pool will send partial challenges to your node in order to estimate how much space you are contributing. If your node doesn't respond to a partial challenge quickly, it will be considered \"stale\". Just as with missing signage points, an occasional stale partial is nothing to worry about. If you experience a frequent number of stale partials, the causes and solutions tend to be the same as with missing signage points. Netspace​ Total Netspace -- This shows an estimate of the total amount of space on Chia's entire network. Farming Space -- This is hidden behind the popup dialog in the above image. It is your local node's contribution of space to the network. Farming Rewards​ Estimated Time to Win -- This is only an estimation of when you will create your next block, based on the percentage of the total netspace you are contributing. You have a 50% chance of winning sooner than this, and a 50% chance of winning later. It is not uncommon for 5x this amount of time to elapse between block wins, even if your farm is set up perfectly. Also keep in mind that the probability that you will win the next block does not increase as more time elapses. The Gambler's Fallacy applies here. Estimated daily XCH -- The formula for this is (1 day / Estimated Time to Win) * block reward. If you join a pool, this is roughly how much you should receive each day. However, you need to account for pool fees, as well as the fact that 1/8 of the reward goes directly to the farmer. Estimated monthly XCH -- Same as above, but taken as a monthly estimate. Pooling Health​ Valid Partials -- Partial proofs your node has successfully returned to your pool, expressed as both a number and a percentage. See above for more info on partials. Stale Partials -- The percent and number of partials your node has failed to return on time. Invalid partials -- The percent and number of partials your node has returned that were invalid. Missing partials -- The percent and number of partials your node has failed to return. Last Attempted Proof​ Plots Passed Filter -- At each signage point, a certain number of your plots will pass the plot filter. The numerator indicates the number of plots that are eligible to play in that specific Proof of Space lottery. For small farms, this number is often 0. The denominator indicates your farm's total number of plots. Proofs Found -- The number of valid proofs found at that signage point. If you are not in a pool, a number greater than 0 indicates that you have successfully found a proof and will likely win a block reward at the next transaction block. If you are in a pool, a number greater than 0 likely means that a valid partial proof was found and will be returned to your pool.","s":"Farm panel","u":"/checking-farm-health/","h":"#farm-panel","p":199},{"i":206,"t":"In the above image: Total farm size raw -- The actual amount of space your farm is contributing to the network. Total farm size effective -- The amount of space your farm is effectively contributing, with uncompressed (C0) plots as the baseline. For example, if your farm consists entirely of C3 plots, according to the plot compression table, your farm's effective size should be 20% larger than its actual size. If you are using plots with a mixture of compression levels, the effective size of each of your plots will be taken into account in this number's calculation.","s":"Harvest panel","u":"/checking-farm-health/","h":"#harvest-panel","p":199},{"i":209,"t":"Before going further, please make sure whether your farm actually considers itself to be farming. There's a good chance that you might not since you are still syncing blocks. To check the status of your farm, ../activate as usual and then type chia farm summary. If the first line of the output looks like like this: Farming status: Farming ..then you know no broader errors have occurred.","s":"Check if your farm thinks it's farming","u":"/checking-farm-health/","h":"#check-if-your-farm-thinks-its-farming","p":199},{"i":211,"t":"To get detailed information about how your farm operates, you need to set the log-level of your farmer to INFO. For this you need to edit the Chia config under ~/.chia/mainnet/config. You are looking for a part of the file that looks like this: farmer: logging: &id001 log_filename: log/debug.log log_level: INFO log_stdout: false If log_level has any other value than INFO, change it to INFO accordingly and save the file.","s":"Change the log level output","u":"/checking-farm-health/","h":"#change-the-log-level-output","p":199},{"i":213,"t":"The most important metric to look out for is, whether your plots are passing the plot filter on your harvesting machines. In a usual setup, this involves checking the logs under ~/.chia/mainnet/log to see if at least for some rounds, plots are marked as eligible for farming by the harvester. Your ~/.chia/mainnet/log directory may look like this: username@chia-farmer:~/.chia/mainnet/log$ tree . ├── debug.log ├── debug.log.1 ├── debug.log.2 ├── debug.log.3 ├── debug.log.4 ├── debug.log.5 ├── debug.log.6 └── debug.log.7 0 directories, 8 files Each log file contains log information about all the services ran by Chia. If you're running a full node, these can be convoluted. We're only interested whether or not plots pass the plot filter. We can check this, by running a command like: cat debug.log | grep \"[0-9] plots were eligible for farming\" The cat command is a *nix program to get content of a file. With the pipe operator |we \"pipe\" the output to another program called grep which can filter textual input. We filter for \"[0-9] plots were eligible for farming\" to see if we already had eligible plots. Example output may look like this: 09:55:43.847 harvester src.harvester.harvester : INFO 1 plots were eligible for farming 2d8b1c58a0... Found 0 proofs. Time: 0.13772 s. Total 100 plots 09:55:52.737 harvester src.harvester.harvester : INFO 3 plots were eligible for farming 2d8b1c58a0... Found 0 proofs. Time: 0.43679 s. Total 100 plots 09:56:01.646 harvester src.harvester.harvester : INFO 2 plots were eligible for farming 2d8b1c58a0... Found 0 proofs. Time: 0.14055 s. Total 100 plots If you are seeing output like above here, this is already good! It means that plots are passing the plot filter and your farm seems to work as intended. Do this for each log file to see whether or not you had any outages or whether something went wrong.","s":"Check if your plots are passing the filter","u":"/checking-farm-health/","h":"#check-if-your-plots-are-passing-the-filter","p":199},{"i":215,"t":"If you have had eligible plots in the past, there's a chance that you might have already found a proof, but it didn't get accepted by the network. Please keep in mind that finding a proof does not constitute to winning a plot (getting a payout). Even if you find a proof, it needs to compete with other proofs and win to actually receive a reward. To check whether you have already found proofs, you can run the same command as before, but with a different filter: cat debug.log | grep \"Found [1-9] proofs\" A possible result may look like this: 12:30:01.492 harvester src.harvester.harvester : INFO 1 plots were eligible for farming 23d3a7c90f... Found 1 proofs. Time: 0.57000 s. Total 100 plots If you do this for all your log files and get a result, great! This means your farm is 100% working as expected. You might not have won a block yet, but you already came very close once, or a few times!","s":"Checking for proofs","u":"/checking-farm-health/","h":"#checking-for-proofs","p":199},{"i":217,"t":"Yes and no. Double NAT, while quirky, should work due to Chia's uPnP support. You likely won't be able to seed blocks to other nodes this way though. A \"Double NAT\" scenario occurs, when a client (harvester or node) is inside a network that is NAT'ed two times. It usually involves a client being behind two routers, instead of one and looks like this: Internet --> Router --> Router --> Client Certain networking setups can impact the full nodes ability to participate in farming. As long as there aren't any telling signs in the logs that farming isn't working (namely logs with ERROR, WARNING tags that are network related) its unlikely that this is the case.","s":"Can a Double NAT scenario impact my farm's ability to send valid proofs to the network?","u":"/checking-farm-health/","h":"#can-a-double-nat-scenario-impact-my-farms-ability-to-send-valid-proofs-to-the-network","p":199},{"i":219,"t":"The purpose of this page is to provide guidance on how to setup Chia keys for plotting, farming, receiving rewards and managing your wallet. It does not explain the Chia Keys Architecture. You can find this Chia Keys Architecture explanation. It is mostly CLI focused; sorry GUI users.","s":"Key Management","u":"/chia-key-management/","h":"","p":218},{"i":221,"t":"This solution is the most straightforward, you use only one key for everything: plotting, farming, receiving rewards, managing your wallet. It is the default configuration when you install chia-network for the first time. The CLI (or GUI) creates a new private master key on the first initialization. Show can see it's mnemonic by typing chia keys show. By default, the rewards from farming will be sent to this private key's wallet address. With this setup you can farm, plot and manage your XCH all at once. The risk is that, if your computer is compromised, the attacker would have access to your wallet and could potentially steal the XCH. Another solution for farming XCH and securing them is to use two keys:","s":"1 key (default)","u":"/chia-key-management/","h":"#1-key-default","p":218},{"i":223,"t":"Default key used for: plotting and farming Cold storage key used for: Wallet operations. Receiving/Sending funds and receiving farming rewards. The downside of that solution is that you will not have direct access to your wallet and XCH. Would you want to do an XCH operation you will have to manually import the cold storage key. The upside is: even if your computer is compromised the attacker will not be able to access your wallet. Since the private key receiving rewards will not be stored on it. Configuration steps: Create a second key for \"wallet\" operation purposes: chia keys generate Write down the mnemonic on a paper you will not lose. If you lose it your key and XCH will be lost for ever ! Remember the fingerprint for the next step Find the \"First wallet address\": chia keys show and copy it Open ~/.chia/mainnet/config/config.yaml Edit: xch_target_address: XXX replace it with the newly generated \"First wallet address\". There should be two occurrence of xch_target_address. One under the farmer section and the other one under the pool section. Save the file and close it. Delete the second key: chia keys delete -f /!\\ Caution: make sure you have a backup of the 24 words mnemonic or you will lose access to the key for ever. It should prompt a WARNING message like \"Deleting private_key with fingerprint \" warning Using a farmer address which we don't have the private keys for. We searched the first 500 addresses. Consider overriding with Make sure the corresponds to your second key wallet address. Your setup is complete. Your machine can farm XCH and rewards will be sent to the key that you stored on paper. Would you need to transfer funds you can add it back to your computer's Chia keychain by doing: chia keys add","s":"2 Keys (farming key + cold storage key)","u":"/chia-key-management/","h":"#2-keys-farming-key--cold-storage-key","p":218},{"i":225,"t":"Jonmichael Hands, VP Storage, Chia Network. For comments and questions reach out to @LebanonJon on Discord, or @LebanonJon on Twitter Model in Excel","s":"Storage - Chia Farming Workload Analysis","u":"/chia-farming-workload/","h":"","p":224},{"i":227,"t":"Chia uses a consensus called proof of space and time, in which participants prove to the network that they are storing a certain amount of data through a process called farming. Farmers respond to network challenges to earn rewards for securing the Chia network, which involves generating proofs of space from stored data. The protocol for farming and harvesting was designed for quick and efficient verification of proofs of space while minimizing disk io (input/output). A harvester service checks plot files for partial proofs of space when a challenge is received. There is a plot filter designed to significantly reduce the amount of disk io required by requiring that a hash of the plot id and challenge contains a certain amount of zeros. We will explore the theoretical disk io requirements based on the protocols, and look at measured disk utilization during a real farming workload. The Chia farming workload differs from traditional enterprise or consumer storage use cases since the data stored in plot files contains no user data. The Chia farming workload is read-only, completely random distribution, and a low amount of data transferred between the device and host. Data durability (defined as the probability of not losing user data) and error rate requirements for Chia are significantly reduced compared to storing user data and may constitute a new class of storage media and promote used hardware that otherwise would not be suitable.","s":"Abstract","u":"/chia-farming-workload/","h":"#abstract","p":224},{"i":229,"t":"The proof of space construction and the Proof of Space page contains the details on the format for plot files. A plot file size is determined by a k value where each plot is made up of 7 tables each with 2^k entries. When a challenge arrives the plot filter is applied to reduce the disk io by the value of the plot filter constant, which is currently set to 512. The probability of a plot being accessed each challenge, which happens on the signage point interval time, is 1/512. The probability of an individual disk being accessed can be found with the binomial distribution function cumulative probability with a probability per plot, n trials equal to the number of plots on the disk (probability of X successes ≥ 1) per signage point. The amount of IOPS (input/output operations per second) can be estimated by determining the mean of the plot filter passes per day and multiplying by the number of seeks required for a proof quality check. In the pooling protocol a pool operator requests several partial proofs of space per day per drive to verify that the pool participant is indeed storing as much data as they claim. The bandwidth and amount of data transferred can be estimated by looking at the average blocksize of the read requests multiplied by the IOPS. Constants in proof of space that were chosen for Chia Signage point time (seconds): 9.375 Plot filter: 512 K value minimum: 32 IO Proof quality check: 9 read requests IO Full proof of space (and partial request from pool): 64 read requests Partials per day: set by pool operators, estimated at 300 for reference Average IO size per request (kB): 14","s":"Proof of space verification","u":"/chia-farming-workload/","h":"#proof-of-space-verification","p":224},{"i":231,"t":"We can estimate the storage workload on a given drive capacity (measured in TB, terabytes) by knowing the k size selected and n number of plots that fit on the drive. Drive size (TB) 4 8 10 12 14 16 18 20 k value 32 32 32 32 32 32 32 32 Number of plots 36 73 91 110 128 146 165 183 k value 34 34 34 34 34 34 34 34 Number of plots 8 17 21 25 30 34 38 43 Events per day, plots passing filter = signage points per day ✕ n plots / filter constant number of reads =(Events per day, plots passing filter ✕ IO Proof quality check) +(IO Full proof of space ✕ Partials per day IOPS average =number of reads per day / 86400 seconds MB read per day = Number of reads ✕ average IO size per request (kB) / 1000 Bandwidth = IOPS * Block Size","s":"Storage workload profile","u":"/chia-farming-workload/","h":"#storage-workload-profile","p":224},{"i":233,"t":"An IO kernel trace was taken on a sample of drives to determine the block size requests on the block layer (commands sent directly to the drive over the SATA interface), and found that the majority of the IO commands sent were 12 and 16kB transfers. This will likely change very slightly with different storage hardware, operating systems, storage devices, drivers, and filesystems. Measured data from ext4 filesystem in Linux resulted in an average blocksize of 13.9kB with n=44 drives of capacity 18TB 14.5kB with n=94 drives capacity ranging from 8-18TB","s":"Average IO Size per request","u":"/chia-farming-workload/","h":"#average-io-size-per-request","p":224},{"i":235,"t":"Chia Farming Total Amount of data read per day per drive capacity Bandwidth and amount of data read are all directly proportional to the number of io requests required for the proof quality checks and partial proof of space generation. K=32 with a difficulty of 1 is the theoretical maximum bandwidth for Chia farming. It is typical for a pool operator to automatically adjust the difficulty to target enough partials per day to get an accurate estimate of the farming capacity, without a significant increase in io on the device. As expected, bandwidth per drive scales with the number of plots per drive (which is increased when a higher capacity disk is used) and increases with difficulty. K=34 offers a reduction in io requirements by reducing the number of plots per disk.","s":"Calculated data read and disk bandwidth","u":"/chia-farming-workload/","h":"#calculated-data-read-and-disk-bandwidth","p":224},{"i":237,"t":"Hard disk drive reliability is rated at a specified amount of data read and written per year, expressed in TB/year. Common 3.5in HDDs used in Chia farming are rated at 200-550TB per year workload depending on the drive model and recommended use case. The amount of data written for Chia is often just the size of the drive, because plots are generated on ephemeral storage and then sequentially copied over to the drive. The amount of data read can be calculated by looking at the bandwidth of the drive and multiplying it by time. In the worst case, with the largest hard drive on the market today at 20TB, full of k=32 plots, at difficulty 1 pooling would read an average of 2.1GB per day, or 750 GB per year. This is 0.37% of the rated workload assuming a 200TB/year - Chia is an extremely light workload compared to typical end-user workloads (e.g. NAS, file or object storage, video streaming).","s":"Hard drive rated workloads","u":"/chia-farming-workload/","h":"#hard-drive-rated-workloads","p":224},{"i":239,"t":"Data was collected across a sample size of drives of varying capacity, as detailed in the system configuration. The duration of the measured data was 48 hours with a scraping period of 5s. capacity Sample Size bandwidth (kB/s) IOPS blocksize (kB) latency (ms) 8 3 3.45 0.23 14.76 5.18 10 2 4.17 0.28 14.72 7.04 12 16 5.03 0.34 14.69 7.11 14 2 6.02 0.41 14.72 5.21 16 27 6.20 0.44 14.14 6.27 18 44 7.46 0.51 14.57 5.53 Total 94 6.46 0.45 14.48 6.02 We compare the modeled metrics of an 18TB drive to the measure data collected Metric Estimated/Modeled Measured Bandwidth per drive (kB/s) 4.59 kB/s 7.46 kB/s IOPS 0.33 0.51 Disk busy time 0.136% 0.24% Latency per request (ms) 4.3 6.02 Disk IOPS Disk bandwidth Latency Disk Utilization CPU Busy Time System CPU Utilization Network Traffic (Chia harvester only)","s":"Measured data","u":"/chia-farming-workload/","h":"#measured-data","p":224},{"i":241,"t":"Grafana Node Exporter Prometheus Standalone Linux IO Tracer dstat, iostat (sysstat)","s":"Measurement tools","u":"/chia-farming-workload/","h":"#measurement-tools","p":224},{"i":243,"t":"Measured data collected from the following system Motherboard: Intel R1208WFTYS Intel Xeon Gold 6140 CPU, 128GB DDR4 @ 2400MT/s HBA: LSI 9300-8e JBOD: Supermicro 90 Bay, SuperChassis 946ED-R2KJBOD Drive Models: Seagate Exos x16 16TB, Firmware SN03 WD HC550 18TB, Firmware: PCGNW232WDC WD WD120EDAZ: 8, 10, 12, 14TB, Firmware: 81.00A81","s":"System configuration","u":"/chia-farming-workload/","h":"#system-configuration","p":224},{"i":245,"t":"UBER is defined as \"A metric for the rate of occurrence of data errors, equal to the number of data errors per bits read.\" In HDD and SSD, UBER is generally reflected in lifetime values for an entire population, but the actual rates of error and rate of increase are dependent on many factors including time, temperature, and amount of wear on the storage media. In SSDs this is adjusted for and measured per the JESD218B specification which defines UBER for SSDs using \"The numerator is the total count of data errors detected over the full TBW rating for the population of SSDs, or the sample of SSDs in the endurance verification.\"","s":"Data durability, uncorrectable bit error rate, and Chia farming","u":"/chia-farming-workload/","h":"#data-durability-uncorrectable-bit-error-rate-and-chia-farming","p":224},{"i":247,"t":"Consumer HDDs are rated for less than 1 error per 1014 (sometimes shown as UBER of 10-14). This means that if a consumer reads on 800TB of data, they would expect a single read error on average. Device UBER Data read per error Consumer HDD 10-14 800 TB Enterprise HDD 10-15 8 PB SSD 10-17 800 PB","s":"UBER of standard storage devices","u":"/chia-farming-workload/","h":"#uber-of-standard-storage-devices","p":224},{"i":249,"t":"In a storage system containing user data, an uncorrectable read error on a single storage device is handled by redundancy or parity, generally through RAID, erasure code, mirror, or backup of the data. Plot files contain random cryptographic hashes. If a device containing plots fails, no useful data is lost. Therefore, the best practice for Chia is not to include any data protection. If there is a single uncorrectable read error somewhere on the storage device, we could therefore calculate the probability of reading that LBA (logical block address) by using the estimated amount of data read per day in the Chia farming workload - because the reads are perfectly random, each read request coming from the harvester service will have an equal probability of being accessed. Using the UBER and the estimated amount of data read per day with Chia farming, we can approximate the number of years it would take to encounter an error while farming Chia.","s":"UBER in Chia","u":"/chia-farming-workload/","h":"#uber-in-chia","p":224},{"i":251,"t":"Each k=32 plot file contains around 4.3 billion proofs. Depending on where the error occurs, in metadata, table 1, etc. there are a certain amount of proofs within a plot file that will be corrupted. In the absolute worst case that an entire plot file gets corrupted. A more likely case would just be that a certain percentage of proofs are corrupt, and the likelihood of reading those given the amount of data read per day in the Chia farming workload is extremely low. If the uncorrectable read error collides with a lookup for a partial proof of space, the farmer would fail that single request for a partial proof of space or proof quality check. This would lower the user's estimated capacity for a short duration, but then revert to the mean. In other words, an error in Chia farming is not catastrophic. Chia farming workload is a very good fit for a storage device with a higher error rate, potentially even with an UBER of greater than 10-13 .","s":"What happens when an error occurs?","u":"/chia-farming-workload/","h":"#what-happens-when-an-error-occurs","p":224},{"i":253,"t":"Chia is a light workload for a hard drive, 309 times lower disk busy time than an example hyperscale data center workload[2]. Plot files contain random cryptographic hashes that can easily be created and no user data, removing data durability requirements for data storage in Chia farming. Proof of space is a novel use case for hard drives and can accept storage media with a high UBER compared to typical consumer and enterprise workloads. Chia farming will constitute a new class of storage that is optimized for high capacity, write once / read many, low power, and high error rate. Chia farming is a great fit for hard drive technology optimized for sequential write only, such as SMR (Shingled Magnetic Recording), and in the future NVMe ZNS (Zoned Name Spaces) paired with high capacity storage of a lower media grade. Chia farming would be an ideal use case for used storage, given the storage media is high enough capacity to maintain a competitive TCO compared to new more power-efficient disks.","s":"Summary","u":"/chia-farming-workload/","h":"#summary","p":224},{"i":255,"t":"JEDEC JESD218B.01 SOLID STATE DRIVE (SSD) REQUIREMENTS AND ENDURANCE TEST METHOD Facebook's Tectonic Filesystem: Efficiency from Exascale","s":"Resources","u":"/chia-farming-workload/","h":"#resources","p":224},{"i":257,"t":"The Chia protocol is composed of a few different sub-protocols. All protocol messages are sent encoded in Streamable format, using the networking protocol defined in the Networking page. The following documents go into depth into the messages sent by each type of service/node, and how they should be interpreted. The protocol is asynchronous and bidirectional, that is, each end of the connection can send messages, and receive a response, multiple responses, or no response for each message. Harvester protocol (harvester <-> farmer) Farmer protocol (farmer <-> full node) Timelord protocol (timelord <-> full node) Peer protocol (full node <-> full node) Pool protocol (pool <-> farmer) Wallet protocol (wallet/light client <-> full node) Introducer protocol (introducer <-> full node) In addition to the sub-protocols that are specific to services, a few protocols are shared across all or most services. Shared networking protocol Timing protocol Message types protocol State machine protocol","s":"Chia Protocol","u":"/chia-protocol/","h":"","p":256},{"i":259,"t":"In this lesson, we'll talk about why you might want to nest puzzles and how to set them up.","s":"Inner Puzzles","u":"/chialisp-inner-puzzle/","h":"","p":258},{"i":261,"t":"Functions: Learn how to define and execute functions in Chialisp. Nesting Puzzles: Understand the use of nesting puzzles in Chialisp.","s":"Learning objectives","u":"/chialisp-inner-puzzle/","h":"#learning-objectives","p":258},{"i":264,"t":"Expand for the full script 00:00 All puzzles result in the output of a condition that tells a blockchain what to do with a coin that it's wrapped in. Inner puzzles can be thought of as a coin within a coin where the result is a condition that is passed to the outer puzzle which executes it. 00:20 One specific use for this functionality is if you wanted to use a generic inner puzzle and wrap it in an outer puzzle that verifies a signature. The outer puzzle can be a sort of template that you can pass in any generic inner puzzle and it will be signature protected by the outer puzzle. Let's create this exact outer puzzle template. 00:40 We're going to define a module, and for our parameters we'll have a PUBLIC_KEY that we'll curry in later, an INNER_PUZZLE that we'll also curry in, and then the inner_solution. We'll include the condition_codes.clib library file and the sha256tree.clib library file as well. Then, we're going to define a new function. 01:00 We'll call this calculate_output and in the parameters we'll have our PUBLIC_KEY, the inner_solution, and the conditions that we'll execute. In a combine statement, we'll have the standard signature verification that we used in the previous video. ((defun calculate_output (PUBLIC_KEY inner_solution conditions) (c (list AGG_SIG_MET PUBLIC_KEY (sha256tree inner_solution)) conditions))) 01:20 For the message that we're verifying, we'll be verifying the inner_solution and then we'll return the conditions. Now that we've defined our new function, we'll call it with calculate_output, provide the PUBLIC_KEY and the inner_solution, and then we'll use the apply operator or a on our INNER_PUZZLE, providing the inner_solution. (calculate_output PUBLIC_KEY inner_solution (a INNER_PUZZLE inner_solution)) 01:40 The apply operator is how you execute some code. So the INNER_PUZZLE will be executed with the inner_solution. So this puzzle will first evaluate the inner puzzle with the (a INNER_PUZZLE inner_solution)) method, and use the result as the condition for our calculate_output function. 02:00 This function requires a signature of the inner_solution to pass. Now let's write the inner puzzle. For this puzzle, we're going to use a condition called ASSERT_HEIGHT_RELATIVE, which specifies when a coin can be spent, based on the number of blocks passed since coin creation. We'll define a module and in our parameters, we'll curry in the REQUIRED_BLOCKS. This will be a number of blocks that have to pass before the coin can be spent. 02:20 Then, we'll have our conditions. We'll include the condition_codes.clib library again, and then we'll define a statement that uses the ASSERT_HEIGHT_RELATIVE condition on the REQUIRED_BLOCKS that we curried in, and then we'll return the conditions. 02:40 All right, now we have both our inner puzzle and our outer puzzle. Let's curry in the needed values. First we'll get our public key with chia keys show, and then we'll curry the block value into the inner puzzle with cdv clsp curry inner-puzzle.clsp -a and specify the number of blocks that we want to pass. 03:00 In this case, we'll use 20. We can now curry this result, along with our public key, into the outer puzzle with cdv clsp curry outer-puzzle.clsp -a, enter our public key, -a and in quotes we'll paste the compiled inner puzzle. 03:20 Now that we have our final compiled puzzle, we can go ahead and create a coin using the process that we covered in the last video. Once the coin has been created, we can create our solution for this coin. First we get our wallet address and decode it. We'll use this in our desired solution. Again, we'll be using the CREATE_COIN condition signified by the code 51. 03:40 Note that I'm nesting the solution in four (4) sets of parentheses. This is because the outer puzzle parameters list is passed in wrapped with parentheses as is the inner solution. In the inner puzzle, we have another set of parentheses for the list of conditions, and each condition is also wrapped. 04:00 It's important to understand the structure of the puzzle to make sure that the solution you provide is structured properly. Now we'll add the encoded solution into our spend bundle where we already have the coin info and puzzle reveal from coin creation. Next, we'll get our signature using the method we outlined in the previous video. We'll hash our solution and concatenate it with the coin ID and genesis challenge. 04:20 Now we can sign the resulting message with chia keys sign and copy the signature into our spend bundle, being sure to append 0x to signify that it's a value. Now run cdv rpc pushtx spendbundle.json. 04:40 If the number of blocks is not yet passed, it will have a pending status. If successful, we can look up the coin record again and see that the spent block index is more than 20 blocks later than the confirmed block index. In this video, we learned how inner puzzles work and how they interact with outer puzzles. Thanks so much for watching, catch you next time.","s":"Script","u":"/chialisp-inner-puzzle/","h":"#script","p":258},{"i":266,"t":"More Parentheses: It's important to take note of where your solutions are going to be used in your puzzle and wrap them in the appropriate amount of parentheses. This can be counter-intuitive as the parentheses can seem unecessary at first glance.","s":"Common gotchas","u":"/chialisp-inner-puzzle/","h":"#common-gotchas","p":258},{"i":268,"t":"Question 1 - Evaluating Inner Puzzles What operator is used to evaluate a puzzle within another puzzle? Answer (expand when ready to see the answer) The apply operator. (a) (a INNER_PUZZLE inner_solution) Question 2 - A New Condition What does the ASSERT_HEIGHT_RELATIVE condition check for? Answer (expand when ready to see the answer) ASSERT_HEIGHT_RELATIVE checks for how many blocks have passed since coin creation. It allows the resolution of a puzzle after a predefined number of blocks have passed.","s":"Knowledge check","u":"/chialisp-inner-puzzle/","h":"#knowledge-check","p":258},{"i":271,"t":"For information on using these plugins please refer to the academy overview Chialisp plugin​ (10 99) (10 99) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) Chialisp Clvm plugin​ (1) (1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) CLVM","s":"Runnable Chialisp and clvm plugins","u":"/chialisp-inner-puzzle/","h":"#runnable-chialisp-and-clvm-plugins","p":258},{"i":273,"t":"General chialisp concepts: overviews of currying, inner puzzles, and morphing conditions. Guided chialisp walkthroughs: guides for installation, creating smart coins, and working with BLS signatures. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/chialisp-inner-puzzle/","h":"#links","p":258},{"i":275,"t":"In this lesson, we review the basics of Chialisp including syntax & structure, inequalities and if statements, and setting up a development environment.","s":"Intro to Chialisp","u":"/chialisp-intro/","h":"","p":274},{"i":277,"t":"Syntax and Structure: Understand the basic Chialisp syntax and structure. Puzzles and Solutions: Understand the use of puzzles and solutions in Chialisp. Development Environment: Setup and configure the Chialisp development environment.","s":"Learning objectives","u":"/chialisp-intro/","h":"#learning-objectives","p":274},{"i":280,"t":"Expand for the full script 00:00 We're going to go over the very basics of Chialisp we'll talk about a few things the basic syntax and structure of a Chialisp program puzzles and solutions and set up a development environment to test it all out. 00:20 So let's get started, the first thing you'll want to do is make sure you have the correct version of python. If you type in python3-version make sure you have python 3.10. Next we're going to want to create a virtual environment so if you run the command python3 -m venv venv. 00:40 This is going to create a virtual environment that we can activate to do our development in and to activate it we're going to type in this command bin\\activate and now you can see that we are in a virtual environment. 01:00 Next we're going to want to install the Chia Dev tools and you can do this by in running pip install Chia Dev tools and let it do its thing. So now let's just make sure we have the correct version by typing cdv --version and you can see we have version 1.1.4. 01:20 So now we have our development environment all set up let's go over some key lisp basics. This is the basic run command it takes a list with an operator followed by two operands. 01:40 In this example, we have the operands two and three and they'll be added together so we should get five. That's not very useful though so let's create a program that we can pass in some parameters and do the addition for us. All right in this example we have defined a module that receives two parameters arg1 arg2 and then runs the operation on those two parameters so when we run this we're going to get the compiled version of the program that we just wrote. 02:00 This is called the puzzle the arguments will be passed into the puzzle as a solution. So how do we run this code? Well our second command is brun so if we pass this compiled puzzle through the brun command and give it a solution such as 7 and 10. 02:20 It's going to use that solution as the parameters for the program so we should get 17. Now let's talk about inequalities and if statements. In this program I'm comparing two numbers 10 and 5, and seeing if the first is greater than the second. So in this case the result would be true and we receive a 1. 02:40 In the opposite case it would be false and we received an empty set so if statements are going to take this structure if followed by our comparison then the result if it's true followed by the result if it's false. So let's run this program, if 1 which is true return true, else return false. 03:00 So we expect to see true. So let's create a puzzle using comparisons and if statements. So we're going to type run and define a module that takes two arguments arg1 arg2. So we're going to define an if statement and we want to know if we add the two arguments together if they're greater than 100. 03:20 So if greater than the addition of argument 1 and argument 2 is greater than 100 then we're going to return large if it's true and small if it's false. 03:40 We'll close this and as you can see it's really easy to get lost in the parentheses so for future videos we'll be using a text editor which will make this a lot easier but if we run this we will receive the compiled version of our program and let's pass that puzzle into brun with our solution so run and 04:00 we'll add 70 and 100 which is guaranteed to be over 100 so we should receive the result large and that's it. That's the basics of Chialisp; we've talked about basic operators, inequalities if statements compiling our program into puzzles, and passing in a solution. 04:20 In future videos we'll talk about smart coins signatures and inner puzzles. Thanks for joining me and I'll catch you in the next video!","s":"Script","u":"/chialisp-intro/","h":"#script","p":274},{"i":282,"t":"run vs brun: Run is used to serialize and run chialisp puzzles while brun is used to run clvm serialized puzzles generally when passing arguments. Parentheses: Chialisp is part of the fully parenthesized prefix notation programming language family tracing their origins to LISP 1 from the 1950s. One highly apparent aspect of these languages is their use of parenthesis to denote lists. It is recommended to use an IDE with proper syntax highlighting when writing these languages to ensure that all parenthesis are in the proper places. To help with this here is a Chialisp language server extension for Visual Studio. Prefix Notation: Chialisp being part of the LISP family uses prefix notation. This means that the functions or operators appears first with their arguments following.","s":"Common gotchas","u":"/chialisp-intro/","h":"#common-gotchas","p":274},{"i":284,"t":"Question 1 - Subtraction What is a chialisp puzzle for subtracting two arguments? Answer (expand when ready to see the answer) (mod (arg1 arg2) (- arg1 arg2) ) Question 2 - Comparison What is the serialized form of this chialisp puzzle? (mod (arg1 arg2) (> arg1 arg2) ) Answer (expand when ready to see the answer) (> 2 5) Question 3 - If Statement What is the result of the below serialized puzzle and solution? Puzzle: (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) Solution: (1) Answer (expand when ready to see the answer) \"true\" Question 4 - Combining all of the above What is a Chialisp puzzle that performs the following? Accepts two arguments Adds the two arguments together Compares the sum of the arguments to 100 Results in \"Large\" when the sum is greater than 100 and \"Small\" when the sum is less than 100 Answer (expand when ready to see the answer) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") )","s":"Knowledge check","u":"/chialisp-intro/","h":"#knowledge-check","p":274},{"i":287,"t":"For information on using these plugins please refer to the academy overview Chialisp plugin​ (10 99) (10 99) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) Chialisp Clvm plugin​ (1) (1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) CLVM","s":"Runnable Chialisp and clvm plugins","u":"/chialisp-intro/","h":"#runnable-chialisp-and-clvm-plugins","p":274},{"i":289,"t":"General chialisp concepts: overviews of currying, inner puzzles, and morphing conditions. Guided chialisp walkthroughs: guides for installation, creating smart coins, and working with BLS signatures. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/chialisp-intro/","h":"#links","p":274},{"i":291,"t":"In this lesson, we go over how to secure coins using signatures.","s":"Signatures","u":"/chialisp-signatures/","h":"","p":290},{"i":293,"t":"Signing and Signatures: Understand the uses and benefits of signatures. Chialisp Library files: Learn about helpful Chialisp libraries to simplify development.","s":"Learning objectives","u":"/chialisp-signatures/","h":"#learning-objectives","p":290},{"i":296,"t":"Expand for the full script 00:00 We created our first smart coin and secured it so that only someone with the correct password could spend it. In this video, we'll use a signature to secure our coin so that only the person with the correct signature will be able to spend the coin. 00:20 So what is a signature? A digital signature allows you to sign a message with a private key. This message can then be verified by a recipient using your public key. Let's start with an example of signing a message and then verifying it. 00:40 Run chia keys sign --message with the message \"hello\" --hdpath m then choose your wallet ID. This process will sign the message 'hello' with your private key. To verify this message we'll run chia keys verify enter the message, then the signature and the sender's public key. (chia keys verify --message hello --signature [SIG] --public_key [PUB_KEY]) 01:00 So now that we know how signing works, let's create a coin that can be spent when given the correct signature. So in our chialisp file, let's define a module that takes two parameters. The first will be a public key that we'll curry in later. This will determine who is able to spend the coin. 01:20 The second parameter will be the conditions that determine how the coin will be spent. Next, we'll include some libraries to make our code a bit easier to write. The first lets us use written condition codes rather than number codes, and the second is a library for tree hashing. 01:40 To install these libraries, run this command in the terminal. cdv clsp retrieve sha256tree condition-codes. Back to our chialisp file, we'll define a combine statement withc and for the first parameter, create a list composed of the AGG_SIG_ME condition, our public key parameter and the conditions parameter run through the tree hashing library. ((c (list AGG_SIG_ME PUBLIC_KEY (sha256tree conditions)) conditions)) 02:00 The second parameter in the combine statement will be the conditions that are passed into the program. So what does this do? Well the AGG_SIG_ME condition is a standard condition that signs a message with a public key. In this case we are currying in the key and the message is the tree hash of the conditions parameter. 02:20 We do this so that the conditions cannot be modified by the farmer. So in order to spend the coin, the user must provide a solution that contains a list of conditions; or how they'd like to spend the coin; as well as a signature to show that they are the ones authorized to do so. 02:40 For this example, we're going to create a solution that uses the CREATE_COIN condition to essentially unlock the value of the coin and send it back to our wallet. First, let's finish creating this coin. We'll get our master public key with chia keys show and curry that into our program. It's important to prefix the key with 0x to show that it is a value. 03:00 Now we'll get the puzzle reveal with opc and enter in the compiled code. Make sure to save this for later. And for the puzzle hash we'll run opc -h and enter the compiled code. We'll save this for later as well. We'll need to take the puzzle hash and encode it into an address. Run cdv encode --prefix txch and enter the puzzle hash. 03:20 That gives us the puzzle address. Now we'll send an amount of chia to this address to lock it. And we'll check the status. Once confirmed, we'll be ready to spend it. 03:40 To spend the coin, we'll need to create a spend bundle. Take a look at this outline. this should look familiar to the spend bundle we created in the previous video. We'll need four things, the coin record, the puzzle reveal which we already calculated, the solution we want to provide, and an aggregated signature to authorize our spend. 04:00 To get the coin record, run cdv rpc coinrecords --by puzzlehash and enter the puzzle hash from earlier. Copy the coin object and paste it into the spend bundle template. Next we can enter the puzzle reveal we calculated earlier. For the solution, we're going to have to so some work. 04:20 We'll use the standard condition CREATE_COIN to unlock the value of the coin and send it back to our wallet. To do that, we'll need our address which we can get with chia wallet get address and decode it to get the wallet address puzzle hash with cdv decode and our address. 04:40 To craft the solution, we'll run this command where 51 is the CREATE_COIN condition code, our wallet address puzzle hash, and an amount in mojo. We can enter this response into the solution of our spend bundle. 05:00 Finally, the aggregated signature. Remember that the message we are signing is the tree hash of our conditions; or our solution. So first, let's generate that hash. Next we'll also need the coin ID and the genesis challenge. The genesis challenge is a standard value for each network. 05:20 You can find the appropriate challenge by entering chia show -s and searching for 'genesis challenge'. For the coin ID, we actually need the parent ID, the puzzle hash, and the amount which can all be found in the coin record we copied earlier. 05:40 To get the coin ID, we'll run cdv inspect -id coins enter the parent ID, the puzzle hash, and the amount. (cdv inspect -id coins --parent-id [PARENT_ID] --puzzle-hash [PUZZLE_HASH] --amount [AMOUNT]) The AGG_SIG_ME condition expects the concatenation of the conditions treehash, coin ID, and genesis challenge, so run 06:00 concat the conditions treehash, coin ID, and genesis challenge. Make sure to use the prefix 0x to signify that these are values. Now let's sign this message and since we're NOT using it as a value, remember to remove the 0x prefix this time. 06:20 Now we can enter this signature into our spend bundle and push it. Run cdv rpc pushtx spendbundle.json. If your signature is incorrect, you'll get a failure message. Otherwise, congratulations! You've created a smart coin secured with a signature and spent it. 06:40 So we've talked in this video about how signatures work, their importance, and how to implement them into a smart coin. Thanks so much for watching, I'll see you next time.","s":"Script","u":"/chialisp-signatures/","h":"#script","p":290},{"i":298,"t":"0x Prefixes: It's important to keep track of how we are using different values and understand how Chialisp is going to handle them. A common gotcha is forgetting to append 0x to a value, or in some cases removing it to tell the puzzle how to properly handle the parameter. \"Saving for Later\": At several points in this lesson, we generate results that we'll need to use elsewhere, sometimes many times. These results also do not have obivious indicators as to what they are. It's helpful to have a document to temporarily store these results for later use.","s":"Common gotchas","u":"/chialisp-signatures/","h":"#common-gotchas","p":290},{"i":300,"t":"Question 1 - Keys True or False. You need to use someone's private key to lock up a coin for them to spend. Answer (expand when ready to see the answer) False. You would use their public key. Private keys are to be kept secret and never revealed to anyone. Question 2 - Aggregate Signature An Aggregated Signature is comprised of which three components? Answer (expand when ready to see the answer) The AGG_SIG_ME condition expects a concatenated value of the following: The conditions treehash. The coin ID. The genesis challenge.","s":"Knowledge check","u":"/chialisp-signatures/","h":"#knowledge-check","p":290},{"i":303,"t":"For information on using these plugins please refer to the academy overview Chialisp plugin​ (10 99) (10 99) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) Chialisp Clvm plugin​ (1) (1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) CLVM","s":"Runnable Chialisp and clvm plugins","u":"/chialisp-signatures/","h":"#runnable-chialisp-and-clvm-plugins","p":290},{"i":305,"t":"General chialisp concepts: overviews of currying, inner puzzles, and morphing conditions. Guided chialisp walkthroughs: guides for installation, creating smart coins, and working with BLS signatures. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/chialisp-signatures/","h":"#links","p":290},{"i":307,"t":"In this lesson, we go over currying, hashing, and conditions, and submit and use our first Chia Smart Coin.","s":"Smart Coins","u":"/chialisp-smart-coin/","h":"","p":306},{"i":309,"t":"Currying: Understand how to create more general use puzzle by using Currying. Hashing: Understand the need to obfuscate sensitive portions of a puzzle by using Hashing. Conditions: Using conditions to allow the spender of the coin to decide how it is spent.","s":"Learning objectives","u":"/chialisp-smart-coin/","h":"#learning-objectives","p":306},{"i":312,"t":"Expand for the full script 00:00 Everything on a blockchain is a coin. They are often referred to as smart coins because every coin has a chialisp program associated with it. That program, known as the puzzle, decides how and when the coin can be spent, and what happens when it is. 00:20 NFTs, CATs, and standard transactions are all defined using puzzles. In the previous video, we learned how to write basic chialisp programs. Let's apply that to some more complex puzzles and create a coin that can be spent on the blockchain. 00:40 In this video, we'll be talking about currying, hashing, and conditions. So let's get started! We'll start by creating a new chialisp file called password.clsp and create a module that takes a parameter password and determines if the value passed in equals hello. If it does, return correct, if not return incorrect. 01:00 We'll run this using the brun command in our terminal and pass in hello which should give us a success. Just to test the opposite, we'll pass in something else, and see if that fails. So this is a bit of a refresher on chialisp basics. One of the issues we have with a puzzle like this is that the hard-coded value for the password is both insecure and not very useful. 01:20 We'd like to have a generalized puzzle that we can use for any password we choose to have. For this we'll use currying and hashing. To make this puzzle more generalized, we will be using currying. To do so, let's replace our password parameter with two new ones, CORRECT_PASSWORD and provided_password, and then run our comparison on those parameters. 01:40 Now in our terminal, we can curry in a value to replace the correct password parameter and compile it. Run cdv clsp curry password.clsp -a and pass in our desired password, in this case - hello and we get the following result. Now if we run that through brun and give it the correct password, we should get a success. 02:00 We can also nest these commands like this - (brun \"$(cdv clsp curry password.clsp -a 'goodbye')\" \"(goodbye)\"). The first steps to making our puzzle more secure is to use hashing. A hash function will take an input and return a hash value. One of the most popular hashing algorithms is sha256 which is directly supported within chialisp. 02:20 A few important notes about hash functions; given a value, calculating the hash is extremely easy. Given a hash, calculating the original input is extremely difficult or impossible, and passing the same value through a hashing function multiple times will always result in the same output. 02:40 We can use these principles to our advantage by currying a hash of the expected password instead of the password value itself. This prevents us from revealing the expected password while still allowing us to check if the provided password is correct. This is done by hashing the provided password. So let's change our puzzle to use hashing. 03:00 First, change the curried parameter to PASSWORD_HASH and change the other parameter to password. In the comparison, use sha256 to hash the given password and compare it to the password hash. To test this we'll first have to hash a password and curry it into our new puzzle. 03:20 Run cdv hash \"hello\" to get the hash for the password 'hello'. We can now curry this into our puzzle like last time, making sure to prefix the hash with 0x to identify it as a chialisp value. Now we can pass this compiled puzzle through brun and provide the correct password to test. 03:40 It's important to know that while hashing is an essential part of securing our puzzle, this is not quite enough. When we provide our solution with the correct password, that password will be visible on the blockchain. Meaning we won't be able to use it again. The final solution to this problem is to use signatures, which we'll talk about in a future video. Now that we've talked about currying and hashing, let's talk about conditions. 04:00 In our password puzzle, let's make a couple of additions. First, we'll add a parameter called conditions and then replace the success and fail messages with that parameter, followed by (x). So what does this do? Well the x represents an error. If the password is incorrect, the if statement will evaluate to false and error out, terminating the program and leaving the coin that we are creating unspent. 04:20 If the correct password is given, the conditions that are provided by the spender will be run. So back to our terminal, first we'll need to curry in our hashed password as before. Now that we have the compiled puzzle, we're going to need to do a few things to create the coin. First, we'll need the puzzle hash which we can get by running opc -H and passing in our compiled puzzle. 04:40 We'll save the result for later. Next, we'll need the puzzle reveal which is just a serialized form of the puzzle in hex. It's what you must reveal on chain when spending a coin. We can get this by running opc and passing in our compiled puzzle. We'll save this for later as well. 05:00 Now to create the coin, we need to encode our puzzle hash into an address with cdv encode -p txch and passing in our puzzle hash. We then send that address an amount of xch to lock it. Now let's spend the coin to release value back to our wallet. First, we'll get our wallet address and convert it to a puzzle hash with cdv decode. 05:20 We'll then use this to build the condition we want to pass into the coin. For this example, we're going to use the CREATE_COIN condition which is denoted by the code 51. So to construct our solution, we'll write opc then give our password, then the condition we want to pass in. 05:40 In this case, the condition code 51, our wallet puzzle hash - prefixed by 0x, and an amount. This output is our solution and we'll save it for later. All right, we now need to retrieve the coin record we created earlier when we committed xch to the puzzle. Run cdv rpc coinrecords --by puzzlehash and pass in the original puzzle hash. 06:00 The output may contain a few coin records depending on if you're following the example closely and use the most recent one based on highest block index, and copy the coin record. Now we are going to create a spend bundle. Start a json file and create a property called coin_spends that contains an array containing an object. ([{}]) 06:20 Paste the coin record, followed by the puzzle reveal you generated earlier, and then the solution. Create another property called aggregated_signature and assign this value (0xc0000000000...) That's 191 zeros. Now submit the spend bundle to the mempool with cdv rpc pushtx spendbundle.json. 06:40 If everything was successful, this transaction should be accepted and you should see your wallet balance increase after some time passes. Now you've created your first smart coin. In this video, we talked about how to curry values into a generalized puzzle, how to hash both sensitive values as well as puzzles for creating coins, and touched on conditions that can be passed into puzzles. 07:00 In the next video, we'll talk further about security and how to use signatures to better secure your transactions. See you then.","s":"Script","u":"/chialisp-smart-coin/","h":"#script","p":306},{"i":314,"t":"Curried parameters: It's considered best practice to write parameters that are intended to be curried in in all caps. This helps keep track of where each parameter is coming from while writing the puzzle. 0x Prefixes: It's important to keep track of how we are using different values and understand how Chialisp is going to handle them. A common gotcha is forgetting to append 0x to a value, or in some cases removing it to tell the puzzle how to properly handle the parameter. Condition Codes: Condition codes are by default signified by a numerical code. In future lessons, we will also use a library that allows us to reference the codes with more descriptive language.","s":"Common gotchas","u":"/chialisp-smart-coin/","h":"#common-gotchas","p":306},{"i":316,"t":"Question 1 - Curried Parameters Which parameter in this puzzle will be curried in? (mod (ARG1 arg2) (if (= ARG1 arg2) \"Equal\" \"Not Equal\" ) ) Answer (expand when ready to see the answer) ARG1 will be curried in. Currying always substitutes parameters in order, so when currying, the first will be replaced. Best practice is to write a curried parameter in all caps to help us keep track. Question 2 - Hashing Principles What are the three principles of hashing? Answer (expand when ready to see the answer) Given a value, hashing that value is computationally easy Given a hash, calculating the value is computationally difficult or impossible Hashing the same input, will result in the same output Question 3 - Hashing Puzzle True or False. Sha256 is one of the most popular hashing algorithms and is natively supported by chialisp. Answer (expand when ready to see the answer) True Question 4 - Combining all of the above Write a Chialisp puzzle that performs the following. Accepts a curried parameter Hashes a provided parameter with sha256 and compares it to the curried parameter. Outputs a provided result if the comparison is true. Answer (expand when ready to see the answer) (mod (PASSWORD_HASH password conditions) (if (= (sha256 password) PASSWORD_HASH) conditions (x) ) )","s":"Knowledge check","u":"/chialisp-smart-coin/","h":"#knowledge-check","p":306},{"i":319,"t":"For information on using these plugins please refer to the academy overview Chialisp plugin​ (10 99) (10 99) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\") ) Chialisp Clvm plugin​ (1) (1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) (a (i 2 (q 1 . \"true\") (q 1 . \"false\")) 1) CLVM","s":"Runnable Chialisp and clvm plugins","u":"/chialisp-smart-coin/","h":"#runnable-chialisp-and-clvm-plugins","p":306},{"i":321,"t":"General chialisp concepts: overviews of currying, inner puzzles, and morphing conditions. Guided chialisp walkthroughs: guides for installation, creating smart coins, and working with BLS signatures. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/chialisp-smart-coin/","h":"#links","p":306},{"i":323,"t":"We'll start with a brief description of CLVM. For details on the inner workings of CLVM, see our CLVM reference. CLVM is the compiled, minimal version of ChiaLisp that is used by the Chia network. CLVM is built out of cons boxes and atoms. Cons boxes contain two items, which can be either an atom or another cons box. All CLVM programs can be represented as a binary tree. Evaluation is similar to that of standard Lisp. CLVM uses a minimal operator set, most of which are a single letter.","s":"CLVM vs EVM","u":"/clvm-vs-evm/","h":"","p":322},{"i":325,"t":"Design decision EVM (Solidity) CLVM (Chialisp) The blockchain contains... Smart contracts (compiled programs) as well as accounts. The root hash of a binary tree, not source code. Money Smart contracts contain money. Standard Chia coins don't contain money. They are money. That said, more complex functionality is possible, allowing coins to contain state, such as money. Determinism Less deterministic because multiple people can execute code within the same contract. Depending on the order of execution, the result won't always be the same. More deterministic because coins can only be spent once. However, it's possible to have a coin that multiple people can spend, which would reduce determinism. Centralization Multiple people interact with the same contract. Centralized by design. Only the owner interacts with a smart coin. Decentralized by design. Sandboxing No sandboxing. If a contract is hacked, all users can lose their money. Strong sandboxing. Spending is the only action allowed on an unspent coin, and only by the owner(s). If a coin is hacked, only that coin's owner(s) lose(s) their money. Composability Composition is supported, so it is possible to set rules temporarily governing how money may be spent. However, if money is moved outside of the contract, it will follow different rules. (Note that it is possible to create a contract that “traps” ETH inside of it by only allowing money to be sent from the contract to specific types of addresses. However, by definition this limits the functionality of that money to whatever is contained within the contract.) Composition is handled through inner puzzles. A puzzle's creator could say, “As long as these rules are followed, an inner puzzle can add any functionality.” Thus, it is possible to set rules that are intrinsic to the money itself, which must be followed forever. MEV Changing transaction order is both profitable and common. MEV is high. Transactions all occur simultaneously in a block. MEV is low. Reentrancy Contracts can call functions on other contracts. Withdrawals can happen multiple times. Reentrancy is possible and must be carefully guarded against. Coins interact with each other through announcements. They cannot call functions on other coins. Spends are atomic. Reentrancy is not possible. Auditability/Security Weak. Multiple points of failure. Numerous hacks prove this. Strong. If an attacker changes a coin's puzzle, the hash also changes. The attacker is thus attempting to spend a coin that does not exist. The attacker can modify the solution, but the programmer can counter this by using assertions, which will make any such modifications fail. We chose CLVM over EVM for the reasons outlined above, and especially because of these advantages: Sandboxing – coins are independent from one another, providing for strong security Composability – inner puzzles make it possible for coins to take on the functionality of other coins Interoperability – all coins output a list of conditions, so they can inherently interoperate with one another, even if not explicitly designed to do so No side effects - Auditing is easy; reentrancy is not possible","s":"Comparison","u":"/clvm-vs-evm/","h":"#comparison","p":322},{"i":327,"t":"This page should provide additional high-level documentation and explanation beyond just chia -h. This is not meant to be comprehensive, because often the -h (help) text is clear enough. We recommend fully investigating with the -h switch before looking elsewhere. To better understand what a command's options are, append -h at the end to see options and explanations. Some examples: chia -h chia plots -h chia plots check -h chia plotters madmax -h chia start -h As with the rest of this project, this doc is a work-in-progress. Feel free to browse the source code or the Chia Proof of Space Construction Document for more insight in the meantime.","s":"CLI Commands Reference","u":"/cli/","h":"","p":326},{"i":330,"t":"If you installed Chia.app in your /Applications directory, you can find the chia binary at /Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia. Do a sanity check in Terminal.app with the following command: /Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia -h You can use that if you augment your PATH with the following command: PATH=/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon:$PATH Then, running the chia -h command should work.","s":"Mac","u":"/cli/","h":"#mac","p":326},{"i":332,"t":"There is more than one chia.exe binary; the GUI is Chia.exe (two of these!) and the CLI is chia.exe. They are found in different places. Note the big C versus the little c. The CLI one is the one referred to in this document, and for version 2.1.0 installed for the user it can be found at ~\\AppData\\Local\\Programs\\Chia\\resources\\app.asar.unpacked\\daemon\\chia.exe If installed for all users it can be found at C:\\Program Files\\Chia\\resources\\app.asar.unpacked\\daemon\\chia.exe","s":"Windows","u":"/cli/","h":"#windows","p":326},{"i":334,"t":"Command: chia init First, init checks for old versions of Chia installed in your ~/.chia directory. If so, init migrates these old files to the new version: config (including old SSL files) db wallet Using config.yaml, updates wallet keys and ensures coinbase rewards go to the right wallet puzzlehash. If no old version exists, init: Creates a default Chia configuration Initializes a new SSL key and cert (for secure communication with the GUI)","s":"init","u":"/cli/","h":"","p":326},{"i":336,"t":"Command: chia start {service} Service node will start only the full node. Service farmer will start the farmer, harvester, a full node, and the wallet. positional arguments: {all,node,harvester,farmer,farmer-no-wallet,farmer-only,timelord,timelord-only,timelord-launcher-only,wallet,wallet-only,introducer,simulator} Flags -r, --restart: Restart of running processes Full Node Wallet Farmer Harvester Timelord Timelord Launcher Timelord-Only Introducer Full Node Simulator all X X X X X X node X harvester X farmer X X X X farmer-no-wallet X X X farmer-only X timelord X X X timelord-only X X timelord-launcher X wallet X X wallet-only X introducer X simulator X","s":"start","u":"/cli/","h":"","p":326},{"i":338,"t":"In 2.1.0 the option to use different plotters including compressed plotter was introduced. Each plotter has slightly different hardware requirements and may need slightly different options specified. The cli reference for all plotters can be found in the Plotters CLI Page. Learn more about the alternative plotters in the Alternative Plotters page.","s":"plotters","u":"/cli/","h":"","p":326},{"i":340,"t":"Using the CLI, you can perform the same operations as with the GUI. There is a new command, called chia plotnft. Type chia plotnft -h to see all the available sub-commands: » chia plotnft -h Usage: chia plotnft [OPTIONS] COMMAND [ARGS]... Options: -h, --help Show this message and exit. Commands: claim Claim rewards from a plot NFT create Create a plot NFT get_login_link Create a login link for a pool. To get the launcher id, use plotnft show. inspect Get Detailed plotnft information as JSON join Join a plot NFT to a Pool leave Leave a pool and return to self-farming show Show plotnft information To create a Plot NFT, use chia plotnft create -u https://poolnamehere.com, entering the URL of the pool you want to use. To create a plot NFT in self-farming mode, do chia plotnft create -s local. To switch pools, you can use chia plotnft join, and to leave a pool (switch to self farming), use chia plotnft leave. The show command can be used to check your current points balance. CLI plotting with create_plots is the same as before, but the -p is replaced with -c, and the pool contract address from chia plotnft show should be used here.","s":"plotnft","u":"/cli/","h":"#plotnft","p":326},{"i":342,"t":"Command: chia plots check -n [num checks] -l -g [substring] First, this looks in all plot directories from your config.yaml. You can check those directories with chia plots show. This command will check whether plots are valid given the plot's associated keys and your machine's stored Chia keys, as well as test the plot with challenges to identify found plots vs. expected number of plots. -g check only plots with directory or file name containing case-sensitive [substring]. If -g isn't specified all plots in every plot directory in your config.yaml will be checked. Examples for using -g Check plots within a long directory name like /mnt/chia/DriveA can use chia plots check -g DriveA Check only k33 plots can use chia plots check -g k33 Check plots created on October 31, 2020 can use chia plots check -g 2020-10-31 -l allows you to find duplicate plots by ID. It checks all plot directories listed in config.yaml and lists out any plot filenames with the same filename ending; *-[64 char plot ID].plot. You should use -l -n 0 if you only want to check for duplicates. -n represents the number of challenges given. If you don't include an -n integer, the default is 30. For instance, if -n is 30, then 30 challenges will be given to each plot. The challenges count from 5 (minimum) to -n, and are not random. Each plot will take each challenge and: Get the quality for the challenge (Is there a proof of space? You should expect 1 proof per challenge, but there may be 0 or more than 1.) Get the full proof(s) for the challenge if a proof was present Validate that the # of full proofs matches the # of expected quality proofs. Finally, you'll see a report the final true proofs vs. expected proofs. Therefore, if -n is 20, you would expect 20 proofs, but your plot may have more or fewer. Running the command with -n 10 or -n 20 is good for a very minor check, but won't actually give you much information about if the plots are actually high-quality or not. Consider using -n 30 to get a statistically better idea. For more detail, you can read about the DiskProver commands in chiapos What does the ratio of full proofs vs expected proofs mean? If the ratio is >1, your plot was relatively lucky for this run of challenges. If the ratio is <1, your plot was relatively unlucky. This shouldn't really concern you unless your ratio is <0.70 # If so, do a more thorough chia plots check by increasing your -n The plots check challenge is a static challenge. For example if you run a plots check 20 times, with 30 tries against the same file, it will produce the same result every time. So while you may see a plot ratio << 1 for a plot check with x number of tries, it does not mean that the plot itself is worthless. It just means that given these static challenges, the plot is producing however many proofs. As the number of tries (-n) increases, we would expect the ratio to not be << 1. Since Mainnet is live, and given that the blockchain has new challenges with every signage point - just because a plot is having a bad time with one specific challenge, does not mean it has the same results versus another challenge. \"Number of plots\" and \"k-size\" are much more influential factors at winning blocks than \"proofs produced per challenge\". In theory, a plot with a ratio >> 1 would be more likely to win challenges on the blockchain. Likewise, a plot with a ratio << 1 would be less likely to win. However, in practice, this isn't actually going to be noticeable. Therefore, don't worry if your plot check ratios are less than 1, unless they're significantly less than 1 for many -n.","s":"Plots check","u":"/cli/","h":"#plots-check","p":326},{"i":345,"t":"Command: chia db upgrade [add flags and parameters] Flags --input [PATH]: (optional) Specify a database input file. Must be a v1 database. --output [PATH]: (optional) Specify a database output file. Can be any name, but must not already exist. --no-update-config Don't update the config file to point to your new database. When specifying a custom output file, the config will not be updated regardless. Database upgrade notes This will upgrade your database from version 1 to version 2, which is around 45% smaller and slightly faster. The upgrade could take several hours to complete. Use at your own leisure. You do not need to stop your Chia node while performing the upgrade. The new database file will be written to the same folder as the original. The current size requirement (2nd quarter 2022) is around 55 GB. Note that the database is always growing, so the size requirement for the v2 database will have gone up by the time you are reading this — plan accordingly. After the version 2 file has been created, you can stop Chia and move/delete your version 1 file, which will free up enough space to move your version 2 file to the original folder. Finally, update the references in config.yaml to point to your version 2 file. After the upgrade has completed, run chia start farmer -r. This will restart your farmer, and begin using your new database. Note that it will have the same peak as version 1 at the time you initiated the upgrade. Your node will still need to run a short sync to fetch the remaining blocks that had gotten added while the upgrade was being performed. For more information on the new database version, see our FAQ.","s":"upgrade","u":"/cli/","h":"#upgrade","p":326},{"i":347,"t":"Command: chia db backup [add flags and parameters] Flags --backup_file [PATH]: (optional) Specifies the backup file and location. Default will create the backup in the same directory as the database. --no_indexes: (optional) Create backup without indexes. Database backup notes This will vacuum (compress) and backup your database and may take several hours to complete. Use at your own leisure. You do not need to stop your Chia node while performing the upgrade. The new database file will be written to the same folder as the original with \"vacuumed_\" prepended to the name. To use the backup database: Close the chia client, remove/delete the main database, rename the backup database to remove \"vacuumed_\", and restart the chia client. Note the initial start will take extra time as the client verifies the backup db file.","s":"backup","u":"/cli/","h":"#backup","p":326},{"i":349,"t":"Command: chia db validate [add flags and parameters] Flags --db [PATH]: (optional) Specifies which database file to validate. Default will use the default database and path. --validate-blocks: (optional) Validate consistency of properties of the encoded blocks and block records. Note this will increase the validation time. Database validate notes This will validate your database and may take several hours to complete. Use at your own leisure. You do not need to stop your Chia node while performing the upgrade. This will start by processing the latest block and traverse to the first block.","s":"validate","u":"/cli/","h":"#validate","p":326},{"i":352,"t":"Command: chia keys derive [OPTIONS] COMMAND [ARGS] Flags -f, --fingerprint [INTEGER]: The fingerprint of the key you want to use. --mnemonic-seed-filename [TEXT]: The filename containing the mnemonic seed of the master key to derive from. Notes on deriving keys This command will display or search for derived keys or wallet-addresses. This command requires either a fingerprint or a mnemonic seed file. The valid values for COMMAND are child-key, search, and wallet-address. See below for details and example commands.","s":"derive","u":"/cli/","h":"#derive","p":326},{"i":354,"t":"Command: chia keys derive child-key [OPTIONS] Flags -t, --type [farmer|pool|wallet|local|backup|singleton|pool_auth]: Type of child key to derive. -p, --derive-from-hd-path [TEXT]: Derive child keys rooted from a specific HD path. Indices ending in an 'n' indicate that non-observer derivation should used at that index. Example HD path: m/12381n/8444n/2/ -i, --index [INTEGER]: Index of the first child key to derive. (Index 0 is the first child key.) -n, --count [INTEGER]: Number of child keys to derive, starting at index. -d, --non-observer-derivation: Derive keys using non-observer derivation. [default: False] -s, --show-private-keys: Display derived private keys. [default: False] --show-hd-path: Show the HD path of the derived wallet addresses. [default: False] Examples Show the first singleton pubkey: chia keys derive -f child-key -t singleton Show a pair of public and private keys derived from a mixed observer/non-observer HD path using an imported key's mnemonic seed: chia keys derive --mnemonic-seed-filename <(chia keys generate_and_print | sed -n 2p) child-key --derive-from-hd-path 'm/12381n/8444n/2/' --show-private-keys --show-hd-path Generate a mnemonic seed and show the farmer pubkeys 10-14 derived from that seed: chia keys derive --mnemonic-seed-filename <(chia keys generate_and_print | sed -n 2p) child-key -i 10 -n 5 -t farmer","s":"child-key","u":"/cli/","h":"#child-key","p":326},{"i":356,"t":"Command: chia keys derive search [OPTIONS] [SEARCH_TERMS]... Flags -l, --limit [INTEGER]: Limit the number of derivations to search against. [default: 100] -d, --non-observer-derivation: Search will be performed against keys derived using non-observer derivation. [default: False] -P, --show-progress: Show search progress. [default: False] -t, --search-type [public_key|private_key|address|all]: Limit the search to include just the specified types. [default: address, public_key] -p, --derive-from-hd-path [TEXT]: Search for items derived from a specific HD path. Indices ending in an 'n' indicate that non-observer derivation should used at that index. Example HD path: m/12381n/8444n/2/ Examples Search for a wallet address: chia keys derive search -t address -l 100 ","s":"search","u":"/cli/","h":"#search","p":326},{"i":358,"t":"Command: chia keys derive wallet-address [OPTIONS] Flags -i, --index [INTEGER]: Index of the first wallet address to derive. Index 0 is the first wallet address. -n, --count [INTEGER]: Number of wallet addresses to derive, starting at index. -x, --prefix [TEXT]: Address prefix (xch for mainnet, txch for testnet). -d, --non-observer-derivation: Derive wallet addresses using non-observer derivation. [default: False] --show-hd-path: Show the HD path of the derived wallet addresses. If non-observer-derivation is specified, path indices will have an 'n' suffix. [default: False] Examples Show first 10 wallet addresses: chia keys derive -f wallet-address -i 0 -n 10 --show-hd-path","s":"wallet-address","u":"/cli/","h":"#wallet-address","p":326},{"i":360,"t":"See our official DID reference.","s":"DID","u":"/cli/","h":"","p":326},{"i":362,"t":"See our official NFT reference.","s":"NFT","u":"/cli/","h":"","p":326},{"i":364,"t":"$ chia Options: --root-path PATH Config file root [default: ~\\.chia\\mainnet] --keys-root-path PATH Keyring file root [default: ~\\.chia_keys] --passphrase-file FILENAME File or descriptor to read the keyring passphrase from -h, --help Show this message and exit. Commands: completion Generate shell completion configure Modify configuration dao Create, manage or show state of DAOs data Manage your data db Manage the blockchain database dev Developer commands and tools farm Manage your farm init Create or migrate the configuration keys Manage your keys netspace Estimate total farmed space on the network passphrase Manage your keyring passphrase peer Show, or modify peering connections plotnft Manage your plot NFTs plots Manage your plots plotters Advanced plotting options rpc RPC Client run_daemon Runs chia daemon show Show node information start Start service groups stop Stop services version Show chia version wallet Manage your wallet To see what you can do with each of these commands, use the help flag -h. For example, chia show -h. To check your full node status, do chia show -s and you'll see something like this. To figure how close you are look at your height. Once fully synced it'll say Full Node Synced at the top. Current Blockchain Status: Full Node Synced Peak: Hash: 34554a10aff6b52545623e18667c9487758fa93a3b2345974da0d263939189dc Time: Tue Mar 23 2021 20:54:46 JST Height: 19882 Estimated network space: 136.225 PiB Current difficulty: 9 Current VDF sub_slot_iters: 112197632 Total iterations since the start of the blockchain: 63291534050 Height: | Hash: 19882 | 34554a10aff6b52545623e18667c9487758fa93a3b2345974da0d263939189dc 19881 | f53c052cd7ac58539ff5c35cb9d515bc521308a49cec7566b23dba84f76009d8 19880 | 924d825a7fdbfd61e4582efbbe1d977bb554b368eea58c349a71e688e43fcc49 You can add and remove directories for your plots with chia plots add -d 'your_dir' or chia plots remove -d 'your_dir', help can be found for respective add/remove with chia plots add/remove -h","s":"Other commands (not all are fully documented)","u":"/cli/","h":"","p":326},{"i":366,"t":"You can check contents of your wallet with: chia wallet, and status of your farmer with chia farm summary. Check harvester and farmer logs: grep ~/.chia/mainnet/log/debug.log -e harvester Sample result: 17:08:03.191 harvester harvester_server : INFO <- harvester_handshake from peer 214b269a425b8223cb50fbd458dab056599348e255f07a018c13ea9efb509ee5 127.0.0.1 17:08:03.194 farmer farmer_server : INFO -> harvester_handshake to peer 127.0.0.1 65f3fa0b0407a07da8ccf04dfa0f64c28f714726312aa051d3a8529390db4d7a 17:08:03.218 harvester src.plotting.plot_tools : INFO Searching directories ['/home/user/slab1/plots'] 17:08:03.227 harvester src.plotting.plot_tools : INFO Found plot /home/user/slab1/plots/plot-k32-2021-01-11-17-26-bf2363828e469a3417b89eb98cfa9d694809e1ce8bef0ffd1d12853d4227aa0a.plot of size 32 17:08:03.227 harvester src.plotting.plot_tools : INFO Loaded a total of 1 plots of size 0.09895819725716137 TiB Maybe follow logs: tail -F ~/.chia/mainnet/log/debug.log. Chia is nice enough to rotate logs for you.","s":"Checking Logs and Status","u":"/cli/","h":"#checking-logs-and-status","p":326},{"i":369,"t":"This page includes a comprehensive list of Chia's Command Line Interface commands for using the clawback primitive. warning These commands are only relevant for the clawback primitive, which is located in the chia-clawback-primitive repository. In order to view the commands that are built into the CLI for Chia's reference wallet, see the following wallet commands: clawback get_transactions send For more info, see the following: Clawback primitive guide Youtube video explaining clawback Clawback user guide","s":"Intro","u":"/clawback-cli/","h":"#intro","p":367},{"i":372,"t":"Functionality: Get info about the clawback command Usage: clawback [OPTIONS] COMMAND [ARGS] Options: Short Command Long Command Type Required Description --version None False Show the version and exit -h --help None False Show a help message and exit Commands: Name Description claim Claim a clawback coin after the timelock has passed claw Clawback an unclaimed coin create Send xch to a clawback coin show Show details of all clawback coins","s":"clawback","u":"/clawback-cli/","h":"#clawback","p":367},{"i":374,"t":"Functionality: Claim a clawback coin after the timelock has passed Usage: clawback claim [OPTIONS] Options: Short Command Long Command Type Required Description -c --coin-id TEXT True The coin ID you want to claim -m --fee FLOAT False The fee in XCH for this transaction -w --wallet-id INTEGER False The wallet id for fees. If no target address given the clawback will go to this wallet id -t --target-address TEXT False The address you want to send the coin to -np --node-rpc-port INTEGER False Set the port where the Node is hosting the RPC interface -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -db --db-path TEXT False Set the path for the database -h --help None False Show a help message and exit info In most cases, if the output of the clawback show command contains Time left: 0 seconds, this indicates that the Recipient can proceed with the claim call. However, there is a small window of time where the timer has expired, but a block still hasn't been farmed with a timestamp after the expiry. If the Recipient attempts to make the claim call during this window, they will receive the following error: You are trying to claim the coin too early In this case, the Recipient needs to wait for one more block to be farmed before proceeding with the claim call. As a reminder, a new block is farmed every 18.75 seconds, on average. Example First, the Sender creates a new clawback coin with a 60-second timelock: clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 0.1 -l 60 -m 0.000275 Result: Created Coin with ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Coin { parent_coin_info: f5e408a15299df27a00d0403ea50ed29a06f87a31b638cff1b63ef3e6060b45a, puzzle_hash: 2e91566d9549cb909109d147c79b457d15ced2d8a24dea5a125b1e5c05cdd1ec, amount: 100000000000 } The Sender can run the clawback show command to show the details of each of their clawback coins: clawback show Result: Updating coin records... Coin ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 23 seconds The timelock expires when the Time left: value reaches 0 seconds: clawback show Result: Updating coin records... Coin ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 0 seconds For your reference, the Recipient wallet currently has a balance of 0 XCH: chia wallet show -f 1231588123 Result: Wallet height: 2405060 Sync status: Synced Balances, fingerprint: 1231588123 Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.0 txch (0 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 The Recipient (or anyone else) can view the status of the clawback coin if they know the coin ID: clawback show -c ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Result: Updating coin records... Coin ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 0 seconds The value of Time left: is 0 seconds, which indicates that the Recipient can now run the clawback claim command to claim the coin: clawback claim -c ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Result: Submitted spend to claim coin: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 While the claim transaction is being processed, it will show in the Pending Total Balance: of the Recipient's wallet: chia wallet show -f 1231588123 Result: Wallet height: 2405100 Sync status: Synced Balances, fingerprint: 1231588123 Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.1 txch (100000000000 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Finally, the Recipient can view the additional balance in their wallet: chia wallet show -f 1231588123 Result: Wallet height: 2405465 Sync status: Synced Balances, fingerprint: 1231588123 Chia Wallet: -Total Balance: 0.1 txch (100000000000 mojo) -Pending Total Balance: 0.1 txch (100000000000 mojo) -Spendable: 0.1 txch (100000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 The spend is now complete and can no longer be clawed back. The funds are stored as a standard Chia coin in the Recipient's wallet.","s":"claim","u":"/clawback-cli/","h":"#claim","p":367},{"i":376,"t":"Functionality: Usage: clawback claw [OPTIONS] Options: Clawback an unclaimed coin Short Command Long Command Type Required Description -c --coin-id TEXT True The coin ID for the clawback coin to inspect -m --fee FLOAT False The fee in XCH for this transaction -w --wallet-id INTEGER False The wallet id for fees. If no target address given the clawback will go to this wallet id -t --target-address TEXT False The address you want to sent the clawed back coin to -np --node-rpc-port INTEGER False Set the port where the Node is hosting the RPC interface -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -db --db-path TEXT False Set the path for the database -h --help None False Show a help message and exit Example Let's say the following clawback coin exists: clawback show Result: Updating coin records... Coin ID: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 Amount: 0.1 XCH (100000000000 mojos) Timelock: 600 seconds Time left: 518 seconds The same public/private key pair that created this coin must be used to claw it back. The Sender will use the clawback claw command, passing in the ID of the coin to claw back: clawback claw -c 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 -m 0.000275 As a result, the clawback coin will be spent, and a new coin will be created in the Sender's wallet: Submitted spend to claw back coin: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 To show the status of the clawback, run the clawback show command once again: clawback show Result: Updating coin records... No coins found","s":"claw","u":"/clawback-cli/","h":"#claw","p":367},{"i":378,"t":"Functionality: Make a transaction to create a clawback coin Usage: clawback create [OPTIONS] Options: Short Command Long Command Type Required Description -t --to TEXT True The recipient's address -l --timelock INTEGER False The timelock to use for the clawback coin you're creating, in seconds. Default is two weeks -a --amount INTEGER True The amount to fund (in XCH) -w --wallet-id INTEGER False The wallet id to send from -m --fee FLOAT False The fee in XCH for the funding transaction -np --node-rpc-port INTEGER False Set the port where the Node is hosting the RPC interface -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -db --db-path TEXT False Set the path for the database -h --help None False Show a help message and exit Example For this example, we will use two wallets: a Sender and a Recipient. The Sender has a balance of 10 TXCH and the Recipient has 0 TXCH. For your reference, here is the Sender wallet's info: chia wallet show -f 3807629793 Result: Wallet height: 2391281 Sync status: Synced Balances, fingerprint: 3807629793 Chia Wallet: -Total Balance: 8.0 txch (8000000000000 mojo) -Pending Total Balance: 8.0 txch (8000000000000 mojo) -Spendable: 8.0 txch (8000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 To create the clawback coin from the Sender's wallet, run the clawback create command. The -t (Recipient's address) and -a (amount in XCH/TXCH) flags are required. By default, the clawback coin will be locked for two weeks. For this example, we will override the default by using the -t flag to specify a timelock period of 600 seconds. We will also use the -m flag to include a fee of 0.000275 TXCH. info The testnet is constantly being dusted (filled with small transactions) in order to simulate a busy network. Because of this you are always recommended to include a fee with testnet transactions. The 275-million mojo fee from this demo should be sufficient to push your transactions through in the next transaction block. If you are running on mainnet, a fee of 275 million mojos is likely higher than the recommended amount. The reference wallet GUI will suggest an appropriate fee to be included with all transactions. The Sender will run the following command in this example (these are only example settings; replace the values as needed): clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 0.1 -l 600 -m 0.000275 Result: Created Coin with ID: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 Coin { parent_coin_info: dcedd4d573679302ee3f2a54fb51c437b8156e8cd5b1c3c08d25cadf83292c3d, puzzle_hash: 13cb7ce11775a5b42754fb382eb94c846e4be677e6d55bf665b23c075a54e930, amount: 100000000000 } As a result of running this command, a new clawback coin has been created on the blockchain, the details of which are shown above. To view this coin, along with other clawback coins created by this wallet, run the clawback show command: clawback show The basic details of the clawback coin are given: clawback show Updating coin records... Coin ID: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 Amount: 0.1 XCH (100000000000 mojos) Timelock: 600 seconds Time left: 518 seconds","s":"create","u":"/clawback-cli/","h":"#create","p":367},{"i":380,"t":"Functionality: Get details for all clawback coins Usage: clawback show [OPTIONS] Options: Short Command Long Command Type Required Description -c --coin-id TEXT False The coin ID for the clawback coin to inspect -np --node-rpc-port INTEGER False Set the port where the Node is hosting the RPC interface -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -db --db-path TEXT False Set the path for the database -h --help None False Show a help message and exit Example 1 The Sender can show a Clawback coin without passing in the Coin ID: clawback show The basic details of the clawback coin are given: clawback show Updating coin records... Coin ID: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 Amount: 0.1 XCH (100000000000 mojos) Timelock: 600 seconds Time left: 518 seconds Example 2 Anyone other than the sender needs to pass in the Coin ID in order to show a Clawback coin: clawback show -c ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Result: Updating coin records... Coin ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 0 seconds","s":"show","u":"/clawback-cli/","h":"#show","p":367},{"i":382,"t":"Chia uses the Coin Set model of accounting, under which everything is a coin. When Chia wallets perform certain actions, they must select one or more coins to spend or reserve. (Coin selection is performed automatically by the software; the wallet's user is not involved.) Actions that require coin selection include, but are not limited to: Sending XCH to another wallet Locking up XCH in an Offer Creating a DID Sometimes, coin selection is a straight-forward task. For example, let's say Alice's wallet contains one coin worth 1 XCH, and she wants to send 0.5 XCH to Bob. Alice's wallet will handle this by: Spending the 1-XCH coin, thereby unlocking its value Creating a coin worth 0.5 XCH and assigning it to Bob's wallet Creating another coin worth 0.5 XCH and assigning it to Alice's wallet as \"change\" In this case, there was only one coin to select, so the choice was obvious. Let's look at a more complex example. Alice wants to send 0.5 XCH to Bob. In her wallet, she has: One coin worth 0.6 XCH One coin worth 0.3 XCH One coin worth 0.2 XCH Her wallet has two obvious choices in deciding which coin(s) to spend: Spend the 0.6-XCH coin and create two new coins: one worth 0.5 XCH for Bob, and one worth 0.1 XCH for Alice's change. Spend the coins worth 0.3 XCH and 0.2 XCH and create one new coin worth 0.5 XCH for Bob. No change coin is needed in this case. For option 1, Alice's wallet spends one coin and creates two coins -- 1 input, 2 outputs. For option 2, Alice's wallet spends two coins and creates one coin -- 2 inputs, 1 output. Which option will Alice's wallet choose? Old algorithm -- largest first​ Prior to version 1.4 of Chia's reference wallet, option 1 would have been chosen. This is because the reference wallet simply selected the largest coin available. If that coin didn't contain a sufficient amount of XCH to complete the transaction, the wallet added the next-largest coin, and so on until a sufficient amount was reached. This algorithm was simple, but it created some frustrating outcomes. For example, let's say Alice wanted to create an offer to buy an NFT for 0.0001 XCH. In her wallet, she had: One coin worth 0.0001 XCH One coin worth 10 XCH In this case, her wallet would have selected the 10-XCH coin. While waiting for her offer to be accepted, her 10-XCH coin would have been reserved, and only her 0.0001-XCH coin would have been available to be spent. This would have been all the more frustrating for Alice because she had a coin worth exactly the correct amount (0.0001 XCH), but it wasn't selected. New algorithm -- knapsack​ Starting in version 1.4, Chia's reference wallet switched to using the same coin-selection algorithm as Bitcoin Core. This algorithm's basic outline goes like this: Search for a single coin that matches the amount to be sent, including the transaction fee. If an exact match is found, use it. Add up all of the coins smaller than the amount to be sent. If they match exactly, use them. If the sum of the smaller coins is smaller than the amount to be sent, then an exact match is impossible. In this case, use the smallest coin that is larger than the amount to be sent. Run the knapsack selection algorithm: Sort all coins that are smaller than the amount to be sent, in descending order. Traverse the list of sorted coins, and choose whether to select each individual coin, where each coin has a 50% probability of being selected. As each new coin is selected, determine whether the sum of the selected coins is greater than or equal to the amount to be sent. If yes, then a valid solution has been found. If, and only if, this is the best valid solution so far (defined as the solution that comes closest to the amount to be sent), save it. Replace the last coin selected with a smaller coin. If, an only if, this results in the best solution so far, save it. Continue to traverse the list, using various combinations of selected coins in search of a better solution than the best one found so far. Do this for up to 1000 iterations. If no valid solution has been found after 1000 iterations, re-traverse the list of smaller coins, this time selecting all of them. Once again, save only the best solution. Perform up to 1000 iterations of this second traversal. If we exclude edge cases, such as when a wallet contains more than 1000 coins, a valid solution will be found -- the sum of the smaller coins is larger than the amount to be sent. Let's review the scenario from the previous section and apply the new coin selection algorithm. Alice wants to send 0.5 XCH to Bob. In her wallet, she has: One coin worth 0.6 XCH One coin worth 0.3 XCH One coin worth 0.2 XCH Under the new algorithm, Alice's wallet will: Search for a single coin that matches. None are found. Add up all of the smaller coins. An exact match is found (0.3 + 0.2 = 0.5), so use it. Now let's say Alice wanted to include a transaction fee of 10 million mojos (0.00001 XCH). In this case, step 2 would fail to produce an exact match, so we would move to the next step: The sum of all smaller coins is still smaller than the amount to be sent, so the coin worth 0.6 XCH would be used. Let's look at a more complex example: Alice wants to send 0.5 XCH to Bob. She will include a transaction fee of 0.00001 XCH. In her wallet, she has: One coin worth 0.6 XCH One coin worth 0.5 XCH One coin worth 0.4 XCH One coin worth 0.3 XCH One coin worth 0.2 XCH Prior to version 1.4, the 0.6-XCH coin would have been selected. In versions 1.4 and later, the new algorithm is applied: No single coin matches the amount plus the fee (0.50001). The sum of the smaller coins is 0.5 + 0.4 + 0.3 + 0.2 = 1.4, which does not equal 0.50001. The sum from step 2 is larger than the amount to be sent. Let's say the following coin selections occur: 0.5 - not selected 0.4 - selected 0.3 - selected At this point, we have a valid match: 0.4 + 0.3 > 0.50001. The final coin in Alice's wallet is worth 0.2 XCH. If this coin is selected, it will replace the coin worth 0.3 XCH, making the best match 0.4 + 0.2. If this coin is not selected, a better match will not be found. This example shows two interesting facets of the new algorithm: It is not always possible to predict which coins will be selected. The best possible match is not guaranteed to be found. Why use knapsack?​ This algorithm is used in both Bitcoin Core and Chia's reference wallet because it provides a good balance between accuracy and computational intensity. It is also clearly superior in many cases. Let's revisit the example from the top of this document: Alice wants to create an offer to buy an NFT for 0.0001 XCH. In her wallet, she has: One coin worth 0.0001 XCH One coin worth 10 XCH Under the old algorithm, the 10-XCH coin would have been selected and reserved for the offer. This would have left Alice with a spendable balance of 0.0001 XCH while the offer was pending. Under the new algorithm, the 0.0001-XCH coin is selected and reserved. Alice still has 10 XCH available to spend. Because of scenarios such as this, wallet developers in Chia's community are recommended to use the knapsack algorithm for coin selection. For more information, see: A blog explaining the knapsack algorithm The technical details of the knapsack algorithm used by Bitcoin Core, including edge cases not mentioned here The source code Chia uses for coin selection","s":"Coin Selection","u":"/coin-selection/","h":"","p":381},{"i":384,"t":"In any given blockchain, one of the most fundamental questions is, \"How do we keep track of the state of the whole system?\" Bitcoin uses the Unspent Transaction Output (UTXO) model. Ethereum, along with many other blockchains, use the account model. Chia uses the coin set model, which is similar to UTXO. The differences between the above models will be covered in the Coin Set vs UTXO page and the Coin Set vs Account page. For now, we'll start with a brief explanation of the coin set model. The mantra everything is a coin will go a long way in helping you to understand the coin set model. There are no accounts. There are only coins. Coins may only be spent once and anyone can attempt to spend them. However coins are locked with specific rules. They are written in Chialisp, a Turing-complete language with no side effects, allowing for complex functionality, including composability and interoperability between coins. The majority of Chia's coins have one simple rule – \"Anyone with the right private key can spend me.\"","s":"Coin Set Intro","u":"/coin-set-intro/","h":"","p":383},{"i":386,"t":"As stated above, Chia's blockchain only understands coins. There are no accounts at the blockchain level. Technically the coins do not have owners. Anyone can attempt to spend any coin. Most coins are secured such that only someone who possesses a certain public/private key pair may spend them. This person is the coin's de facto \"owner.\" The coin set is the total set of all coins on Chia's blockchain. The minimum value of a coin is 0 mojos. The theoretical maximum value of a coin is around 18 million XCH (2^64-1 mojos). Each coin can be of any value within this range. Note 1: One use case for a zero-mojo coin is to convey information. For example, upon being spent, a zero-mojo coin could make an announcement for a singleton to recreate itself Note 2: Singletons must have an odd-numbered value, so their minimum value is 1 mojo (1 trillionth of an XCH) The first block of Chia's blockchain introduced four coins to the coin set, with a total value of 21 million XCH. This is the pre-farm, controlled by Chia Network Inc. Each additional block introduces a reward of two coins to the coin set (see the Block Rewards page for more info). For the first three years of Chia's blockchain, the targeted daily average to be introduced is 9216 XCH. This amount will be cut in half in 2024, 2027, 2030, and 2033, after which the targeted daily average will always be 576 XCH. While the exact amount introduced on any given day will vary slightly, one can predict the total amount of XCH in the coin set at any given time, with a high degree of accuracy. Each coin can only be spent once. Thus, a coin has only two states: unspent and spent. (Technically, there is a third state: not created. This happens when there is a re-org and the creation transaction gets reverted. Re-orgs in Chia are rare, though possible.) A coin's value cannot be destroyed. Instead, when a coin is spent, its value is released. One or more new coins will be created in the same block, the total value of which will equal the value of the spent coin. The coins themselves are highly programmable, so a wide variety of behavior is possible when a coin is spent.","s":"Key Features","u":"/coin-set-intro/","h":"#key-features","p":383},{"i":388,"t":"The Chia blockchain, as explained in the consensus section, is a linked list of blocks, agreed upon by nodes. Nodes also maintain a table of coins. At a low level, a coin in Chia is a record of ownership of a certain amount of XCH, which can be unlocked by providing the correct puzzle and a valid solution. These 3 properties make up each coin, and when hashed together form its id: Parent Coin Id Puzzle Hash (hash of the program) Amount (in mojos) The ID of a coin is computed by hashing together its three fields, where amount is encoded in CLVM format: (sha256 parent_coin_id puzzle_hash amount) Because the id is a sha256 hash, coins can never be changed. They can only be created and then spent once.","s":"Blockchain","u":"/coin-set-intro/","h":"#blockchain","p":383},{"i":390,"t":"A puzzle is a type of CLVM program that outputs conditions that determine the result of the spend. Each coin has a puzzle associated with it that determines how, when, and by whom this coin can be spent. It must be chosen at the time of the coin's creation. For example, if Bob wanted to pay Alice, Bob would create a coin with a puzzle (and thus a puzzle hash) which Alice knows how to unlock. Bob can create a coin worth 5 XCH using Alice's puzzle hash, so that only Alice can unlock it. Puzzle hashes are addresses. When you send XCH to someone's address, you're doing this exact thing.","s":"Puzzles","u":"/coin-set-intro/","h":"#puzzles","p":383},{"i":392,"t":"When Alice wants to spend her coin, she creates a spend bundle that reveals the coin she will spend, the original puzzle, and the solution to that puzzle. The solution usually involves things such as conditions (which can include recipients of the coin). In a standard transaction, Alice is the only one that knows the private key used to sign the transaction, and thus controls that coin. The network has no concept of accounts, or of coin ownership. Anybody can attempt to spend any coin on the network. It's up to the puzzles to prevent coins from being stolen or spent in unintended ways. The data required to spend a coin is: Coin Id Puzzle (serialized CLVM program) Solution (serialized CLVM value) A coin also has the option of requiring an aggregate signature in order to spend it. You can read more on the Spend Bundle page.","s":"Spends","u":"/coin-set-intro/","h":"#spends","p":383},{"i":394,"t":"Value may only be added to the coin set via the pre-farm (a one-time occurrence) and block rewards (which occur with each transaction block). Value can never be destroyed, though it can be \"bricked,\" for example by sending it to an address for which nobody possesses the private keys. Typically, in a block's combined spend bundle, value added will be equal to value spent, other than the block rewards. By definition, there are two possible exceptions: Value added > value spent -- This is not allowed, so the transaction will be rejected. The rejection will usually happen at the mempool level, though a malicious actor could write their own mempool to accept the transaction, in which case the blockchain will reject it. Value added < value spent -- This is allowed, so the transaction will succeed. If the value added is less than the value spent the remaining value will be rewarded to the farmer of the block containing the transaction awarded as a tip (you probably don't want to do that!).","s":"Value Added and Spent","u":"/coin-set-intro/","h":"#value-added-and-spent","p":383},{"i":396,"t":"In the account model, which is used by Ethereum and many other systems, balances are kept in accounts. These are permanent data structures which do not get destroyed when they send funds. There are some tradeoffs between the account model and the coin set model (similar to Bitcoin's UTXO model).","s":"Account Model vs Coin Set Model","u":"/coin-set-intro/","h":"#account-model-vs-coin-set-model","p":383},{"i":398,"t":"All logic and state can be stored in one program and one account, simplifying development. It is simple to combine multiple transactions that affect the same dApp in one block. Users and wallets only have to keep track of one account for all of their balances (although the UTXO model can support this).","s":"Benefits of the Account Model","u":"/coin-set-intro/","h":"#benefits-of-the-account-model","p":383},{"i":400,"t":"Very parallelizable since each coin spend is independent. Coin value is split between many coins, increasing sandboxing and security. One program cannot call or affect another. Deterministic operation of every spend. More efficient storage of state (although this depends on implementation). Increased privacy, since one user usually has many coins. Re-applying mempool transactions after a new block is not necessary due to deterministic results.","s":"Benefits of the Coin Set Model","u":"/coin-set-intro/","h":"#benefits-of-the-coin-set-model","p":383},{"i":402,"t":"In the account model used in many blockchains such as Ethereum, Solana and Algorand, balances are kept in accounts. These are permanent data structures which do not get destroyed when they send funds. In this section, we'll focus on Ethereum and how its account model compares with Chia's coin set model.","s":"Coin Set vs Account Model","u":"/coin-set-vs-account/","h":"","p":401},{"i":404,"t":"In terms of keeping track of state, Ethereum's account model functions similarly to legacy banks. Accounts, balances and smart contracts are persisted on the blockchain. Accounts and contracts have money associated with them. The source code governing how money may be spent is a first class object. A typical Ethereum transaction would look like the following: Alice wants to send 1 eth to Bob. To complete this transaction, 1 eth is subtracted from Alice's balance, and 1 eth is added to Bob's balance. There is no need to calculate the history of how Alice acquired 1 eth prior to this transaction. In order for the transaction to be processed, the system only needs to know that Alice's balance was at least 1 eth.","s":"Ethereum's account model","u":"/coin-set-vs-account/","h":"#ethereums-account-model","p":401},{"i":406,"t":"There are no accounts or balances, but rather only coins (see the Coin Set Intro page for more info). Coins are first class objects; they are the only data that is persisted on the blockchain. Each coin has a parent, allowing for its history to be tracked to its coinbase. A typical Chia transaction would look like the following: Alice wants to send 1 XCH to Bob. Alice has five coins in her wallet: four worth 0.2 XCH apiece, and one worth 0.7 XCH. Her wallet automatically selects two of the coins worth 0.2 XCH and the 0.7 XCH coin to be spent. All three coin spends happen simultaneously, along with two new coin creations: one worth 1 XCH which goes to Bob's wallet, and one worth 0.1 XCH which goes to Alice's wallet as \"change.\" Alice now has two coins worth 0.2 XCH and one worth 0.1 XCH. Bob has one coin worth 1 XCH. The total value owned by Alice and Bob has not changed -- it was 1.5 XCH both before and after the transaction was processed. Owner Before After Alice 1.5 XCH (5 coins) 0.5 XCH (3 coin) Bob 0 XCH 1.0 XCH (1 coin) Total 1.5 XCH 1.5 XCH","s":"Chia's coin set model","u":"/coin-set-vs-account/","h":"#chias-coin-set-model","p":401},{"i":409,"t":"Account​ An account only has a balance, so it's difficult to make a logical case that some money should be treated differently than other money. Money is \"mixed\" by default. Coin set​ Coins can be combined by spending them, but they cannot be \"mixed\" by adding a balance to an account. This means that some coins might be viewed differently than others, even if they have the same value. This has already happened with Bitcoin. Due to its high energy consumption, some people have refused to buy bitcoins that can be traced to mining with fossil fuels. This affects Bitcoin's fungibility because not all coins are viewed equally.","s":"Monetary fungibility","u":"/coin-set-vs-account/","h":"#monetary-fungibility","p":401},{"i":411,"t":"Account​ Solidity shares similar paradigms in programming to web development, so there is a large pool of programmers who can learn it fairly quickly. When programming a smart contract, the programmer can simply store all balances in an array. Transactions involve little more than adding to, and subtracting from, balances. All other logic is contained within the same program. It's simple to combine multiple transactions that affect the same program in the same block. Coin set​ Transactions might involve spending and creating many coins, so a programmer must think about the rules governing how coins may be spent, and how coins will interact with each other. This makes programming in Chia more difficult than in Ethereum. However, auditing is much easier in Chia (see the CLVM vs EVM page for more info).","s":"Ease of programming","u":"/coin-set-vs-account/","h":"#ease-of-programming","p":401},{"i":414,"t":"Coin set​ Because verification is built into the coin set model, so is scaling. If a coin's \"owner\" loses the private key required to spend the coin, the coin becomes unspendable. However, the overall system is unaffected, so scaling does not become more difficult. Additionally, because each coin spend is independent, the system is very parallelizable. Account​ If an account's owner loses their private key, then any code or messages referring to that account cannot be processed. This can be propagated across the entire system, making solutions such as sharding more difficult.","s":"Scalability","u":"/coin-set-vs-account/","h":"#scalability","p":401},{"i":416,"t":"Coin set​ With a click of a button, a user can add a new address for each transaction; each new coin can be stored in a different address. This makes blacklisting difficult. Account​ Each user typically has just one account. It's possible to create additional accounts in order to use more than one address. However, high fees typically discourage users from doing this. Also, it's easy to blacklist an ETH address.","s":"Privacy","u":"/coin-set-vs-account/","h":"#privacy","p":401},{"i":418,"t":"Coin set​ Coins can only be spent once, making the results deterministic (if you run the same program multiple times, you'll get the same result each time). Because of this, re-applying mempool transactions after a new block is not necessary. Note, however, that smart coins could be designed such that multiple people could spend the same coin, which would potentially reduce determinism for those coins. Account​ Multiple people can execute the same code within a smart contract. The order of execution could affect the results, which therefore reduces determinism.","s":"Determinism","u":"/coin-set-vs-account/","h":"#determinism","p":401},{"i":420,"t":"Coin set​ Coin value is split between many coins, increasing sandboxing, and therefore security. One program cannot call or affect another. If a coin is hacked, only that coin's owner can have money stolen. Account​ Value is stored within a single account or contract. Multiple people can execute the same smart contract code. If a contract is hacked, everyone who participates could have money stolen.","s":"Sandboxing","u":"/coin-set-vs-account/","h":"#sandboxing","p":401},{"i":422,"t":"Coin set​ Programmable features are not stored directly on chain. Instead, coins use hashing to allow for later verification of their contents. Chia's database is expected to grow by around 30 GB annually, which is roughly the same rate as Bitcoin's. Kryder's Law dictates that storage capacity will grow exponentially in the short-to-medium term, whereas the database will grow linearly. In early 2022, an SSD capable of storing Chia's database cost less than $50. This should hold true for the foreseeable future, even as Chia's database continues to expand. Account​ User account information, as well as transaction data, is small. However, smart contracts are stored on chain. Because of this, Ethereum's database will likely grow more rapidly than Bitcoin's or Chia's.","s":"Database size","u":"/coin-set-vs-account/","h":"#database-size","p":401},{"i":424,"t":"The UTXO and coin set models of accounting are very similar and are often used interchangeably. This is fine in most contexts; coin set is based on UTXO, and there is a much larger difference between the coin set and account models. However, there are a few key differences, which we'll discuss in this section.","s":"Coin Set vs UTXO Model","u":"/coin-set-vs-utxo/","h":"","p":423},{"i":426,"t":"In the UTXO model, transactions are first class objects. Each transaction has an ID and an output number, which is persisted in the system's overall state. In the coin set model, coins are first class objects (everything is a coin). \"Transaction\" is a term used to represent the spending of some coins and the creation of others. Coins are the only information persisted in the system's overall state.","s":"First class objects","u":"/coin-set-vs-utxo/","h":"#first-class-objects","p":423},{"i":428,"t":"In Bitcoin's UTXO model, an individual block's transactions are organized as a Merkle tree, where each transaction in a block is a leaf, and the coinbase transaction is the root. The leaves must be sorted in topological, or natural, order. If transaction B spends an output of transaction A, then both A and B are allowed to occur in the same block, but A must be stored in an earlier position than B in the Merkle tree. The logic required to build such a tree requires a large amount of processing power. (See this Medium article for more info.) In Chia's coin set model, each of a block's transactions occur simultaneously. Chia uses two Merkle trees – one for removing coins, and one for adding them. In a single Chia block, multiple coins can be created, and multiple coins can be spent. Individual coins can even be created and spent in the same block – these are known as ephemeral coins. As long as the rules governing how the coins may be spent are followed, and as long as the total value added and removed is balanced (other than the coinbase coins), the transactions are valid. This design comes with two advantages over UTXO: it removes the complex logic required to build a valid Merkle tree, and it reduces the viability of certain types of MEV such as front-running, back-running, and sandwich attacks.","s":"Transaction/coin processing","u":"/coin-set-vs-utxo/","h":"#transactioncoin-processing","p":423},{"i":430,"t":"Chia uses BLS signatures, which allow for all signatures in a block to be combined, as if each block were a single transaction. This happens non-interactively - the parent of each coin is chosen automatically. For example, if three coins are spent and two are created, typically one of the spent coins will be designated as the parent of both of the new coins. Bitcoin has used signatures based on the Elliptic Curve Digital Signature Algorithm (ECDSA) since its inception. These signatures don't allow for transactions to be aggregated, so each one must be validated independently. As of the Taproot upgrade in 2021, Bitcoin is also able to use Schnorr signatures, which allow for aggregation. Schnorr signatures are an improvement over ECDSA, but they don't offer the ability to combine all signatures in a block into a single signature. They also use large Merkle trees to generate M of N multisigs, and they rely on random numbers to aggregate signatures. The BLS signatures used by Chia fix all of these problems, and more.","s":"Signature type","u":"/coin-set-vs-utxo/","h":"#signature-type","p":423},{"i":432,"t":"When creating smart coins, security concerns should be at the front of your mind. The language is specifically designed to secure money on a network with no centralized authority to enforce rules. The only thing standing in the way of attackers and potentially large sums of money is how you design smart coins.","s":"Security","u":"/coin-set-security/","h":"","p":431},{"i":434,"t":"When you push a transaction, it gets gossiped to other nodes until it finds one who will put it into a block. Every node chooses what will be passed on to the next node. If it likes, it can change some data before it forwards it. This is why the aggregated signature is part of the spend bundle. It allows you to mark data as valid only if there is also a signature that vouches for its correctness. Signatures are how you prevent nodes from changing your transaction in malicious ways. If they do, the spend will no longer be valid. Signing is especially important when looking at solution values. The puzzle reveal is secured by the puzzle hash on the coin. The solution, however, can be anything. Most of the time when you are spending a coin, the output conditions are passed in somehow through the solution. If you don't sign those conditions (or the delegated puzzle that generates them) you must assume that an attacker is going to notice and attempt to substitute their own values. Sometimes, it is necessary to have solution values that logistically cannot be signed, but also should not be changed. In scenarios like these, you should try to have a signed coin use announcements to assert that the coin is being spent with the correct information.","s":"Signing the Solution","u":"/coin-set-security/","h":"#signing","p":431},{"i":436,"t":"Signing is how you prevent nodes from messing with your own spends, but sometimes you want to create coins that will be traded around with specific rules. As a result, you don't know who will be spending the coin, and you don't know if they will be honest. Using inner puzzles, you can enforce rules on your child coins by currying and wrapping tree hashes. However, there are times when you also want to enforce truths about yourself or your parent. This is where the ASSERT_MY_* family of condition opcodes comes in. When you need information (parent_coin_info, puzzle_hash, amount) about your coin to use in the puzzle, it cannot always be curried in by an honest party. Sometimes, it will need to be passed in through the solution. The solution should always be treated as if it is being solved by malicious or careless parties. If any coin information is being passed in, it should be asserted with opcodes to ensure that the network, who can see that information, can confirm it. Keep in mind that ASSERT_MY_COIN_ID will actually implicitly assert all three of the pieces of information in a coin. The same is true of ASSERT_MY_PARENT_ID for parent coins, which is particularly useful since there is no such thing as ASSERT_MY_PARENT_PUZZLE_HASH, for example.","s":"Asserting Coin Information","u":"/coin-set-security/","h":"#asserting","p":431},{"i":438,"t":"Another huge concern when creating your spends is whether they will be valid if parts of them are excluded or reused. This kind of attack is the reason why AGG_SIG_UNSAFE is labeled the way it is. If you sign something with AGG_SIG_UNSAFE, the only data that is being signed is the message you are trying to sign. Once you sign and push it, that signature lives on the blockchain forever. If you later create a puzzle that is locked up with the need for the same signature, an attacker can find the signature you used last time and reuse it. This is why you should try to always use AGG_SIG_ME if possible. Not only does it make you commit to the coin ID in the signature (something that is unique to every spend), but it also commits to the genesis challenge of the network you are on. A revealed signature for a coin on testnet could be replayed in mainnet otherwise. Exclusion should also be a concern at the forefront of your mind. Oftentimes, you will be spending multiple coins in the same bundle, and they should all be tied together into one aggregated signature. If you have good reason not to sign one of them, make sure you know what happens if it gets excluded from the bundle. Furthermore, aggregated signatures can't be disaggregated into smaller signatures unless you have previously signed one of the smaller combinations of public key-message pairs in the bundle. The attacker can exclude the rest of the transactions that contain AGG_SIG conditions and reuse the smaller signature again on the remaining transactions. They can also calculate the remaining aggregated signature and perhaps sign every spend except the one the exclude. This is known as signature subtraction and is another great reason to use AGG_SIG_ME as much as possible.","s":"Replay Attacks","u":"/coin-set-security/","h":"#replay","p":431},{"i":440,"t":"An interesting angle that also has to be considered during the building of your coins is how their security holds up if a party that is spending them has infinite money. This may seem ridiculous except that cryptocurrency enables flash loans to exist which are instant loans of money with no conditions except that they are returned to the owner within the same block. Take for example, a piggybank coin that only allows you to withdraw funds once the amount of the piggybank has grown to a determined savings goal. If a person wants to retrieve their funds early, they can borrow money equal to their savings goal, cash out the piggybank, and then return the money that they borrowed. There's also potential to use vast sums of borrowed money to influence the price of something, if that price is calculated programmatically. If you have enough money, you can singularly simulate a bunch of trades to influence the price calculation to the price you desire, make a transaction at that price, and then return all of the money you borrowed to simulate trading while keeping the profits. Fortunately, this attack has a relatively easy fix, and that is to add an (ASSERT_HEIGHT_RELATIVE 1) condition to prevent the money from being returned in the same block.","s":"\"Flash Loan from God\" Attack","u":"/coin-set-security/","h":"#flash-loans","p":431},{"i":442,"t":"Remember to think about when puzzles and solutions are revealed. They are revealed only at spend time of the coin that is committed to them. The only thing that the network sees prior to that is the parent coin and the puzzle hash. This can be an advantage, since you can hide sensitive information for spending the coin inside the puzzle hash before it is ever revealed. However, once the puzzle is revealed, it's revealed forever, so that sensitive information cannot be considered sensitive again. Also keep in mind that if a parent coin is currying information to its child coin before it creates it, that will be public before the child coin is spent. For some wallets, this is an advantage since you may want certain data about a coin's puzzle to calculate whether or not it's yours. However, if you were trying to use a plain-text password, that won't be very secure. Instead, make sure to pre-commit to things with hashes and then assert that they are revealed correctly later.","s":"Puzzle and Solution Reveals","u":"/coin-set-security/","h":"#reveals","p":431},{"i":444,"t":"Hopefully you have a better idea of what risks are involved when creating a smart coin. It's very worth your time to try and exploit your puzzles by passing in dangerous solutions or leaving out transactions/signatures. You're not just trying to protect against bad actors, but also against people accidentally bricking their coins. Puzzles are usually pretty permanent, so it's worth the extra time.","s":"Conclusion","u":"/coin-set-security/","h":"#conclusion","p":431},{"i":446,"t":"This page has been moved. A comprehensive list of Chialisp conditions is now available on our site dedicated to Chialisp: https://chialisp.com/conditions/","s":"Conditions","u":"/conditions/","h":"","p":445},{"i":448,"t":"In this lesson, we dive into the coinset model basics and learn what it means to spend a coin in Chia.","s":"Coin-Set Model Intro","u":"/coinset-basics/","h":"","p":447},{"i":450,"t":"Coin Contents: Learn what data is stored in a coin. Coin Puzzle: Understand the role of a coins puzzle. Coin Solution: Learn about the importance of a coins solution.","s":"Learning objectives","u":"/coinset-basics/","h":"#learning-objectives","p":447},{"i":453,"t":"Expand for the full script 00:00 Chia uses the \"coinset model\" to keep track of the blockchain's state. 00:10 In this model, every transaction is represented by a \"coin\" that contains a value, the rules by which the coin can be spent, and signature authorizing the spend. 00:20 What this means is that a \"coin\" can have any value (in mojo) and as long as the rules are satisfied, anyone can spend the coin. 00:30 There are no accounts represented in the system. When a coin is created, the value is locked away in that coin and is inaccessible until the coin is spent, 00:40 at which point new coins will be created with values equal to the original. For example, if I want to send 1 XCH to someone else, 00:50 I will create a coin with a value of 1 XCH (or 1 trillion mojos), and set the conditions of the coin to only allow the coin to be spent if given the signature of the other person. 01:00 This in effect \"sends\" the coin to the other person, because they now control what happens to it. When they want to spend the coin, they provide the correct signature, and a new coin is created, 01:10 with a value of 1 XCH, itself containing it's own rules of how it can be spent. In this way, each coin is only ever used once. 01:20 Once it has been spent, it creates a new coin. In Chia, we call the set of conditions needed to unlock the coin the 'puzzle', and the provided data to unlock the coin is the 'solution'. 01:30 The coin is represented in the chain as a hash of three attributes, the parent coin ID, (or the ID of the previous coin that created this new one), 01:40 the hash of the puzzle that contains the conditions, and the value of the coin. 01:50","s":"Script","u":"/coinset-basics/","h":"#script","p":447},{"i":455,"t":"Coinset vs Account: Chia adopts the coinset model where everything is a coin that has its own set of rules, more information about the coinset model can be found here. This differs from the account model which instead uses contracts (or accounts) to represent users balances and these balances are what is stored on the chain (as opposed to coins and those coins values). Puzzles: All requirements for spending a coin are contained in the coins puzzle. These puzzles can be simple or complex and effect how, when, and by whom the coin can be spent. The coins puzzle must be determined at the coins creation and cannot be altered thereafter. Solutions: The ability to spend a coin is based on the users ability to provide a valid solution for the coins puzzle.","s":"Common gotchas","u":"/coinset-basics/","h":"#common-gotchas","p":447},{"i":457,"t":"Question 1 - Coinset What data is contained in coins on the Chia Blockchain? (Select all that apply) A. Amount (or value) B. User account number C. Puzzle Hash D. Parent Coin ID Answer (expand when ready to see the answer) A. Amount (or value) C. Puzzle Hash D. Parent Coin ID Question 2 - Puzzle True or False: All puzzles on the Chia blockchain are the same. Answer (expand when ready to see the answer) False, while coin puzzles might be similar (such as the standard transaction) the parameters in puzzles vary greatly (who can spend the coin, how it can be spent, other special rules). Question 3 - Solutions Do all coin solutions require a signature? Answer (expand when ready to see the answer) No, it is possible to create coins that do not require any signature or other spender validation (anyone can spend coins) or to even lock coins using non-signature restrictions (such as password protected coins). Question 4 - Coinset vs Account Model Does Chia adopt the coinset model or the account model? Answer (expand when ready to see the answer) The coinset model.","s":"Knowledge check","u":"/coinset-basics/","h":"#knowledge-check","p":447},{"i":460,"t":"Detailed coinset and account model comparisons: details the differences between the coinset and account models including how these differences effect transactions. Overview of coin puzzles: overviews the role of a coins puzzle and the effect it has on the coins abiltiy to be spent. Security recommendations for signing solutions: reviews the recommendations for securing puzzles by requiring that solutions are signed to limit those who can spend the coin. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/coinset-basics/","h":"#links","p":447},{"i":462,"t":"Cost is a unit of measurement that represents resources expended to record a transaction in a block. It is a sum of a measure of computing power required to execute the programs within it, plus the physical drive space (bytes) required to store data on each node's machine. info The maximum cost per block is 11,000,000,000 (11 billion), which is typically equivalent to around 400 KB of space. However, not every block is completely full. It is important to keep the cost usage of programs on the Chia blockchain as low as possible, to minimize the network pressure and resulting fees incurred.","s":"Costs","u":"/coin-set-costs/","h":"","p":461},{"i":464,"t":"Cost has several components. First, every CLVM program uses a certain amount of cost during execution, based on the operators and the values they are called on. You can refer to the Cost page on the Chialisp website to learn more about the cost of various CLVM operators. Additionally, certain conditions in a coin spend have a cost associated with them as well. A few common examples are CREATE_COIN and AGG_SIG_ME, which are expensive operations. Finally, each byte of data that gets added to the blockchain has a cost of 12,000. Spend bundles are created using a serialized format of CLVM programs, calculated by running opc on the original CLVM program. Each two-digit pair of this format is equivalent to one byte, which costs 12,000 to store on the blockchain. Aside from cost, the maximum number of atoms and pairs (counted separately) in a CLVM program is 2^31 apiece. If this threshold is exceeded, the program will terminate. However, this is likely a moot point, since it's extremely unlikely to write a program with this many atoms or pairs without exceeding the maximum cost per block.","s":"Cost Calculation","u":"/coin-set-costs/","h":"#cost-calculation","p":461},{"i":466,"t":"The minimum spec machine to run a full node is the Raspberry Pi 4. How do we know if this machine can stay synced? The worst case scenario occurs when multiple full transaction blocks are created with the minimum amount of time between them. This will temporarily put maximum load on the system. If the Pi can stay synced in this scenario, then it easily should be able to stay synced under normal load. The first question we must answer is how much time elapses between transaction blocks. Chia's consensus mandates that at least three signage points must be reached before infusion_iterations may occur, so the minimum time between blocks is the following: 3 signage points * signage point time 3 signage points * (600 seconds per sub-slot / 64 signage points per sub-slot) 3 signage points * 9.375 seconds per signage point Which is 28.125 seconds. note The average time between transaction blocks is 51.95 seconds. The lower a given time interval between transaction blocks (down to 28.125 seconds), the lower the probability of a transaction block being created in that time interval. A transaction block is considered \"full\" when it contains 2000 outputs. For this document, we'll assume this translates to 1000 vanilla transactions, each with two inputs and two outputs. This would give the network an average of 19.25 (1000/51.95) transactions per second. note A transaction with only one input and one output is also possible. In theory, a block could therefore hold up to 2000 transactions, in which case the network would process an average of 38.5 (2000/51.95) transactions per second. With this goal in mind, Chia has created a generator program that processes 2000 compressed inputs and outputs. This program simulates a \"full block\". To calculate the total amount of time for a Raspberry Pi 4 to process a full block, we must take into account three factors: The time required to run the generator program (2000 inputs and outputs) The Raspberry Pi 4 accomplishes this in 5.2 seconds The time required to validate 2000 public keys 2.2 seconds The time required to validate 2000 aggregate signatures 10.63 seconds Therefore, the total amount of time required for a Raspberry Pi 4 to process a full block is 5.2 + 2.2 + 10.63 = 18.03 seconds. This is 10.095 seconds faster than the minimum time between blocks, and 33.92 seconds faster than the average. When considering other factors such as network latency and time required to fetch a full proof (640 ms on a slow HDD), this still allows plenty of leeway for a Raspberry Pi 4 to stay synced and collect farming rewards.","s":"Minimum Specs - Farming","u":"/coin-set-costs/","h":"#farming-spec","p":461},{"i":468,"t":"As a benchmark, we use the Raspberry Pi 4, Chia's minimum spec machine for farming. A Raspberry Pi 4 has four cores, so it can validate a pre-existing block in 18.03 / 4 = 4.5075 seconds, which is around 11.5 times the average real-time rate of 51.95 seconds. Even in the worst-case scenario where every transaction block is full, the Pi can sync faster than the chain is being created.","s":"Minimum Specs - Syncing","u":"/coin-set-costs/","h":"#syncing-specs","p":461},{"i":470,"t":"Now that we've established that a Raspberry Pi 4 can, indeed, sync and farm, even when every transaction block is full, we'll calculate the maximum cost per block. There are three categories that go into determining a block's maximum cost: Generator program cost, which is split into two parts Execution cost Signature validation cost Generator program size (each byte has a cost) Generator program coins (each new coin has a cost) In the case of calculating the maximum cost, these three categories are to be given equal weight. We'll go through each of the categories individually. Generator Execution​ (This is the first half of 1, above.) An Intel Macbook Pro was used as a reference platform to determine baseline costs based on CPU usage. The costs were then hand-tweaked for various reasons: To ascribe additional cost to operations that allocate memory, i.e. the operand per-byte cost was inflated. This additional cost is called MALLOC_PER_BYTE_COST and amounts to 10 cost per byte. The especially CPU intensive BLS operations (point_add and pubkey_for_exp) had their cost inflated to not differ too much from the Raspberry Pi 4. Some operations that do not allocate memory and end up being common in relatively simple programs had their cost deflated. Specifically, if, cons, listp, first, and rest. The result is that the generator program has an execution cost of 1 317 054 957. Generator Signature Validation​ (This is the second half of 1, above.) The signature validation cost is based on computation time. BLS operations involve public key and aggregate signature validation, which are multiplied by the number of outputs. Time per public key validation: 0.179370 ms Time per aggregate signature validation: 0.972140 ms Total time for 2000 key and signature validations: (0.179370 + 0.972140) * 2000 = 2303.02 ms Each 1 cost is designed to require 1 nanosecond, so we need to multiply the result by 1 million (ns/ms). Cost for the generator program's BLS operations: 2303.02 * 1 000 000 = 2 303 020 000. Using this info, we can also calculate the cost of each AGG_SIG_UNSAFE and AGG_SIG_ME condition in all CLVM programs: Cost per BLS condition: (0.179370 + 0.972140) * 1 000 000 = 1 151 510. We round this number up to 1 200 000.","s":"Maximum Block Cost","u":"/coin-set-costs/","h":"#max-block-cost","p":461},{"i":472,"t":"(This is the total cost of 1, above.) Taking the previous two calculations into account, the total cost to execute and run the BLS operations of the generator program is: 1 317 054 957 + 2 303 020 000 = 3 620 074 957.","s":"Generator Cost","u":"/coin-set-costs/","h":"#generator-cost","p":461},{"i":474,"t":"(This is the cost of 2, above.) We know that 1, 2, and 3 all will be assigned equal maximum costs, which we've already established is 3 620 074 957. This is the size-based cost of the generator program. The generator program itself is 298 249 bytes. Each byte, therefore has a cost of 3 620 074 957 / 298 249 = 12 137.76. We round this number to 12 000 per byte. This is the cost per bye of all CLVM programs.","s":"Generator Program Size","u":"/coin-set-costs/","h":"#generator-size","p":461},{"i":476,"t":"(This is the cost of 3, above.) Just like the previous calculation, the total cost of the generator program's coins is 3 620 074 957. The generator program creates 2000 coins, so the cost per CREATE_COIN in all CLVM programs is 3 620 074 957 / 2000 = 1 810 037.4785. We round this number to 1 800 000.","s":"Generator Program Coins","u":"/coin-set-costs/","h":"#generator-program-coins","p":461},{"i":478,"t":"To calculate the maximum cost per block, we simply add the generator program's execution, size, and coin costs: Theoretical maximum cost per block: 3 620 074 957 + 3 620 074 957 + 3 620 074 957 = 10 860 224 871 We round this number to 11 000 000 000.","s":"Maximum Cost Per Block","u":"/coin-set-costs/","h":"#maximum-cost-per-block","p":461},{"i":480,"t":"The theoretical maximum size of a single block is maximum cost per block / cost per byte, or 11 000 000 000 / 12 000 = 916 667 bytes. However, this number ignores the costs of all operators. If you want a CLVM program to do anything useful, the maximum size would be closer to 400 KB. Even this number is not realistic because it assumes that a single program will take up an entire block. The maximum number of vanilla transactions (with two outputs) per block is 1000. Therefore, if there is fee pressure on Chia's blockchain, a 400 KB program would need to include a larger fee than the top 1000 vanilla transactions in the mempool -- combined -- in order for a farmer to include it.","s":"Maximum Block Size","u":"/coin-set-costs/","h":"#maximum-block-size","p":461},{"i":482,"t":"The below chart contains costs for various transactions on the blockchain, each of these assumes the inputs and outputs have been optimized and represent a best case scenario. note The minimum effective fee represents 5 x the clvm cost and is the minimum fee recognized by the default consensus rules (any fee less would be the same as 1 mojo). This means one needs to use at least the fees listed below during moderate fee pressure but greater fees might be needed for time sensitive transactions to process in a timely manner. Please note that the costs and fees listed are for vanilla versions of these transactions, they can vary based on the number of input and output coins needed so consider these the bare minimum. Transactions with a '*' are listed with a fee of 3 x the minimum effective fee. This is to ensure the fees are more realistic for how coins are distributed in users wallets but note that vanilla versions of these would be 1/3 that which is listed. Transaction Type clvm Cost Minimum Effective Fee Full Block (with 50% cap) 5,500,000,000 27,500,000,000 mojo (0.0275 xch) Standard Transaction 6,000,000 90,000,000 mojo (0.00009 xch) * PlotNFT Creation 18,000,000 90,000,000 mojo (0.00009 xch) Minting NFT with DID 123,000,000 615,000,000 mojo (0.000615 xch) Minting NFT without DID 53,000,000 265,000,000 mojo (0.000265 xch) Adding URI to NFT with DID 71,000,000 355,000,000 mojo (0.000355 xch) Adding URI to NFT without DID 41,000,000 205,000,000 mojo (0.000205 xch) Transfer NFT with DID 67,000,000 335,000,000 mojo (0.000335 xch) Assign DID to NFT 107,000,000 535,000,000 mojo (0.000535 xch) Send Clawback Transaction 10,000,000 150,000,000 mojo (0.00015 xch) * Claim Clawback Transaction 1,400,000 7,000,000 mojo (.000007 xch) Clawback Clawback Transaction 15,600,000 75,800,000 mojo (.0000758 xch) Combine 500 Farming Rewards 3,100,000,000 15,500,000,000 mojo (.0155 xch) Split 1 Coin into 2 11,000,000 55,000,000 mojo (.000055 xch) Cat Transaction 37,000,000 555,000,000 mojo (.000555 xch) *","s":"Estimated Transaction Costs","u":"/coin-set-costs/","h":"#estimated-transaction-costs","p":461},{"i":485,"t":"The safety of Chia's consensus is similar to that of other Nakamoto consensus algorithms like Bitcoin. There is no guaranteed finality, but the more confirmations a transaction has, the safer it is. A transaction needs a certain number of confirmations for a receiver to assume that it cannot be re-orged, under the < 42.7% (* vdf advantage) colluding assumption. Since farmers can theoretically sign multiple blocks at the same height, more confirmations should be used in Chia than in Bitcoin. However, Chia doesn't require anywhere near as much clock time as Bitcoin for a transaction to be considered safe. In Chia, there are two main reasons to wait for a certain number of confirmations: To be confident there won't be a chain re-org. As discussed in the Foliage page, a small re-org is a natural occurrence in blockchains, though rare in Chia. To be confident that there won't be a chain re-org, you should wait for six blocks to be created (around two minutes after the first confirmation). Just in case there is a foliage re-org attack, as described in the Attacks and Countermeasures page. This type of attack would require an attacker to discover the identity of -- and successfully bribe -- a large and consecutive number of anonymous block winners. This attack would be difficult to pull off, so it is expected to be extremely rare, if it is ever even attempted. If you want to be nearly certain that even a successful foliage re-org attack won't reverse your transaction, you should wait for 32 blocks to be created (around ten minutes after the first confirmation). It's worth noting that the 54% requirement only pertains to non-colluding space, rather than honest farming space. Profit-seeking farmers gain very little by deviating from the protocol. There is the added assumption that at least one fast timelord must be connected to the non-colluding portion of the network, and that the attacker's timelord is not significantly faster. A redundant set of ASIC timelords have been distributed globally. It will extremely difficult and costly to build a significantly faster timelord.","s":"Safety","u":"/consensus-analysis/","h":"#safety","p":483},{"i":487,"t":"The liveness of the Chia consensus system is one of its greatest strengths. Like Bitcoin, the Chia system continues advancing even when a majority of the space goes offline. Unlike bitcoin, though, the system does not slow down significantly when this happens, since not all blocks are transaction blocks. Therefore transaction throughput does not drop significantly if many participants go offline. The network will continue to advance even if only one farmer is online, although there will be many empty slots, since a transaction block can only be created if it's below the sub-slot iterations threshold. Of course, in the event of a long-term network split, the effects are that one chain must be chosen, so there can be large re-orgs in this case. The network will automatically choose the heavier chain, similar to PoW.","s":"Liveness","u":"/consensus-analysis/","h":"#liveness","p":483},{"i":489,"t":"(\"+\" means a pro for Chia) (+) Different resources. PoSpace is ASIC-resistant and therefore anyone can participate in farming. (+) Hopefully more decentralized. (Analysis in mainnet's first year shows this to be the case.) (+) Easy merge farming. Other cryptocurrencies can use the same format, and everyone can share the space (assuming their farming computers have sufficient disk space and memory). (Note that the blockchain with the largest netspace will probably be the only secure one, since the farmers can attack smaller ones. This is especially true of blockchains with less than 50% of the top chain's netspace -- the remaining farmers who have not joined the smaller chain could collude to join, and attack, that chain.) (+) Minimum energy used, since only a few nodes run VDFs, and these are not parallelized. Very low marginal cost to farm. (+) More consistent transaction block times (targeted average is one per 52 seconds, as discussed in the Foliage page). (+) Less susceptible to selfish mining attacks. (+) Smaller orphan rates and forks, since blocks can be included in parallel. (+) Continues to advance at nearly the same rate when space decreases, since only around 1/3 of blocks include transactions. PoW Nakamoto Consensus slows down linearly when hashrate drops. (-) Drawback of more potential attackers (large companies). Hardware is general purpose, and therefore attackers could switch between farming, attacking, and using for data storage. (-) If an attacker acquires a significantly faster VDF, they could gain a space advantage. (-) More complexity due to sub slots and VDFs, potentially more cryptographic assumptions.","s":"Comparison to Nakamoto PoW","u":"/consensus-analysis/","h":"#comparison-to-nakamoto-pow","p":483},{"i":491,"t":"Chia's consensus algorithm could also be used for Proof of Stake, where the space farmers are replaced by stakers who own coins in the system. The benefit would be the ability to slash (delete people's stake), and farmers would have \"skin in the game\", but there are some concerns if Proof of Stake is used. (\"+\" means benefit for using space vs stake). (+) An attacker can transfer their stake to someone else, but fork the chain right before their stake is transferred. In this alternate chain, the attacker still has all of their stake, and can therefore advance the chain. The \"nothing at stake\" issue is different in PoS than in PoSpace since creating a PoSpace requires a physical resource (hard drive space), while creating a PoS only requires a key. (+) An attacker can guarantee their share of the whole monetary supply, by staking their rewards (the rich get richer), since the total number of coins is limited. (+) There might be situations where the attacker can grind on many different ways to transfer stake. Perhaps this can be mitigated by requiring a long period before stake becomes active. (+) Registration is required, you cannot participate in proof of stake until you sign up. This reduces privacy and scalability (how many people can stake). (+) Higher barrier to entry: security deposits and slashing make it difficult for small users to participate. Slashing can be a huge risk for participants in the network. Centralized custodians lead to a less distributed set of participants. (+) Some assumptions are required to perform light client syncs in Proof of Stake. Source: Flyclient paper. (-) Skin in the game: with PoS, the consensus can slash people's stake, and also requires some investment into the system (exposure to price). In Proof of Space, hard drives can be used for other purposes and there is no ability to \"slash\" people's hardware.","s":"Comparison to Proof of Stake","u":"/consensus-analysis/","h":"#comparison-to-proof-of-stake","p":483},{"i":493,"t":"Proof of Space could also be used as a Sybil-resistant mechanism in order to bootstrap a Byzantine consensus (k-agreement) system. Filecoin, and many Proof of Stake systems use aspects of Byzantine consensus. The pros and cons of using Chia Nakamoto Consensus vs Byzantine consensus, which vary from algorithm to algorithm (\"+\" means a pro for Chia): (+) Much simpler. (+) No registration requirement. (+) No scalability requirement (scales to millions of farmers). (+) More censorship resistant. As long as a small portion of the farming space does not censor, eventually you can get into the blockchain. (+) No liveness requirements, potentially fewer network assumptions. (+) Fully objective (A node can compare chain 1 and chain 2, and immediately know which one is heavier). No need for checkpoints with ⅔ consensus. (+) Better light client support. See the Flyclient paper for more info. (-) No finality, only probabilistic. (-) Need to wait longer for transaction confirmations (related to no finality). (-) Less consistent block times and transaction throughput.","s":"Comparison to BFT consensus algorithms","u":"/consensus-analysis/","h":"#comparison-to-bft-consensus-algorithms","p":483},{"i":495,"t":"The Chia consensus algorithm relies on timelords running VDFs for periods of time called sub-slots, which are adjusted periodically (and automatically) to take around 10 minutes. During every sub-slot, challenges are released by timelords, and a sort of mini lottery starts, where farmers check their plots for proofs of space. When farmers find a proof of space that qualifies, they broadcast it to the network. The difficulty adjusts automatically to target 32 winning proofs for the entire network in each sub-slot, or about one winner every 18.75 seconds on average (32 winners per 600 seconds). The winning proofs are infused into the VDF at different times within the sub-slot. info A sub-slot is always targeted to last 10 minutes. There is also a period of time called a slot. Typically, a slot and a sub-slot are exactly the same thing. However, in order to prevent long-range attacks, slots are required to have at least 16 blocks (and sub-slots are not). If a sub-slot ends with fewer than 16 blocks having been created, the same slot must continue for another sub-slot. See the Overflow Blocks and Weight page (minimum block requirement) for more info. The consensus requires farmers to follow the heaviest chain, which is the chain that has the highest accumulated difficulty (usually the chain with the most blocks). Figure 4: Three sub-slots. The x axis represents time. Dotted lines represent VDF execution, advancing in time from left to right. Arrows represent hash dependencies (an object which points to another object includes the hash of the second object). In figure 4, we can see three challenge points, c1, c2, and c3. At the these points timelords create challenges (256-bit hashes) which are provided as input to VDFs. Timelords take these hashes, and start computing a VDF on this challenge, for the specified number of iterations. In this example, each slot is 100,000,000 iterations. When the VDF is finished, the timelord publishes the new challenge and the proof of the VDF. An infusion of end-of-slot information happens at the end of each sub-slot. A challenge is always a 256-bit hash. The base info that is always included in this hash is the challenge chain VDF. However, the infused challenge chain, SubEpochSummary, difficulty, and sub slot iters might also be included, depending on where we are in the epoch cycle: class ChallengeChainSubSlot(Streamable): challenge_chain_end_of_slot_vdf: VDFInfo infused_challenge_chain_sub_slot_hash: Optional[bytes32] # Only at the end of a slot subepoch_summary_hash: Optional[bytes32] # Only once per sub-epoch, and one sub-epoch delayed new_sub_slot_iters: Optional[uint64] # Only at the end of epoch, sub-epoch, and slot new_difficulty: Optional[uint64] # Only at the end of epoch, sub-epoch, and slot Sub-slot: a segment of a fixed number of VDF iterations, subject to periodic work difficulty adjustments, which automatically target a time of 10 minutes. Sub-slot iterations: determines how many VDF iterations each sub-slot must have. This number is periodically adjusted. Challenge: a sha256 output string. It is used as a proof-of-space challenge for farmers' plots. It is also used for the challenge chain VDF, and is sometimes referred to as a challenge hash. As you can see in Figure 4, there are three VDFs being executed concurrently, each of which serves a different purpose. They are explained in detail in the Three VDF Chains page. In the networking protocol, the three VDF proofs are usually passed around together, in what is called an end of sub-slot bundle.","s":"Challenges","u":"/consensus-challenges/","h":"","p":494},{"i":497,"t":"The genesis challenge is the first challenge on a network that uses the Proof of Space and Time consensus. The timelords use this challenge to calculate and broadcast the very first signage point. Chia's mainnet, testnets and simulated networks each have their own unique genesis challenge. The genesis challenge is created arbitrarily, by hashing a preimage. In the case of Chia's mainnet, the preimage included the hash of Bitcoin block 675317, which was mined shortly prior to the launch of Chia's network. It also included the following message from Bram: \"Operational error causes Fed payment system to crash\" We stand on the shoulders of giants, now let's get farming! The exact text of the preimage for Chia's mainnet is: bitcoin_hash:0000000000000000000942b19f16b83a316acfa31e067c0b766c4dda034dc37f,bram_message:\"Operational error causes Fed payment system to crash\" We stand on the shoulders of giants, now let's get farming! The SHA256 hash of this preimage is: ccd5bb71183532bff220ba46c268991a3ff07eb358e8255a65c30a2dce0e5fbb This hash is the genesis challenge for Chia's mainnet. The complete JSON data for the genesis challenge is located here. The first block on Chia's mainnet (block 0) was created at signage point 2; it points to the genesis challenge as its previous block. The prefarm was then distributed in block 1, at signage point 7. The genesis challenge for other networks can be found opening config.yaml (located in ~/.chia/mainnet/config for Chia's mainnet and testnets) and searching for GENESIS_CHALLENGE: in the section corresponding to the desired network.","s":"Genesis Challenge","u":"/consensus-challenges/","h":"#genesis-challenge","p":494},{"i":499,"t":"In this lesson, we review the basics of consensus, the process by which to determine the true state of a blockchain.","s":"How Chia Consensus Works","u":"/consensus-basics/","h":"","p":498},{"i":501,"t":"Farmers: Understand the basic role of farmers in providing proofs of space. Timelords: Understand the basic role of timelords in providing proofs of time. Plot Filter: Understand the basic role of the plot filter and its effect on the eligibility of proofs of space.","s":"Learning objectives","u":"/consensus-basics/","h":"#learning-objectives","p":498},{"i":504,"t":"Expand for the full script 00:00 Consensus is the process by which to determine the true state of a blockchain. In short, by randomly selecting which node authorizes a new block, it becomes difficult for a bad actor to inject a false truth to the system. 00:20 With Chia, the consensus method is called Proof of Space and Time. Nodes begin by pre-generating hashes to store on spare disk space, called \"plots\". While this takes a lot of work, the work is only done once, and the results are stored and referenced continuously. 00:40 We call these nodes \"Farmers\". The Timelord is a program that broadcasts a proof of time to the network to first prove that time has passed since the last challenge, and then to generate a new challenge to distribute to the Farmers. This challenge is what determines the winner of the current block. 01:00 Next, a plot filter is implemented that automatically disqualifies a subset of plots. This further randomizes the winner, and is implemented fairly so each Farmer has the same chance of passing the filter. If the filter is passed, the Farmer will check their plots to find a quality proof of space, 01:20 and submit it to the chain. If the proof is the highest quality, the Farmer is granted authority to process and add the block to the chain, and rewarded with XCH. This consensus method maintains trustless security through high-decentralization while remaining energy efficient. 01:40","s":"Script","u":"/consensus-basics/","h":"#script","p":498},{"i":506,"t":"Proof of Space: Chia relies on Proof of Space where the user stores deterministic x value tables in \"plots\" not to be confused with Proof of Capacity (PoC) where users store data of other network participants (like filecoin). Timelords: Timelords play the role of issuing challenges, verifying proofs of space, and infusing blocks to the chain. Farmers submit their Proofs of Space to Timelords but it is the Timelords that infuse blocks. Plot Filter: The plot filter in Chia consensus automatically disqualifies a portion of plots from being valid Proofs of Space for a specific challenge, these plots can contain valid Proofs of Space for future challenges.","s":"Common gotchas","u":"/consensus-basics/","h":"#common-gotchas","p":498},{"i":508,"t":"Question 1 - Consensus Method What is the consensus method used by Chia? A: Proof of Work B: Proof of Stake C: Proof of Space and Time D: Proof of Plots Answer (expand when ready to see the answer) C: Proof of Space and Time Question 2 - Proof of Time What system is used to prove that time is passing? A: Farmer B: Timelord C: Plot D: Node Answer (expand when ready to see the answer) B: Timelord Question 3 - Proofs of Space What does a farmer check for valid proofs of space? Answer (expand when ready to see the answer) Plots (deterministic x-value tables) Question 4 - Quality Proofs What is the current (as of December 2023) ratio of plots that contain eligible proofs of space and what is the name of this ratio? Answer (expand when ready to see the answer) 1/512 , the plot filter.","s":"Knowledge check","u":"/consensus-basics/","h":"#knowledge-check","p":498},{"i":511,"t":"Consensus detailed documentation: details the Chia consensus including proofs of space and time, timelords, vdfs, and more. Farming basics: overviews the farming process and how to get started. Timelords detailed documentation: details the timelords role in the consensus model. Plot filter calculations: overviews the process by which the plot filter effects the number of plots containing eligible proofs. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/consensus-basics/","h":"#links","p":498},{"i":514,"t":"In a majority attack, an attacker creates an alternate chain which eventually reaches a higher weight than the honest chain, and forces users to re-org. This attack is present on many blockchain networks including Chia's, as well as on Proof-of-Work systems. It is colloquially known as a \"51% attack\" because the attacker must control more than half of the blockchain's resources (hashrate for PoW, netspace for PoST) in order to succeed. Chia's consensus makes this attack more complex to evaluate than in Proof-of-Work systems. In analyzing this attack, there are several variables at play: Number of timelords (regardless of speed) The attacker must control at least one timelord for the attack to be possible. With exactly one timelord, the attacker can only build one private chain. With an unbounded number of timelords, the attacker can build multiple chains simultaneously, keeping the best one while discarding the rest. This allows the attacker to create slots with fewer blocks, giving them a \"double-dip\" advantage, discussed in detail below. Timelord speed (regardless of number) If the attacker has a single timelord, the amount of storage required for the attack is directly correlated to the speed of the attacker's timelord relative to the speed of the fastest honest timelord on the network. For example (ceteris paribus), if the attacker's timelord is twice as fast as the fastest honest timelord on the network, then the attacker's space will be twice as \"valuable.\" Additionally, the double-dip advantage will increase as the timelord's speed increases. However, due to the minimum block requirement, this advantage will hit its maximum limit with a timelord that is somewhat less than twice as fast as the fastest honest timelord on the network. Also, multiple timelords are required to gain any double-dip advantage at all. Duration of attack For attacks lasting less than one epoch (~4608 blocks or 1 day), we must assume the worst case for the attacker's double-dip advantage, based on the speed and number of timelords. For attacks lasting one epoch or longer, the minimum double-dip advantage can always be used. This is because the difficulty will adjust during the attack, so the attacker will lose the ability to create slots with fewer blocks. Before we can evaluate the percentage requirements for various scenarios, we must first calculate the range for the double-dip advantage. The paper Proof-of-Stake Longest Chain Protocols: Security vs Predictability outlines the equation to derive the minimum percentage of the network space an attacker would be required to have in order to undertake a majority attack, for chains using between 1 and 10 consecutive blocks with the same challenge. However, Chia uses a larger -- and variable -- amount of consecutive blocks with the same challenge. Because of this, we must solve the equation for two additional values: 16 -- This is the minimum number of blocks in a slot. (See the Overflow Blocks and Weight page for more info.) In the worst-case scenario, an attacker with an unbounded number of fast timelords could theoretically create a chain that always uses this minimum number, as explained in the next section. 32 -- This is the targeted number of blocks per sub-slot. (See the Challenges page for more info.) There will be some natural variance in this number, but an attacker who does not have the fastest timelord will not be able to manipulate it. Here's the code to solve for these values in Wolfram alpha, where c is the number of consecutive blocks with the same challenge: % Wolfram % solve q=-(c*p)/(ln(-p)+(c-1)ln(1-p)) , -ln(-p)-(c-1)ln(1-p)=-1+(c-1)*(p/(1-p)), c=16 ,f=1/(1+q) % Solution over the reals: p≈-0.438787 ∧ q≈1.34313 c=32 % Solution over the reals:p≈-0.616585 ∧ q≈1.4678 c=16 % 1/(1+1.4678)= 0.405219 % 1/(1+1.34313) = 0.4267795 Using DD to represent the double-dip advantage, With a single timelord, DD is always 1 (no advantage), regardless of the timelord's speed. This is because the attacker will only be able to build a single private chain. With an unbounded number of timelords, DD will exist in a range, such that 1.34313 < DD < 1.4678. This range has a maximum value due to the minimum of 16 blocks per slot. In addition to DD, we'll use the following variables in our calculations: SH is the total space of the honest nodes on the network VH is the speed of the fastest honest timelord (VDF) SA is the attacker's total space VA is the speed of the attacker's timelord (VDF) Using these variables, the formula to calculate when an attacker is able to create a chain at the same speed as the honest chain is: SH * VH = SA * VA * DD If we normalize the network's honest space and fastest timelord to equal 1, then in order for the attack to succeed, the product of the attacker's space, timelord speed, and double-dip advantage must be at least 1: SA * VA * DD >= 1 The formula to calculate the minimum SA then becomes: SA = 1 / (VA * DD) Finally, the formula to calculate the minimum netspace percentage required for the attack is: % = (SA / (1 + SA)) * 100 The following table shows the minimum required proportion of the total netspace an attacker must have in order to succeed in a majority attack. This table is valid for attacks lasting any amount of time, though sometimes it's overly conservative for attacks lasting more than one epoch. It uses fixed values for the first two columns. Number of Timelords VA (relative to VH) DD SA Percent of netspace required Comment 0 N/A 1 ∞ N/A Without a timelord, the attack is not possible. 1 0.5 1 2 66.7% With a 0.5x timelord, the attacker must control twice as much space as the rest of the network combined. ∞ 0.5 1.34313 1.489 59.8% With infinite 0.5x timelords, the attacker gains a double-dip advantage, so less space is required versus having a single timelord of the same speed. 1 1 1 1 50.0% If the attacker has one timelord that's tied with the fastest honest timelord, then the attacker must control more space than the network's honest space. ∞ 1 1.34313 0.745 42.7% With infinite timelords tied with the fastest honest timelord on the network, the attacker gains a double-dip advantage. 1 2 1 0.5 33.3% If the attacker has one timelord that's twice as fast as the fastest honest timelord, the attacker must control half as much space as the rest of the network. ∞ 2 1.4678 0.341 25.4% With infinite 2x timelords, the attacker gains the maximum double-dip advantage. For attacks lasting longer than one epoch, DD will not exceed 1.34313. In such an attack, the final row from the preceding table will change to the following: Number of Timelords VA (relative to VH) DD SA Percent of netspace required Comment ∞ 2 1.34313 0.372 27.1% If the attack longer than one epoch, the double-dip advantage will be minimized. Note that if we continue to increase VA, DD will always remain at 1.4678 for the first table, and 1.34313 for the second table. The percent of netspace required will decrease linearly. It is reasonable to assume that if a majority attack were attempted, the attacker's timelord wouldn't be significantly faster than the fastest honest timelord. Furthermore, it is unlikely that the attacker could gain access to an unbounded number of timeords, so the attacker would not gain the double-dip advantage. Therefore, Chia uses a base line assumption of 51% of the netspace required for a majority attack to have a chance at succeeding. To reduce the possibility of an attacker gaining access to a fast timelord, Chia network has developed and distributed ASIC timelord globally.","s":"Majority Attack","u":"/consensus-attacks/","h":"#majority","p":512},{"i":516,"t":"As discussed in the previous section, if an attacker is making their own private chain, they can choose which block gets infused into the challenge chain, and can therefore try many different infusions, such that they get the best possible chain. Due to the average of 32 blocks with the same challenge, the attacker can only try about 32 different combinations (figuring out which block to include in the challenge chain). The exponential branching that results from trying each of these would give a small boost in space for the attacker. For example, someone with 5 PiB can pretend to have 6 or 7 PiB. The reason for receiving just a minor boost is because the alternative chains being tried are inferior and less likely to overtake the longest one. This has been analyzed in the PoSAT paper. If there were a new proof of space challenge for every single block, the attacker could multiply their space by a factor of e=2.718, where only 27% would be required to overtake the network. Chia has chosen to mitigate this attack vector by setting the expected number of blocks per sub-slot to 32. This increases the attacker's required space to 42.7%. However, Chia also chose not to increase the number of blocks per sub-slot to a number greater than 32. Doing so would decrease the time between blocks, which would allow a timelord that is only slightly faster than all others to orphan blocks more easily. As it stands, with 32 blocks per sub-slot, an attacker would need to have a significantly faster timelord than everyone else in order to successfully orphan any blocks. Furthermore, the PoSAT paper shows that increasing the number of blocks per challenge increases security at a very slow rate, so increasing this number slightly does not provide much benefit. If the attacker were to manipulate the difficulty, they could change it so that they get fewer reward blocks per slot. Then they could either include or exclude each block, and exponentially extend all chains simultaneously. This would allow the attacker to multiply their space by a small factor. It is not clear whether this attack gains very much, since the attacker must change the difficulty, which requires sacrificing some weight. However, to prevent this attack, there is a requirement that at least 16 reward chain blocks must be created for a challenge block to be included. This brings the attacker's required space in the worst case scenario (with unlimited slightly faster timelords) from 27% up to 42.7%, as discussed above.","s":"Extending Many Chains","u":"/consensus-attacks/","h":"#many-chains","p":512},{"i":518,"t":"There is a concern that if the Chia network does not have a significant amount of space compared to the available free space of hard drive manufacturers or large companies, then it will be vulnerable to long-range attacks. Therefore the more space taken by the Chia network, the more secure the network is. We believe this type of attack is unlikely, though. Large data centers and companies with significant amounts of storage tend not to have much unused storage available to hold Chia plots. And the more space that comes onto Chia's network, the lower the rewards per TB. With the netspace currently (December 2021) sitting at 35 EiB, companies will find it difficult to justify buying drives or deleting business data. Furthermore, creating a plot requires a fixed amount of upfront time and money (from current calculations, about 1kWh for a k32, or about 10 cents, which is $1 per terabyte). The most likely long-term scenario is that rewards per TB will be sufficiently low to discourage people and companies from acquiring new storage just to farm Chia. Most of the new netspace in the future will therefore come from used storage, often from hard disks that otherwise would have been bound for a landfill. This will serve two purposes: preventing the attack laid out here, and keeping Chia green.","s":"Global Hard Drive Space","u":"/consensus-attacks/","h":"#space","p":512},{"i":520,"t":"If the difficulty adjustment were triggered every X timelord slots, as opposed to every X blocks, this would allow for a 100% attack, where all farmers collude to constantly decrease or increase the difficulty. Under normal operation, there are 32 blocks per slot. Under the hypothetical 100% attack: The difficulty would be artificially cut in half, temporarily allowing 64 blocks to be created per slot. The difficulty would then be artificially increased by 4x, temporarily allowing 16 blocks per slot. Repeat step 1. The result of this attack would be to create an average of (64+16)/2 = 40 block rewards per slot, a 25% increase in rewards. This is why Chia chose to trigger the difficulty adjustment based on the number of blocks. If this attack were attempted under the current system, it would slow down and speed up the network, but it would not yield any extra rewards.","s":"100% Attack","u":"/consensus-attacks/","h":"#100-percent","p":512},{"i":522,"t":"Plotting usually takes a few minutes to a few hours, even on fast hardware, but it is parallelizable and getting faster. Someday in the future, an attacker with high-end hardware could begin creating a plot after a signage point is released, and complete the plot before the infusion point. The attacker could then delete the plot after obtaining the quality rating (or after submitting the proof if it's eligible). This would allow the attacker to create a plot that automatically passes the filter, effectively allowing them to farm without storing any space. This attack only becomes feasible if it is possible to create a plot in less than 28 seconds (before the infusion). If we assume the worst-case scenario of a farmer being able to create a plot instantly, the question becomes, what is the cost and what is the benefit of the attack? The cost is the electricity, memory, hardware and infrastructure needed to create a plot. The electricity required to create a k32 plot is currently around 0.10,oraround0.10, or around 0.10,oraround1 per TB. The benefit would be the same benefit as storing that plot for 80 minutes (the signage point interval times the plot filter constant). This is because the attacker can always create a plot that passes the plot filter. Assuming 5peryearvalueperterabyte,thevalueofa1TBplotfor80minutesis5 per year value per terabyte, the value of a 1TB plot for 80 minutes is 5peryearvalueperterabyte,thevalueofa1TBplotfor80minutesis0.00094. Therefore with current plotting software and hardware, it is significantly cheaper to store the plots as opposed to recreating them. Another way to look at the benefit of this attack: If the attacker can create a plot that always passes the filter, it will be the equivalent of storing 512 plots locally. Which is cheaper, storing 512 plots or running this attack? If 1 TB of HDD storage costs 15,itwouldcostaround15, it would cost around 15,itwouldcostaround750 to purchase enough space to store 512 plots. If we account for a low-end computer on which to run a farmer, the total cost of this system is roughly 1000.Therefore,thereplottingattackonlybecomeseconomicallyfeasibleonasystemworthlessthan1000. Therefore, the replotting attack only becomes economically feasible on a system worth less than 1000.Therefore,thereplottingattackonlybecomeseconomicallyfeasibleonasystemworthlessthan1000. If this attack ever becomes possible, it will likely cost at least an order of magnitude more to run the attack than to store the plots. (And keep in mind, the price of storage tends to fall every year, so the benefit of the attack is constantly decreasing, even as its feasibility is increasing.) The plot filter constant is very useful to reduce the amount of disk lookups farmers must do. With a plot filter of 512, Instead of 7-9 disk reads per plot every 9 seconds, farmers only need to do about 7-9 reads for every 80 minutes. The downside of the plot filter constant is that it provides a multiplier of replotting benefit to an attacker, so it must not be set too high. With a plot filter constant of 512, 1/512 plots are valid for every challenge. The attacker can then only create plots that pass the filter, therefore not needing to create the other 511/512ths. Setting the filter constant to 512 provides a 512x multiplier. If the replotting attack ever becomes economically feasible, one mitigation would be to decrease the filter, thus decreasing the attack's benefit. The other mitigation would be to increase the minimum plot size, thus decreasing the feasibility of the attack. In any case, this attack will not become feasible until at least 2026, given projected improvements in hardware speed.","s":"Short Range Replotting Attack","u":"/consensus-attacks/","h":"#replotting","p":512},{"i":524,"t":"With the fastest timelord in the system, an attacker can more effectively perform a long-range attack: they can expand their space while farming in a private chain. If the attacker does not reach a total of 40.5% of space (with the timelord boosting and extending many chains as above), the usefulness of the faster timelord decreases substantially. This is because inclusion and exclusion of blocks does not depend on how fast you can perform the VDF, but instead depends on whether it's less than the sub-slot iterations. Furthermore, an attacker needs the space of the rest of the network in order to advance, and therefore must release the challenges to the network. In certain cases where blocks come very close together, having a faster timelord can allow an attacker to orphan certain blocks, although this does not increase rewards in the short term (it would hurt others, but not benefit the attacker), and has a risk of undermining the network in the long term (orphaning blocks decreases public trust).","s":"Faster Timelord (But Not 51% Attack)","u":"/consensus-attacks/","h":"#faster-timelord","p":512},{"i":526,"t":"Selfish farming occurs when an attacker farms blocks in private, and only releases them when they are at risk of being surpassed by the honest chain. In Nakamoto PoW this provides significant gains, because at any point at which the miner is ahead of the rest of the network, the rest of the network is wasting their hashpower on a chain that will not win. In Chia consensus, a \"selfish\" farmer could withhold a proof until just before the infusion point, but this would provide zero benefit versus submitting the proof right away. There can be multiple block winners per signage point, so farming is not a zero-sum game as it is in PoW. Furthermore, the timelord cannot accept proofs for an infusion point that has already passed, so farmers are not allowed to stack a large number of proofs to be infused later.","s":"Selfish Farming","u":"/consensus-attacks/","h":"#selfish-farming","p":512},{"i":528,"t":"An interesting attack explored in the PoSAT white paper is the bribing attack, which takes advantage of the predictability of the elected \"leaders\" in each slot. The authors analyze a Proof of Stake chain, and argue that when participants know that they are going to win in advance, there is a potential bribing attack. In Chia, if participants knew in advance which plots would win, each user could notify an attacker that they'd be willing to participate in the attack. If the number of participants reached a certain threshold, they could completely re-org the chain (or orphan those who do not participate, censor transactions, etc). This attack does NOT require the majority of the space in the network to participate; it only requires a certain threshold of winners within a short time frame. Furthermore, it is undetectable, since the attacker can make a normal looking chain. This problem is not present in this revision of the Chia consensus algorithm. This problem is solved by reducing the predictability: each farmer does not know for sure if their proof of space is fully eligible until the signage point. Therefore an attacker must bribe a large majority of the space to pull off this attack.","s":"Farmer Bribe Trunk Attack","u":"/consensus-attacks/","h":"#bribe-trunk","p":512},{"i":530,"t":"Since blocks are signed by PoSpace keys, a farmer can theoretically sign multiple blocks with the same PoSpace, at the same height. The attack requires a malicious party to bribe farmers with a certain amount of funds for them to provide a signature of an alternate chain. It does not require the attacker to have a faster timelord. If the attacker can convince every single farmer N blocks deep to sign, they can revert or reorder any transaction in those N blocks. This attack requires 100% compliance, likely from unwitting participants. As soon as those participants learn of the attack, at least some of them would probably stop. It is therefore only a short-term attack. One potential prevention for this attack would be to use fraud proofs. However, these enable other attacks and complicate behavior, so they were not chosen. Instead, the solution is simply to wait longer. After 32 blocks (approximately 10 minutes), we can make a reasonable assumption that at least one farmer is following the protocol and not double signing. If 57.4% is non-colluding (the assumption for 42.7% attack resilience), the probability of a reversal after 32 blocks is 0.426^32 or 1.38*10^-12= 0.00000000000138. Furthermore, this attack is detectable, so it is not easy to pull off. Each user can choose their own threshold for which they accept a transaction/block as final. For example, in cases where the total network space drops suddenly, users can be more careful and not consider transactions final, in case there is another existing fork, due to a network split.","s":"Farmer Bribe Foliage Re-Org Attack","u":"/consensus-attacks/","h":"#bribe-foliage","p":512},{"i":532,"t":"Transaction blocks are different from non-transaction blocks, since they contain transaction fees. These may surpass block rewards. For example, Ethereum has had created some blocks with 2 eth of rewards and 8 eth of fees. (EIP 1559 changes the calculation significantly, so this is just a historical example of what is possible in other chains.) In Chia this will be more extreme, since not every block contains transactions. This leads to attacks where the 2nd place farmer ignores the 1st place in an attempt to win the transaction block. If the 2nd block comes less than 28 seconds after the 1st, they do not specify the previous block, and thus the 2nd place cannot orphan the 1st. The 3rd place could orphan both, but nobody would follow this chain since it is shorter. However, if there are no blocks within 28 seconds of the 1st block, the 2nd could orphan the 1st, but they would have to convince the next block to farm on their alternate chain. An easier attack would be if the attacker controlled both the 2nd and 3rd, in which case they could ignore the first and still be longer. These orphaning attacks do not allow the attacker to steal rewards, but rather allow the attacker to slightly lower the difficulty. Since they are very situational and require a lot of space, attempting this attack will likely harm the network more than the potential gain to the attacker.","s":"Orphaning Transaction Blocks for Fees","u":"/consensus-attacks/","h":"#orphaning","p":512},{"i":534,"t":"In Chia consensus, two competing blocks around the same time can both be included into the blockchain in parallel, without knowing about each other (although at most one can be a transaction block). When multiple blocks are included at the same time, the result is a chain with a higher weight. This means that the orphan rate in Chia will be essentially zero, assuming low network latency. If network latency exceeds the infusion delay (30-40 seconds), then orphaning of a block is almost guaranteed, so it is more of a step-function. This is in contrast with Nakamoto-PoW in which the orphan rate is high if there is network delay, and decreases smoothly as network condition improves, but never reaches zero.","s":"Orphan Rate","u":"/consensus-attacks/","h":"#orphan-rate","p":512},{"i":536,"t":"In the previous diagrams, there is no place for farmers to specify their rewards, since all blocks are canonical. There is also no place to include transactions. Everything we have talked about so far is known as the trunk of the blockchain. Farmers have no say in how their block is constructed in the trunk, since they must use the exact proof of space, VDFs, and signatures that are specified. In order to include farming rewards, as well as transactions, in the system, we must introduce an additional component to the reward chain called foliage. Trunk: The component of blocks and the blockchain which includes VDFs, proofs of space, PoSpace signatures, challenges, and previous trunk blocks, and is completely canonical. The trunk includes each of the three VDF chains, but it never refers to the foliage. Foliage: An extension of the blocks produced in the reward chain. A block's foliage includes the specification of where rewards should go, which transactions should be included, and what the previous block's foliage is. info Foliage provides a separation between the transactions and the consensus. A given block's farmer decides what is included in the foliage, thereby allowing the farmer to grind on its contents. If the transactions and the consensus were not separated, a farmer could grind on the foliage in order to gain an unfair edge in the consensus, which would allow them to win more blocks. For this reason, the foliage is kept separate from the consensus, and it can never be used as input to the challenges. It is also important to note that in the implementation, when a farmer submits a block, the trunk and foliage are both submitted together -- the two pieces are not calculated and submitted at separate times. The reason we emphasize the separation of the transactions and the consensus is because the farmer may not modify a block's trunk, but retains total control over the foliage. Re-org: A re-org (or reorganization) is when a node's view of the peak changes, such that the old view contains a block that is not included in the new view (one or more blocks have either been removed, or have changed order). Both trunk and foliage re-orgs are possible, but should be rare in practice, and low in depth. In figure 11 below we can see that the foliage is added to the blocks formed in the reward chain. This foliage includes a hash of the previous foliage, a reward block hash, and a signature. These foliage pointers are separate from the trunk chain, and are not canonical. That is, farmers could theoretically create a foliage re-org where foliage is replaced, but the exact same trunk (proofs of space and time) are used. To prevent a foliage re-org, honest farmers only create one set of foliage per block. As soon as one honest farmer has added foliage to a block, the foliage becomes impossible to re-org beyond that height with the same PoSpace, since that farmer will not sign again with the same PoSpace. Furthermore, blocks like B3, which come parallel with the foliage of another block (B2), do not have to sign the previous block's foliage, since they do not necessarily have enough time to see it. info By \"coming in parallel\", we mean that the second block's signage point occurs before the first block's infusion point. The red arrows in the diagram represent a foliage pointer that is signed by the plot key for the proof of space in that block. The gray arrows represent a hash pointer which is not signed by the plot key (therefore the gray arrow in B3 can be replaced if B2 changes or is withheld). This prevents attacks where B2 modifies their block and forces B3 to re-org. Blocks which have red pointers are also eligible to create transactions, and are therefore called transaction blocks. A block is a transaction block if and only if it is the first block whose signage point occurs after the infusion of the previous transaction block. In the diagram, sp3 comes before B2, (a transaction block, and the previous block of B3), so B3 cannot be a transaction block. The red arrows provide security by burying foliage, but the gray arrows do not. The purpose of the gray arrows is to maintain a linked list in the foliage, and to reduce complexity in implementations. However, foliages with gray arrows pointing to them do get buried in the next-next block. Figure 11: Foliage and trunk blocks. Blocks B1, B2, and B4 have transactions and have red pointers (pointers to last block). Note that the start of the sub-slot is also a signage point. The block hash is a hash of the entire foliage and trunk block. Re-orgs work on block hashes. Even if we see a chain with the same proofs of space and time, as long as the foliages are different, the blocks will have different hashes. Note that the farmers of blocks B2 and B3 might both have a chance to create the block, so they must both provide the signed pointer and transactions. However, any transaction block can be included as a normal block as well, and since B2 and B3 are in parallel, only one of them can make a transaction block. While all blocks still choose the puzzle hashes of where their rewards go, those transactions do not get included into the blockchain until the next transaction block.","s":"Foliage","u":"/consensus-foliage/","h":"","p":535},{"i":538,"t":"The average time between transaction blocks is 52 seconds. Several values are required to calculate this average: Sub-slot time = 600 seconds Signage point time = 64 per sub-slot, or 600/64 = 9.375 seconds Average block time = 32 per sub-slot, or 600/32 = 18.75 seconds Minimum signage points from current signage point until infusion_iterations is reached = 3 (See the Signage and Infusion Points page for more info.) Minimum time for infusion_iterations to be reached (and therefore, minimum time between transaction blocks) = 3 * (600/64) = 28.125 seconds Average signage points until infusion_iterations is reached is slightly more than 3.5 (must wait 3 signage points, plus an average wait of about 50% of the next signage point), or around 3.5 * 9.375 = 32.8125 seconds. To create a transaction block, infusion_iterations first must be met, and then the next block some seconds afterwards will be a transaction block. The total average time for this to happen is around 52 seconds. The formal equation is or (1/(e^(0.5)-1)+4)*9.375 which equals 51.95 seconds. The time between transaction blocks was deliberately chosen for a specific game-theoretic reason: If transaction blocks occurred at the same rate but there were no empty blocks between them, re-orgs and bribery attacks would be easier to pull off. Additionally, the fact that there are empty blocks between transaction blocks provides several benefits: If blocks were created at the same rate and all of them contained transactions, low-power machines such as the Raspberry Pi wouldn't be able to keep up with the chain and therefore wouldn't be supported. Empty blocks can also help dampen the effect of the chain slowing down, for example during a dust storm. Finally, empty blocks help to smooth farmers' rewards.","s":"Transaction Block Time","u":"/consensus-foliage/","h":"#transaction-block-time","p":535},{"i":540,"t":"The following table is a comprehensive list of all forks (planned and activated) on Chia's blockchain. It was last updated on 2024-09-23. Activation Block Activation Date Type Build Status Description 2 300 000 2022-07-22 Soft 1.3.0 Activated Disallow negative division 3 630 000 2023-05-07 Soft 1.7.0 Activated Restrict AGG_SIG_UNSAFE message 3 886 635 2023-07-01 Soft 1.8.0 Activated CHIP-14 -- ASSERT_BEFORE_* conditions 4 510 000 2023-11-12 Soft 2.0.0 Activated CHIP-11 -- BLS/SECP CLVM Operators 5 496 000 2024-06-13 Hard 2.1.0 Activated CHIP-12 -- Decrease plot filter 5 716 000 2024-07-30 Soft 2.3.0 Activated CHIP-25 -- Chialisp Message Conditions 5 940 000 2024-09-17 Soft 2.4.0 Activated Disallow infinity G1 points","s":"Forks","u":"/consensus-forks/","h":"","p":539},{"i":542,"t":"info This section is meant to provide a high level overview of Chia's consensus. If you are interested in implementing a new full node, we recommend that you review the source code in order to understand in depth how the consensus is implemented. If you have further questions, feel free to reach out to us on Discord. Decentralized consensus algorithms require Sybil resistance, using a resource that is both cryptographically verifiable and scarce (not infinite). In previous blockchain systems, two different scarce resources have been used: computing power (Proof of Work) and staked money (Proof of Stake). Chia's Proof of Space and Time consensus uses storage capacity as the scarce resource. This comes much closer than previous systems to Satoshi's original ideal of \"one CPU, one vote,\" where a vote refers to a chance to win and validate a block, not an actual vote on-chain. For example, someone storing 500 GiB has 5 \"votes,\" and someone storing 100 GiB has 1 \"vote.\" One other cryptographic puzzle piece is used to secure Chia's system: a verifiable delay function (VDF), which is a cryptographic proof that real time has passed. A fair system can be created by combining proofs of space and time. In such a system, users store random-looking data on their hard drives. Their chance to win XCH is proportional to their allocated space. Furthermore, such a system scales to billions of participants in a similar way to the Proof of Work lottery. No funds, special hardware, registration, or permission is required to join, only a hard drive and an internet connection. The system is completely transparent and deterministic -- anyone can efficiently and objectively verify which chain is the canonical one, without relying on any trusted parties. Some notes to keep in mind as you continue reading: Whenever the word signature is used, it refers specifically to a deterministic BLS signature, following the IETF specification with the Augmented scheme. The private keys performing these digital signatures are controlled and stored by the farmers. A unique private key is used for each plot. The hash function used is SHA256, except for the proofs of space which also use CHACHA8 and BLAKE3.","s":"Consensus Introduction","u":"/consensus-intro/","h":"","p":541},{"i":544,"t":"Figure 7: multiple blocks. Sp1 = signage point 1 As you can see in Figure 7, multiple blocks can get infused into the same sub-slot. Chia's system targets one block every 18.75 seconds on average (32 blocks per sub-slot), and this is adjusted every 4608 blocks (around 24 hours) through the work difficulty algorithm. VDF proofs span: from the previous infusion point before the current signage point to the current signage point, and from the previous infusion point to the current infusion point. This means that the VDF proofs required for each block can overlap. In the example in Figure 7, B2 contains a VDF proof from B1 to sp2, and from B1 to B2. B3 contains a proof from B1 to sp3, and from B2 to B3. B2 does not depend at all on B3, but B3 depends on B2, since its VDF is from B2's infusion point. As discussed in Signage and Infusion Points page, the blocks get created at the signage points, but they are missing the infusion point VDF. Once this VDF is added, the block is finished, and forms part of the blockchain. The signatures get created and added by the farmers at the signage points, and broadcast to the whole network. There are no signatures at the infusion point; the only things added at the infusion point are the VDFs. Finally, note that there can be multiple winners at the same signage point, all of which can be included into the blockchain. That would be the case in the diagram, if sp2 == sp3. The one which gets included first is the one with the lower required_iters, and thus earlier infusion point. You may be wondering what happens if a farmer makes a copy of a plot and the plot becomes eligible for infusion. Do the plots each win a block reward? No -- two blocks get created, but only one will be infused. The full nodes will only propagate the first copy of the block they see. The timelord node is ultimately connected to exactly one full node, so even if multiple identical blocks make it to that full node, they will not both be sent to the timelord for infusion. It is possible (albeit very unlikely) for two non-identical blocks to have the same infusion point, even though their hashes don't match. In this case, the full nodes will reject the second block they receive because each block must have total_iters > prev block total_iters.","s":"Multiple Blocks","u":"/consensus-multiple-blocks/","h":"","p":543},{"i":547,"t":"Constants Description 10 minutes target duration of a sub-slot 32 blocks target number of blocks per sub-slot 16/64 blocks minimum/maximum number of blocks in a slot 4608 blocks average number of blocks per epoch 384 blocks average number of blocks per sub-epoch 64 signage points number of signage points per sub-slot The above imply the following: Implied Constants Description 1 day target time of an epoch is 10 min⋅4608 blocks32 blocks=1440 min(=1day)10 {\\ \\sf min}\\cdot\\frac{4608{\\ \\sf blocks}}{32\\ \\sf blocks}=1440{\\ \\sf min}\\quad (=1{ \\sf day})10 min⋅32 blocks4608 blocks​=1440 min(=1day) 2 hours target time of sub-epoch 18.75 seconds target average block arrival time is 10 min32=18.75 sec\\frac{10{\\sf\\ min}}{32}=18.75 {\\sf\\ sec}3210 min​=18.75 sec 9.375 seconds target time between signage points is 60064=9.375 sec\\frac{600}{64}=9.375 {\\sf\\ sec}64600​=9.375 sec","s":"0.1 Important Constants","u":"/constants-variables-notation/","h":"#01-important-constants","p":545},{"i":549,"t":"Variable Description D∈ND\\in{\\mathbb N}D∈N difficulty parameter. Re-calibrated once per epoch to meet target of 323232 blocks per slot T∈NT\\in {\\mathbb N}T∈N time parameter (number of VDF steps for sub-slot). Re-calibrated once per epoch to meet target of 101010 minutes per sub-slot","s":"0.2 Important Variables","u":"/constants-variables-notation/","h":"#02-important-variables","p":545},{"i":551,"t":"Objective 0: We will use blue boxes like this one to mention key objectives we want the design of Chia to satisfy Design Choice 0: Green boxes like this are used to highlight important design choices, which often will refer to objectives. Security Notice 0: A red box stresses some important aspects required for the security of Chia, and will typically refer to some design choice.","s":"0.3 Boxes","u":"/constants-variables-notation/","h":"#03-boxes","p":545},{"i":554,"t":"A cryptocurrency system can be thought of as a payments and financial infrastructure that is not controlled by any single entity, such as a bank, company, or government. Prior to the introduction of cryptocurrencies, there had always been an operator that had control of transaction inclusion and monetary policy. This operator represented a centralized point of both power and failure. The financial world was fundamentally changed with the introduction of Bitcoin on January 3, 2009. In the years that have followed, many other cryptocurrencies have been created to solve various problems in the legacy financial realm. Cryptocurrencies use clever cryptography, mathematics, and monetary incentives to create a system where people called farmers or miners get paid to run the system, and there is no central point of control that can be taken down by malicious actors. This brings many benefits, some of which are: No requirements to participate: Anyone with an internet connection can participate in the new crypto economy, regardless of nationality, wealth status, religion, etc. Censorship resistance: Censorship is difficult or impossible. Anyone is allowed to transact, and to send any amount or run any program at any time. Independent monetary policy: New currencies can be created that do not depend on decisions made by one group or one country, and instead can be based on algorithms or have a fixed supply. Unstoppable applications: A program developed for, and run on, a secure blockchain can never be changed or stopped. The program itself can own funds and perform financial transactions. Code can run autonomously, without depending on a human operator. Some blockchain applications include: tokenization of other assets, non-fungible tokens (NFTs), loans, remittances, identity wallets, etc. Global standards: Through crypto, different countries and regions can interact and transact on one shared standard that is clearly documented, fully open source, and available for free. Different parties can come together to use a neutral platform, which reduces costs for those who build on top of the cryptocurrency. Security: There are many forms of potential attacks on any financial infrastructure, including virtual and physical hacks, bribery, network issues, etc. A system with a million nodes is much more difficult to attack than the aforementioned single point of failure.","s":"What is a Cryptocurrency?","u":"/cryptocurrency-intro/","h":"#what-is-a-cryptocurrency","p":552},{"i":556,"t":"To understand the basics of how a cryptocurrency like Bitcoin or Chia works, we first need to look at how one would design a cryptocurrency from scratch. This section is targeted toward those new to the blockchain industry; others can skip it. info For a deeper introduction we recommend the book Bitcoin and Cryptocurrency Technologies which also has a freely available pre-print and video lectures. We could rely on a central server with a public API to send transactions (which takes in a username and password) and a public API for reading data. However, this is not decentralized, and it does not bring most of the benefits above. This is the way in which many financial systems worked before Bitcoin. How would we design a transaction system which does not depend on any one party?","s":"How do Cryptocurrencies Work?","u":"/cryptocurrency-intro/","h":"#how-do-cryptocurrencies-work","p":552},{"i":558,"t":"First, we need a secure way to send transactions to many servers. Let's assume that there are 1000 servers across the world, instead of just one, and that these servers send transaction information of users to each other. These servers are assumed to be run by different entities (companies, people, etc). Usernames and passwords would not work in this decentralized model, because every server would need to know the password in order to verify that a transaction is valid. This would be extremely insecure. Instead, we can use public key cryptography, invented by Hellman, Merkle, and Diffie. For example, a user named Alice maintains a secret key (also called a private key) sk_a, and a public key pk_a. The public key is posted in a transaction next to her balance, let's say 1 BTC. In order to spend that 1 BTC, she needs to provide a digital signature with her private key. The signature can be verified with the public key and message only, and is specific to the data that is being signed. Each server running in this decentralized system can accept a transaction, which includes the ID of the coin that is being sent, the recipient information, and the signature. Digital signatures are fundamental building blocks for cryptocurrencies.","s":"Authentication","u":"/cryptocurrency-intro/","h":"#authentication","p":552},{"i":560,"t":"However, signatures are not enough, because of an issue called the \"double spend problem.\" Of the 1000 servers, let's say 500 are in Asia and 500 are in America. An attacker, Bob, sends two transactions that spend the same coin, to two servers, at the same time: one in Asia and one in America. Those transactions send the money to different recipients, which should not be allowed. In this case, the two servers need to come to agreement as to which transaction came first. Otherwise, they will have diverging state, and the system will not have global consensus. To solve this issue, we need a consensus algorithm, or a way for all computers in the system to quickly come to unambiguous agreement on the ordering and content of transactions. Since we are trying to create a globally decentralized and secure system, why not allow each person one vote, and add up votes for deciding transaction ordering? This would be great if it were possible, but it unfortunately requires some type of central party, first to decide who is a \"person,\" and then to create these identities. This would make the system centralized. We could instead base the system on \"one computer, one vote,\" counting each IP address as a \"computer.\" However, it is trivial to buy new IP addresses, or to change addresses using a VPN or a proxy server. An attacker could even create millions of fake IP addresses. The attacker would gain control of the network once they own 51% of the addresses. At this point, they could decide transaction ordering and content. Again, the system becomes centralized, and possibly compromised. The key issue that makes it difficult to solve the double-spend problem is the Sybil attack. A Sybil attack is when an attacker creates a large amount of fake identities at a low cost. Most \"Proof of X\" blockchains are not secure because if an attacker creates multiple identities, this will give the attacker an advantage. The genius of Satoshi Nakamoto was to solve the double-spend problem by requiring real-world work in order to obtain \"votes,\" and to decide consensus. This \"Proof of Work\" is cryptographically verifiable. The only requirements for participation are a computer and an internet connection. In Proof of Work networks, each computer that is participating repeatedly generates cryptographic hashes using random input. This functions as a global lottery, where hashes are generated until one computer generates a winner -- a hash with a certain number of leading zeros. This is known as a proof of work because there are no shortcuts. Computers must put in the required amount of computational \"work\" by generating hashes. When a winning proof is found, the computer that discovered it earns the right to generate a new \"block\" in the blockchain. This block contains a pointer to the previous block, a list of valid transactions, and the winning hash. All nodes are required to accept the heaviest chain (the one which required the most work). Therefore, all nodes will accept the new block, and the proof-of-work lottery begins anew. In Bitcoin's consensus algorithm, each proof takes an average of 10 minutes to generate. As more computers join the network, the average amount of time to generate a proof will naturally decrease. This brings us to another of Satoshi's simple and elegant ideas: the difficulty adjustment. Every 2016 blocks (two weeks, on average) the proof-of-work algorithm automatically adjusts how difficult it is to find a proof. It accomplishes this by increasing or decreasing the required number of leading zeros in a generated hash. The result is that the average time required to find a proof will always be 10 minutes, no matter how many computers start or stop participating in the proof-of-work lottery. With this consensus mechanism in place, attacking the network becomes very difficult. If an attacker wants to \"rewrite history\" by creating an alternative blockchain, they'll need to create new blocks faster than the honest actors in the system. Because of the proof of work that is required to create each block, the attacker will need to generate hashes faster than all other computers in the network, combined. This is known as a \"51% attack\" and is discussed in greater detail later in the Consensus Attacks page. Proof of Work solves the double-spend problem -- only one computer can create a block at any one time. It also solves the Sybil problem -- not only does creating a block require a real-world investment in hardware, but it also gives no advantage to someone who creates multiple identities. This person has the same probability of winning, whether they're using one identity or a million.","s":"Double Spending","u":"/cryptocurrency-intro/","h":"#double-spending","p":552},{"i":562,"t":"Each node in the network maintains active connections with a few other random nodes. If a user wants to make a transaction, they send it to any node in the network, which automatically broadcasts it to their peers. Because each node is connected to a unique set of peers, the transaction quickly gets propagated to every node in the network. The nodes then save the transaction, including all other pending transactions, locally in memory. This is called the mempool. info For more info on Chia's mempool, see the Mempool page. In order for each node to search for a proof, it must assemble a block to hash against. It does this by including transactions from the mempool, and it will most likely choose the pending transactions that pay the highest fee. A transaction fee market is thus created, where the supply is the total transactions per second (TPS) that the system supports, and the demand is based on the number of transactions in the mempool. A transaction is said to be \"confirmed\" once it is included inside a block which has the required proof of work. Blockchain transactions can also include scripts or programs, which allow controlling funds directly with code. This code can require a certain number of signatures to release the funds, or have any arbitrary logic. info Keep in mind that blockchain programs are expensive to run, since every node in the system must download and run the program. Just because it can be run on a blockchain, doesn't mean that is should be run on one. Each block also has a hash pointer to the previous block. This means that the hash of the contents of the previous block are included in the current block. If an attacker could find an alternative valid proof for a historical block, the proof would then change that block's hash, which would invalidate the next block. If the attacker wanted to change a block that occurred 10 blocks in the past, they would therefore need to re-do the proof of work for at least 10 blocks. The rest of the network would continue to create legitimate blocks, however, so in reality, the attacker would likely have to create many more than just 10 blocks. In fact, as long as the rest of the network, combined, could create blocks at the same rate or faster, the attacker would never be able to create a chain longer than the legitimate chain. The Bitcoin network performs around 170 quintillion (170,000,000,000,000,000,000) hashes per second; the attacker would have to control at least that much hashpower to make a 51% attack feasible.","s":"Blockchain","u":"/cryptocurrency-intro/","h":"#blockchain","p":552},{"i":564,"t":"Over a decade has passed since the creation of Bitcoin and Proof of Work blockchains. While Proof of Work is quite secure, that security comes at a cost: a tremendous expenditure of energy is required to generate those 170 quintillion hashes per second. On top of that, specialized hardware is required to run nodes on these systems, which has led to a high degree of centralization among the top miners. Perhaps most troubling of all are the pools. On a given day, the hashrate of the top four or five Bitcoin pools constitutes over half of the overall hashrate. Arguably, the easiest attack against the Bitcoin network would be for the pool operators to collude (either willingly or under threat), putting a 51% attack well within reach. These issues have prompted people to develop alternative Sybil-resistant consensus models. Proof of Stake (voting with blockchain assets) is one of the most popular approaches, and within this category there are many types of algorithms. These systems tend to compromise on decentralization (and thus, security) to varying degrees. Chia takes an alternate approach called Proofs of Space and Time (PoST), which we think is likely to be more decentralized and accessible than Proof of Stake. In this model, full nodes store files full of millions of hashes (akin to lottery tickets, as described above) on hard drives. This model maintains the security properties of Nakamoto's Proof of Work, while remaining accessible to normal users without any special hardware.","s":"Beyond Proof of Work","u":"/cryptocurrency-intro/","h":"#beyond-proof-of-work","p":552},{"i":567,"t":"We use Github for source code control, the two main ways to interact with Github are via the web browser or via cli commands, the below links are focused on the web browser access.","s":"Using GitHub","u":"/contribution/using-github/","h":"#using-github","p":565},{"i":569,"t":"info The below information has been copied from the Github docs. To get started with GitHub, you'll need to create a free personal account on GitHub.com and verify your email address. Every person who uses GitHub.com signs in to a personal account. Your personal account is your identity on GitHub.com and has a username and profile. For example, see @octocat's profile. Later, you can explore the different types of accounts that GitHub offers, and decide if you need a billing plan. For more information, see \"Types of GitHub accounts\" and \"GitHub’s plans\". Signing up for a Personal Account​ Navigate to https://github.com/. Click Sign up. Follow the prompts to create your personal account. During sign up, you'll be asked to verify your email address. Without a verified email address, you won't be able to complete some basic GitHub tasks, such as creating a repository. If you're having problems verifying your email address, there are some troubleshooting steps you can take. For more information, see \"Verifying your email address\".","s":"Create a Github Account","u":"/contribution/using-github/","h":"#create-a-github-account","p":565},{"i":571,"t":"info The below information has been adapted from the Github docs. You can install GitHub Desktop on Windows 10 64-bit or later. warning You must have a 64-bit operating system to run GitHub Desktop. Visit the download page for GitHub Desktop. Click Download for Windows. In your computer's Downloads folder, double-click the GitHub Desktop setup file. GitHub Desktop will launch after installation is complete.","s":"Installing Github Desktop","u":"/contribution/using-github/","h":"#installing-github-desktop","p":565},{"i":573,"t":"info The below information has been adapted from the Github docs. A fork is a new repository that shares code and visibility settings with the original “upstream” repository. The below example is for the chia-docs repo but the same process can be followed for any of the public Chia-Network repos. On GitHub.com, navigate to the Chia-Network/chia-docs repository. In the top-right corner of the page, click Fork. Under \"Owner,\" select the dropdown menu and click an owner for the forked repository. By default, forks are named the same as their upstream repositories. Optionally, to further distinguish your fork, in the \"Repository name\" field, type a name. Optionally, in the \"Description\" field, type a description of your fork. Optionally, select Copy the DEFAULT branch only. For many forking scenarios, such as contributing to open-source projects, you only need to copy the default branch. If you do not select this option, all branches will be copied into the new fork. Click Create fork. note If you want to copy additional branches from the upstream repository, you can do so from the Branches page. For more information, see \"Creating and deleting branches within your repository\". Cloning a Forked Repository​ info The below information has been adapted from the Github docs. Right now, you have a fork of the chia-docs repository, but you do not have the files in that repository locally on your computer. On GitHub.com, navigate to your fork of the Chia-Network/chia-docs repository. Above the list of files, click Code. Click \"Open with Github Desktop\" (this clones the repo locally where you can edit it)","s":"Forking a Repository","u":"/contribution/using-github/","h":"#forking-a-repository","p":565},{"i":575,"t":"All Chia related Github repos require the signing of commits, follow the outlined process to setup automated commit signing for the Github Desktop Application. Generating a New GPG Key​ info The below information has been adapted from the Github docs. note Note: Before generating a new GPG key, make sure you've verified your email address. If you haven't verified your email address, you won't be able to sign commits and tags with GPG. For more information, see \"Verifying your email address\". Download and install the GPG command line tools for your operating system. We generally recommend installing the latest version for your operating system. Open Git Bash. Generate a GPG key pair. Since there are multiple versions of GPG, you may need to consult the relevant man page to find the appropriate key generation command. If you are on version 2.1.17 or greater, paste the text below to generate a GPG key pair. gpg --full-generate-key If you are not on version 2.1.17 or greater, the gpg --full-generate-key command doesn't work. Paste the text below and skip to step 6. gpg --default-new-key-algo rsa4096 --gen-key At the prompt, specify the kind of key you want, or press Enter to accept the default. At the prompt, specify the key size you want, or press Enter to accept the default. Enter the length of time the key should be valid. Press Enter to specify the default selection, indicating that the key doesn't expire. Unless you require an expiration date, we recommend accepting this default. Verify that your selections are correct. Enter your user ID information. note When asked to enter your email address, ensure that you enter the verified email address for your GitHub account. To keep your email address private, use your GitHub-provided no-reply email address. For more information, see \"Verifying your email address\" and \"Setting your commit email address.\" Type a secure passphrase. Use the gpg --list-secret-keys --keyid-format=long command to list the long form of the GPG keys for which you have both a public and private key. A private key is required for signing commits or tags. gpg --list-secret-keys --keyid-format=long note Some GPG installations on Linux may require you to use gpg2 --list-keys --keyid-format LONG to view a list of your existing keys instead. In this case you will also need to configure Git to use gpg2 by running git config --global gpg.program gpg2. From the list of GPG keys, copy the long form of the GPG key ID you'd like to use. In this example, the GPG key ID is 3AA5C34371567BD2: $ gpg --list-secret-keys --keyid-format=long /Users/hubot/.gnupg/secring.gpg ------------------------------------ sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10] uid Hubot ssb 4096R/4BB6D45482678BE3 2016-03-10 Paste the text below, substituting in the GPG key ID you'd like to use. In this example, the GPG key ID is 3AA5C34371567BD2: gpg --armor --export 3AA5C34371567BD2 # Prints the GPG key ID, in ASCII armor format Copy your GPG key, beginning with -----BEGIN PGP PUBLIC KEY BLOCK----- and ending with -----END PGP PUBLIC KEY BLOCK-----. Add the GPG key to your GitHub account. Configure Git to Sign Commits by Default​ open Git Bash and run git config --global commit.gpgsign true Store your GPG Key Passphrase​ info Storing your passphrase ensures you don't have to enter it every time you want to sign a commit, this is strictly optional. For Mac users, the GPG Suite allows you to store your GPG key passphrase in the macOS Keychain. For Windows users, the Gpg4win integrates with other Windows tools. You can also manually configure gpg-agent to save your GPG key passphrase, but this doesn't integrate with macOS Keychain like ssh-agent and requires more setup. Add a GPG Key to Your GitHub Account​ info The below information has been adapted from the Github docs. In the upper-right corner of any page, click your profile photo, then click Settings. In the \"Access\" section of the sidebar, click SSH and GPG keys. Next to the \"GPG keys\" header, click New GPG key. In the \"Title\" field, type a name for your GPG key. In the \"Key\" field, paste the GPG key you copied when you generated your GPG key. Click Add GPG key. To confirm the action, authenticate to your GitHub account.","s":"Setup Commit Signing","u":"/contribution/using-github/","h":"#setup-commit-signing","p":565},{"i":577,"t":"info The below information has been adapted from the Github docs. At last, you're ready to propose changes into the main project! This is the final step in producing a fork of someone else's project, and arguably the most important. If you've made a change that you feel would benefit the community as a whole, you should definitely consider contributing back. To do so, head on over to the repository on GitHub where your project lives. For this example, it would be at https://github.com//chia-docs. You'll see a banner indicating that your branch is one commit ahead of chia-docs:main. Click Contribute and then Open a pull request. GitHub will bring you to a page that shows the differences between your fork and the Chia-Network/chia-docs repository. Click Create pull request. GitHub will bring you to a page where you can enter a title and a description of your changes. It's important to provide as much useful information and a rationale for why you're making this pull request in the first place. The project owner needs to be able to determine whether your change is as useful to everyone as you think it is. Finally, click Create pull request.","s":"Making a Pull Request","u":"/contribution/using-github/","h":"#making-a-pull-request","p":565},{"i":579,"t":"Join Our Discord and jump into the #support channel for support.","s":"Contribution support","u":"/contribution/using-github/","h":"#contribution-support","p":565},{"i":581,"t":"Chia Network Inc's prefarm is secured by a complex set of custodial rules. This document describes how to use the custody tool to audit the prefarm configuration. A moderate level of technical proficiency is probably needed to understand the details. For a high-level overview of the prefarm custody wallets, see our blog post. Other relevant documents: Flow chart to visualize how the custody tool works User guide to help you get up and running CLI reference for all custody commands used in this tutorial Prefarm Alert Tool to access the public prefarm config files","s":"Prefarm Audit Tutorial","u":"/custody/prefarm-audit-tutorial/","h":"","p":580},{"i":583,"t":"The following steps assume that you have installed and setup the custody tool following the User guide. Download the prefarm configuration files from the Prefarm Alert Tool. Run the custody tool command cic sync -c .txt -db .sqlite (venv) cic sync -c .\\prefarm_configs\\cold-us-public-config.txt -db .\\sync_cold_us.sqlite info NOTE: This command has no result if completed successfully, but, you will see the corresponding sqlite file created. Show details of the associated singleton by running cic show -c -db .sqlite (venv) cic show -c -db ./sync_cold_us.sqlite Current time: 1696970325 (10/10/2023, 13:38:45) Config up to date: True Singleton: - launcher ID: 6c77dce3c3bab525dab7883e8ad513a8f3ff127e872009b12836cbb1c8f26647 - amount left: 0 - amount to claim: 9187500100033000911 Outstanding events: PAYMENTS: REKEYS: Config: - current root: 9ab73274c5ca6cd0250b7b6b0352ad3190593bdb8f312d8aff3636c95208b0fb - withdrawal timelock: 2592000 seconds - payment clawback period: 7776000 seconds - rekey cancellation period: 5184000 seconds - rekey penalty: 1296000 seconds - slow rekey timelock: 3888000 seconds info This command shows the singleton launcher ID and the parameters associated with this specific prefarm wallet configuration (withdrawal, clawback, and cancellation periods). Show the singleton p2 address by running cic p2_address -db .sqlite cic p2_address -db .\\sync_cold_us.sqlite xch1jj0gm4ahhlu3ke0r0fx955v8axr6za7rzz6hc0y26lewa7zw6fws5nwvv6","s":"Prefarm Audit with the Internal Custody Tool","u":"/custody/prefarm-audit-tutorial/","h":"#prefarm-audit-with-the-internal-custody-tool","p":580},{"i":585,"t":"info NOTE: A high level of technical proficiency is needed to understand the details of this manual process for what the cic tool does above. This process is a high-level guide and does not display expected results for each step. The chia-dev-tools are needed for this audit. Use the internal custody tool to reveal the current root and other curried parameters (steps 1-4 above). Curry the necessary parameters into the prefarm_inner.clsp (THIS_MOD_HASH, ROOT, STATE): THIS_MOD_HASH = this code's sha256 tree hash without its curried arguments. ROOT = the current root provided by the internal custody tool. STATE = a tree with the following elements in order ((REKEY_MOD_HASH . ACH_MOD_HASH) . (ACH_TIMELOCK . (BASE_REKEY_TIMELOCK . SLOW_REKEY_PENALTY))): REKEY_MOD_HASH = rekey puzzle sha256 tree hash without its curried arguments. ACH_MOD_HASH = ach puzzle sha256 tree hash without its curried arguments. ACH_TIMELOCK = integer of the ach timelock also referred to as the Withdrawal Timelock. BASE_REKEY_TIMELOCK = integer of the rekey timelock. SLOW_REKEY_PENALTY = integer of the slow rekey penalty. Curry the necessary parameters into singleton_top_layer_v1_1.clsp (SINGLETON_STRUCT INNER_PUZZLE): SINGLETON_STRUCT = a tree with the following elements in order (MOD_HASH . (LAUNCHER_ID . LAUNCHER_PUZZLE_HASH)): MOD_HASH = singleton_top_layer puzzle sha256 tree hash without its curried arguments. LAUNCHER_ID = the ID of the singleton we are committed to paying. LAUNCHER_PUZZLE_HASH = the puzzle hash of the launcher. INNER_PUZZLE = the compiled form of the inner puzzle (result of the previous curry). Derive the puzzle hash from the compiled form of the singleton. opc -H Convert the puzzle hash into the singleton p2 puzzle by currying the necessary parameters (SINGLETON_MOD_HASH, LAUNCHER_ID, LAUNCHER_PUZZLE_HASH): SINGLETON_MOD_HASH - singleton_top_layer puzzle sha256 tree hash without its curried arguments . LAUNCHER_ID - the ID of the singleton we are committed to paying. LAUNCHER_PUZZLE_HASH - the puzzle hash of the launcher. Encode the singleton p2 puzzle to reveal the p2 address. cdv encode -p xch info NOTE: This is the address used when sending funds to the vault.","s":"Prefarm Audit with Block Records","u":"/custody/prefarm-audit-tutorial/","h":"#prefarm-audit-with-block-records","p":580},{"i":587,"t":"A New Home for the Prefarm blog Cypherpunks in Sportcoats: Blockchain in the Real World","s":"Further reading","u":"/custody/prefarm-audit-tutorial/","h":"#further-reading","p":580},{"i":590,"t":"Chia's internal custody tool enables multisig, clawback, and rekeying. These features allow you to store assets on Chia's blockchain in one of the most secure setups ever devised. This page includes a comprehensive list of Chia's Command Line Interface commands for using the custody tool. For more info, see the following: Basic description of how the custody tool works Flow chart to visualize how the custody tool works User guide to help you get up and running","s":"Intro","u":"/custody-tool/","h":"#intro","p":588},{"i":593,"t":"Functionality: Export a history of the singleton to a CSV Usage: cic audit [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (******).sqlite) -f --filepath TEXT False The file path the dump the audit log -d --diff TEXT False A previous audit log to diff against this one -h --help None False Show a help message and exit Example Request: cic audit -db './sync (b43314).sqlite' Response: [ { \"time\": 1665430389, \"action\": \"HANDLE_PAYMENT\", \"params\": { \"out_amount\": 1000000000, \"recipient_ph\": \"3377e81d20ad9a3028ffe7e77360c03df48c412f2525aac58035738888adb83d\", \"in_amount\": 1000000000000, \"completed\": true, \"spent_at_height\": 1645707 } }, { \"time\": 1665449184, \"action\": \"HANDLE_PAYMENT\", \"params\": { \"out_amount\": 1000000000, \"recipient_ph\": \"3377e81d20ad9a3028ffe7e77360c03df48c412f2525aac58035738888adb83d\", \"completed\": false, \"spent_at_height\": 1645981, \"clawback_pubkey\": \"bls12381jjh08qx6hvucdrkgn8mrkafqrrp4j6sm4azndk0wz3precaa0teeyeamwtltxv435tsmx2tyayrwg8jy3x4\" } }, { \"time\": 1665980779, \"action\": \"START_REKEY\", \"params\": { \"from_root\": \"74905b06591f9d2e615d313d18cfbcbeffcaabe2e70ccdeafda783bacaae52ef\", \"to_root\": \"90ba2a1ce4ca7f094aa1d2c64b7281b18a4e211e704b43ed45bf39f61cdd67d2\", \"completed\": true, \"spent_at_height\": 1674754 } }, { \"time\": 1665986686, \"action\": \"START_REKEY\", \"params\": { \"from_root\": \"90ba2a1ce4ca7f094aa1d2c64b7281b18a4e211e704b43ed45bf39f61cdd67d2\", \"to_root\": \"c330a8f9ed6a3fd50953f0b6365019246ea08d854ddbed0da3149dd4006abf1f\", \"completed\": true, \"spent_at_height\": 1674940 } } ]","s":"audit","u":"/custody-tool/","h":"#audit","p":588},{"i":595,"t":"Functionality: Clawback a withdrawal or rekey attempt (will be prompted which one) Usage: cic clawback [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (******).sqlite) -f --filename TEXT False The filepath to dump the spend bundle into -pks --pubkeys TEXT True A comma separated list of pubkeys that will be signing this spend -h --help None False Show a help message and exit Example Request: cic clawback -f clawback.unsigned -pks \"1.pk,2.pk\" Response: None","s":"clawback","u":"/custody-tool/","h":"#clawback","p":588},{"i":597,"t":"Functionality: Complete a withdrawal or rekey attempt (will be prompted which one) Usage: cic complete [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (******).sqlite) -f --filename TEXT False The filepath to dump the spend bundle into -h --help None False Show a help message and exit Example -- complete a withdrawal Request: cic complete -f complete.signed Response: Which actions would you like to complete?: 1) PAYMENT to xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j of amount 1000000000 (Enter index of action to complete): 1 Successfully wrote spend to complete.signed","s":"complete","u":"/custody-tool/","h":"#complete","p":588},{"i":599,"t":"Functionality: Take an existing configuration and pubkey set to derive a puzzle root Usage: cic derive_root [OPTIONS] Options: Short Command Long Command Type Required Description -c --configuration TEXT False The configuration file with which to derive the root (or the filepath to create it at if using --db-path) [default: ./Configuration (needs derivation).txt] -db --db-path TEXT False Optionally specify a DB path to find the configuration from -pks --pubkeys TEXT True A comma separated list of pubkey files that will control this money -m --initial-lock-level TEXT True The initial number of pubkeys required to do a withdrawal or standard rekey -n --maximum-lock-level TEXT False The maximum number of pubkeys required to do a withdrawal or standard rekey -min --minimum-pks INTEGER False The minimum number of pubkeys required to initiate a slow rekey [default: 1] -va --validate-against TEXT False Specify a configuration file to check whether it matches the specified parameters -h --help None False Show a help message and exit Example -- set up a 2-of-3 root config Request: cic derive_root -pks \"1.pk,2.pk,3.pk\" -m 2 -n 3 Response: Custody rules successfully added to configuration","s":"derive_root","u":"/custody-tool/","h":"#derive_root","p":588},{"i":601,"t":"Functionality: Examine an unsigned spend bundle to see the details before you sign it Usage: cic examine_spend [OPTIONS] SPEND_FILE Options: Short Command Long Command Type Required Description --qr-density INTEGER False The amount of bytes to pack into a single QR code [default: 250] -va --validate-against TEXT False A new configuration file to check against requests for rekeys -h --help None False Show a help message and exit SPEND_FILE is an unsigned spend bundle. This command will convert the spend bundle into a QR code and open it into a web browser for printing. You can then scan this QR code, for example using an HSM's QR scanner, for easier signing. Example -- examine a rekey spend bundle Request: cic examine_spend ./rekey.unsigned Response: Type: Rekey From: 74905b06591f9d2e615d313d18cfbcbeffcaabe2e70ccdeafda783bacaae52ef To: 90ba2a1ce4ca7f094aa1d2c64b7281b18a4e211e704b43ed45bf39f61cdd67d2 Slow factor: 1 Spenders: bls12381jjh08qx6hvucdrkgn8mrkafqrrp4j6sm4azndk0wz3precaa0teeyeamwtltxv435tsmx2tyayrwg8jy3x4 Press Enter to exit","s":"examine_spend","u":"/custody-tool/","h":"#examine_spend","p":588},{"i":603,"t":"Functionality: Export a copy of the current DB's config Usage: cic export_config [OPTIONS] Options: Short Command Long Command Type Required Description -f --filename TEXT False The file path to export the config to (default: ./Configuration Export (******).sqlite) -db --db-path TEXT True The file path to initialize/find the sync database at (default: ./sync (******).sqlite) -p --public None False Enable to export the public information only (default: disabled) -h --help None False Show a help message and exit Example -- export the config to export.bin Request: cic export_config -p -f export.bin Response: Config successfully exported to export.bin","s":"export_config","u":"/custody-tool/","h":"#export_config","p":588},{"i":605,"t":"Functionality: Initiate an increase of the number of keys required for withdrawal Usage: cic increase_security_level [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (******).sqlite) -pks --pubkeys TEXT True A comma separated list of pubkeys that will be signing this spend -f --filename TEXT False The filepath to dump the spend bundle into -h --help None False Show a help message and exit Example -- move to a 4-of-5 config Request: cic increase_security_level -db './sync (b43314).sqlite' -pks \"1_new.pk,2_new.pk,3_new.pk,4_new.pk\" -f lock.unsigned Response: Successfully wrote spend to lock.unsigned","s":"increase_security_level","u":"/custody-tool/","h":"#increase_security_level","p":588},{"i":607,"t":"Functionality: Create a configuration file for the prefarm. The arguments from this command will be committed to forever. Usage: cic init [OPTIONS] Options: Short Command Long Command Type Required Description -d --directory TEXT False The directory in which to create the configuration file [default: .] -wt --withdrawal-timelock TEXT True The amount of time where nothing has happened before a withdrawal can be made (in seconds) -pc --payment-clawback TEXT True The amount of time to clawback a payment before it's completed (in seconds) -rc --rekey-cancel TEXT True The amount of time to cancel a rekey before it's completed (in seconds) -rt --rekey-timelock TEXT True The amount of time where nothing has happened before a standard rekey can be initiated (in seconds) -sp --slow-penalty TEXT True The time penalty for performing a slow rekey (in seconds) -h --help None False Show a help message and exit Example Request: cic init -d . -wt 600 -pc 1200 -rt 300 -rc 600 -sp 900 Response: A binary file called Configuration (needs derivation).txt will be created in the -d location.","s":"init","u":"/custody-tool/","h":"#init","p":588},{"i":609,"t":"Functionality: Use 1 mojo to launch the singleton that will control the funds Note: This is one of the two commands (along with push_tx) that interacts directly with the blockchain Usage: cic launch_singleton [OPTIONS] Options: Short Command Long Command Type Required Description -c --configuration TEXT True The configuration file with which to launch the singleton -db --db-path TEXT True The file path to initialize the sync database at -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -np --node-rpc-port INTEGER False Set the port where the Node is hosting the RPC interface. See the rpc_port under full_node in config.yaml --fee INTEGER False Fee to use for the launch transaction (in mojos) [default: 0] -h --help None False Show a help message and exit Example Request: cic launch_singleton --fee 10000000 Response: Singleton successfully launched","s":"launch_singleton","u":"/custody-tool/","h":"#launch_singleton","p":588},{"i":611,"t":"Functionality: Print the address to pay to the singleton Usage: cic p2_address [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (******).sqlite) -p --prefix TEXT False The prefix to use when encoding the address (default: xch) -h --help None False Show a help message and exit Example Request: cic p2_address --prefix txch Response: An address beginning with txch will be output","s":"p2_address","u":"/custody-tool/","h":"#p2_address","p":588},{"i":613,"t":"Functionality: Absorb/Withdraw money into/from the singleton Usage: cic payment [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (******).sqlite) -f --filename TEXT False The filepath to dump the spend bundle into -pks --pubkeys TEXT True A comma separated list of pubkeys that will be signing this spend -a --amount INTEGER False The outgoing amount (in mojos) to pay [default: 0] -t --recipient-address TEXT True The address that can claim the money after the clawback period is over (must be supplied if amount is > 0) -ap --absorb-available-payments None False Look for any outstanding payments to the singleton and claim them while doing this spend (adds tx cost) [default: false] -mc --maximum-extra-cost INTEGER False The maximum extra tx cost to be taken on while absorbing payments (as an estimated percentage) [default: 50] -at --amount-threshold INTEGER False The minimum amount required of a payment in order for it to be absorbed [default: 1000000000000 or 1 XCH][0 means \"absorb everything\"] -h --help None False Show a help message and exit Example Request: cic payment -f withdrawal.unsigned -pks \"1.pk,2.pk\" -a 1000000000 -t -ap Response: Successfully wrote spend to withdrawal.unsigned","s":"payment","u":"/custody-tool/","h":"#payment","p":588},{"i":615,"t":"Functionality: Push a signed spend bundle to the network Note: This is one of the two commands (along with launch_singleton) that interacts directly with the blockchain Usage: cic push_tx [OPTIONS] Options: Short Command Long Command Type Required Description -b --spend-bundle TEXT True The signed spend bundle -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -np --node-rpc-port INTEGER False Set the port where the Node is hosting the RPC interface. See the rpc_port under full_node in config.yaml -m --fee INTEGER False The fee to attach to this spend (in mojos) -h --help None False Show a help message and exit Example Request: cic push_tx -b ./complete.signed -m 10000000 Response: {'status': 'SUCCESS', 'success': True}","s":"push_tx","u":"/custody-tool/","h":"#push_tx","p":588},{"i":617,"t":"Functionality: Show the status of the singleton, payments, and rekeys Usage: cic show [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (**).sqlite) [required] -c --config None False Enable to display the details of the public config (default: disabled) -d --derivation None False Enable to display the private details of the private config (default: disabled) -h --help None False Show a help message and exit Example -- show the configuration and derivation Request: cic show -c -d Response: Current time: 1665072285 (10/07/2022, 00:04:45) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 0 - amount to claim: 0 Outstanding events: PAYMENTS: REKEYS: Config: - current root: 74905b06591f9d2e615d313d18cfbcbeffcaabe2e70ccdeafda783bacaae52ef - withdrawal timelock: 600 seconds - payment clawback period: 1200 seconds - rekey cancellation period: 600 seconds Derivation Info: - lock level: 2 - max lock level: 3 - min keys to rekey: 1 - standard rekey timelock: 300 seconds - slow rekey penalty: 900 seconds - pubkeys: - bls123813p8yljrhgskmgqeukg3x6mszh3xtqwwx35t4g6dt0mk2xecyj7elr0fhhrm8t3w7q5zhdelgjlgdspjqxvs - bls123813uhsu0juw06z8vmtt5ncj6zcexmhtsfemvtj3jhv0vuxh9nqjdar59yh555muzrdpz2uflgzey3sgdnm8y9 - bls1238152jm50wh89tf70mwj4ncuukqcq6jqmf7pjgznm55c5qaggrvswzccwvsjgwmy9f4cvlx2j97kmh5uc2es6h","s":"show","u":"/custody-tool/","h":"#show","p":588},{"i":619,"t":"Functionality: Rekey the singleton to a new set of keys/options Usage: cic start_rekey [OPTIONS] Options: Short Command Long Command Type Required Description -db --db-path TEXT True The file path to the sync DB (default: ./sync (******).sqlite) -f --filename TEXT False The filepath to dump the spend bundle into -pks --pubkeys TEXT True A comma separated list of pubkeys that will be signing this spend -new --new-configuration TEXT True The configuration you would like to rekey the singleton to -h --help None False Show a help message and exit Example Request: cic start_rekey -f rekey.unsigned -pks \"1.pk,2.pk\" -new './Configuration (after rekey).txt' Response: Successfully wrote spend to rekey.unsigned","s":"start_rekey","u":"/custody-tool/","h":"#start_rekey","p":588},{"i":621,"t":"Functionality: Sync a singleton from an existing configuration Usage: cic sync [OPTIONS] Options: Short Command Long Command Type Required Description -c --configuration TEXT False The configuration file with which to initialize a sync database (default: ./Configuration (******).txt) -db --db-path TEXT True The file path to initialize/find the sync database at (default: ./sync (******).sqlite) -np --node-rpc-port INTEGER False Set the port where the Node is hosting the RPC interface. See the rpc_port under full_node in config.yaml -s --show None False Enable to show a summary of the singleton after sync is complete (default: disabled) -h --help None False Show a help message and exit Example -- sync and show the config Request: cic sync -s Response: Current time: 1665072029 (10/07/2022, 00:00:29) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 0 - amount to claim: 0 Outstanding events: PAYMENTS: REKEYS:","s":"sync","u":"/custody-tool/","h":"#sync","p":588},{"i":623,"t":"Functionality: Update an outdated config in a sync DB with a new config Usage: cic update_config [OPTIONS] Options: Short Command Long Command Type Required Description -c --configuration TEXT False The configuration file with which to initialize a sync database (default: ./Configuration (******).txt) -db --db-path TEXT True The file path to initialize/find the sync database at (default: ./sync (******).sqlite) -h --help None False Show a help message and exit Example -- update config after rekey Request: cic update_config -c './Configuration (after rekey).txt' Response: Configuration update successful","s":"update_config","u":"/custody-tool/","h":"#update_config","p":588},{"i":625,"t":"Functionality: Determine which pubkeys make up an aggregate pubkey Usage: cic which_pubkeys [OPTIONS] AGGREGATE_PUBKEY Options: Short Command Long Command Type Required Description -pks --pubkeys TEXT True A comma separated list of pubkey files that may be in the aggregate -m --num-pubkeys INTEGER False Check only combinations of a specific number of pubkeys --no-offset None False Do not try the synthetic versions of the pubkeys -h --help None False Show a help message and exit","s":"which_pubkeys","u":"/custody-tool/","h":"#which_pubkeys","p":588},{"i":627,"t":"These commands are to be run from inside the Hardware Security Module or \"vault\". This is a physical/offline security solution for generating and signing keys.","s":"HSM CLI commands and reference","u":"/custody-tool/","h":"#hsm-cli-commands-and-reference","p":588},{"i":630,"t":"Functionality: Generate a secret exponent (private key) Usage: hsmgen There are no options with this command. It will simply generate and display a single secret exponent. Example 1 -- display key The basic command displays a new secret exponent. Request: hsmgen Response: se12celrk5asn0f3w49dxpxe5hg6sg88ezdvp89hpgdqspwj6e03yfq9e6yw4 Example 2 -- save a key to a file Request: hsmgen > test.se Response: The secret exponent is saved to test.se.","s":"hsmgen","u":"/custody-tool/","h":"#hsmgen","p":588},{"i":632,"t":"Functionality: Derive a public key from a secret exponent Usage: hsmgen A secret exponent (required) is the only argument allowed. Example 1 Derive and display a public key from a file containing a secret exponent: hsmpk $(cat test.se) Response: bls123813eh73c2cttvqytzjfnjdhnme7ah8mzsc9yzsf2y40mvhfa9rt5nha20jw50ld8h98w9u2wc0wxxl6gttqcr Example 2 Calculate a public key from a file containing a secret exponent and save it to another file: hsmpk $(cat test.se) > test.pk Response: The public key is saved to test.pk.","s":"hsmpk","u":"/custody-tool/","h":"#hsmpk","p":588},{"i":634,"t":"Functionality: Manage private keys and process signing requests Usage: hsms0 [-h] [-c CREATE_PRIVATE_KEY] [-g GPG_ARGUMENT] path-to-private-keys Positional arguments: path-to-private-keys: A file containing bech32m-encoded secret exponents. If file name ends with .gpg, \"gpg -d\" will be invoked automatically. File is read one line at a time. Options: Short Command Long Command Type Required Description -y --yes None False Enable to skip confirmations (default: disabled) --qr None False Enable to show signature as QR code (default: disabled) --nochunks None False Enable to read the spend in its entirety rather than as chunks (testing only) argument to pass to gpg (besides -d). (default: disabled) -c --create-private-key TEXT False Create keys for non-existent files -g --gpg-argument TEXT False Argument to pass to gpg (besides -d) -h --help None False Show a help message and exit This command is normally run from an HSM with a QR scanner attached. On Linux, this command will display a QR code to the screen to be scanned. On Windows, the QR display isn't working. Example 1 This example will block until the scan is complete. Run the basic command and wait for the QR code to be scanned: hsms ./1.se Response: waiting for qrint-encoded signing requests Example 2 This example will not block. Pipe the unsigned spend bundle through hsms0, which will output a signature encoded in base-64 (it might instead be in base-10), along with a QR code (Linux only): Mock run by just piping the output of 1.se: cat ./initial_absorb.unsigned | hsms -y --nochunks ./1.se Response: waiting for qrint-encoded signing requests > 5449140665451649053284096202714691505589365577374007143978191719238477924138728005883662232162434514948867447203715240045617130770165403282022693823446338843409368762077191699285534081208295847253913527216165034379061118404584995264580179968","s":"hsms","u":"/custody-tool/","h":"#hsms","p":588},{"i":636,"t":"Functionality: Create a signed Spend Bundle from UnsignedSpends and signatures. Usage: hsmmerge [-h] path-to-unsigned-spend-as-hex hex-encoded-signature [hex-encoded-signature ...] Positional arguments: path-to-unsigned-spend-as-hex: A file containing hex-encoded UnsignedSpends hex-encoded-signature: A hex-encoded signature Optional arguments: -h, --help show a help message and exit Note that hex-encoded-signature is a list. To add more signatures, append more arguments. Example Create a signed spend bundle from two signatures and output to a text file: hsmmerge ./initial_absorb.unsigned ./initial_absorb.sig ./initial_absorb_2.sig > initial_absorb.signed Response: The signed spend bundle is saved to initial_absorb.signed.","s":"hsmmerge","u":"/custody-tool/","h":"#hsmmerge","p":588},{"i":638,"t":"Functionality: Dump information about Spend Bundle Usage: hsm_dump_sb [-h] hex-encoded-spend-bundle-or-file Positional arguments: hex-encoded-spend-bundle-or-file: A hex-encoded Spend Bundle. Can be a file containing the spend bundle. Optional arguments: -h, --help show a help message and exit Example Request: hsm_dump_sb ./initial_absorb.signed Response: The signed spend bundle is output.","s":"hsm_dump_sb","u":"/custody-tool/","h":"#hsm_dump_sb","p":588},{"i":640,"t":"Functionality: Generate a UnsignedSpend test as a proof-of-concept Usage: hsm_test_spend [-h] path-to-public-key [path-to-public-key ...] Positional arguments: path-to-public-key: A file containing a single bech32m-encoded public key Optional arguments: -h, --help show a help message and exit Example Request: hsm_test_spend test.pk Response: An unsigned spend bundle is output.","s":"hsm_test_spend","u":"/custody-tool/","h":"#hsm_test_spend","p":588},{"i":642,"t":"DAOs are currently under development. Be sure to update to the latest Chia version prior to using the DAO primitive. As of Chia version 2.1.4, the following DAO issues are known to exist:","s":"DAO Known Issues","u":"/dao-known-issues/","h":"","p":641},{"i":644,"t":"Under normal circumstances, an attacker can create a malicious proposal to drain the DAO of its treasury. However, even if the attacker has secured enough YES votes to meet the attendance_required threshold to pass the proposal, the soft_close_length will protect against this type of attack. As long as a sufficient number of NO votes are added prior to the expiration of the soft_close_length, the proposal (and the attack) will fail. However, prior to creating this proposal, the attacker can use proposal spam to improve the chances of the attack's success. The DAO wallet subscribes to PROPOSAL coins by hinting the TREASURY_ID in the memos field upon the coin's creation. There is a limit on the number of items a full_node will return to a wallet based on a subscribed puzzle*hash (including hinted coins): trusted_max_subscribe_response_items: 500000 max_subscribe_response_items: 100000 The attacker can take advantage of this limit by creating multiple coins, each of which contains a hint equal to the TREASURY_ID. Eventually a wallet will no longer get any additional coin states for newer coins from a full_node via the coin state subscription. This is the \"proposal spam\" part of the attack. If the attacker has created a sufficient number of the aforementioned coins to reach the subscription limit, the malicious proposal will be invisible to the wallets of every other DAO member. If the members are not alerted to the existence of the malicious proposal in some other way, the soft_close_length will eventually be reached, and the proposal will succeed.","s":"Proposal Spam","u":"/dao-known-issues/","h":"#proposal-spam","p":641},{"i":646,"t":"An attacker can create spam proposals with the intent of locking DAO_CATs into voting mode permanently. There are two ways to accomplish this: Create otherwise valid PROPOSAL coins which don't meet the proposal minimum amount (e.g. 0 or 1 mojo coins). Create proposals without a timer coin. In the event that such proposals are voted on by users, because the proposals can never be closed (even via self-destruct), any users who voted on these proposals will never be able to unlock the coins they voted with. Note that coins in this state could continue to be used to vote on other proposals. The current mitigation to this is that the wallet will filter out any proposals which either don't meet the proposal minimum amount or don't have valid timer coins. It is strongly suggested to use the show_proposal command with any proposal that you intend to vote on, and check that it is valid.","s":"Fake Proposals to lock DAO CATs","u":"/dao-known-issues/","h":"#fake-proposals-to-lock-dao-cats","p":641},{"i":648,"t":"Because each proposal is voted on and enacted independently, it is possible to have a situation where a proposal to change one or more of the DAO's settings passes while another proposal is active. In this case, the active proposal will take on the new rules imposed by the proposal to change the DAO's settings. This situation could cause the existing proposal to fail, even if it would have passed under the original rules. Other side effects are also possible. Because of this anomaly, a vote for a proposal to change the DAO's settings could affect any of the DAO's other active proposals. Therefore, members are strongly encouraged to examine all open proposals when deciding whether to vote for a proposal to change the DAO's settings.","s":"Changing a DAO's settings","u":"/dao-known-issues/","h":"#changing-a-daos-settings","p":641},{"i":650,"t":"warning Chia DAOs are currently an alpha primitive. This means that DAOs are not yet ready for production use, but you can still test them on either a simulator or a testnet. We recommend against creating DAOs with this primitive on mainnet! Prior to using the DAO alpha primitive, be sure to read the list of known issues. note The RPC to create a new DAO is a wallet RPC called create_new_wallet, therefore it is not documented here. See Example 7 for details of how this command's options can be used. Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc wallet dao_get_treasury_balance '{\"wallet_id\": 2}' To run the same command on Windows, you need to escape the quotes, so it looks like this (the braces have been removed to support the formatting for this page. You still need to use them in your actual commands.): chia rpc wallet dao_get_treasury_balance '\\\"wallet_id\\\": 2'","s":"DAO RPCs","u":"/dao-rpc/","h":"","p":649},{"i":653,"t":"Functionality: Add funds to a DAO's treasury wallet Usage: chia rpc wallet [OPTIONS] dao_add_funds_to_treasury [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The DAO wallet to which to add funds. Must be of type DAOWallet funding_wallet_id NUMBER True The wallet from which the funds will come. Must be of type STANDARD_WALLET or CAT amount NUMBER True The amount of funds to add, in mojos fee NUMBER False An optional blockchain fee, in mojos [Default: 0] Example Start by showing the treasury's current balance: chia rpc wallet dao_get_treasury_balance '{\"wallet_id\": 2}' Response: { \"balances\": { \"xch\": 6000000000000 }, \"success\": true } Next, add 1 XCH (1 000 000 000 000 mojos) to the treasury. In this example, the DAO's wallet_id is 2 and the funds will be withdrawn from wallet 1: chia rpc wallet dao_add_funds_to_treasury '{\"wallet_id\": 2, \"funding_wallet_id\": 1, \"amount\":1000000000000}' Response: { \"success\": true, \"tx\": { \"additions\": [ { \"amount\": 1000000000000, \"parent_coin_info\": \"0x84e4edfb59d4d67ad5add0b8b32a5ceb2bb58f8aa76b34fc08d2a5a543fd7281\", \"puzzle_hash\": \"0xf83e58db471eb1c4f384ff7d8df667ed46fd65122e97ea9f4e49d2a201958ae6\" }, { \"amount\": 899060877519, \"parent_coin_info\": \"0x84e4edfb59d4d67ad5add0b8b32a5ceb2bb58f8aa76b34fc08d2a5a543fd7281\", \"puzzle_hash\": \"0xf846adb08db6c61db7f2c48fdc3211923306f5f4550a0c6c9837fc935a310b25\" } ], \"amount\": 1000000000000, \"confirmed\": false, \"confirmed_at_height\": 0, \"created_at_time\": 1701236328, \"fee_amount\": 0, \"memos\": [ [ \"0x5f3e9570b7c233bef7e7ee533b27045d66337e136768a35b747103a022f6e22a\", [ \"0xf83e58db471eb1c4f384ff7d8df667ed46fd65122e97ea9f4e49d2a201958ae6\" ] ] ], \"name\": \"0x9ab12f78338f24f5c2f84a1d83aed2d127b40c107a451891c323464ad0adec63\", \"removals\": [ { \"amount\": 1899060877519, \"parent_coin_info\": \"0x722a89074b24a5742aa36667e2864b0c7151515a4796b062601de02e67a4bb4c\", \"puzzle_hash\": \"0xedcdf7ef527fa44435058521fd4fbcfbb9697bbb23489f3b616ec0b20b388e13\" } ], \"sent\": 0, \"sent_to\": [], \"spend_bundle\": { \"aggregated_signature\": \"0x8a9eb66ae69288cb179d1f334589160788cafced0ebc239e1ab084796c88e723fc01ce9629c24d724e101e1f1e7570af0a4cd3d852c7162a061d92268a5b4f1b4d82b83e20c1b152cf79dbd133d728830ee1a848241c5d13254a0452b881df7b\", \"coin_spends\": [ { \"coin\": { \"amount\": 1899060877519, \"parent_coin_info\": \"0x722a89074b24a5742aa36667e2864b0c7151515a4796b062601de02e67a4bb4c\", \"puzzle_hash\": \"0xedcdf7ef527fa44435058521fd4fbcfbb9697bbb23489f3b616ec0b20b388e13\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b08d639dbc9f933abf4cc830b9b71a9e36e26824f326f1e7a26f3fbd5ec167f8cd0f876f07a02bbf7be885d4371c84a7ebff018080\", \"solution\": \"0xff80ffff01ffff33ffa0f83e58db471eb1c4f384ff7d8df667ed46fd65122e97ea9f4e49d2a201958ae6ff8600e8d4a51000ffffa0f83e58db471eb1c4f384ff7d8df667ed46fd65122e97ea9f4e49d2a201958ae68080ffff33ffa0f846adb08db6c61db7f2c48fdc3211923306f5f4550a0c6c9837fc935a310b25ff8600d1543448cf80ffff3cffa0ebe35d9772349926944804e0103fca92d06616fdd8566c3a8e16cf0dc331343b8080ff8080\" } ] }, \"to_puzzle_hash\": \"0xf83e58db471eb1c4f384ff7d8df667ed46fd65122e97ea9f4e49d2a201958ae6\", \"trade_id\": null, \"type\": 1, \"valid_times\": { \"max_blocks_after_created\": null, \"max_height\": null, \"max_secs_after_created\": null, \"max_time\": null, \"min_blocks_since_created\": null, \"min_height\": null, \"min_secs_since_created\": null, \"min_time\": null }, \"wallet_id\": 1 }, \"tx_id\": \"0x9ab12f78338f24f5c2f84a1d83aed2d127b40c107a451891c323464ad0adec63\" } After the transaction has completed, show the balance once again: chia rpc wallet dao_get_treasury_balance '{\"wallet_id\": 2}' Response: { \"balances\": { \"xch\": 6000000000000 }, \"success\": true }","s":"dao_add_funds_to_treasury","u":"/dao-rpc/","h":"#dao_add_funds_to_treasury","p":649},{"i":655,"t":"Functionality: Change a your filter threshold for viewing proposals Usage: chia rpc wallet [OPTIONS] dao_adjust_filter_level [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The ID of the wallet whose filter level you would like to adjust. Must be of type DAOWallet filter_level NUMBER True The new filter level. Propos with fewer votes than this will not be shown.","s":"dao_adjust_filter_level","u":"/dao-rpc/","h":"#dao_adjust_filter_level","p":649},{"i":657,"t":"Functionality: Close a proposal from a DAO Usage: chia rpc wallet [OPTIONS] dao_close_proposal [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The ID of the wallet that contains the proposal to close. Must be of type DAOWallet proposal_id STRING True The ID of the proposal to close fee NUMBER False An optional blockchain fee, in mojos","s":"dao_close_proposal","u":"/dao-rpc/","h":"#dao_close_proposal","p":649},{"i":659,"t":"Functionality: Create and add a proposal to a DAO Usage: chia rpc wallet [OPTIONS] dao_create_proposal [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The DAO wallet to use for creating the proposal. Must be of type DAOWallet proposal_type STRING True Must be either spend, update, or mint vote_amount NUMBER False The number of votes to add fee NUMBER False An optional blockchain fee, in mojos Proposal Types: Type Description spend A proposal to spend funds from the DAO update A proposal to change a DAO's rules mint A proposal to mint new DAO CATs If the proposal is of type spend, then additions may optionally be included in the request parameters. additions is a list with the following elements: Element Required Description asset_id False The asset_id of the funds to spend [Default: None] puzzle_hash True The puzzle_hash of the funds to spend amount True The amount, in mojos, to spend If the proposal is of type spend, and additions is not included, then the following request parameters will be used instead: Parameter Required Description asset_id False The asset_id of the funds to spend [Default: None] inner_address True The inner address of the funds to spend amount True The amount, in mojos, to spend If the proposal is of type update, then the request parameter new_dao_rules is required. new_dao_rules is a list of optional rules to update. If a rule is missing from this list, it will not be updated: Rule Required Description proposal_timelock False The new minimum number of blocks before a proposal can close soft_close_length False The number of blocks a proposal must remain unspent before closing attendance_required False The minimum number of votes a proposal must receive to be accepted pass_percentage False The percentage of 'yes' votes in basis points a proposal must receive to be accepted. 100% = 10000 self_destruct_length False The number of blocks required before a proposal can be automatically removed oracle_spend_delay False The number of blocks required between oracle spends of the treasury If the proposal is of type mint, then the following request parameters are required: Parameter Required Description amount True The number of DAO CATs to mint cat_target_address True The xch address that will receive the tokens","s":"dao_create_proposal","u":"/dao-rpc/","h":"#dao_create_proposal","p":649},{"i":661,"t":"Functionality: Release DAO CATs from voting mode Usage: chia rpc wallet [OPTIONS] dao_exit_lockup [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The ID of the wallet from which to release the DAO CATs. Must be of type DAOWallet coins STRING False A list of coin IDs to release fee NUMBER False An optional blockchain fee, in mojos","s":"dao_exit_lockup","u":"/dao-rpc/","h":"#dao_exit_lockup","p":649},{"i":663,"t":"Functionality: Release closed proposals from DAO CATs Usage: chia rpc wallet [OPTIONS] dao_free_coins_from_finished_proposals [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The ID of the wallet from which to release the DAO CATs. Must be of type DAOWallet fee NUMBER False An optional blockchain fee, in mojos","s":"dao_free_coins_from_finished_proposals","u":"/dao-rpc/","h":"#dao_free_coins_from_finished_proposals","p":649},{"i":665,"t":"Functionality: List all existing proposals from the specified DAO Usage: chia rpc wallet [OPTIONS] dao_get_proposals [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The wallet from which to list proposals; must be of type DAOWallet Example Request: chia rpc wallet dao_get_proposals '{\"wallet_id\": 2}' Response: { \"proposal_timelock\": 3, \"proposals\": [ { \"amount_voted\": 3000, \"closed\": false, \"current_coin\": { \"amount\": 1000001, \"parent_coin_info\": \"0xa65c0cc9a239c5964af2f6dfabad0f4f50bc2cb30e911081e481bd43163fdf24\", \"puzzle_hash\": \"0x3cdc53833b4b4f69703c7edaccc2373e8964421df51abf151c628491f58386e6\" }, \"current_innerpuz\": \"0xff02ffff01ff02ffff01ff02ffff01ff02ffff03ff8402ffffffffff01ff02ffff01ff02ffff03ffff15ff8400bfffffff8305ffff80ffff01ff02ffff01ff04ffff04ffff0133ffff04ffff02ff2cffff04ff02ffff04ffff04ff0bffff04ff8217ffff178080ffff04ff5fff8080808080ffff04ffff0101ffff04ffff04ff8205ffffff018080ffff018080808080ffff04ffff04ffff0152ffff04ff8400bfffffffff01808080ffff04ffff04ffff013fffff04ffff0bffff02ff2effff04ff02ffff04ffff04ff0bffff04ff8205ffff178080ffff04ff8200bfffff04ff83017fffffff04ff8305ffffffff04ff835fffffffff04ff8317ffffffff04ff830bffffffff04ff8400bfffffffff04ff84017fffffff808080808080808080808080ffff018080ffff01808080ffff0180808080ff0180ffff01ff02ffff01ff0880ff018080ff0180ff0180ffff01ff02ffff01ff02ffff03ff835fffffffff01ff02ffff01ff04ffff04ffff0152ffff04ff835fffffffff01808080ffff04ffff04ffff0133ffff04ffff02ff2cffff04ff02ffff04ffff04ff0bffff04ff8217ffff178080ffff04ff5fff8080808080ffff04ffff0101ffff04ffff04ff8205ffffff018080ffff018080808080ffff04ffff04ffff013fffff04ffff0bffff02ff3cffff04ff02ffff04ff05ffff04ff820bffffff04ffff04ff0bffff04ff8217ffff178080ff808080808080ff8217ff80ffff01808080ffff04ffff04ffff013effff04ff8305ffffffff01808080ffff02ffff03ffff22ffff15ff8300bfffff8317ffff80ffff15ff825fffffff05ffff14ffff12ff8300bfffff830bffff80ffff0182271080808080ffff01ff02ffff01ff04ffff04ffff013cffff04ffff02ff38ffff04ff02ffff04ffff04ff822fffffff04ffff0180ffff01808080ff80808080ffff01808080ffff04ffff04ffff013fffff04ffff0bffff02ff2effff04ff02ffff04ffff04ff0bffff04ff8205ffff178080ffff04ff8200bfffff04ff83017fffffff04ff8305ffffffff04ff835fffffffff04ff8317ffffffff04ff830bffffffff04ff8400bfffffffff04ff84017fffffff808080808080808080808080ff8217ff80ffff01808080ffff01808080ff0180ffff01ff02ffff01ff04ffff04ffff013fffff04ffff0bffff02ff2effff04ff02ffff04ffff04ff0bffff04ff8205ffff178080ffff04ff8200bfffff04ff83017fffffff04ff8305ffffffff04ff835fffffffff04ff8317ffffffff04ff830bffffffff04ff8400bfffffffff04ff84017fffffff808080808080808080808080ffff018080ffff01808080ffff018080ff018080ff018080808080ff0180ffff01ff02ffff01ff02ff3effff04ff02ffff04ff8217ffffff04ff82017fffff04ff2fffff04ff8202ffffff04ff8205ffffff04ff820bffffff04ff825fffffff04ff8300bfffffff04ff822fffffff04ff8305ffffffff04ff83017fffffff04ff830bffffffff04ff8317ffffffff04ff8302ffffffff04ffff0180ffff04ffff02ffff03ffff21ff825fffff8300bfff80ffff01ff02ffff01ff0180ff0180ffff01ff02ffff01ff04ffff04ffff0133ffff04ffff02ff3cffff04ff02ffff04ff05ffff04ff820bffffff04ffff04ff0bffff04ff8217ffff178080ff808080808080ffff04ffff0180ffff0180808080ffff02ffff03ffff09ffff02ff38ffff04ff02ffff04ff832fffffff80808080ff822fff80ffff01ff02ffff01ff0180ff0180ffff01ff02ffff01ff0880ff018080ff018080ff018080ff0180ffff04ff8405ffffffffff04ffff0180ff808080808080808080808080808080808080808080ff018080ff0180ff018080ff0180ffff04ffff01ffffffff02ffff03ff05ffff01ff02ffff01ff02ff10ffff04ff02ffff04ffff06ff0580ffff04ffff0bffff0102ffff0bffff0101ffff010480ffff0bffff0102ffff0bffff0102ffff0bffff0101ffff010180ffff05ff058080ffff0bffff0102ff0bffff0bffff0101ffff018080808080ff8080808080ff0180ffff01ff02ffff010bff018080ff0180ffff0bffff0102ffff01a0a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222ffff0bffff0102ffff0bffff0102ffff01a09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0580ffff0bffff0102ffff02ff10ffff04ff02ffff04ff07ffff01ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b280808080ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a808080ff02ffff03ffff07ff0580ffff01ff02ffff01ff0bffff0102ffff02ff38ffff04ff02ffff04ffff05ff0580ff80808080ffff02ff38ffff04ff02ffff04ffff06ff0580ff8080808080ff0180ffff01ff02ffff01ff0bffff0101ff0580ff018080ff0180ffff02ffff03ff0bffff01ff02ffff01ff02ffff03ffff09ff05ffff05ff0b8080ffff01ff02ffff01ff0101ff0180ffff01ff02ffff01ff02ff14ffff04ff02ffff04ff05ffff04ffff06ff0b80ff8080808080ff018080ff0180ff0180ffff01ff02ffff01ff0180ff018080ff0180ffff02ff28ffff04ff02ffff04ff0bffff04ffff0bffff0101ff0b80ffff04ffff02ff38ffff04ff02ffff04ff05ff80808080ff808080808080ff02ff28ffff04ff02ffff04ff05ffff04ffff02ff38ffff04ff02ffff04ff17ff80808080ffff04ffff0bffff0101ff0b80ff808080808080ffffff02ff28ffff04ff02ffff04ff05ffff04ff17ffff04ffff02ff38ffff04ff02ffff04ff0bff80808080ffff04ffff0bffff0101ff0580ff80808080808080ffff02ff28ffff04ff02ffff04ff05ffff04ffff0bffff0101ff5f80ffff04ffff0bffff0101ff2f80ffff04ffff0bffff0101ff1780ffff04ffff0bffff0101ff0b80ffff04ffff0bffff0101ff0580ff808080808080808080ff02ff28ffff04ff02ffff04ff05ffff04ff17ffff04ffff0bffff0101ff0b80ffff04ffff0bffff0101ff0580ff80808080808080ffff02ff28ffff04ff02ffff04ff09ffff04ff0bffff04ffff02ff38ffff04ff02ffff04ff05ff80808080ff808080808080ffff02ff16ffff04ff02ffff04ff05ffff04ffff02ff28ffff04ff02ffff04ff0bffff04ffff0bffff0101ff8205ff80ffff04ffff0bffff0101ff8202ff80ffff04ffff0bffff0101ff82017f80ffff04ffff0bffff0101ff8200bf80ffff04ffff0bffff0101ff5f80ffff04ffff0bffff0101ff2f80ffff04ff17ffff04ffff0bffff0101ff0b80ff808080808080808080808080ff8080808080ff02ffff03ff820bffffff01ff02ffff01ff02ffff03ffff15ffff05ff8217ff80ffff018080ffff01ff02ffff01ff04ffff04ffff013effff04ffff05ff820bff80ffff01808080ffff04ffff04ffff013fffff04ffff0bffff02ff3affff04ff02ffff04ff17ffff04ff2fffff04ffff02ff12ffff04ff02ffff04ff0bffff04ffff05ff822fff80ffff04ffff05ff825fff80ff808080808080ff808080808080ffff02ff38ffff04ff02ffff04ffff04ff05ffff04ffff05ff8217ff80ffff04ff8300bfffffff04ffff05ff820bff80ffff018080808080ff8080808080ffff01808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff8200bfffff04ff82017fffff04ff8202ffffff04ff8205ffffff04ffff06ff820bff80ffff04ffff06ff8217ff80ffff04ffff06ff822fff80ffff04ffff06ff825fff80ffff04ff8300bfffffff04ffff10ffff05ff8217ff80ff83017fff80ffff04ff8302ffffffff04ff8305ffffffff04ffff02ffff03ffff02ff14ffff04ff02ffff04ffff05ff820bff80ffff04ff830bffffff8080808080ffff01ff02ffff01ff0880ff0180ffff01ff02ffff01ff04ffff05ff820bff80ff830bffff80ff018080ff0180ff8080808080808080808080808080808080808080808080ff0180ffff01ff02ffff01ff0880ff018080ff0180ff0180ffff01ff02ffff01ff04ffff04ffff0133ffff04ffff02ff2affff04ff02ffff04ff8200bfffff04ff05ffff04ff8205ffffff04ffff02ffff03ff8300bfffffff01ff02ffff01ff10ff82017fff83017fff80ff0180ffff01ff02ffff0182017fff018080ff0180ffff04ffff10ff8202ffff83017fff80ff8080808080808080ffff04ff8305ffffffff04ffff04ff5fffff018080ffff018080808080ffff04ffff04ffff0149ffff04ff8305ffffffff01808080ff8302ffff8080ff018080ff0180ff018080ffff04ffff01a01acd912fca662d1474f7a6c762280fc1430875bef518883387086c1125027526ffff04ffff01a07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffff04ffff01a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a037bef360ee858133b69d595a906dc45d01af50379dad515eb9518abb7c1d2a7affff04ffff01a0694c99e1fb07671771bbca3d110880693a9ecc37a6529891ec979d0f3e760ebaffff04ffff01a0a80ab006a05f8fa0156c4bec25b747075c61338c6d0c0ffe95fd04ea96c636d7ffff04ffff01a0f0d10f58714194b0db438874dca0d9738923a3d637669bb296aede4d38daf09fffff04ffff01a052d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089ffff04ffff01a041b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123ff0180808080808080808080ffff04ffff01a07fe05bacefa83bd570e4e3d83ea3f0de8ef64ad77d217c351b09c64a5c4b063bffff04ffff01a07b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22ffff04ffff01a087567752457c84454e523b375073437c73bd8d3b8d417f40db6ab82d0654bb5dffff04ffff018207d0ffff04ffff01820bb8ff01808080808080\", \"inner_puzzle\": \"0xff02ffff01ff02ffff01ff02ffff01ff02ffff03ff8402ffffffffff01ff02ffff01ff02ffff03ffff15ff8400bfffffff8305ffff80ffff01ff02ffff01ff04ffff04ffff0133ffff04ffff02ff2cffff04ff02ffff04ffff04ff0bffff04ff8217ffff178080ffff04ff5fff8080808080ffff04ffff0101ffff04ffff04ff8205ffffff018080ffff018080808080ffff04ffff04ffff0152ffff04ff8400bfffffffff01808080ffff04ffff04ffff013fffff04ffff0bffff02ff2effff04ff02ffff04ffff04ff0bffff04ff8205ffff178080ffff04ff8200bfffff04ff83017fffffff04ff8305ffffffff04ff835fffffffff04ff8317ffffffff04ff830bffffffff04ff8400bfffffffff04ff84017fffffff808080808080808080808080ffff018080ffff01808080ffff0180808080ff0180ffff01ff02ffff01ff0880ff018080ff0180ff0180ffff01ff02ffff01ff02ffff03ff835fffffffff01ff02ffff01ff04ffff04ffff0152ffff04ff835fffffffff01808080ffff04ffff04ffff0133ffff04ffff02ff2cffff04ff02ffff04ffff04ff0bffff04ff8217ffff178080ffff04ff5fff8080808080ffff04ffff0101ffff04ffff04ff8205ffffff018080ffff018080808080ffff04ffff04ffff013fffff04ffff0bffff02ff3cffff04ff02ffff04ff05ffff04ff820bffffff04ffff04ff0bffff04ff8217ffff178080ff808080808080ff8217ff80ffff01808080ffff04ffff04ffff013effff04ff8305ffffffff01808080ffff02ffff03ffff22ffff15ff8300bfffff8317ffff80ffff15ff825fffffff05ffff14ffff12ff8300bfffff830bffff80ffff0182271080808080ffff01ff02ffff01ff04ffff04ffff013cffff04ffff02ff38ffff04ff02ffff04ffff04ff822fffffff04ffff0180ffff01808080ff80808080ffff01808080ffff04ffff04ffff013fffff04ffff0bffff02ff2effff04ff02ffff04ffff04ff0bffff04ff8205ffff178080ffff04ff8200bfffff04ff83017fffffff04ff8305ffffffff04ff835fffffffff04ff8317ffffffff04ff830bffffffff04ff8400bfffffffff04ff84017fffffff808080808080808080808080ff8217ff80ffff01808080ffff01808080ff0180ffff01ff02ffff01ff04ffff04ffff013fffff04ffff0bffff02ff2effff04ff02ffff04ffff04ff0bffff04ff8205ffff178080ffff04ff8200bfffff04ff83017fffffff04ff8305ffffffff04ff835fffffffff04ff8317ffffffff04ff830bffffffff04ff8400bfffffffff04ff84017fffffff808080808080808080808080ffff018080ffff01808080ffff018080ff018080ff018080808080ff0180ffff01ff02ffff01ff02ff3effff04ff02ffff04ff8217ffffff04ff82017fffff04ff2fffff04ff8202ffffff04ff8205ffffff04ff820bffffff04ff825fffffff04ff8300bfffffff04ff822fffffff04ff8305ffffffff04ff83017fffffff04ff830bffffffff04ff8317ffffffff04ff8302ffffffff04ffff0180ffff04ffff02ffff03ffff21ff825fffff8300bfff80ffff01ff02ffff01ff0180ff0180ffff01ff02ffff01ff04ffff04ffff0133ffff04ffff02ff3cffff04ff02ffff04ff05ffff04ff820bffffff04ffff04ff0bffff04ff8217ffff178080ff808080808080ffff04ffff0180ffff0180808080ffff02ffff03ffff09ffff02ff38ffff04ff02ffff04ff832fffffff80808080ff822fff80ffff01ff02ffff01ff0180ff0180ffff01ff02ffff01ff0880ff018080ff018080ff018080ff0180ffff04ff8405ffffffffff04ffff0180ff808080808080808080808080808080808080808080ff018080ff0180ff018080ff0180ffff04ffff01ffffffff02ffff03ff05ffff01ff02ffff01ff02ff10ffff04ff02ffff04ffff06ff0580ffff04ffff0bffff0102ffff0bffff0101ffff010480ffff0bffff0102ffff0bffff0102ffff0bffff0101ffff010180ffff05ff058080ffff0bffff0102ff0bffff0bffff0101ffff018080808080ff8080808080ff0180ffff01ff02ffff010bff018080ff0180ffff0bffff0102ffff01a0a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222ffff0bffff0102ffff0bffff0102ffff01a09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0580ffff0bffff0102ffff02ff10ffff04ff02ffff04ff07ffff01ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b280808080ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a808080ff02ffff03ffff07ff0580ffff01ff02ffff01ff0bffff0102ffff02ff38ffff04ff02ffff04ffff05ff0580ff80808080ffff02ff38ffff04ff02ffff04ffff06ff0580ff8080808080ff0180ffff01ff02ffff01ff0bffff0101ff0580ff018080ff0180ffff02ffff03ff0bffff01ff02ffff01ff02ffff03ffff09ff05ffff05ff0b8080ffff01ff02ffff01ff0101ff0180ffff01ff02ffff01ff02ff14ffff04ff02ffff04ff05ffff04ffff06ff0b80ff8080808080ff018080ff0180ff0180ffff01ff02ffff01ff0180ff018080ff0180ffff02ff28ffff04ff02ffff04ff0bffff04ffff0bffff0101ff0b80ffff04ffff02ff38ffff04ff02ffff04ff05ff80808080ff808080808080ff02ff28ffff04ff02ffff04ff05ffff04ffff02ff38ffff04ff02ffff04ff17ff80808080ffff04ffff0bffff0101ff0b80ff808080808080ffffff02ff28ffff04ff02ffff04ff05ffff04ff17ffff04ffff02ff38ffff04ff02ffff04ff0bff80808080ffff04ffff0bffff0101ff0580ff80808080808080ffff02ff28ffff04ff02ffff04ff05ffff04ffff0bffff0101ff5f80ffff04ffff0bffff0101ff2f80ffff04ffff0bffff0101ff1780ffff04ffff0bffff0101ff0b80ffff04ffff0bffff0101ff0580ff808080808080808080ff02ff28ffff04ff02ffff04ff05ffff04ff17ffff04ffff0bffff0101ff0b80ffff04ffff0bffff0101ff0580ff80808080808080ffff02ff28ffff04ff02ffff04ff09ffff04ff0bffff04ffff02ff38ffff04ff02ffff04ff05ff80808080ff808080808080ffff02ff16ffff04ff02ffff04ff05ffff04ffff02ff28ffff04ff02ffff04ff0bffff04ffff0bffff0101ff8205ff80ffff04ffff0bffff0101ff8202ff80ffff04ffff0bffff0101ff82017f80ffff04ffff0bffff0101ff8200bf80ffff04ffff0bffff0101ff5f80ffff04ffff0bffff0101ff2f80ffff04ff17ffff04ffff0bffff0101ff0b80ff808080808080808080808080ff8080808080ff02ffff03ff820bffffff01ff02ffff01ff02ffff03ffff15ffff05ff8217ff80ffff018080ffff01ff02ffff01ff04ffff04ffff013effff04ffff05ff820bff80ffff01808080ffff04ffff04ffff013fffff04ffff0bffff02ff3affff04ff02ffff04ff17ffff04ff2fffff04ffff02ff12ffff04ff02ffff04ff0bffff04ffff05ff822fff80ffff04ffff05ff825fff80ff808080808080ff808080808080ffff02ff38ffff04ff02ffff04ffff04ff05ffff04ffff05ff8217ff80ffff04ff8300bfffffff04ffff05ff820bff80ffff018080808080ff8080808080ffff01808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff8200bfffff04ff82017fffff04ff8202ffffff04ff8205ffffff04ffff06ff820bff80ffff04ffff06ff8217ff80ffff04ffff06ff822fff80ffff04ffff06ff825fff80ffff04ff8300bfffffff04ffff10ffff05ff8217ff80ff83017fff80ffff04ff8302ffffffff04ff8305ffffffff04ffff02ffff03ffff02ff14ffff04ff02ffff04ffff05ff820bff80ffff04ff830bffffff8080808080ffff01ff02ffff01ff0880ff0180ffff01ff02ffff01ff04ffff05ff820bff80ff830bffff80ff018080ff0180ff8080808080808080808080808080808080808080808080ff0180ffff01ff02ffff01ff0880ff018080ff0180ff0180ffff01ff02ffff01ff04ffff04ffff0133ffff04ffff02ff2affff04ff02ffff04ff8200bfffff04ff05ffff04ff8205ffffff04ffff02ffff03ff8300bfffffff01ff02ffff01ff10ff82017fff83017fff80ff0180ffff01ff02ffff0182017fff018080ff0180ffff04ffff10ff8202ffff83017fff80ff8080808080808080ffff04ff8305ffffffff04ffff04ff5fffff018080ffff018080808080ffff04ffff04ffff0149ffff04ff8305ffffffff01808080ff8302ffff8080ff018080ff0180ff018080ffff04ffff01a01acd912fca662d1474f7a6c762280fc1430875bef518883387086c1125027526ffff04ffff01a07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffff04ffff01a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a037bef360ee858133b69d595a906dc45d01af50379dad515eb9518abb7c1d2a7affff04ffff01a0694c99e1fb07671771bbca3d110880693a9ecc37a6529891ec979d0f3e760ebaffff04ffff01a0a80ab006a05f8fa0156c4bec25b747075c61338c6d0c0ffe95fd04ea96c636d7ffff04ffff01a0f0d10f58714194b0db438874dca0d9738923a3d637669bb296aede4d38daf09fffff04ffff01a052d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089ffff04ffff01a041b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123ff0180808080808080808080ffff04ffff01a07fe05bacefa83bd570e4e3d83ea3f0de8ef64ad77d217c351b09c64a5c4b063bffff04ffff01a07b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22ffff04ffff01a087567752457c84454e523b375073437c73bd8d3b8d417f40db6ab82d0654bb5dffff04ffff018203e8ffff04ffff018207d0ff01808080808080\", \"passed\": true, \"proposal_id\": \"0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22\", \"singleton_block_height\": 500777, \"timer_coin\": { \"amount\": 0, \"parent_coin_info\": \"0xe0a76dce45d4f7f3f2d0710be6f515942c392931f2b2de02eb4a39adb6598eaf\", \"puzzle_hash\": \"0xfe39821e05ce9aa9ea830e9dbd3e61b39f20e6fa1d47ec7b9930d9d30cb23a4a\" }, \"yes_votes\": 2000 } ], \"soft_close_length\": 2, \"success\": true }","s":"dao_get_proposals","u":"/dao-rpc/","h":"#dao_get_proposals","p":649},{"i":667,"t":"Functionality: Show the status of the specified DAO proposal Usage: chia rpc wallet [OPTIONS] dao_get_proposal_state [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The ID of the DAO wallet from which to look up a proposal's status. Must be of type DAOWallet proposal_id STRING True The ID of the proposal whose status you would like to show Example First, get all proposals, which will show their IDs: chia rpc wallet dao_get_proposals '{\"wallet_id\": 2}' Response (truncated): { \"proposal_timelock\": 3, \"proposals\": [ { \"amount_voted\": 3000, \"closed\": false, \"passed\": true, \"proposal_id\": \"0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22\", \"singleton_block_height\": 500777, \"yes_votes\": 2000 } ], \"soft_close_length\": 2, \"success\": true } Next, include the proposal_id with the call for dao_get_proposal_state to get more info about the proposal: chia rpc wallet dao_get_proposal_state '{\"wallet_id\": 2, \"proposal_id\": \"0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22\"}' Response: { \"state\": { \"blocks_needed\": 0, \"closable\": true, \"closed\": false, \"passed\": true, \"total_votes_needed\": 0, \"yes_votes_needed\": 0 }, \"success\": true }","s":"dao_get_proposal_state","u":"/dao-rpc/","h":"#dao_get_proposal_state","p":649},{"i":669,"t":"Functionality: Shows the rules governing the specified DAO wallet Usage: chia rpc wallet [OPTIONS] dao_get_rules [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The DAO wallet from which to show the rules. Must be of type DAOWallet Example Request: chia rpc wallet dao_get_rules '{\"wallet_id\": 2}' Response: { \"rules\": { \"attendance_required\": 3000, \"oracle_spend_delay\": 2, \"pass_percentage\": 5000, \"proposal_minimum_amount\": 1000001, \"proposal_timelock\": 3, \"self_destruct_length\": 1, \"soft_close_length\": 2 }, \"success\": true }","s":"dao_get_rules","u":"/dao-rpc/","h":"#dao_get_rules","p":649},{"i":671,"t":"Functionality: Show the balance of a DAO's treasury Usage: chia rpc wallet [OPTIONS] dao_get_treasury_balance [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The DAO whose treasury balance you would like to show. Must be of type DAOWallet Example Request: chia rpc wallet dao_get_treasury_balance '{\"wallet_id\": 2}' Response: { \"balances\": { \"xch\": 5000000000000 }, \"success\": true }","s":"dao_get_treasury_balance","u":"/dao-rpc/","h":"#dao_get_treasury_balance","p":649},{"i":673,"t":"Functionality: Returns the ID of a DAO's treasury Usage: chia rpc wallet [OPTIONS] dao_get_treasury_id [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The DAO wallet whose ID you would like to retrieve. Must be of type DAOWallet Example Request: chia rpc wallet dao_get_treasury_id '{\"wallet_id\": 2}' { \"success\": true, \"treasury_id\": \"0x41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123\" }","s":"dao_get_treasury_id","u":"/dao-rpc/","h":"#dao_get_treasury_id","p":649},{"i":675,"t":"Functionality: Show the details of the specified proposal Usage: chia rpc wallet [OPTIONS] dao_parse_proposal [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The DAO wallet where the proposal lives. Must be of type DAOWallet proposal_id STRING True The ID of the proposal whose details you would like to show Example chia rpc wallet dao_parse_proposal '{\"wallet_id\": 2, \"proposal_id\": \"0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22\"}' Response: { \"proposal_dictionary\": { \"asset_conditions\": [], \"proposal_type\": \"s\", \"proposed_puzzle_reveal\": \"0xff02ffff01ff02ffff01ff04ffff04ffff0148ffff04ffff02ff18ffff04ff02ffff04ffff05ff0580ffff04ff8202ffffff04ffff02ff2cffff04ff02ffff04ff05ff80808080ff808080808080ffff01808080ffff04ffff04ffff0133ffff04ff8202ffffff04ffff0101ffff04ffff04ffff05ffff06ff058080ffff018080ffff018080808080ffff02ffff03ff17ffff01ff02ffff01ff02ff3cffff04ff02ffff04ff05ffff04ffff02ff1affff04ff02ffff04ff17ff80808080ffff04ff5fffff04ffff02ffff03ff8200bfffff01ff02ffff01ff02ff14ffff04ff02ffff04ffff05ffff05ff8200bf8080ffff04ff5fffff04ffff05ffff06ffff05ff8200bf808080ff808080808080ff0180ffff01ff02ffff01ff0180ff018080ff0180ffff04ffff02ffff03ff8200bfffff01ff02ffff01ff06ff8200bf80ff0180ffff01ff02ffff01ff0180ff018080ff0180ffff04ffff02ffff03ff8200bfffff01ff02ffff01ff05ffff06ffff05ff8200bf808080ff0180ffff01ff02ffff01ff0180ff018080ff0180ffff04ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff5fffff04ff2fffff04ff82017fffff04ff17ff808080808080808080ff80808080808080808080ff0180ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff5fffff04ff2fffff04ff82017fffff04ff17ff808080808080808080ff018080ff01808080ffff04ffff01ffffffff02ffff03ff05ffff01ff02ffff01ff02ff10ffff04ff02ffff04ffff06ff0580ffff04ffff0bffff0102ffff0bffff0101ffff010480ffff0bffff0102ffff0bffff0102ffff0bffff0101ffff010180ffff05ff058080ffff0bffff0102ff0bffff0bffff0101ffff018080808080ff8080808080ff0180ffff01ff02ffff010bff018080ff0180ff0bffff0102ffff01a0a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222ffff0bffff0102ffff0bffff0102ffff01a09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0580ffff0bffff0102ffff02ff10ffff04ff02ffff04ff07ffff01ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b280808080ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a808080ffff02ffff03ffff22ffff09ffff0dff0580ffff012080ffff09ffff0dff0b80ffff012080ffff15ff17ffff0181ff8080ffff01ff02ffff01ff0bff05ff0bff1780ff0180ffff01ff02ffff01ff0880ff018080ff0180ffff02ffff03ffff07ff0580ffff01ff02ffff01ff0bffff0102ffff02ff2cffff04ff02ffff04ffff05ff0580ff80808080ffff02ff2cffff04ff02ffff04ffff06ff0580ff8080808080ff0180ffff01ff02ffff01ff0bffff0101ff0580ff018080ff0180ff04ffff04ffff013effff04ffff02ff2cffff04ff02ffff04ffff04ff2fffff04ffff02ff2cffff04ff02ffff01ff80808080ff808080ff80808080ff808080ffff04ffff04ffff013dffff04ffff0bff2fffff012480ff808080ffff02ffff03ff5fffff01ff02ffff01ff02ff3cffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ffff02ff14ffff04ff02ffff04ffff05ffff05ff5f8080ffff04ff17ffff04ffff05ffff06ffff05ff5f808080ff808080808080ffff04ffff06ff5f80ffff04ffff10ff8200bfffff05ffff06ffff05ff5f80808080ffff04ff82017fff80808080808080808080ff0180ffff01ff02ffff01ff02ffff03ffff15ffff11ff8200bfff0b80ffff018080ffff01ff02ffff01ff04ffff04ffff0133ffff04ff17ffff04ffff11ff8200bfff0b80ffff04ffff04ff17ffff018080ffff018080808080ff82017f80ff0180ffff01ff02ffff0182017fff018080ff0180ff018080ff01808080ffffff04ffff04ffff013effff04ffff02ff2cffff04ff02ffff04ffff04ff05ffff04ff0bff808080ff80808080ff808080ffff04ffff04ffff013dffff04ffff0bff05ffff012480ff808080ff178080ff02ffff03ff05ffff01ff02ffff01ff10ffff02ffff03ffff09ffff05ffff05ff058080ffff013380ffff01ff02ffff01ff02ffff03ffff15ffff05ffff06ffff06ffff05ff0580808080ffff018080ffff01ff02ffff01ff05ffff06ffff06ffff05ff0580808080ff0180ffff01ff02ffff01ff0180ff018080ff0180ff0180ffff01ff02ffff01ff0180ff018080ff0180ffff02ff1affff04ff02ffff04ffff06ff0580ff8080808080ff0180ffff01ff02ffff01ff0180ff018080ff0180ffff02ff18ffff04ff02ffff04ff05ffff04ff17ffff04ffff0bffff0101ff0b80ffff04ffff0bffff0101ff0580ff80808080808080ffff02ffff03ff8200bfffff01ff02ffff01ff02ff12ffff04ff02ffff04ffff02ff14ffff04ff02ffff04ffff05ffff05ff8200bf8080ffff04ff5fffff04ffff05ffff06ffff05ff8200bf808080ff808080808080ffff04ffff02ffff03ffff06ff8200bf80ffff01ff02ffff01ff02ff2cffff04ff02ffff04ffff0180ff80808080ff0180ffff01ff02ffff01ff02ff2cffff04ff02ffff04ffff04ffff0101ffff02ffff03ffff15ffff11ffff10ff82017fffff05ffff06ffff05ff8200bf80808080ff8202ff80ffff018080ffff01ff02ffff01ff04ffff04ffff0133ffff04ffff05ffff06ffff06ffff06ffff06ff018080808080ffff04ffff11ffff10ff82017fffff05ffff06ffff05ff8200bf80808080ff8202ff80ffff04ffff04ffff05ffff06ffff06ffff06ffff06ff018080808080ffff018080ffff018080808080ffff05ffff06ffff06ffff06ff018080808080ff0180ffff01ff02ffff01ff05ffff06ffff06ffff06ff0180808080ff018080ff018080ff80808080ff018080ff0180ffff04ffff02ff2effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ffff06ff8200bf80ffff04ffff10ff82017fffff05ffff06ffff05ff8200bf80808080ffff04ff8202ffffff04ff8205ffff808080808080808080808080ff808080808080ff0180ffff01ff02ffff018205ffff018080ff0180ff02ffff03ff2fffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ffff06ff2f80ffff04ffff06ff5f80ffff04ffff02ff2effff04ff02ffff04ff05ffff04ff0bffff04ffff02ffff03ffff09ffff05ffff05ff2f8080ffff05ffff05ff5f808080ffff01ff02ffff01ff05ffff06ffff05ff2f808080ff0180ffff01ff02ffff01ff0880ff018080ff0180ffff04ff17ffff04ffff02ff16ffff04ff02ffff04ff0bffff04ffff05ffff05ff5f8080ffff04ff17ff808080808080ffff04ffff05ffff06ffff05ff5f808080ffff04ffff0180ffff04ffff02ff1affff04ff02ffff04ffff05ffff06ffff05ff2f808080ff80808080ffff04ff8200bfff808080808080808080808080ff808080808080808080ff0180ffff01ff02ffff018200bfff018080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa041b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a037bef360ee858133b69d595a906dc45d01af50379dad515eb9518abb7c1d2a7affff04ffff01ffff33ffa0f17580661cae1176e9f1f56376c0354a44f5c9ebee03a8f50a0d6314df8db138ff8600e8d4a510008080ffff04ffff0180ffff04ffff01a0f83e58db471eb1c4f384ff7d8df667ed46fd65122e97ea9f4e49d2a201958ae6ff01808080808080\", \"state\": { \"blocks_needed\": 0, \"closable\": true, \"closed\": false, \"passed\": true, \"total_votes_needed\": 0, \"yes_votes_needed\": 0 }, \"xch_conditions\": [ { \"amount\": 1000000000000, \"puzzle_hash\": \"0xf17580661cae1176e9f1f56376c0354a44f5c9ebee03a8f50a0d6314df8db138\" } ] }, \"success\": true }","s":"dao_parse_proposal","u":"/dao-rpc/","h":"#dao_parse_proposal","p":649},{"i":677,"t":"Functionality: Lock DAO CATs for voting Usage: chia rpc wallet [OPTIONS] dao_send_to_lockup [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The ID of the wallet from which to lock DAO CATs. Must be of type DAOWallet amount NUMBEr True The amount of CATs to lock for voting","s":"dao_send_to_lockup","u":"/dao-rpc/","h":"#dao_send_to_lockup","p":649},{"i":679,"t":"Functionality: Vote on an existing proposal Usage: chia rpc wallet [OPTIONS] dao_vote_on_proposal [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The ID of the wallet where the proposal lives. Must be of type DAOWallet proposal_id STRING True The ID of the proposal on which you would like to vote vote_amount NUMBER False The number of DAO CATs to use for this vote [Default: None] is_yes_vote BOOLEAN True A boolean indicating whether this vote is \"yes\" (true) or \"no\" (false) fee NUMBER False An optional blockchain fee, in mojos","s":"dao_vote_on_proposal","u":"/dao-rpc/","h":"#dao_vote_on_proposal","p":649},{"i":681,"t":"This document contains a comprehensive reference of Chia DAO CLI commands and options. warning Chia DAOs are currently an alpha primitive. This means that DAOs are not yet ready for production use, but you can still test them on either a simulator or a testnet. We recommend against creating DAOs with this primitive on mainnet! Prior to using the DAO alpha primitive, be sure to read the list of known issues.","s":"DAO CLI","u":"/dao-cli/","h":"","p":680},{"i":684,"t":"Functionality: Create a wallet for an existing DAO Usage: chia dao add [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -n --name TEXT False Set the DAO wallet name -t --treasury-id TEXT True The Treasury ID of the DAO you want to track -a --filter-amount INTEGER False The minimum number of votes a proposal needs before the wallet will recognise it [default: 1] -h --help None False Show a help message and exit Example Start with a wallet with some XCH or TXCH: chia wallet show Response: Chia Wallet: -Total Balance: 1.0 txch (1000000000000 mojo) -Pending Total Balance: 1.0 txch (1000000000000 mojo) -Spendable: 1.0 txch (1000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Next, join a DAO by passing in its Treasury ID: chia dao add -n \"Test DAO Wallet\" -t dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 At first, the response will indicate that the transaction is in process (you will need to choose your wallet fingerprint if more than one exists): Adding wallet for DAO: dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 This may take awhile. Eventually, you will receive a message indicating the Treasury ID and the three relevant wallets that have been created: Successfully created DAO Wallet DAO Treasury ID: 0xdfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 DAO Wallet ID: 2 CAT Wallet ID: 3 DAOCAT Wallet ID: 4 At this point, you can show each of these wallets by running chia wallet show: chia wallet show Wallet height: 3181174 Sync status: Synced Balances, fingerprint: 3046374920 Chia Wallet: -Total Balance: 1.0 txch (1000000000000 mojo) -Pending Total Balance: 1.0 txch (1000000000000 mojo) -Spendable: 1.0 txch (1000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Test DAO Wallet: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 -Wallet ID: 2 CAT 07e809aa0324acaf...: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 3 CAT 07e809aa0324acaf...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 4 From here, you can add funds, create proposals, vote on proposals, etc.","s":"add","u":"/dao-cli/","h":"#add","p":680},{"i":686,"t":"Functionality: Send funds to a DAO treasury Usage: chia dao add_funds [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the DAO Treasury Wallet -w --funding-wallet-id INTEGER True The ID of the wallet to send funds from (must be of type STANDARD_WALLET) -a --amount TEXT True The amount of funds to send, in XCH or CATs -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit Example Start by showing the current wallet status: chia wallet show Response: Chia Wallet: -Total Balance: 2.999987147234 txch (2999987147234 mojo) -Pending Total Balance: 2.999987147234 txch (2999987147234 mojo) -Spendable: 2.999987147234 txch (2999987147234 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 -Wallet ID: 3 CAT 07e809aa0324acaf...: -Total Balance: 100.0 (100000 mojo) -Pending Total Balance: 100.0 (100000 mojo) -Spendable: 100.0 (100000 mojo) -Type: CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 4 CAT 07e809aa0324acaf...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 5 Add funds from the main Chia Wallet (ID 1) to the DAO Wallet (ID 3). Note that the Wallet IDs shown here are only examples; yours may differ. chia dao add_funds -i 2 --funding-wallet-id 1 -a 2 -m 0.00001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3261611401 -tx 0x180ea0da4b8fbe4e696480ff5fa819fbcc8ae069362127c73cf09acecbd378c2' to get status After a few minutes, verify that the transaction was processed successfully: chia wallet get_transaction -f 3261611401 -tx 0x180ea0da4b8fbe4e696480ff5fa819fbcc8ae069362127c73cf09acecbd378c2 Response: Transaction 180ea0da4b8fbe4e696480ff5fa819fbcc8ae069362127c73cf09acecbd378c2 Status: Confirmed Amount sent: 2 TXCH To address: txch179tr6euaunzt425l6kyrzgrzyzv572w7820ptan47k3w77x6267s09j0km Created at: 2023-09-13 21:41:08 At this point, 2 TXCH has been removed from wallet 1 and added to wallet 3, which can be verified by running balance: chia dao balance -i 2 Response: XCH: 2.0","s":"add_funds","u":"/dao-cli/","h":"#add_funds","p":680},{"i":688,"t":"Functionality: Get the asset balances for a DAO treasury Usage: chia dao balance [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -h --help None False Show a help message and exit Example chia dao balance -i 2 Response: XCH: 2.0","s":"balance","u":"/dao-cli/","h":"#balance","p":680},{"i":690,"t":"Functionality: Close a DAO proposal Usage: chia dao close_proposal [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -p --proposal-id TEXT True The ID of the proposal you are voting on -d --self-destruct None False If this flag is set, it will self-destruct a broken proposal, thus forcing to force it to close [default: not set] -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit Example First, show the status of a proposal: chia dao show_proposal -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d Response: Details of Proposal: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d --------------------------- Type: SPEND Status: OPEN Passed: True Closable: True Proposal XCH Conditions 0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e 1000000000000 This proposal's status for Closable is True, so it can be closed. To do this, run the close_proposal command: chia dao close_proposal -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d -m 0.0001 Response: Submitted proposal close transaction with name: 0x17ff5206551600637d5e5ca57511cf9f0c3ce3dc66466c86102c9e2a8861618e After the transaction has been confirmed on-chain, view the status of the proposal once again: chia dao show_proposal -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d Response: Details of Proposal: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d --------------------------- Type: SPEND Status: CLOSED Passed: True Proposal XCH Conditions 0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e 1000000000000 This proposal is now closed. The treasury's balance prior to the proposal being created was 2.0 XCH. Verify that 1 XCH was deducted by showing the current balance: chia dao balance -i 2 Response: XCH: 1.000001 The extra 0.000001 XCH was added from the proposer's wallet, as a result of the --proposal-minimum option being enforced on this DAO (see the create command for more details). Another way to verify that the correct amount of XCH was spent from treasury is to show the recipient puzzle hash using the full_node RPC: chia rpc full_node get_coin_records_by_puzzle_hash '{\"puzzle_hash\": \"0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e\"}' Response: { \"coin_records\": [ { \"coin\": { \"amount\": 1000000000000, \"parent_coin_info\": \"0x9ffe88ae3b3ff4ae59524cf4ff200998ac68545d7918d6a3824d9781d0cb12b8\", \"puzzle_hash\": \"0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e\" }, \"coinbase\": false, \"confirmed_block_index\": 3186133, \"spent\": false, \"spent_block_index\": 0, \"timestamp\": 1694663355 } ], \"success\": true }","s":"close_proposal","u":"/dao-cli/","h":"#close_proposal","p":680},{"i":692,"t":"Functionality: Create a new DAO wallet and treasury Usage: chia dao create [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -n --name TEXT False Set the DAO wallet name --proposal-timelock INTEGER False The minimum number of blocks before a proposal can close [default: 1000] --soft-close INTEGER False The number of blocks a proposal must remain unspent before closing [default: 20] --attendance-required INTEGER True The minimum number of votes a proposal must receive to be accepted --pass-percentage INTEGER False The percentage of 'yes' votes in basis points a proposal must receive to be accepted. 100% = 10000 [default: 5000] --self-destruct INTEGER False The number of blocks required before a proposal can be automatically removed [default: 10000] --oracle-delay INTEGER False The number of blocks required between oracle spends of the treasury [default: 50] --proposal-minimum INTEGER False The minimum amount (in xch) that a proposal must use to be created (this is a spam-prevention measure; it will be donated to the treasury when the proposal is closed) [default: 0.000000000001] --filter-amount INTEGER False The minimum number of votes a proposal needs before the wallet will recognise it [default: 1] --cat-amount INTEGER True The number of DAO CATs (in mojos) to create when initializing the DAO -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --fee-for-cat TEXT False Set the fees for the CAT creation transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit info Per singleton rules, --proposal-minimum needs to be an odd number (in mojos). If you enter an even number, one mojo will automatically be added to this amount. You will then see the following message when creating the DAO: Adding 1 mojo to proposal minimum amount warning This command requires that you have at least two coins in your wallet: one to create the DAO and pay the blockchain fee, and one to mint the DAO CATs. If you only have one coin, an error similar to the following will be shown: ValueError: {'error': 'Transaction for 100000 is greater than spendable balance of 0. There may be other transactions pending or our minimum coin amount is too high.', 'success': False} You can split one coin into multiple coins by running the chia wallet coins split command. Example This example will create a DAO with the following options: Proposals must exist for at least 10 blocks before being closed (--proposal-timelock 10) Proposals must be unspent for at least 2 blocks before being closed (--soft-close 2) At least 1000 votes ('yes' and 'no' combined) must be received before a proposal can pass (--attendance-required) At least 50% of votes must be 'yes' in order for a proposal to pass (--pass-percentage 5000) At least 10 blocks must pass before a proposal can be removed (--self-destruct 10) At least 5 blocks must pass between oracle spends of the treasury (--oracle-delay 5) One million mojos will be donated to the treasury upon completion of a proposal. This prevents bad actors from spamming a DAO with untennable proposals (--proposal-minimum 0.000001) At least 1 vote must be made for a proposal before the wallet will recognise it (--filter-amount 1) One hundred thousand DAO CATs will be created initially (--cat-amount 100000) A blockchain fee of 0.00001 XCH will be paid for the transaction that creates the DAO (-m 0.00001) A second blockchain fee of 0.00001 XCH will be paid for the transaction that creates the DAO CATs (--fee-for-cat 0.00001) chia dao create --proposal-timelock 10 --soft-close 2 --attendance-required 1000 --pass-percentage 5000 --self-destruct 10 --oracle-delay 5 --proposal-minimum 0.000001 --filter-amount 1 --cat-amount 100000 -m 0.00001 --fee-for-cat 0.00001 Response: Creating new DAO Adding 1 mojo to proposal minimum amount Successfully created DAO Wallet DAO Treasury ID: 0xdfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 DAO Wallet ID: 3 CAT Wallet ID: 4 DAOCAT Wallet ID: 5 Multiple on-chain transactions will be performed. This will take a few minutes. To verify that the creation was successful, show your wallet: chia wallet show Response: Chia Wallet: -Total Balance: 2.999987147234 txch (2999987147234 mojo) -Pending Total Balance: 2.999987147234 txch (2999987147234 mojo) -Spendable: 2.999987147234 txch (2999987147234 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 -Wallet ID: 3 CAT 07e809aa0324acaf...: -Total Balance: 100.0 (100000 mojo) -Pending Total Balance: 100.0 (100000 mojo) -Spendable: 100.0 (100000 mojo) -Type: CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 4 CAT 07e809aa0324acaf...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 5 Recall from the DAO's creation response message that the primary DAO wallet's ID is 3, the CAT wallet's ID is 4, and the DAO CAT wallet's ID is 5. It is also possible to obtain the DAO's Treasury ID by calling get_id and supplying the DAO wallet's ID. For example: chia dao get_id -i 2 Response: Treasury ID: 0xdfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56","s":"create","u":"/dao-cli/","h":"#create","p":680},{"i":694,"t":"Functionality: Create and add a proposal to a DAO There are currently three supported proposal types: spend some of the treasury, update the DAO rules, and mint more of the DAO's CAT.","s":"create_proposal","u":"/dao-cli/","h":"#create_proposal","p":680},{"i":696,"t":"Functionality: Create a proposal to mint new DAO CATs Usage: chia dao create_proposal [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the DAO wallet to use -a --amount INTEGER True The amount of new cats the proposal will mint (in mojos) -t --to-address TEXT True The address new cats will be minted to -v --vote-amount INTEGER True The number of votes to add -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit warning The votes need to be minted from the treasury's funds, so your DAO will need to have sufficient funds to perform the minting. Example This example will show how to create a proposal to mint 100 DAO CATs and deliver them to another wallet. First, a snapshot of the proposer's wallet: chia wallet show Response: Chia Wallet: -Total Balance: 0.999356147233 txch (999356147233 mojo) -Pending Total Balance: 0.999356147233 txch (999356147233 mojo) -Spendable: 0.999356147233 txch (999356147233 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 -Wallet ID: 3 CAT 07e809aa0324acaf...: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 4 CAT 07e809aa0324acaf...: -Total Balance: 100000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 5 The following command will be used to create the proposal: chia dao create_proposal mint -i 2 -a 100000 -t txch1u7l0esj4jet6lc4uwm3qj3u3sgdh5y8h4msgl9g833907rrt4k6sj43nfx -v 1 -m 0.00001 Response: Successfully created proposal. Proposal ID: 0x6e11db5e6a94b9f4f867d968ae6f971e6fa4dca9b75ad0d54e0450ebdb1d3c3a View the proposal: chia dao show_proposal -i 2 -p 0x6e11db5e6a94b9f4f867d968ae6f971e6fa4dca9b75ad0d54e0450ebdb1d3c3a Response: Details of Proposal: 0x6e11db5e6a94b9f4f867d968ae6f971e6fa4dca9b75ad0d54e0450ebdb1d3c3a --------------------------- Type: MINT Status: OPEN Passed: False Yes votes needed: 499 Closable: False Total votes needed: 999 Blocks remaining: 0 Amount of CAT to mint: 100000 Address: txch1u7l0esj4jet6lc4uwm3qj3u3sgdh5y8h4msgl9g833907rrt4k6sj43nfx This result shows that 1 vote has been counted so far, from the proposer. If the proposal succeeds, 100 CATs (100,000 mojos) will be sent to the destination address.","s":"mint","u":"/dao-cli/","h":"#mint","p":680},{"i":698,"t":"Functionality: Create a proposal to spend DAO funds Usage: chia dao create_proposal [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -t --to-address TEXT False The address the proposal will send funds to -a --amount FLOAT False The amount of funds the proposal will send (in mojos) -v --vote-amount INTEGER True The number of votes to add --asset-id TEXT False The asset id of the funds the proposal will send. Leave blank for xch -j --from-json TEXT False Path to a json file containing a list of additions, for use in proposals with multiple spends -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit Example Be sure to have some CATs locked up for voting. To view the number of CATs that have been locked, run chia wallet show: chia wallet show Response: Chia Wallet: -Total Balance: 0.999957147234 txch (999957147234 mojo) -Pending Total Balance: 0.999957147234 txch (999957147234 mojo) -Spendable: 0.999957147234 txch (999957147234 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 -Wallet ID: 3 CAT 07e809aa0324acaf...: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 4 CAT 07e809aa0324acaf...: -Total Balance: 100000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 5 In this case, the DAO has --proposal-minimum set to 0.000001. This means that 0.000001 will be reserved for the proposal's creation. After the proposal has completed, that amount will be donated to the DAO's treasury. Additionally, 100 DAO_CAT have been locked (100,000 mojos). To learn how to lock up these CATs, see the lockup_coins command. Next, create the proposal. In this case, we will propose to send 1 XCH (-a) to a new wallet address (-t) and use 50 of our votes to vote \"yes\" (-v) while adding a 100-million-mojo fee (-m) chia dao create_proposal spend -i 2 -t txch1dt8za2parkus8sh77q3hu8xhrjhqzla8n7e7amz270rlcmp9c9hqfmdcx8 -a 1 -v 50 -m 0.0001 Response: Created spend proposal for asset: None Successfully created proposal. Proposal ID: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d After the proposal has been confirmed on-chain, you can view the details by running list_proposals and passing in your DAO treasury wallet (3 in this example): chia dao list_proposals -i 2 Response: ############################ Proposal ID: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d Status: OPEN Votes for: 50 Votes against: 0 ------------------------ Proposals have 2 blocks of soft close time. ############################ You can also obtain more details about the proposal from the show_proposal command: chia dao show_proposal -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d Response: Details of Proposal: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d --------------------------- Type: SPEND Status: OPEN Passed: False Yes votes needed: 450 Closable: False Total votes needed: 950 Blocks remaining: 0 Proposal XCH Conditions 0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e 1000000000000","s":"spend","u":"/dao-cli/","h":"#spend","p":680},{"i":700,"t":"Functionality: Create a proposal to change the DAO rules Usage: chia dao create_proposal [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -v --vote-amount INTEGER True The number of votes to add --proposal-timelock INTEGER False The new minimum number of blocks before a proposal can close --soft-close INTEGER False The number of blocks a proposal must remain unspent before closing --attendance-required INTEGER False The minimum number of votes a proposal must receive to be accepted --pass-percentage INTEGER False The percentage of 'yes' votes in basis points a proposal must receive to be accepted. 100% = 10000 --self-destruct INTEGER False The number of blocks required before a proposal can be automatically removed --oracle-delay INTEGER False The number of blocks required between oracle spends of the treasury -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit Example Let's say a DAO has the following rules: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 5000 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2 Create a proposal to increase the pass_percentage to 7500, thereby requiring 75% of votes to be \"yes\" for a proposal to pass (and add 2000 \"yes\" votes): chia dao create_proposal update -i 2 --pass-percentage 7500 -v 2000 -m 0.0001 Response: Successfully created proposal. Proposal ID: 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 The proposal will contain the new rules upon passing: chia dao show_proposal -i 2 -p 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 Response: Details of Proposal: 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 --------------------------- Type: UPDATE Status: OPEN Passed: True Closable: False Total votes needed: 1000 Blocks remaining: 0 Proposed Rules: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 7500 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2","s":"update","u":"/dao-cli/","h":"#update","p":680},{"i":702,"t":"Functionality: Release DAO CATs from voting mode Usage: chia dao exit_lockup [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the DAO wallet from which to exit the lockup -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit This command will unlock tokens that have been locked for voting, provided that there are no active proposals that these CATs have voted on. This command will automatically determine which CATs are available to be unlocked. Example First, obtain the current state of the DAO tokens: chia wallet show This truncated response shows that 26 tokens are unlocked, and 74 tokens are locked: CAT 3c992efe31910882...: -Total Balance: 26.0 (26000 mojo) -Pending Total Balance: 26.0 (26000 mojo) -Spendable: 26.0 (26000 mojo) -Type: CAT -Asset ID: 3c992efe31910882f35a6e0017b6a7ceb0e2f6f7b96a36285d5d11ea015c05a7 -Wallet ID: 3 CAT 3c992efe31910882...: -Total Balance: 74000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 3c992efe31910882f35a6e0017b6a7ceb0e2f6f7b96a36285d5d11ea015c05a7 -Wallet ID: 4 Next, unlock all tokens that are available to be unlocked (they cannot have been used to vote on any active proposals): chia dao exit_lockup -i 2 -m 0.00001 Response: Transaction submitted with spend bundle ID: 0xbe3da7977dd5674ef58a7d8dbd975a990ab52afea11312a06f9edfe0b8f33aff. After the transaction has been confirmed, verify that the tokens have been unlocked: chia wallet show Response (truncated): CAT a62a729da3c90a22...: -Total Balance: 100.0 (100000 mojo) -Pending Total Balance: 100.0 (100000 mojo) -Spendable: 100.0 (100000 mojo) -Type: CAT -Asset ID: a62a729da3c90a22aeb648f64a7499680eceef7c4d98a5dd9e7fa5d14fc3c99e -Wallet ID: 7 CAT a62a729da3c90a22...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: a62a729da3c90a22aeb648f64a7499680eceef7c4d98a5dd9e7fa5d14fc3c99e -Wallet ID: 8 There are now 100 unlocked tokens and 0 locked tokens.","s":"exit_lockup","u":"/dao-cli/","h":"#exit_lockup","p":680},{"i":704,"t":"Functionality: Get the Treasury ID of a DAO Usage: chia dao get_id [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the DAO wallet which will receive the funds -h --help None False Show a help message and exit Example Get the ID of an existing treasury: chia dao get_id -i 2 Response: Treasury ID: 0xdfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56","s":"get_id","u":"/dao-cli/","h":"#get_id","p":680},{"i":706,"t":"Functionality: List proposals for the DAO Usage: chia dao list_proposals [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -c --include-closed None False Set to include previously closed proposals [Default: not set] -h --help None False Show a help message and exit This command will list all open proposals by default. If the -c flag is included, then all open and closed proposals will be listed. To show the details of a specific proposal, use the show_proposal command. Example chia dao list_proposals -i 2 Response: ############################ Proposal ID: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d Status: OPEN Votes for: 50 Votes against: 0 ------------------------ Proposals have 2 blocks of soft close time. ############################","s":"list_proposals","u":"/dao-cli/","h":"#list_proposals","p":680},{"i":708,"t":"Functionality: Lock DAO CATs for voting Usage: chia dao lockup_coins [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the DAO wallet to use -a --amount TEXT True The amount of CATs (not mojos) to lock in voting mode -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit This command will lock the specified number of tokens, thereby making them available for voting. Example Before locking the tokens, show the current status of the DAO's wallets: chia wallet show Response: Chia Wallet: -Total Balance: 0.999977147234 txch (999977147234 mojo) -Pending Total Balance: 0.999977147234 txch (999977147234 mojo) -Spendable: 0.999977147234 txch (999977147234 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: dfe486693cddf312eae141688e72a0b5f597df152f7f30dcb7c775d0ffaa1a56 -Wallet ID: 3 CAT 07e809aa0324acaf...: -Total Balance: 100.0 (100000 mojo) -Pending Total Balance: 100.0 (100000 mojo) -Spendable: 100.0 (100000 mojo) -Type: CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 4 CAT 07e809aa0324acaf...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 5 In this example, there are 100 tokens in the CAT wallet with ID 4, and 0 tokens in the DAO_CAT wallet with ID 5. Next, run the lockup_coins command to lock some of the CATs. For example, to lock 74 CATs: chia dao lockup_coins -i 2 -a 74 -m 0.00001 The response will show the transaction ID: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3261611401 -tx 0xb480143c81d78e739319fe2d52b483ea1f211f0ebb8ff48fc40c9af81da871b3' to get status To see the status of the transaction run the command shown in the output of the lockup_coins command. For example: chia wallet get_transaction -f 3261611401 -tx 0xb480143c81d78e739319fe2d52b483ea1f211f0ebb8ff48fc40c9af81da871b3 Response: Transaction b480143c81d78e739319fe2d52b483ea1f211f0ebb8ff48fc40c9af81da871b3 Status: Confirmed Amount sent: 74 CAT 07e809aa0324acaf... To address: txch1dkd20xfxqc29q7qh7nscjh8njgt0sppx0r03cvzeuzh70auz6ypsfhzles Created at: 2023-09-13 21:44:48 After the transaction has been finalized, view the wallet's balance again: chia wallet show The response will show that the CAT wallet's balance has decreased and the DAO_CAT wallet's balance has increased: CAT 07e809aa0324acaf...: -Total Balance: 26.0 (26000 mojo) -Pending Total Balance: 26.0 (26000 mojo) -Spendable: 26.0 (26000 mojo) -Type: CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 4 CAT 07e809aa0324acaf...: -Total Balance: 74000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 07e809aa0324acaf274ce1bb1502d18b31236ac46739e90ebf0a042dbbd2c882 -Wallet ID: 5 The 74 tokens in the DAO_CAT wallet can now be used for voting on proposals.","s":"lockup_coins","u":"/dao-cli/","h":"#lockup_coins","p":680},{"i":710,"t":"Functionality: Release closed proposals from DAO CATs Usage: chia dao release_coins [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit Example Let's say this is the state of the wallet: Amazing DAO CAT: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: 0ba7b225ea0aa595384239537b055caa0fa8b627b98b6032439d4f2cd1414bf5 -Wallet ID: 3 CAT 0ba7b225ea0aa595...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 0ba7b225ea0aa595384239537b055caa0fa8b627b98b6032439d4f2cd1414bf5 -Wallet ID: 4 One thousand DAO_CATs (equivalent to 1 CAT) have been locked up for voting. In this case, some of these DAO_CATs have been used for voting in a proposal that has since closed. Next, run the release_coins command and add a blockchain fee: chia dao release_coins -i 2 -m 0.0001 The response does not contain much info: Transaction not yet submitted to nodes. TX ID: 0xcebd0fdf105855ad51820efee7231cac618f3028d37a7c80c376d4f63ceefa35 After a few minutes, the transaction will be completed and the voting coins will have been released. However, the wallet balance won't reflect this. In order to verify that the CATs have been released, you can run the exit_lockup command: chia dao exit_lockup -i 2 -m 0.0001 After a few more minutes, show the wallet balance again: Amazing DAO CAT: -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) -Type: CAT -Asset ID: 0ba7b225ea0aa595384239537b055caa0fa8b627b98b6032439d4f2cd1414bf5 -Wallet ID: 3 CAT 0ba7b225ea0aa595...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 0ba7b225ea0aa595384239537b055caa0fa8b627b98b6032439d4f2cd1414bf5 -Wallet ID: 4 All 1000 DAO_CATs have been released. They are now reflected as 1 CAT. If any DAO_CATs had still been locked in a current vote, they would not have unlocked in the exit_lockup command.","s":"release_coins","u":"/dao-cli/","h":"#release_coins","p":680},{"i":712,"t":"Functionality: Get the current rules governing the DAO Usage: chia dao rules [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -h --help None False Show a help message and exit Example chia dao rules -i 2 Response: attendance_required: 1000 oracle_spend_delay: 5 pass_percentage: 5000 proposal_minimum_amount: 1000001 proposal_timelock: 10 self_destruct_length: 10 soft_close_length: 2","s":"rules","u":"/dao-cli/","h":"#rules","p":680},{"i":714,"t":"Functionality: Show the details of a specific proposal Usage: chia dao show_proposal [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -p --proposal_id TEXT True The ID of the proposal to fetch, obtainable by running the list_proposals command -h --help None False Show a help message and exit Example chia dao show_proposal -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d Response: Details of Proposal: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d --------------------------- Type: SPEND Status: OPEN Passed: False Yes votes needed: 450 Closable: False Total votes needed: 950 Blocks remaining: 0 Proposal XCH Conditions 0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e 1000000000000","s":"show_proposal","u":"/dao-cli/","h":"#show_proposal","p":680},{"i":716,"t":"Functionality: Vote on a DAO proposal Usage: chia dao vote [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -i --wallet-id INTEGER True ID of the wallet to use -p --proposal-id TEXT True The ID of the proposal you are voting on -a --vote-amount INTEGER True The number of votes you want to cast -n --vote-no None False Use this option to vote against a proposal. If not present then the vote is for the proposal -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --reuse, --reuse-puzhash None False Set either of these flags to reuse the existing address for the change [default: not set] --new-address, --generate-new-puzhash None False Set either of these flags to generate a new puzzle hash / address for the change [default: not set] -ma --min-coin-amount, --min-amount TEXT False Ignore coins worth less then this much XCH or CAT units -l --max-coin-amount, --max-amount TEXT False Ignore coins worth more then this much XCH or CAT units --exclude-coin TEXT False Exclude the coin with this ID from being spent --exclude-amount TEXT False Exclude any coins with this XCH or CAT amount from being included -h --help None False Show a help message and exit Example Start by showing the status of a proposal: chia dao show_proposal -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d Response: Details of Proposal: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d --------------------------- Type: SPEND Status: OPEN Passed: False Yes votes needed: 450 Closable: False Total votes needed: 950 Blocks remaining: 0 Proposal XCH Conditions 0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e 1000000000000 In this example, 450 \"Yes\" votes are still needed, along with 950 total votes. Next we'll add 100 \"yes\" votes: chia dao vote -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d -a 100 -m 0.0001 Response: Submitted spend bundle with name: 0x5975b2e846cbd75335d3ed98a72af1edb4bdaaaf0817307b185d94ff9ad3c2ed After the transaction has been confirmed on-chain, show the proposal again: chia dao show_proposal -i 2 -p 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d The response shows that the 100 \"Yes\" votes have been counted: Details of Proposal: 0x372a3e3d7f502a542d3c926588b62d5ca580d4ff60a158740563470f2114ef2d --------------------------- Type: SPEND Status: OPEN Passed: False Yes votes needed: 350 Closable: False Total votes needed: 850 Blocks remaining: 0 Proposal XCH Conditions 0x6ace2ea83d1db903c2fef0237e1cd71cae017fa79fb3eeec4af3c7fc6c25c16e 1000000000000","s":"vote","u":"/dao-cli/","h":"#vote","p":680},{"i":718,"t":"warning Chia DAOs are currently an alpha primitive. This means that DAOs are not yet ready for production use, but you can still test them on either a simulator or a testnet. We recommend against creating DAOs with this primitive on mainnet! Prior to using the DAO alpha primitive, be sure to read the list of known issues.","s":"DAO CLI Guide","u":"/dao-cli-guide/","h":"","p":717},{"i":720,"t":"This is a guide for using Chia DAOs from a command line interface (CLI). To follow this guide, you will need: Chia version 2.1.4 or later A wallet with some TXCH for creating a treasury Ideally at least one more wallet to be used for voting on proposals For more information about Chia DAOs, see: DAO CLI Reference DAO RPC Reference DAO1 CHIP","s":"Intro","u":"/dao-cli-guide/","h":"#intro","p":717},{"i":722,"t":"Chia Decentralized Autonomous Organizations (DAOs) are organizations where no central entity is in control. DAOs are funded through their treasuries. Membership is determined by ownership of DAO CATs, which function as ownership shares. Any member can create a proposal, for example to spend some of the DAO's treasury. Members vote on proposals with their ownership shares.","s":"About","u":"/dao-cli-guide/","h":"#about","p":717},{"i":724,"t":"This guide will use four separate wallets: The DAO creator wallet will create the DAO, fund the treasury, distribute voting tokens, and create and vote on proposals. DAO participant 1 and DAO participant 2 will join a DAO that already exists. They will acquire voting tokens from the DAO creator. They can also create and vote on proposals. The DAO payout wallet will only be used for receiving funds from a spend proposal. This wallet will not join the DAO. info It is possible to replicate almost all of this guide with just one wallet that serves every function listed above. The reason to use four wallets is to show how a DAO would actually work with multiple participants.","s":"Guide","u":"/dao-cli-guide/","h":"#guide","p":717},{"i":726,"t":"The first step is for the DAO creator wallet to create the DAO. If you are going to follow along, be sure to create and fund your own wallet. Before creating the DAO, show the status of the DAO creator wallet: chia wallet show Chia Wallet: -Total Balance: 75.997439613215 txch (75997439613215 mojo) -Pending Total Balance: 75.997439613215 txch (75997439613215 mojo) -Spendable: 75.997439613215 txch (75997439613215 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 warning In order to create a DAO, your wallet must have at least two coins. If there is only one coin in your wallet, you will get an error. You can use the coins command to see how many coins your wallet contains. For example: chia wallet coins list In this case, the wallet contains two coins: There are a total of 2 coins in wallet 1. 2 confirmed coins. 0 unconfirmed additions. 0 unconfirmed removals. Confirmed coins: Coin ID: 0x722a89074b24a5742aa36667e2864b0c7151515a4796b062601de02e67a4bb4c Address: txch1fenczrps3557huq89xz7ky0t0ehjsrqjde5qreardyxp0kqxewasrgr79z Amount: 1.899070877520 (1899070877520 mojo), Confirmed in block: 496076 Coin ID: 0xde53700207e23c74088bd6feaadf39f36248729880ffe112b9420fa27c861d5c Address: txch18k0tt72s6etkdc5yn03ccq90f23r6kleauu6nck7r3jddhwq638qhkxf2w Amount: 74.098368735695 (74098368735695 mojo), Confirmed in block: 496080 note This guide will use a CLI command to create a DAO. If preferred, you can also create a DAO with the create_new_wallet wallet RPC (see Example 4). The command to create a DAO is chia dao create. This command contains many options -- see the documentation for a complete list. Most of the options are not required. However, we will change several of them because their default values are more appropriate for real-world DAOs. For this example, we will specify the following values: proposal-timelock: 3 -- Proposals must exist for at least 3 blocks before being closed. soft-close: 2 -- Proposals must be unspent for at least 2 blocks before being closed. attendance-required: 3000 -- At least 3000 votes ('yes' and 'no' combined) must be received before a proposal can pass. pass-percentage: 5000 -- At least 50% of votes must be 'yes' in order for a proposal to pass. self-destruct: 1 -- At least 1 block must pass before a proposal can be removed. oracle-delay: 2 -- At least 2 blocks must pass between oracle spends of the treasury. proposal-minimum: 0.000001 -- One million mojos will be donated to the treasury upon completion of a proposal. This prevents bad actors from spamming a DAO with untenable proposals. filter-amount: 1 -- At least 1 vote must be made for a proposal before the wallet will recognize it. cat-amount: 5000 -- Five thousand DAO CATs will be created initially. m: 0.00001 -- A blockchain fee of 0.00001 XCH will be paid for the transaction that creates the DAO. fee-for-cat: 0.00001 -- A second blockchain fee of 0.00001 XCH will be paid for the transaction that creates the DAO CATs. These options are appropriate for running a small-scale DAO on a testnet. Be sure to choose your own options according to your DAO's needs. Here is the command to create this DAO: chia dao create --proposal-timelock 3 --soft-close 2 --attendance-required 3000 --pass-percentage 5000 --self-destruct 1 --oracle-delay 2 --proposal-minimum 0.000001 --filter-amount 1 --cat-amount 5000 -m 0.00001 --fee-for-cat 0.00001 Response: Successfully created DAO Wallet DAO Treasury ID: 0x41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 DAO Wallet ID: 2 CAT Wallet ID: 3 DAOCAT Wallet ID: 4 This command will execute two simultaneous transactions: one to create the DAO and one to mint the CATs. It will also create a CAT wallet and a DAO_CAT wallet. After creating the DAO, the DAO creator can view the status of these wallets by running chia wallet show: chia wallet show Response: Chia Wallet: -Total Balance: 75.997419608214 txch (75997419608214 mojo) -Pending Total Balance: 75.997419608214 txch (75997419608214 mojo) -Spendable: 75.997419608214 txch (75997419608214 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: 41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 -Wallet ID: 2 CAT 52d38b7cc156c8a7...: -Total Balance: 5.0 (5000 mojo) -Pending Total Balance: 5.0 (5000 mojo) -Spendable: 5.0 (5000 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 The DAO creator now sees the following Wallet IDs: DAO singleton: Wallet ID: 2 -- keeps track of the rules governing the DAO Unlocked DAO tokens: Wallet ID: 3 -- tokens that are not in \"voting mode\"; can be transferred to other participants Locked DAO tokens: Wallet ID: 4 -- tokens that are in \"voting mode\"; may only be used to vote on proposals info If you created a DAO using a new wallet (without any CATs, NFTs, DIDs, etc), the DAO singleton will be stored in Wallet ID: 2. This wallet must be specified when running DAO commands. If your wallet already had a token such as a CAT occupying Wallet ID: 2 upon creating the DAO, then your DAO singleton will use a higher number for its Wallet ID. Be sure to modify the commands from this document accordingly. In this case, five unlocked CATs were created from 5000 mojos. As will be demonstrated later, these CATs can be locked to be used for voting, thus creating up to 5000 total votes for the DAO. Recall that -- according to this DAO's custom rules -- at least 3000 votes must be cast in order for a proposal to pass. This is similar to when a democratic government requires a quorum of members to be present in order to vote on legislation. In addition, at least 50% of the votes must be \"yes\" in order for a proposal to pass. For now, the DAO's creator has control of each of the votes. We'll distribute some of the votes to other participants later. Before moving on, let's examine the DAO's rules by running the rules command: chia dao rules -i 2 Response: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 5000 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2","s":"Create a DAO","u":"/dao-cli-guide/","h":"#create-a-dao","p":717},{"i":728,"t":"Initially, the DAO's treasury will contain no funds. This can be verified by running the balance command: chia dao balance -i 2 Response: The DAO treasury currently has no funds To add funds, first we need to get the DAO's ID: chia dao get_id -i 2 Response: Treasury ID: 0x41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 Next, we can add funds. In this case we'll add 5 TXCH from Wallet ID: 1 (the TXCH wallet). Adding funds requires an on-chain transaction, so we'll include a blockchain fee of 0.00001 TXCH: chia dao add_funds -i 2 --funding-wallet-id 1 -a 5 -m 0.00001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3885096935 -tx 0x2ae64a45323a172b0834ddc58c4fbcfdf9a12b256feaf8f93eb8407e6a0df662' to get status The transaction will require a few minutes to be accepted. Run the suggested get_transaction command to obtain the status: chia wallet get_transaction -f 3885096935 -tx 0x2ae64a45323a172b0834ddc58c4fbcfdf9a12b256feaf8f93eb8407e6a0df662 Response: Transaction 2ae64a45323a172b0834ddc58c4fbcfdf9a12b256feaf8f93eb8407e6a0df662 Status: Confirmed Amount sent: 5 TXCH To address: txch1lql93k68r6cufuuyla7cman8a4r06egj96t7486wf8f2yqv43tnq067l0j Created at: 2023-11-24 09:19:37 After the transaction has been Confirmed, the DAOs balance will also be updated: chia dao balance -i 2 Response: XCH: 5.0 The DAO now has 5 TXCH in its treasury. But there isn't much point in creating a DAO with only one member. The next step will be to get others to join.","s":"Fund a DAO","u":"/dao-cli-guide/","h":"#fund-a-dao","p":717},{"i":730,"t":"note This guide will use a CLI command to join an existing DAO. If preferred, you can also join a DAO with the create_new_wallet wallet RPC (see Example 5). For this example, we will begin with a wallet that contains 3 TXCH. This will become the wallet for DAO participant 1: chia wallet show Response: Chia Wallet: -Total Balance: 3.0 txch (3000000000000 mojo) -Pending Total Balance: 3.0 txch (3000000000000 mojo) -Spendable: 3.0 txch (3000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 This owner of this wallet wants to join the DAO. First, you will need to send them the treasury ID, which is 0x41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 in this example. The participant can then track your DAO by running the add command. Just in case this wallet wants to track more than one DAO, we can give it a human-readable name: chia dao add -n \"Tutorial DAO\" -t 0x41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 Response: Adding wallet for DAO: 0x41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 This may take awhile. Successfully created DAO Wallet DAO Treasury ID: 0x41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 DAO Wallet ID: 2 CAT Wallet ID: 3 DAOCAT Wallet ID: 4 As with the wallet for the DAO creator, three new wallet IDs have been created. DAO participant 1 currently does not have any DAO tokens (Wallet ID: 3): chia wallet show Response Chia Wallet: -Total Balance: 3.0 txch (3000000000000 mojo) -Pending Total Balance: 3.0 txch (3000000000000 mojo) -Spendable: 3.0 txch (3000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Tutorial DAO: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: 41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 -Wallet ID: 2 CAT 52d38b7cc156c8a7...: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 DAO CATs can be acquired by using Chia Offers (See our Offers tutorial for more info). info Offers are recommended, but not required, for acquiring DAO CATs. In addition, either party (DAO creator and DAO participant 1 in this example) can create the offer, and either party can accept it. In this case, let's create an Offer to buy 1 CAT (1000 voting tokens) for 1 TXCH: chia wallet make_offer -o 1:1 -r 3:1 -p 1_TXCH_for_1_CAT.offer Confirmation is required before creating the offer: Creating Offer -------------- OFFERING: - 1 XCH (1000000000000 mojos) REQUESTING: - 1 CAT 52d38b7cc156c8a7... (1000 mojos) Confirm (y/n): y Created offer with ID 3c40cbbc40d7c82a0a88966892fd9eb5db3b924bcf40cea4e08aa1fc834fe128 Use chia wallet get_offers --id 3c40cbbc40d7c82a0a88966892fd9eb5db3b924bcf40cea4e08aa1fc834fe128 -f 2458592469 to view status Now that the Offer file has been created, DAO participant 1 can send it to the DAO creator. Next, we'll use the DAO creator wallet to view the Offer. The -e flag will ensure that we only examine the Offer without taking it for now: chia wallet take_offer -e 1_TXCH_for_1_CAT.offer Response: Summary: OFFERED: - TXCH (Wallet ID: 1): 1.0 (1000000000000 mojos) REQUESTED: - CAT 52d38b7cc156c8a7... (Wallet ID: 3): 1.0 (1000 mojos) The owner of the DAO creator wallet should verify that the CAT ID matches the ID from the DAO before accepting the Offer. In this case, the ID is correct, so the DAO creator will accept the Offer by running the same command without the -e flag: chia wallet take_offer 1_TXCH_for_1_CAT.offer Once again, confirmation is required: Summary: OFFERED: - TXCH (Wallet ID: 1): 1.0 (1000000000000 mojos) REQUESTED: - CAT 52d38b7cc156c8a7... (Wallet ID: 3): 1.0 (1000 mojos) Included Fees: 0 TXCH, 0 mojos Would you like to take this offer? (y/n): y Accepted offer with ID ae4cb8049069b450d82c75b74daa9a28149fa0ec342c7a3a621574262bf52f30 Use chia wallet get_offers --id ae4cb8049069b450d82c75b74daa9a28149fa0ec342c7a3a621574262bf52f30 -f 3885096935 to view its status After the transaction has been confirmed, the DAO creator has 4 CATs remaining, and DAO participant 1 has 1 CAT and 2 TXCH. Next, we will repeat this process with DAO participant 2, except that wallet will acquire 2 CATs in exchange for 2 TXCH. For brevity, we won't show those transactions here. As a review, the status of each of the wallets is as follows: DAO creator Chia Wallet: -Total Balance: 73.997309608214 txch (73997309608214 mojo) -Pending Total Balance: 74.997309608214 txch (74997309608214 mojo) -Spendable: 73.997309608214 txch (73997309608214 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: 41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 -Wallet ID: 2 CAT 52d38b7cc156c8a7...: -Total Balance: 2.0 (2000 mojo) -Pending Total Balance: 2.0 (2000 mojo) -Spendable: 2.0 (2000 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 DAO participant 1 Chia Wallet: -Total Balance: 2.0 txch (2000000000000 mojo) -Pending Total Balance: 2.0 txch (2000000000000 mojo) -Spendable: 2.0 txch (2000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Tutorial DAO: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: 41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 -Wallet ID: 2 CAT 52d38b7cc156c8a7...: -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 DAO participant 2 Chia Wallet: -Total Balance: 1.0 txch (1000000000000 mojo) -Pending Total Balance: 1.0 txch (1000000000000 mojo) -Spendable: 1.0 txch (1000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Tutorial DAO: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: 41b28cbffdd7bbe18913ea84b75887264889ba3948fc9166881ba0bb359bd123 -Wallet ID: 2 CAT 52d38b7cc156c8a7...: -Total Balance: 2.0 (2000 mojo) -Pending Total Balance: 2.0 (2000 mojo) -Spendable: 2.0 (2000 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4","s":"Join a DAO","u":"/dao-cli-guide/","h":"#join-a-dao","p":717},{"i":732,"t":"In each of the wallets, the DAO_CAT balance is 0.0. This is because the tokens from each wallet are not currently in voting mode. Each wallet still needs to run the lockup_coins command. The maximum number of tokens they can lock is the number of CAT mojos they currently possess. In this case, we'll lock 1 CAT (1000 DAO_CAT) for each wallet: chia dao lockup_coins -i 2 -a 1 -m 0.00001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3885096935 -tx 0xe3eeeb55f97dea6f3330c286b917afea8c3e0f3a388b00d33abf93e44d2efe0d' to get status In each wallet's case, an on-chain transaction is required. After running this command on all three wallets, the status of CATs and DAO_CATs is as follows: DAO creator CAT 52d38b7cc156c8a7...: -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 DAO participant 1 CAT 52d38b7cc156c8a7...: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 DAO participant 2 CAT 52d38b7cc156c8a7...: -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 A total of 3000 tokens (1000 for each wallet) have been locked up for voting. This means that a new proposal can receive up to 3000 votes. The wallets with remaining unlocked CATs can lock their CATs to add more votes if desired.","s":"Lock up coins","u":"/dao-cli-guide/","h":"#lock-up-coins","p":717},{"i":734,"t":"DAOs come with three types of proposals: Spend some of the treasury Mint more CATs for the DAO Change the DAO's rules First, let's create a spend proposal. To set this proposal up, we will need an address to which to send the funds if the proposal succeeds. This can be any XCH/TXCH address (it could be the address of a new singleton or any other smart contract), but for this tutorial the DAO payout wallet will just be a standard wallet. Let's say the DAO payout wallet currently has no balance: chia wallet show Response: Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.0 txch (0 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: We'll obtain an address from this wallet to be used as the proposal's payout address: chia wallet get_address Response: txch1796cqesu4cghd603743hdsp4ffz0tj0tacp63ag2p433fhudkyuq58sw69 Recall that the DAO's treasury contains 5 TXCH. Any of the participating wallets can verify this: chia dao balance -i 2 Response: XCH: 5.0 In addition, any of the participating wallets can show the DAO's rules: chia dao rules -i 2 Response: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 5000 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2 In this case, the minimum amount for a proposal is 1 000 001 mojos. Upon a proposal's creation, this amount will be reserved from the proposal creator's wallet. When the proposal is closed, the amount will be added to the DAO's treasury. This amount exists as a deterrent from participants spamming a DAO with proposals with little chance of passing. Let's say DAO participant 2 wants to create a proposal to send 1 TXCH to the above address. This person also wants to use each of their 1000 votes to vote in favor of this proposal immediately. Creating a proposal requires an on-chain transaction, so the proposal's creator also adds a fee: chia dao create_proposal spend -i 2 -a 1 -t txch1796cqesu4cghd603743hdsp4ffz0tj0tacp63ag2p433fhudkyuq58sw69 -v 1000 -m 0.00001 Response: Created spend proposal for asset: XCH Successfully created proposal. Proposal ID: 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 After the transaction to create the proposal has been confirmed on the blockchain, any of the DAO's participants can view its status: chia dao show_proposal -i 2 -p 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 Response: Details of Proposal: 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 --------------------------- Type: SPEND Status: OPEN Passed: False Yes votes needed: 500 Closable: False Total votes needed: 2000 Blocks remaining: 2 Proposal XCH Conditions Address: txch1796cqesu4cghd603743hdsp4ffz0tj0tacp63ag2p433fhudkyuq58sw69 Amount: 1000000000000","s":"Create a spend proposal","u":"/dao-cli-guide/","h":"#create-a-spend-proposal","p":717},{"i":736,"t":"Continuing from the above example, we have a proposal to send 1 TXCH to an address. DAO participant 2 recorded 1000 votes in favor of this proposal immediately upon creating it. Any of the DAO's participants can view outstanding proposals by running the list_proposals command for their wallet. Let's say DAO participant 1 wants to see which proposals are outstanding: chia dao list_proposals -i 2 This command will return a summary of all proposals: ############################ Proposal ID: 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 Status: OPEN Votes for: 1000 Votes against: 0 ------------------------ Proposals have 2 blocks of soft close time. ############################ DAO participant 1 can now show the details of the open proposal: chia dao show_proposal -i 2 -p 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 Response: Details of Proposal: 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 --------------------------- Type: SPEND Status: OPEN Passed: False Yes votes needed: 500 Closable: False Total votes needed: 2000 Blocks remaining: 0 Proposal XCH Conditions Address: txch1796cqesu4cghd603743hdsp4ffz0tj0tacp63ag2p433fhudkyuq58sw69 Amount: 1000000000000 Let's say DAO participant 1 doesn't like this proposal and wants to vote against it. This can be accomplished by running the vote command and adding the -n (vote 'no') flag. In this case, DAO participant 1 allocates all 1000 tokens for a 'no' vote, and includes a blockchain fee: chia dao vote -i 2 -n -p 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 -a 1000 -m 0.0001 Response: Transaction not yet submitted to nodes. TX ID: 0x8477123fac69e59e2e2f46185e10a4071489a899d9d6f8e992ff71b121cfbf1b After a few minutes, the proposal's status will be updated: Details of Proposal: 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 --------------------------- Type: SPEND Status: OPEN Passed: False Yes votes needed: 500 Closable: False Total votes needed: 1000 Blocks remaining: 0 Proposal XCH Conditions Address: txch1796cqesu4cghd603743hdsp4ffz0tj0tacp63ag2p433fhudkyuq58sw69 Amount: 1000000000000 The value for Yes votes needed has not changed, but Total votes needed has dropped from 2000 to 1000. A quorum of 3000 votes has not been reached, so the proposal has not yet passed. DAO participant 1 does not have any more voting tokens available to vote against this proposal, so it has not yet failed, either. Let's say DAO participant 1 attempts to add one more 'no' vote: chia dao vote -i 2 -n -p 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 -a 1 -m 0.0001 This will result in the following error: ValueError: We do not have enough CATs in Voting Mode right now. Please convert some more or try again with permission to convert. The only participant who has not voted is the DAO creator. Let's say this person likes the proposal and decides to vote 'yes'. By default, votes are considered 'yes', so no extra flags are needed: chia dao vote -i 2 -p 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 -a 1000 -m 0.0001 Response: Transaction not yet submitted to nodes. TX ID: 0x0345ff1032a181b4dd2409d44bccc54dff9fa2f07a34169a56f806bcc27fd190 After the transaction has been confirmed, the DAO's status is as follows: Details of Proposal: 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 --------------------------- Type: SPEND Status: OPEN Passed: True Closable: True Proposal XCH Conditions Address: txch1796cqesu4cghd603743hdsp4ffz0tj0tacp63ag2p433fhudkyuq58sw69 Amount: 1000000000000 At this point, 3000 votes have been cast: 2000 in favor and 1000 against. The DAO's \"soft close\" blocks have elapsed, so this proposal passes and can now be closed.","s":"Vote on a proposal","u":"/dao-cli-guide/","h":"#vote-on-a-proposal","p":717},{"i":738,"t":"Prior to closing the proposal, let's check in on the DAO's treasury: chia dao balance -i 2 Response: XCH: 5.0 Meanwhile, the DAO payout wallet is empty: Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.0 txch (0 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Any of a DAO's participants can close a proposal after it has passed or failed. In this case, the DAO creator will close the proposal: chia dao close_proposal -i 2 -p 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 -m 0.0001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3110252292 -tx 0xcd20636990287148e1113c33542650f3700f24f806c822660283317dda39a756' to get status After a few minutes, you can run the show_proposal command to verify that it has been closed: chia dao show_proposal -i 2 -p 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 Response: Details of Proposal: 0x7b10351e130317fc3f7b6d5e50aeb3b8d63db7545ef5e80836913f5741cdbb22 --------------------------- Type: SPEND Status: CLOSED Passed: True Proposal XCH Conditions Address: txch1796cqesu4cghd603743hdsp4ffz0tj0tacp63ag2p433fhudkyuq58sw69 Amount: 1000000000000 After the proposal has been closed, the treasury's balance will be updated: chia dao balance -i 2 Response: XCH: 4.000001 The balance of the payout address has also been updated: Chia Wallet: -Total Balance: 1.0 txch (1000000000000 mojo) -Pending Total Balance: 1.0 txch (1000000000000 mojo) -Spendable: 1.0 txch (1000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1","s":"Close a proposal","u":"/dao-cli-guide/","h":"#close-a-proposal","p":717},{"i":740,"t":"Let's say DAO participant 1 wants to mint new CATs for voting. Here is the current status of the wallet: chia wallet show Response: Chia Wallet: -Total Balance: 1.99999 txch (1999990000000 mojo) -Pending Total Balance: 1.99999 txch (1999990000000 mojo) -Spendable: 1.99999 txch (1999990000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Tutorial DAO: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DAO -Treasury ID: d14dddb8730b1621e23517d3c1f3ca97cb8d7c835f178e89d6ae85df072efbb5 -Wallet ID: 2 CAT e8829304151a4cdb...: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 3 CAT e8829304151a4cdb...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 4 DAO participant 1 can then propose to send 1 CAT to an address they control, and add 1000 initial votes. warning The votes need to be minted from the treasury's funds, so your DAO will need to have sufficient funds to perform the minting. In this case, the treasury's minimum requirement is 1000 mojos. As a reminder, the -a flag specifies the amount in mojos, so -a 1000 will mint one CAT: chia dao create_proposal mint -i 2 -a 1000 -t txch12gftgd4ep7vlgmtgvk87htxp0k8rrl9jqrpfxm433k8meuv656pqljx82k -v 1000 -m 0.00001 Response: Successfully created proposal. Proposal ID: 0x66fbce0ae62a7653d9769d19a9b0f56505df01e94fd431968be94d523b621c85 Show the new proposal: chia dao show_proposal -i 2 -p 0x66fbce0ae62a7653d9769d19a9b0f56505df01e94fd431968be94d523b621c85 Response: Details of Proposal: 0x66fbce0ae62a7653d9769d19a9b0f56505df01e94fd431968be94d523b621c85 --------------------------- Type: MINT Status: OPEN Passed: False Yes votes needed: 500 Closable: False Total votes needed: 2000 Blocks remaining: 0 Amount of CAT to mint: 1000 Address: txch12gftgd4ep7vlgmtgvk87htxp0k8rrl9jqrpfxm433k8meuv656pqljx82k Let's say the DAO creator is OK with this proposal, and decides to add 2000 votes in favor: chia dao vote -i 2 -p 0x66fbce0ae62a7653d9769d19a9b0f56505df01e94fd431968be94d523b621c85 -a 2000 -m 0.0001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3110252292 -tx 0x2452541e2109e4182a212d424872a6261d6e971414f80b4e29548976548b984c' to get status After the votes have been counted, and the soft close timelock has expired, the proposal becomes closeable: chia dao show_proposal -i 2 -p 0x66fbce0ae62a7653d9769d19a9b0f56505df01e94fd431968be94d523b621c85 Response: Details of Proposal: 0x66fbce0ae62a7653d9769d19a9b0f56505df01e94fd431968be94d523b621c85 --------------------------- Type: MINT Status: OPEN Passed: True Closable: True Amount of CAT to mint: 1000 Address: txch12gftgd4ep7vlgmtgvk87htxp0k8rrl9jqrpfxm433k8meuv656pqljx82k Any DAO member can close the proposal. Let's say DAO participant 1 does so: chia dao close_proposal -i 2 -p 0x66fbce0ae62a7653d9769d19a9b0f56505df01e94fd431968be94d523b621c85 -m 0.0001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3110252292 -tx 0x608c9dccd5f90595b9b0579842ed6633c7bfdcb38688f37b9465443943b252d2' to get status DAO participant 1 now has 1000 extra CAT mojos (1 extra CAT, which can be used for 1000 votes): CAT e8829304151a4cdb...: -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) -Type: CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 3 CAT e8829304151a4cdb...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 4","s":"Mint new CATs","u":"/dao-cli-guide/","h":"#mint-new-cats","p":717},{"i":742,"t":"A proposal can also be created to change the rules themselves. Let's say a DAO has the following rules: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 5000 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2 The DAO creator wants to increase the pass_percentage to 7500, thereby requiring 75% of votes to be \"yes\" for a proposal to pass. Here is the command to make this update, along with adding 2000 \"yes\" votes: chia dao create_proposal update -i 2 --pass-percentage 7500 -v 2000 -m 0.0001 Response: Successfully created proposal. Proposal ID: 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 The proposal will contain the new rules upon passing: chia dao show_proposal -i 2 -p 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 Response: Details of Proposal: 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 --------------------------- Type: UPDATE Status: OPEN Passed: True Closable: False Total votes needed: 1000 Blocks remaining: 0 Proposed Rules: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 7500 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2 DAO participant 1 decides to add 1000 votes to the proposal: chia dao vote -i 2 -p 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 -a 1000 -m 0.0001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3195618875 -tx 0xa8bceb23a457bac82fb5c62ee30f2d923cbccd43d62016a55da84f14df88299d' to get status At this point, the proposal has passed and can be closed: chia dao show_proposal -i 2 -p 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 Response: Details of Proposal: 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 --------------------------- Type: UPDATE Status: OPEN Passed: True Closable: True Proposed Rules: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 7500 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2 chia dao close_proposal -i 2 -p 0x018421004429b253aef317f6af9c222f179fa7931e3a339572025ce6f4c35626 -m 0.0001 Response: Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3195618875 -tx 0xf90dc4b36dc7e486251ba13d42fbec17b0a4e757cd435e3a31bb1a3086c71e4a' to get status After the proposal has been closed, the rules will be updated: chia dao rules -i 2 Response: attendance_required: 3000 oracle_spend_delay: 2 pass_percentage: 7500 proposal_minimum_amount: 1000001 proposal_timelock: 3 self_destruct_length: 1 soft_close_length: 2","s":"Change a DAO's rules","u":"/dao-cli-guide/","h":"#change-a-daos-rules","p":717},{"i":744,"t":"Beware that DAO members can make nefarious proposals. They can even attempt to drain a DAO's treasury. However, if a DAO is sufficiently decentralized, this should not be possible from a single member. Let's look at an example where a member attempts to take over a DAO: As a reminder, DAO participant 2 has a balance of 1 CAT and 1000 DAO_CAT for voting: CAT 52d38b7cc156c8a7...: -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) -Type: CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 3 CAT 52d38b7cc156c8a7...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: 52d38b7cc156c8a7a47e0176599d53f1b5cfa6fad47909455383cb8e8c8a2089 -Wallet ID: 4 To mint new CATs, any DAO member can create a mint proposal. In this example, DAO participant 2 will create a proposal to mint 2000 CATs, and will immediately use all 1000 votes to vote in favor of the proposal. The recipient's address (the -t flag) belongs to DAO participant 2 in this case: chia dao create_proposal mint -i 2 -a 2000 -t txch17lg990qxhqg65q4vn8ad50whw2rz9pfmn0qw76pmw4cezm20qmeq47phde -v 1000 -m 0.00001 Response: Successfully created proposal. Proposal ID: 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 The details of the proposal are as follows: chia dao show_proposal -i 2 -p 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 Response: Details of Proposal: 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 --------------------------- Type: MINT Status: OPEN Passed: False Yes votes needed: 500 Closable: False Total votes needed: 2000 Blocks remaining: 0 Amount of CAT to mint: 2000 Address: txch17lg990qxhqg65q4vn8ad50whw2rz9pfmn0qw76pmw4cezm20qmeq47phde In this case, there are 1000 Yes votes so far. With another 2000 votes, a quorum will have been reached. Only 500 of those new votes need to be Yes in order for the proposal to pass. This scenario should give anyone in this DAO pause. By minting 2000 new DAO_CATs, DAO participant 2 would then have 3000 votes, which would amount to a successful hostile takeover of the DAO, and potentially of its treasury. Next, let's say the DAO creator notices this and decides to vote against the proposal. For now, the DAO creator has 1 CAT that not been locked up for voting: CAT e8829304151a4cdb...: -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) -Type: CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 3 CAT e8829304151a4cdb...: -Total Balance: 1000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 4 The DAO creator locks up this CAT: chia dao lockup_coins -i 2 -a 1 -m 0.00001 After the transaction has completed, the DAO creator has 2000 votes: CAT e8829304151a4cdb...: -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 3 CAT e8829304151a4cdb...: -Total Balance: 2000.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DAO_CAT -Asset ID: e8829304151a4cdb1b1fdb9a0117d0e3249d92c476f1cd9331d7a6166e6b140d -Wallet ID: 4 The DAO creator now votes against the proposal (the -n flag indicates a \"no\" vote): chia dao vote -i 2 -n -p 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 -a 2000 -m 0.0001 After these votes have been counted, and after the soft close period has ended, the proposal's status will show that it has failed: chia dao show_proposal -i 2 -p 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 Response: Details of Proposal: 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 --------------------------- Type: MINT Status: OPEN Passed: False Yes votes needed: 500 Closable: True Amount of CAT to mint: 2000 Address: txch17lg990qxhqg65q4vn8ad50whw2rz9pfmn0qw76pmw4cezm20qmeq47phde The DAO creator can now close the proposal: chia dao close_proposal -i 2 -p 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 -m 0.0001 The status will then be updated: Details of Proposal: 0x1348c3b4c480e2a952825da5417b8667bdb0deaf38478956d38d325df736a606 --------------------------- Type: MINT Status: CLOSED Passed: False Yes votes needed: 500 Amount of CAT to mint: 2000 Address: txch17lg990qxhqg65q4vn8ad50whw2rz9pfmn0qw76pmw4cezm20qmeq47phde The hostile takeover has been averted in this case.","s":"Failed proposal example","u":"/dao-cli-guide/","h":"#failed-proposal-example","p":717},{"i":746,"t":"Welcome to the Chia Network Developer Guides hub! Your gateway to mastering the intricacies of Chia's blockchain and smart transaction platform. Whether you're a seasoned developer, a blockchain enthusiast, or just stepping into the world of decentralized technologies, our documentation is crafted to empower you with knowledge and tools for navigating the Chia ecosystem. From mastering the basics of Chialisp programming to exploring advanced primitives, our guides cover a spectrum of topics designed to elevate your development skills.","s":"Dev Guides Home","u":"/dev-guides-home/","h":"","p":745},{"i":748,"t":"Embark on a swift journey into Chia Network's Crash Course for developers. Start with an Intro to Developing on Chia, grasp the fundamentals of Chialisp, explore the world of Smart Coins, and understand the intricacies of Signatures, State, Inner Puzzles, and Primitives.","s":"Chia Crash Course","u":"/dev-guides-home/","h":"#chia-crash-course","p":745},{"i":750,"t":"Explore the core building blocks of Chia development in the Primitives section. Unlock the potential of NFTs, embrace the versatility of CATs (Colored Coins), navigate the intricacies of Offers, leverage the DataLayer for efficient data management, implement Clawback mechanisms, understand the dynamics of DAOs, and secure your applications with Verifiable Credentials. These primitives are the foundation for creating robust and innovative solutions on the Chia Network.","s":"Primitives","u":"/dev-guides-home/","h":"#primitives","p":745},{"i":752,"t":"Immerse yourself in Chia Network's Tutorials section for developers. Understand the intricacies of Application Structure, explore the art of Custom Puzzle Locks, wield the power of the Custody Tool, master Coin Spending via RPC, harness the capabilities of the Seeder and Simulator with our user guides, and gain insights into the WalletConnect framework.","s":"Tutorials","u":"/dev-guides-home/","h":"#tutorials","p":745},{"i":754,"t":"Dive into the Video Series of Chia Network's Developer Guides for a dynamic learning experience. Discover why Chia is great, explore the essentials of developing Chia applications, set up your tools efficiently, delve into programming in Chialisp, understand the intricacies of the Coin Lifecycle, implement Singleton Contracts, master the dynamics of State, Coins, and Announcements, ensure security with insights into Arguments and Signing, explore Announcements and Oracles, and harness the potential of CATs (Chia Asset Tokens).","s":"Video Series","u":"/dev-guides-home/","h":"#video-series","p":745},{"i":756,"t":"This document provides a comprehensive reference to Chia's Daemon RPC API. Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc daemon get_keys_for_plotting '{\"fingerprints\":[2104826454]}' To run the same command on Windows, you need to escape the quotes with backslashes. In other words, add a \\ before each double quote, such that: \"fingerprints\" becomes \\\"fingerprints\\\" etc","s":"Daemon RPC","u":"/daemon-rpc/","h":"","p":755},{"i":758,"t":"This reference contains examples that make RPC calls directly from a terminal window on a running node. You can also make the same RPC calls to the daemon over a websocket. To do this, first you will need to install wscat, for example by running: npm install -g wscat Once wscat is installed, you can open a connection to the daemon. The command to run depends on your OS: Windows Linux macOS Be sure to replace username with your actual username for both the .crt and .key file. wscat -n --cert C:\\Users\\\\.chia\\mainnet\\config\\ssl\\daemon\\private_daemon.crt --key C:\\Users\\\\.chia\\mainnet\\config\\ssl\\daemon\\private_daemon.key -c wss://0.0.0.0:55400 wscat -n --cert ~/.chia/mainnet/config/ssl/daemon/private_daemon.crt --key ~/.chia/mainnet/config/ssl/daemon/private_daemon.key -c wss://0.0.0.0:55400 wscat -n --cert ~/.chia/mainnet/config/ssl/daemon/private_daemon.crt --key ~/.chia/mainnet/config/ssl/daemon/private_daemon.key -c wss://0.0.0.0:55400 Once connected, you will see a > prompt from wscat. To submit a request, run something like the following command, which calls get_wallet_addresses, with request parameters contained inside the data parameter: {\"ack\": false, \"command\": \"get_wallet_addresses\", \"data\": {\"fingerprints\":[2104826454], \"index\": 100, \"count\": 2}, \"destination\": \"daemon\", \"origin\": \"whatever\", \"request_id\": \"also_whatever\"} Response: {\"ack\": true, \"command\": \"get_wallet_addresses\", \"data\": {\"success\": true, \"wallet_addresses\": {\"2104826454\": [{\"address\": \"xch12yjgrn6m4eyszt9e3v3thczn2d6jlzvh2zjhnp0ar4kxhll8942sqq4s93\", \"hd_path\": \"m/12381/8444/2/100\"}, {\"address\": \"xch12hqq8g35gprs5r4vz366sf4r0mcvpmcy28a4tcfyda75avur4sas5vzvuj\", \"hd_path\": \"m/12381/8444/2/101\"}]}}, \"destination\": \"whatever\", \"origin\": \"daemon\", \"request_id\": \"also_whatever\"} You can also use this websocket connection with the daemon to call RPCs on other services via the daemon. This is how the Chia GUI operates. It only has a websocket connection open to the daemon -- all other RPCs are dispatched by the daemon and routed back to the wallet_ui service (the service name for the Chia GUI). To make this work, there's an extra step. You need to first call the register_service command to give your websocket connection a name. For example, to register the websocket connect with the service name my_fancy_service, run: {\"ack\": false, \"command\": \"register_service\", \"data\": {\"service\": \"my_fancy_service\"}, \"destination\": \"daemon\", \"origin\": \"my_fancy_service\", \"request_id\": \"abc123\"} Response: {\"ack\": true, \"command\": \"register_service\", \"data\": {\"success\": true}, \"destination\": \"my_fancy_service\", \"origin\": \"daemon\", \"request_id\": \"abc123\"} At this point, you can call other service RPCs: {\"ack\": false, \"command\": \"get_blockchain_state\", \"data\": {}, \"destination\": \"chia_full_node\", \"origin\": \"my_fancy_service\", \"request_id\": \"def456\"} Response: {\"ack\": true, \"command\": \"get_blockchain_state\", \"data\": {\"blockchain_state\": {\"average_block_time\": 18, \"block_max_cost\": 11000000000, \"difficulty\": 2528, \"genesis_challenge_initialized\": true, \"mempool_cost\": 129478906, \"mempool_fees\": 100000, \"mempool_max_total_cost\": 550000000000, \"mempool_min_fees\": {\"cost_5000000\": 0}, \"mempool_size\": 3, \"node_id\": \"b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab\", \"peak\": {\"challenge_block_info_hash\": \"0x5b489143d48665e38ea306b1998f2873a6caa9113dc7374b55c5b7c17cf24936\", \"challenge_vdf_output\": {\"data\": \"0x02007d3c3fe1a93f60c475d5627a78358eb704f14002fc1862ec9746793ae4f4416ddaac8fe09c5a7fdbb71432be9bfbb41c4b383754889a55ae9b4d12dab4dac920676e873d2785860b054a2a618d8ee07a866c6bebab1338fa419d3c6bcea4e9000201\"}, \"deficit\": 0, \"farmer_puzzle_hash\": \"0x780c9bf0c48ea993c59ed0fd7687417be48233d916827c63157bd6a867d930aa\", \"fees\": null, \"finished_challenge_slot_hashes\": null, \"finished_infused_challenge_slot_hashes\": null, \"finished_reward_slot_hashes\": null, \"header_hash\": \"0x76fdf9c8090985de6bb537ba4d429462dffc5673cfe963dbe5369e95661d6a7a\", \"height\": 4154084, \"infused_challenge_vdf_output\": {\"data\": \"0x0000ee9f4f1b5f8c5d4c56a0c8f4977a091aef061f190cac00d80ef449d9221f2c46c22dc5f7ba30f0f9eeef2ee68d347f1765c6e44101aa4fc33ae968698e997d0095c5ddd4bc5dcdc23b54dd909fac3d03285df19ebffc5a9ef2e5442935d302040500\"}, \"overflow\": false, \"pool_puzzle_hash\": \"0x95023147c517f9be14037dbbeb105adb48942e036e0df8ab2962d53800a4b925\", \"prev_hash\": \"0x2283b7875556deedbc4ca7a874476ae6930769c18a7f6e1b3bdb2c04b9a1a4ce\", \"prev_transaction_block_hash\": null, \"prev_transaction_block_height\": 4154081, \"required_iters\": 1092462, \"reward_claims_incorporated\": null, \"reward_infusion_new_challenge\": \"0xfffc3371c8521a13c97e75e0412186bb6e53424ef807272d6fdda5f57e591254\", \"signage_point_index\": 25, \"sub_epoch_summary_included\": null, \"sub_slot_iters\": 147849216, \"timestamp\": null, \"total_iters\": 17563259743086, \"weight\": 8641556544}, \"space\": 33037817585788604416, \"sub_slot_iters\": 147849216, \"sync\": {\"sync_mode\": false, \"sync_progress_height\": 0, \"sync_tip_height\": 0, \"synced\": true}}, \"success\": true}, \"destination\": \"my_fancy_service\", \"origin\": \"chia_full_node\", \"request_id\": \"def456\"} Note that if you skip the register_service step and attempt to make such a call, the call will go through, but you won't see the response.","s":"wscat usage","u":"/daemon-rpc/","h":"#wscat-usage","p":755},{"i":761,"t":"Functionality: Stop the daemon and all of its running services Usage: chia rpc daemon [OPTIONS] exit [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon exit Response: { \"services_stopped\": [ \"chia_wallet\", \"chia_full_node\", \"chia_farmer\", \"chia_harvester\" ], \"success\": true }","s":"exit","u":"/daemon-rpc/","h":"#exit","p":755},{"i":763,"t":"Functionality: List all available Daemon RPC routes Usage: chia rpc daemon [OPTIONS] get_routes [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon get_routes Response: { \"routes\": [ \"start_service\", \"start_plotting\", \"stop_plotting\", \"stop_service\", \"is_running\", \"running_services\", \"is_keyring_locked\", \"keyring_status\", \"unlock_keyring\", \"validate_keyring_passphrase\", \"set_keyring_passphrase\", \"remove_keyring_passphrase\", \"exit\", \"register_service\", \"get_status\", \"get_version\", \"get_plotters\", \"get_routes\", \"get_wallet_addresses\", \"get_keys_for_plotting\" ], \"success\": true }","s":"get_routes","u":"/daemon-rpc/","h":"#get_routes","p":755},{"i":765,"t":"Functionality: Show the status of the daemon Usage: chia rpc daemon [OPTIONS] get_status [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon get_status Response: { \"genesis_initialized\": true, \"success\": true }","s":"get_status","u":"/daemon-rpc/","h":"#get_status","p":755},{"i":767,"t":"Functionality: Show the version of the daemon Usage: chia rpc daemon [OPTIONS] get_version [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon get_version Response: { \"success\": true, \"version\": \"2.0.0\" }","s":"get_version","u":"/daemon-rpc/","h":"#get_version","p":755},{"i":769,"t":"Functionality: List one or more addresses from one or more keys Usage: chia rpc daemon [OPTIONS] get_wallet_addresses [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprints NUMBER False List the keys for the specified fingerprints only [Default: list keys for all fingerprints] index NUMBER False Starting index for addresses to list [Default: 0] count NUMBER False Number of addresses to list [Default: 1] non_observer_derivation BOOLEAN False Set to True to use non-observer derivation [Default: False] Example 1: default The default behavior is to show the first address for all fingerprints. chia rpc daemon get_wallet_addresses Response: { \"success\": true, \"wallet_addresses\": { \"2104826454\": [ { \"address\": \"xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j\", \"hd_path\": \"m/12381/8444/2/0\" } ], \"3792481086\": [ { \"address\": \"xch1a99ua7jp6kegtxm74yhk3ggttnat9kcjq8dtt7g2mlkd3rl9an9q5xgt35\", \"hd_path\": \"m/12381/8444/2/0\" } ] } } Example 2: custom Show two addresses from one fingerprint, starting at index 100: chia rpc daemon get_wallet_addresses '{\"fingerprints\":[2104826454], \"index\": 100, \"count\": 2}' Response: { \"success\": true, \"wallet_addresses\": { \"2104826454\": [ { \"address\": \"xch12yjgrn6m4eyszt9e3v3thczn2d6jlzvh2zjhnp0ar4kxhll8942sqq4s93\", \"hd_path\": \"m/12381/8444/2/100\" }, { \"address\": \"xch12hqq8g35gprs5r4vz366sf4r0mcvpmcy28a4tcfyda75avur4sas5vzvuj\", \"hd_path\": \"m/12381/8444/2/101\" } ] } }","s":"get_wallet_addresses","u":"/daemon-rpc/","h":"#get_wallet_addresses","p":755},{"i":771,"t":"Functionality: Show whether the keyring is locked Usage: chia rpc daemon [OPTIONS] is_keyring_locked [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon is_keyring_locked Response: { \"is_keyring_locked\": false, \"success\": true }","s":"is_keyring_locked","u":"/daemon-rpc/","h":"#is_keyring_locked","p":755},{"i":773,"t":"Functionality: Usage: chia rpc daemon [OPTIONS] is_running [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description service STRING TRUE The service to query; valid examples include, but are not limited to, \"chia_data_layer\", \"chia_data_layer_http\", \"chia_wallet\", \"chia_full_node\", \"chia_harvester\", \"chia_farmer\", \"chia_introducer\", \"chia_timelord\", \"chia_timelord_launcher\", \"chia_full_node_simulator\", \"chia_seeder\", \"chia_crawler\", \"wallet_ui\" Example Query whether the Chia wallet service is running: chia rpc daemon is_running '{\"service\": \"chia_wallet\"}' Response: { \"is_running\": true, \"service_name\": \"chia_wallet\", \"success\": true }","s":"is_running","u":"/daemon-rpc/","h":"#is_running","p":755},{"i":775,"t":"Functionality: Show a snapshot of the keyring status Usage: chia rpc daemon [OPTIONS] keyring_status [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon keyring_status Response: { \"can_save_passphrase\": true, \"can_set_passphrase_hint\": true, \"is_keyring_locked\": false, \"passphrase_hint\": \"\", \"passphrase_requirements\": { \"is_optional\": true, \"min_length\": 8 }, \"success\": true, \"user_passphrase_is_set\": true }","s":"keyring_status","u":"/daemon-rpc/","h":"#keyring_status","p":755},{"i":777,"t":"Functionality: Register a service Usage: chia rpc daemon [OPTIONS] register_service [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description service STRING TRUE The name of the service to register Example chia rpc daemon register_service '{\"service\": \"chia_wallet\"}' Response: { \"success\": true }","s":"register_service","u":"/daemon-rpc/","h":"#register_service","p":755},{"i":779,"t":"Functionality: Remove a passphrase from the keyring Usage: chia rpc daemon [OPTIONS] remove_keyring_passphrase [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description current_passphrase STRING True The current passphrase; if entered correctly, it will be removed from the keyring Example 1 Remove the real passphrase: chia rpc daemon remove_keyring_passphrase '{\"current_passphrase\": \"12345678\"}' Response: { \"error\": null, \"success\": true } Example 2 Attempt to remove a fake passphrase: chia rpc daemon remove_keyring_passphrase '{\"current_passphrase\": \"12345\"}' Response: { \"error\": \"current passphrase is invalid\", \"success\": false }","s":"remove_keyring_passphrase","u":"/daemon-rpc/","h":"#remove_keyring_passphrase","p":755},{"i":781,"t":"Functionality: Show all services that are currently running Usage: chia rpc daemon [OPTIONS] running_services [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon running_services Response: { \"running_services\": [ \"chia_full_node\", \"chia_farmer\", \"chia_harvester\", \"chia_wallet\", \"wallet_ui\" ], \"success\": true }","s":"running_services","u":"/daemon-rpc/","h":"#running_services","p":755},{"i":783,"t":"Functionality: Usage: chia rpc daemon [OPTIONS] set_keyring_passphrase [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description current_passphrase STRING True The current passphrase (if none, use an empty string) new_passphrase STRING True The new passphrase, by default must be at least 8 characters long passphrase_hint STRING False The new passphrase hint, if one is desired save_passphrase BOOLEAN False Whether to save the new passphrase to your system's secure credential store, thus allowing Chia to access your keys without prompting for your passphrase. [Default: False] Example chia rpc daemon set_keyring_passphrase '{\"current_passphrase\": \"\", \"new_passphrase\": \"12345678\", \"passphrase_hint\": \"It has eight characters\"}' Response: { \"error\": null, \"success\": true }","s":"set_keyring_passphrase","u":"/daemon-rpc/","h":"#set_keyring_passphrase","p":755},{"i":785,"t":"Functionality: Start a service Usage: chia rpc daemon [OPTIONS] start_service [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description service STRING True The service to start testing Boolean False If true, then test the start_service RPC [Default: false] Example Start the wallet service: chia rpc daemon start_service '{\"service\": \"chia_wallet\"}' Response: { \"error\": null, \"service\": \"chia_wallet\", \"success\": true }","s":"start_service","u":"/daemon-rpc/","h":"#start_service","p":755},{"i":787,"t":"Functionality: Stop a service Usage: chia rpc daemon [OPTIONS] stop_service [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description service STRING True The service to stop Example Stop the wallet service: chia rpc daemon stop_service '{\"service\": \"chia_wallet\"}' Response: { \"service_name\": \"chia_wallet\", \"success\": true }","s":"stop_service","u":"/daemon-rpc/","h":"#stop_service","p":755},{"i":789,"t":"Functionality: Unlock the keyring Usage: chia rpc daemon [OPTIONS] unlock_keyring [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description key STRING False The key to unlock [Default: None] Example chia rpc daemon unlock_keyring '{\"key\": \"12345678\"}' Response: { \"error\": null, \"success\": true }","s":"unlock_keyring","u":"/daemon-rpc/","h":"#unlock_keyring","p":755},{"i":791,"t":"Functionality: Verify whether the input passphrase is correct Usage: chia rpc daemon [OPTIONS] validate_keyring_passphrase [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description key STRING True The key to check Example chia rpc daemon validate_keyring_passphrase '{\"key\": \"12345678\"}' Response: { \"error\": null, \"success\": true }","s":"validate_keyring_passphrase","u":"/daemon-rpc/","h":"#validate_keyring_passphrase","p":755},{"i":794,"t":"Functionality: Show the farmer_public_key and pool_public_key for one or more wallet fingerprints Usage: chia rpc daemon [OPTIONS] get_keys_for_plotting [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprints NUMBER False List the keys for the specified fingerprints only [Default: list keys for all fingerprints] Example Show the keys for one specific fingerprint: chia rpc daemon get_keys_for_plotting '{\"fingerprints\":[2104826454]}' Response: { \"keys\": { \"2104826454\": { \"farmer_public_key\": \"82e79f17419e953da439bb9f5c40df4a26c0bbe2c1124178855a24067a6b8f3af8070dade09ca4c75fe3ba100e94fde6\", \"pool_public_key\": \"a3ef6951a9351239bdfff028825e4c2f659487eb3d0f25e50da6f1801bca9ab0c2e6a07a7f4e58b82ffd6c75be05e75f\" } }, \"success\": true }","s":"get_keys_for_plotting","u":"/daemon-rpc/","h":"#get_keys_for_plotting","p":755},{"i":796,"t":"Functionality: List all available plotters Usage: chia rpc daemon [OPTIONS] get_plotters [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon get_plotters Response: { \"plotters\": { \"bladebit\": { \"bladebit_memory_warning\": \"BladeBit requires at least 416 GiB of RAM to operate\", \"cuda_support\": true, \"display_name\": \"BladeBit Plotter\", \"installed\": true, \"version\": \"3.0.0\" }, \"chiapos\": { \"display_name\": \"Chia Proof of Space\", \"installed\": true, \"version\": \"2.0.2\" }, \"madmax\": { \"display_name\": \"madMAx Plotter\", \"installed\": true, \"version\": \"1.1.6-2092041\" } }, \"success\": true }","s":"get_plotters","u":"/daemon-rpc/","h":"#get_plotters","p":755},{"i":798,"t":"Functionality: Create one or more plots with the desired plotter Usage: chia rpc daemon [OPTIONS] start_plotting [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description service STRING True The plotting service to use plotter STRING False The plotter to use [Default: \"chiapos\"] delay INTEGER False The number of seconds to delay before starting to plot [Default: 0] parallel BOOLEAN False Set to create multiple plots in parallel [Default: false] k INTEGER True The k-size of the plot to create overrideK BOOLEAN True Set to true to create a plot smaller than k-32 r INTEGER True The number of threads to use for creating the plot(s) b INTEGER True Size of the buffer, in MB u INTEGER True Number of buckets e BOOLEAN True Set to true to disable bitfield t STRING True The temporary directory where the plot will be created d STRING True The destination where the plot will be moved after it has been created x BOOLEAN True Set to true to skip moving the plot after it has been created n INTEGER False The number of plots to create [Default: 1] queue STRING False The type of plotting queue [Default: \"default\"]","s":"start_plotting","u":"/daemon-rpc/","h":"#start_plotting","p":755},{"i":800,"t":"Functionality: Usage: chia rpc daemon [OPTIONS] stop_plotting [REQUEST] Options: Stop creating a plot Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description id STRING True The ID of the plot to stop creating Example chia rpc daemon stop_plotting '{\"id\": \"68607640-4dfc-4946-9a0d-186beec3b8f8\"}' Response: { \"success\": true }","s":"stop_plotting","u":"/daemon-rpc/","h":"#stop_plotting","p":755},{"i":803,"t":"Functionality: Add a new private key from a mnemonic word list Usage: chia rpc daemon [OPTIONS] add_private_key [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description mnemonic STRING True The mnemonic word list (see below for details) label STRING False The label to assign for this key [Default: None] Requirements for the mnemonic word list: Must be input as a single string Order is important Must be delineated by spaces Must be either 12 or 24 words long Each word must be in the BIP-39 word list The mnemonic must form a valid private key Example 1: success The following example adheres to each of the above rules: chia rpc daemon add_private_key '{\"mnemonic\": \"concert tooth egg defy journey lottery deposit market share lion diesel hand\", \"label\": \"Example Key\"}' Response: { \"fingerprint\": 1542304282, \"success\": true } Example 2: invalid length The mnemonic must be either 12 or 24 words. Else, an error will be returned. For example: chia rpc daemon add_private_key '{\"mnemonic\": \"1 2 3 4 5 6 7 8 9 10 11 12 13\", \"label\": \"Example Key\"}' Response: { \"error\": \"Invalid mnemonic length\", \"success\": false } Example 3: invalid word Each word must be in the BIP-39 word list. Else, an error will be returned. For example: chia rpc daemon add_private_key '{\"mnemonic\": \"1 2 3 4 5 6 7 8 9 10 11 12\", \"label\": \"Example Key\"}' Response: { \"error\": \"'1' is not in the mnemonic dictionary; may be misspelled\", \"success\": false } Example 4: Invalid word order If the mnemonic is 12 or 24 words, and each word is in the BIP-39 word list, the final check is that the words form a valid mnemonic phrase. For example: chia rpc daemon add_private_key '{\"mnemonic\": \"you can test this example word list because they tell you stuff\", \"label\": \"Example Key\"}' Response: { \"error\": \"Invalid order of mnemonic words\", \"success\": false }","s":"add_private_key","u":"/daemon-rpc/","h":"#add_private_key","p":755},{"i":805,"t":"Functionality: Usage: chia rpc daemon [OPTIONS] check_keys [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required root_path STRING True","s":"check_keys","u":"/daemon-rpc/","h":"#check_keys","p":755},{"i":807,"t":"Functionality: Delete all keys Usage: chia rpc daemon [OPTIONS] delete_all_keys [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Note that this command will fail if the OS key ring is locked. warning This command will delete all of your local Chia keys. Use with caution.","s":"delete_all_keys","u":"/daemon-rpc/","h":"#delete_all_keys","p":755},{"i":809,"t":"Functionality: Delete the key corresponding to the input fingerprint Usage: chia rpc daemon [OPTIONS] delete_key_by_fingerprint [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprint INTEGER True The fingerprint whose key you want to delete Note that this command will fail if the OS key ring is locked. Example chia rpc daemon delete_key_by_fingerprint '{\"fingerprint\": 1542304282}' Response: { \"success\": true } To verify that the key was deleted, you can call get_public_key. For example: chia rpc daemon get_public_key '{\"fingerprint\": 1542304282}' Response: { \"error\": \"key not found\", \"error_details\": { \"fingerprint\": 1542304282 }, \"success\": false }","s":"delete_key_by_fingerprint","u":"/daemon-rpc/","h":"#delete_key_by_fingerprint","p":755},{"i":811,"t":"Functionality: List all private keys, along with their respective entropies Usage: chia rpc daemon [OPTIONS] get_all_private_keys [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Note that this command will fail if the OS key ring is locked. Example chia rpc daemon get_all_private_keys Response: { \"private_keys\": [ { \"entropy\": \"2ebc991b1cd787080ec441c53044f634\", \"pk\": \"a2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\", } { \"entropy\": \"entropy of pk2\", \"pk\": \"pk2\" } ], \"success\": true }","s":"get_all_private_keys","u":"/daemon-rpc/","h":"#get_all_private_keys","p":755},{"i":813,"t":"Functionality: Obtain the first private key, along with its entropy Usage: chia rpc daemon [OPTIONS] get_first_private_key [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Note that this command will fail if the OS key ring is locked. Example chia rpc daemon get_first_private_key Response: { \"entropy\": \"2ebc991b1cd787080ec441c53044f634\", \"pk\": \"a2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\", \"success\": true }","s":"get_first_private_key","u":"/daemon-rpc/","h":"#get_first_private_key","p":755},{"i":815,"t":"Functionality: Given a fingerprint, list the corresponding private key and entropy Usage: chia rpc daemon [OPTIONS] get_key_for_fingerprint [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprint INTEGER False The fingerprint to look up [Default: get the first key] Example chia rpc daemon get_key_for_fingerprint '{\"fingerprint\": 1542304282}' Response: { \"entropy\": \"2ebc991b1cd787080ec441c53044f634\", \"pk\": \"a2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\", \"success\": true }","s":"get_key_for_fingerprint","u":"/daemon-rpc/","h":"#get_key_for_fingerprint","p":755},{"i":817,"t":"Functionality: Given a fingerprint, retrieve the corresponding key Usage: chia rpc daemon [OPTIONS] get_key [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprint INTEGER True The fingerprint whose key you want to look up include_secrets BOOLEAN False Set to true to include secrets in the response [Default: false] Example chia rpc daemon get_key '{\"fingerprint\": 1542304282}' Response: { \"key\": { \"fingerprint\": 1542304282, \"label\": \"Example Key\", \"public_key\": \"0xa2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\", \"secrets\": null }, \"success\": true }","s":"get_key","u":"/daemon-rpc/","h":"#get_key","p":755},{"i":819,"t":"Functionality: Get all public keys, with the option of including secrets Usage: chia rpc daemon [OPTIONS] get_keys [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description include_secrets BOOLEAN False Set to true to include secrets in the response [Default: false] Example chia rpc daemon get_keys Response: { \"keys\": [ { \"fingerprint\": 1542304282, \"label\": \"Example Key\", \"public_key\": \"0xa2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\", \"secrets\": null } ], \"success\": true }","s":"get_keys","u":"/daemon-rpc/","h":"#get_keys","p":755},{"i":821,"t":"Functionality: Get the public key from a specified fingerprint Usage: chia rpc daemon [OPTIONS] get_public_key [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprint INTEGER True The fingerprint whose key you want to look up Example chia rpc daemon get_public_key '{\"fingerprint\": 1542304282}' Response: { \"key\": { \"fingerprint\": 1542304282, \"label\": \"Example Key\", \"public_key\": \"0xa2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\" }, \"success\": true }","s":"get_public_key","u":"/daemon-rpc/","h":"#get_public_key","p":755},{"i":823,"t":"Functionality: Get all public keys Usage: chia rpc daemon [OPTIONS] get_public_keys [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc daemon get_public_keys Response: { \"keys\": [ { \"fingerprint\": 1542304282, \"label\": \"Example Key\", \"public_key\": \"0xa2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\" } ], \"success\": true }","s":"get_public_keys","u":"/daemon-rpc/","h":"#get_public_keys","p":755},{"i":825,"t":"Functionality: Set the label for the specified key Usage: chia rpc daemon [OPTIONS] set_label [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprint INTEGER True The fingerprint whose label you want to set label STRING True The new label Example chia rpc daemon set_label '{\"fingerprint\": 1542304282, \"label\": \"New Label\"}' Response: { \"success\": true } To verify that the label was set, you can call get_public_key. For example: chia rpc daemon get_public_key '{\"fingerprint\": 1542304282}' Response: { \"key\": { \"fingerprint\": 1542304282, \"label\": \"New Label\", \"public_key\": \"0xa2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\" }, \"success\": true }","s":"set_label","u":"/daemon-rpc/","h":"#set_label","p":755},{"i":827,"t":"Functionality: Delete the label for the specified fingerprint Usage: chia rpc daemon [OPTIONS] delete_label [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description fingerprint INTEGER True The fingerprint whose label you want to delete Example chia rpc daemon delete_label '{\"fingerprint\": 1542304282}' Response: { \"success\": true } To verify that the label was set, you can call get_public_key. For example: chia rpc daemon get_public_key '{\"fingerprint\": 1542304282}' Response: { \"key\": { \"fingerprint\": 1542304282, \"label\": null, \"public_key\": \"0xa2cc00aff448432ef72e7c60ef4ef6f39ce72748c91f1ec15262821cf7f56bcf0a509c9354ec5104604ebbe276511263\" }, \"success\": true }","s":"delete_label","u":"/daemon-rpc/","h":"#delete_label","p":755},{"i":829,"t":"This page includes a comprehensive list of Chia's Command Line Interface commands for interacting with the DataLayer. We also have documented the RPC API for interacting with the DataLayer. The relevant DataLayer commands can be found by running chia data: (venv) $ chia data -h Commands that modify the blockchain include an optional fee. This fee can be specified in two ways: The -m / --fee parameter can be specified explicitly in the command, as several of the examples in this document show If the fee option is not explicitly specified, then the data_layer:fee setting in ~/.chia/mainnet/config/config.yaml will be used. By default, this is set to 1 billion mojos (0.001 XCH) If neither of these options is set, then no fee will be used For commands that change the state of the DataLayer singleton (ie all on-chain commands), you will need to wait for confirmation before running another command. If you run a command before the previous transaction has been confirmed, you will receive this error: Request failed: {'error': 'Already have a pending root waiting for confirmation.', 'success': False} The commands in this document will work with or without the = symbol. Additionally, hashes may or may not be prefixed with 0x.","s":"DataLayer CLI","u":"/datalayer-cli/","h":"","p":828},{"i":832,"t":"Functionality: Add a new mirror from a local or remote data store. Triggers a Chia transaction Usage: chia data add_mirror [OPTIONS] Options: Short Command Long Command Type Required Description -i --id TEXT True The hexadecimal ID of the store to mirror -a --amount INTEGER True The amount (in mojos) to spend to create the mirror. In theory, mirrors with a higher amount will be prioritized. Minimum amount is 0 -u --url TEXT False A URL where the mirror will reside. Can be repeated to add multiple URLs in the same command -m --fee TEXT False Set the fees for the transaction, in XCH -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Fingerprint of the wallet to use -h --help None False Show a help message and exit Example Create one mirror with multiple URLs: chia data add_mirror -i 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f -a 1000 -u http://www.example.com:8575 -u http://www.example2.com:8575 Response: None","s":"add_mirror","u":"/datalayer-cli/","h":"#add_mirror","p":828},{"i":834,"t":"Functionality: Use the database to restore all files for one or more local data stores Usage: chia data add_missing_files [OPTIONS] Options: Short Command Long Command Type Required Description -i --ids TEXT True The hexadecimal store id(s) -o --override None False If set, will overwrite files that already exist (default: not set) -n --no-override None False If set, will not overwrite files that already exist (default: set) -d --directory TEXT False If specified, use a non-default directory to write the files (default: ~/.chia/mainnet/data_layer/db/server_files_location_) -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Fingerprint of the wallet to use -h --help None False Show a help message and exit Example For this example, there is one local store: ls ~/.chia/mainnet/data_layer/db/server_files_location_testnet/ Response: 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-0000000000000000000000000000000000000000000000000000000000000000-delta-2-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-0000000000000000000000000000000000000000000000000000000000000000-full-2-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-b5420e65846ded936d1e4855c066247fc461a3b281cd9e0e69f3cfa4df529ba2-delta-3-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-b5420e65846ded936d1e4855c066247fc461a3b281cd9e0e69f3cfa4df529ba2-full-3-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-d6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8-delta-4-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-d6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8-full-4-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-e488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb-delta-1-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-e488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb-full-1-v1.0.dat Intentionally move the files and create an empty folder. This will simulate file corruption: mv ~/.chia/mainnet/data_layer/db/server_files_location_testnet ~/.chia/mainnet/data_layer/db/server_files_location_testnet_bak mkdir ~/.chia/mainnet/data_layer/db/server_files_location_testnet/ Next, restore the files: chia data add_missing_files Response: None Finally, verify that the files have been restored: ls ~/.chia/mainnet/data_layer/db/server_files_location_testnet/ Response: 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-0000000000000000000000000000000000000000000000000000000000000000-delta-2-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-0000000000000000000000000000000000000000000000000000000000000000-full-2-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-b5420e65846ded936d1e4855c066247fc461a3b281cd9e0e69f3cfa4df529ba2-delta-3-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-b5420e65846ded936d1e4855c066247fc461a3b281cd9e0e69f3cfa4df529ba2-full-3-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-d6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8-delta-4-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-d6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8-full-4-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-e488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb-delta-1-v1.0.dat 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f-e488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb-full-1-v1.0.dat","s":"add_missing_files","u":"/datalayer-cli/","h":"#add_missing_files","p":828},{"i":836,"t":"Functionality: Clear pending roots that will not be published, associated data may not be recoverable Usage: chia data clear_pending_roots [OPTIONS] Options: Short Command Long Command Type Required Description -i --id TEXT True The ID of the store from which to clear the pending roots --yes None False Set to confirm the action without prompting [Default: not set / prompt to confirm] -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example To clear all pending roots, you need to enter the store ID. An example of this which also disables prompting: chia data clear_pending_roots -i 2772c8108e19f9fa98ff7bc7d4bafd821319bc90af6b610d086b85f4c21fa816 --yes Response: { \"root\": { \"generation\": 1, \"node_hash\": \"e488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb\", \"status\": 1, \"tree_id\": \"2772c8108e19f9fa98ff7bc7d4bafd821319bc90af6b610d086b85f4c21fa816\" }, \"success\": true }","s":"clear_pending_roots","u":"/datalayer-cli/","h":"#clear_pending_roots","p":828},{"i":838,"t":"Functionality: Create a data store. Triggers a Chia transaction Usage: chia data create_data_store [OPTIONS] Options: Short Command Long Command Type Required Description -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -m --fee TEXT False Set the fees for the transaction, in XCH --verbose None False Set to enable verbose output -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example Create a new data store: chia data create_data_store -m 0.00001 Response: { 'id': '1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f', 'success': True, 'txs': [ { 'additions': [ { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, { 'amount': 14999989999999, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0x478255c372cec71557c20459f4b690fb1b7c57da3fcfc4b6396d78d9a396e384' }, { 'amount': 1, 'parent_coin_info': '0x1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f', 'puzzle_hash': '0xd650e81d45c7381183c14c3363a81aa78cb3acfe213e46da26df75cd431557f9' } ], 'amount': 1, 'confirmed': False, 'confirmed_at_height': 0, 'created_at_time': 1661141324, 'fee_amount': 10000000, 'memos': [], 'name': '0xaee362ae9d0ce3992b3bfb7cc48bde17f3d794cc383ff1d5e49a4d75dbf004d6', 'removals': [ { 'amount': 15000000000000, 'parent_coin_info': '0x81fc1729bad3f19699461b1ee455a92493ef4c1d60ba37d22ac187a18367e08e', 'puzzle_hash': '0x221c0e9cd9b7f536e9a204ef93519e6c9d4b4c9a049bde8d66fa1816c23120d2' }, { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' } ], 'sent': 10, 'sent_to': [], 'spend_bundle': { 'aggregated_signature': '0x8c431f07698ad69fd14ab04d77683801e6b908e441074f5ef5268350483d194a09a8b3cde681cb5c5fcf6444e0c9d4bf00999e8e6ad1522891baa590f82d92e2876b08e34b1f3156d0fe88ce206e5ed1567863e10a0397fd0a8a66bcbd5007b0', 'coin_spends': [ { 'coin': { 'amount': 15000000000000, 'parent_coin_info': '0x81fc1729bad3f19699461b1ee455a92493ef4c1d60ba37d22ac187a18367e08e', 'puzzle_hash': '0x221c0e9cd9b7f536e9a204ef93519e6c9d4b4c9a049bde8d66fa1816c23120d2' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b3deeeb00319624e26767c5cf777cf9a02d046510181ed29f233e2847fa8ef28ede05d2770bb1b8f101ea8ae20527d61ff018080', 'solution': '0xff80ffff01ffff33ffa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff0180ffff33ffa0478255c372cec71557c20459f4b690fb1b7c57da3fcfc4b6396d78d9a396e384ff860da47513597f80ffff34ff840098968080ffff3cffa084f72a9a3ce5152e1d627a259a0c1c90e6af389cb26af48173d84e374ecc518080ffff3dffa03a0ed375dff192685d1ef9a74424788b04655700bee898f0ea8445f8b55d38338080ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, 'puzzle_reveal': '0xff02ffff01ff04ffff04ff04ffff04ff05ffff04ff0bff80808080ffff04ffff04ff0affff04ffff02ff0effff04ff02ffff04ffff04ff05ffff04ff0bffff04ff17ff80808080ff80808080ff808080ff808080ffff04ffff01ff33ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080', 'solution': '0xffa0d650e81d45c7381183c14c3363a81aa78cb3acfe213e46da26df75cd431557f9ff01ffffa00000000000000000000000000000000000000000000000000000000000000000ffa0adcbcbaf4594e8d3057ea3a64a40560720ede80e720f867d2631069c27459de58080' } ] }, 'to_puzzle_hash': '0x0202020202020202020202020202020202020202020202020202020202020202', 'trade_id': None, 'type': 0, 'wallet_id': 0 }, { 'additions': [ { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, { 'amount': 14999989999999, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0x478255c372cec71557c20459f4b690fb1b7c57da3fcfc4b6396d78d9a396e384' } ], 'amount': 1, 'confirmed': False, 'confirmed_at_height': 0, 'created_at_time': 1661141324, 'fee_amount': 10000000, 'memos': [], 'name': '0xbb4cb461126d9ea9492e767462b9a4e408e497231c2093474cba2bcfe4397104', 'removals': [ { 'amount': 15000000000000, 'parent_coin_info': '0x81fc1729bad3f19699461b1ee455a92493ef4c1d60ba37d22ac187a18367e08e', 'puzzle_hash': '0x221c0e9cd9b7f536e9a204ef93519e6c9d4b4c9a049bde8d66fa1816c23120d2' } ], 'sent': 0, 'sent_to': [], 'spend_bundle': None, 'to_puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9', 'trade_id': None, 'type': 1, 'wallet_id': 1 } ] }","s":"create_data_store","u":"/datalayer-cli/","h":"#create_data_store","p":828},{"i":840,"t":"Functionality: Delete a mirror, by coin_id. Triggers a Chia transaction Usage: chia data delete_mirror [OPTIONS] Options: Short Command Long Command Type Required Description -c --coin_id TEXT True The coin_id of the mirror to delete (obtainable from the get_mirrors command) -m --fee TEXT False Set the fees for the transaction, in XCH -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example chia data delete_mirror -c b5756487c17fe3a2628e45a9d3d42e89231af718bb1735e6c8441e07ec005f9d -m 0.000001 Response: {'success': True}","s":"delete_mirror","u":"/datalayer-cli/","h":"#delete_mirror","p":828},{"i":842,"t":"Functionality: Get all keys associated with a store ID Usage: chia data get_keys [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store id -r --root_hash TEXT False The hexadecimal root hash -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -p --page INTEGER False Enables pagination of the output and requests a specific page --max-page-size INTEGER False Set how many bytes to be included in a page, if pagination is enabled [Default: 40 MB] -h --help None False Show a help message and exit info Pagination is disabled by default. If it is enabled (by using the page flag), then the JSON response will include total_pages and total_bytes, in addition to the data. If an item is larger than max-page-size, an error will be thrown. Example chia data get_keys --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'keys': [ '0x0004', '0x0005' ], 'success': True }","s":"get_keys","u":"/datalayer-cli/","h":"#get_keys","p":828},{"i":844,"t":"Functionality: Get all keys and values for a store. Must be subscribed to store ID Usage: chia data get_keys_values [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store id -r --root_hash TEXT False The hexadecimal root hash -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -p --page INTEGER False Enables pagination of the output and requests a specific page --max-page-size INTEGER False Set how many bytes to be included in a page, if pagination is enabled [Default: 40 MB] -h --help None False Show a help message and exit info Pagination is disabled by default. If it is enabled (by using the page flag), then the JSON response will include total_pages and total_bytes, in addition to the data. If an item is larger than max-page-size, an error will be thrown. Example chia data get_keys_values --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'keys_values': [ { 'atom': None, 'hash': '0x26e60dd9b493eee1f6781fc13dd025e0bfafcde5a103c95dd087d91bd848d406', 'key': '0x0004', 'value': '0x0123456789abcdef' }, { 'atom': None, 'hash': '0xc2dc94c2a85d7db4cfdd1d907bcc441c8fce595db2e2075b973fb8171e2f19a2', 'key': '0x0005', 'value': '0xbeadfeed' } ], 'success': True }","s":"get_keys_values","u":"/datalayer-cli/","h":"#get_keys_values","p":828},{"i":846,"t":"Functionality: Get the kv diff between two hashes within the same store ID Usage: chia data get_kv_diff [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store ID -hash_1 --hash_1 TEXT True The first hash to compare -hash_2 --hash_2 TEXT True The second hash to compare -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -p --page INTEGER False Enables pagination of the output and requests a specific page --max-page-size INTEGER False Set how many bytes to be included in a page, if pagination is enabled [Default: 40 MB] -h --help None False Show a help message and exit info Pagination is disabled by default. If it is enabled (by using the page flag), then the JSON response will include total_pages and total_bytes, in addition to the data. If an item is larger than max-page-size, an error will be thrown. Example chia data get_kv_diff --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f -hash_1 0x26e60dd9b493eee1f6781fc13dd025e0bfafcde5a103c95dd087d91bd848d406 -hash_2 0xc2dc94c2a85d7db4cfdd1d907bcc441c8fce595db2e2075b973fb8171e2f19a2 Response: { 'diff': [ { 'key': '0005', 'type': 'INSERT', 'value': 'beadfeed' }, { 'key': '0004', 'type': 'DELETE', 'value': '0123456789abcdef' } ], 'success': True }","s":"get_kv_diff","u":"/datalayer-cli/","h":"#get_kv_diff","p":828},{"i":848,"t":"Functionality: List all mirrors for a store ID Usage: chia data get_mirrors [OPTIONS] Options: Short Command Long Command Type Required Description -i --id TEXT True The hexadecimal ID of the store for which to get mirrors -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example chia data get_mirrors -i 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'mirrors': [ { 'amount': 1000, 'coin_id': 'b5756487c17fe3a2628e45a9d3d42e89231af718bb1735e6c8441e07ec005f9d', 'launcher_id': '1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f', 'ours': True, 'urls': [ 'http://www.example.com:8575', 'http://www.example2.com:8575' ] } ], 'success': True }","s":"get_mirrors","u":"/datalayer-cli/","h":"#get_mirrors","p":828},{"i":850,"t":"Functionality: Get owned stores Usage: chia data get_owned_stores [OPTIONS] Options: Short Command Long Command Type Required Description -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example chia data get_owned_stores Response: { 'store_ids': [ '39114b28a3674b6c2c0ed65d3518842fd17f9df46794f49cd223f9f3a463f09d', '5d8f5c88f27804f5c387e070403faece14acb74460bbf7d47739178a3774eff3', '77e9c21be435dded6e8c9b32e93b2b880665f5b34f860a642f22d3fa500ce457', '9d0c65e77c750eac28b3fa78e57cdcec59fe53448eb59bdfbfa694d89f262b4b' ], 'success': True }","s":"get_owned_stores","u":"/datalayer-cli/","h":"#get_owned_stores","p":828},{"i":852,"t":"Functionality: Obtains a merkle proof of inclusion for a given key Usage: chia data get_proof [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store id -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -k --key TEXT True The hexadecimal key -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit The proof is a proof of inclusion that a given key, value pair is in the specified datalayer store by chaining the Merkle hashes up to the published on-chain root hash. A user can generate a proof for multiple k,v pairs in the same datastore. Example chia data get_proof --id 7de232eecc08dc5e524ad42fad205c9ec7dd3f342677edb7c2e139c51f55d40e -k 0x0003 Response: { \"proof\": { \"coin_id\": \"0x774e5f9ba7a8afbfa7fd2050347b4a2d400d3cd530637a18b61b094bb5a0f756\", \"inner_puzzle_hash\": \"0x875cc80014bc72f2028c27500d5b44bf6906cd13ad16d7b5f4a5da77a06c8c2f\", \"store_proofs\": { \"proofs\": [ { \"key_clvm_hash\": \"0xa143e7ffd81147f136f921fef88760c46c7a05f15b81995f9c5cfed2a737a3f1\", \"layers\": [], \"node_hash\": \"0xe488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb\", \"value_clvm_hash\": \"0xed052604ee4ff3996c15ef9b2cb0925233a2e78b6168bb6e67d133e074109b42\" } ], \"store_id\": \"0x7de232eecc08dc5e524ad42fad205c9ec7dd3f342677edb7c2e139c51f55d40e\" } }, \"success\": true }","s":"get_proof","u":"/datalayer-cli/","h":"#get_proof","p":828},{"i":854,"t":"Functionality: Get the Merkle Root and timestamp of a given store ID Usage: chia data get_root [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store id -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example chia data get_root --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'confirmed': True, 'hash': '0xd6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8', 'success': True, 'timestamp': 1661148611 }","s":"get_root","u":"/datalayer-cli/","h":"#get_root","p":828},{"i":856,"t":"Functionality: Get a history of root hashes for a Store ID that you subscribe to Usage: chia data get_root_history [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store id -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example chia data get_root_history --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'root_history': [ { 'confirmed': True, 'root_hash': '0x0000000000000000000000000000000000000000000000000000000000000000', 'timestamp': 1661141342 }, { 'confirmed': True, 'root_hash': '0xe488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb', 'timestamp': 1661144917 }, { 'confirmed': True, 'root_hash': '0x0000000000000000000000000000000000000000000000000000000000000000', 'timestamp': 1661145223 }, { 'confirmed': True, 'root_hash': '0xb5420e65846ded936d1e4855c066247fc461a3b281cd9e0e69f3cfa4df529ba2', 'timestamp': 1661145404 }, { 'confirmed': True, 'root_hash': '0xd6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8', 'timestamp': 1661148611 } ], 'success': True }","s":"get_root_history","u":"/datalayer-cli/","h":"#get_root_history","p":828},{"i":858,"t":"Functionality: Get subscribed stores, including the owned stores Usage: chia data get_subscriptions [OPTIONS] Options: Short Command Long Command Type Required Description -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example chia data get_subscriptions Response: { 'store_ids': [ 'ba934d7f4ad47c34cb1a99d3c57adacb1883cff5528cca67c34f724f3560e401', '9d0c65e77c750eac28b3fa78e57cdcec59fe53448eb59bdfbfa694d89f262b4b', '39114b28a3674b6c2c0ed65d3518842fd17f9df46794f49cd223f9f3a463f09d', '77e9c21be435dded6e8c9b32e93b2b880665f5b34f860a642f22d3fa500ce457', '5d8f5c88f27804f5c387e070403faece14acb74460bbf7d47739178a3774eff3', 'a101396917a68f79e9119eaef738162d73e23b43e952561f21bdb1a1c171df89', '0f2257618880bf2a6d8d3c223147e06fa547520802e44a5359d240cdf0b9dbe7' ], 'success': True }","s":"get_subscriptions","u":"/datalayer-cli/","h":"#get_subscriptions","p":828},{"i":860,"t":"Functionality: Get locally stored root compared to the root of the singleton Usage: chia data get_sync_status [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store id -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit If the root_hash matches the target_root_hash, then the store is synced. Example chia data get_sync_status -store 39114b28a3674b6c2c0ed65d3518842fd17f9df46794f49cd223f9f3a463f09d Response: { 'success': True, 'sync_status': { 'generation': 1, 'root_hash': '532d8df550bdbdef28c1a7b27eaefc812afb99eabd59b3c041000c7ea352e900', 'target_generation': 1, 'target_root_hash': '532d8df550bdbdef28c1a7b27eaefc812afb99eabd59b3c041000c7ea352e900' } }","s":"get_sync_status","u":"/datalayer-cli/","h":"#get_sync_status","p":828},{"i":862,"t":"Functionality: Get a value from a Store's key Usage: chia data get_value [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store id -k --key TEXT True The hexadecimal key -r --root_hash TEXT False The hexadecimal root hash -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under data_layer in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use --help None False Show a help message and exit Example chia data get_value --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f --key 0004 Response: { 'success': True, 'value': '0123456789abcdef' }","s":"get_value","u":"/datalayer-cli/","h":"#get_value","p":828},{"i":864,"t":"Functionality: Get information about configured uploader/downloader plugins Usage: chia data plugins [OPTIONS] COMMAND [ARGS]... Commands: check (Calls the plugin_info endpoint on all configured plugins) Options: Short Command Long Command Type Required Description -h --help None False Show a help message and exit Note that currently check is the only sub-command under the plugins command. This command is shown in the example. Example chia data plugins check Response: { \"plugin_status\": { \"downloaders\": {}, \"uploaders\": {} }, \"success\": true }","s":"plugins","u":"/datalayer-cli/","h":"#plugins","p":828},{"i":866,"t":"Functionality: Remove one or more URLs from a data store to which you subscribe. Note that this action will not remove the subscription to the data store itself. For that functionality, use unsubscribe Usage: chia data remove_subscription [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal ID of the store to which you would like to subscribe -u --url TEXT False A URL where the data store resides. This argument can be used multiple times in the same command -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example chia data remove_subscription -store 8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d -u http://www.example.com:8575 Response: None","s":"remove_subscription","u":"/datalayer-cli/","h":"#remove_subscription","p":828},{"i":868,"t":"Functionality: Subscribe to a store ID Usage: chia data subscribe [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal ID of the store to which you would like to subscribe -u --url TEXT False A URL where the data store resides. This argument can be used multiple times in the same command -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Example 1 Subscribe to a data store without specifying any URLs: chia data subscribe -store 8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d Response: None Use the subscriptions RPC to list all current subscriptions: chia rpc data_layer subscriptions Response: { \"store_ids\": [ \"1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f\", \"8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d\" ], \"success\": true } Example 2 Subscribe to a data store using multiple URLs where that store resides: chia data subscribe -store 8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d -u http://www.example.com:8575 -u http://www.example2.com:8575 Response: None Use the subscriptions RPC to list all current subscriptions: chia rpc data_layer subscriptions Response: { \"store_ids\": [ \"1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f\", \"8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d\" ], \"success\": true }","s":"subscribe","u":"/datalayer-cli/","h":"#subscribe","p":828},{"i":870,"t":"Functionality: Unsubscribe from a store ID Usage: chia data unsubscribe [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal ID of the store to which you would like to unsubscribe -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use --retain None False Retain local .dat files [Default: false (don't retain data)] -h --help None False Show a help message and exit info The unsubscribe command may or may not delete any data, depending on which version of Chia you are running: Prior to version 2.1, the command did not delete the .dat files, nor did it delete from the database. As of version 2.1, the command deletes the .dat files, but does not delete from the database. In a future release, the command will also delete from the database. Example: Example chia data unsubscribe -store 8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d Response: None","s":"unsubscribe","u":"/datalayer-cli/","h":"#unsubscribe","p":828},{"i":872,"t":"Functionality: Update a data store with a given changelist. Triggers a Chia transaction Usage: chia data update_data_store [OPTIONS] Options: Short Command Long Command Type Required Description -store --id TEXT True The hexadecimal store ID -d --changelist TEXT True A JSON object representing the changelist -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -m --fee TEXT False Set the fees for the transaction, in XCH -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use --submit None False Set to submit the result on chain [Default: don't submit] --no-submit None False Set to explicitly specify not to submit the result on chain [Default: don't submit] -h --help None False Show a help message and exit A few notes on the -d / --changelist option: The entire list must be formatted as a JSON array There are two actions allowed: insert and delete insert requires key and value flags delete requires a key flag only Keys and values must be written in hex format. Values can be derived from text or binary. Labels, keys and values must all be enclosed in double quotes Multiple inserts and deletes are allowed The size of a single value flag is limited to 100 MiB. However, adding anything close to that size has not been tested and could produce unexpected results. On Windows, you must escape the double quotes in the JSON array with backslashes. See below for an example. This is not required on MacOS or Linux. The following examples will show the basic functionality of this command. Example 1 -- Insert a single key/value pair chia data update_data_store --id=1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f -d '[{\"action\":\"insert\", \"key\":\"0003\", \"value\":\"abc123\"}]' Response: { 'success': True, 'tx_id': '0xed157b50b94a849d3d19a0ef4e1b0e07bda863e4d65bd1527fa6f59062bb5c78' } Example 2 -- Delete a single key chia data update_data_store --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f --changelist '[{\"action\":\"delete\", \"key\":\"0003\"}]' Response: { 'success': True, 'tx_id': '0x2a64ef42baf05c6f4d446ba8638c2f2b2c26e5a91ad62e0c5151df40d0f92ec2' } Example 3 -- Insert two keys chia data update_data_store --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f --changelist '[{\"action\":\"insert\", \"key\":\"0x0004\", \"value\":\"123abc\"},{\"action\":\"insert\", \"key\":\"0005\", \"value\":\"0xbeadfeed\"}]' Response: { 'success': True, 'tx_id': '0xea22328f8843fab4149d0589e43217d88047ceeb41ef610e59717d13127bab7c' } List all keys and values after running the previous command: chia data get_keys_values --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'keys_values': [ { 'atom': None, 'hash': '0x7e193b814080e50aa7780bcf71fd0422a0397ad3e57dc1eac71d93183efb39ba', 'key': '0x0004', 'value': '0x123abc' }, { 'atom': None, 'hash': '0xc2dc94c2a85d7db4cfdd1d907bcc441c8fce595db2e2075b973fb8171e2f19a2', 'key': '0x0005', 'value': '0xbeadfeed' } ], 'success': True } Example 4 -- Show that you may not overwrite an existing key chia data update_data_store --id=1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f -d '[{\"action\":\"insert\", \"key\":\"0004\", \"value\":\"0123456789abcdef\"}]' Response: Exception from 'data': {'error': 'Key already present: 0004', 'success': False} Example 5 -- Delete and add the same key in the same command chia data update_data_store --id=1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f -d '[{\"action\":\"delete\", \"key\":\"0004\"}, {\"action\":\"insert\", \"key\":\"0004\", \"value\":\"0123456789abcdef\"}]' Response: { 'success': True, 'tx_id': '0xf2631a4d326d937b4ac4c89c400d4f33b2d3caf34d7794cf89e2c5d06c9a4648' } Show the result of running the previous command: chia data get_keys_values --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: {'keys_values': [{'atom': None, 'hash': '0x26e60dd9b493eee1f6781fc13dd025e0bfafcde5a103c95dd087d91bd848d406', 'key': '0x0004', 'value': '0x0123456789abcdef'}, {'atom': None, 'hash': '0xc2dc94c2a85d7db4cfdd1d907bcc441c8fce595db2e2075b973fb8171e2f19a2', 'key': '0x0005', 'value': '0xbeadfeed'}], 'success': True} Example 6 -- Show a key/value pair that was inserted into the Climate Warehouse [{\"action\":\"insert\",\"key\":\"70726f6a6563747c37353339656336392d636238652d343464362d383832332d653062313135303162643433\",\"value\":\"7b2263757272656e745265676973747279223a2243756c7469766f222c2272656769737472794f664f726967696e223a2243756c7469766f222c226f726967696e50726f6a6563744964223a224d6163546573743135222c2270726f6772616d223a224d6163546573743135222c2270726f6a6563744964223a224d6163546573743135222c2270726f6a6563744e616d65223a224d6163546573743135222c2270726f6a6563744c696e6b223a224d6163546573743135222c2270726f6a656374446576656c6f706572223a224d6163546573743135222c22736563746f72223a22456e6572677920646973747269627574696f6e222c2270726f6a65637454797065223a224f7a6f6e65204465706c6574696e67205375627374616e636573222c22636f766572656442794e4443223a224f757473696465204e4443222c226e6463496e666f726d6174696f6e223a224d6163546573743135222c2270726f6a656374537461747573223a22436f6d706c65746564222c22756e69744d6574726963223a2274434f3265222c226d6574686f646f6c6f6779223a22426173656c696e65204d6574686f646f6c6f677920666f72206465636f6d706f736974696f6e206f66204e324f2066726f6d206578697374696e672061646970696320616369642070726f64756374696f6e20706c616e7473202d2d2d2056657273696f6e20332e30222c2270726f6a65637454616773223a224d6163546573743135222c2276616c69646174696f6e426f6479223a22436172626f6e20436865636b2028496e646961292050726976617465204c74642e222c2270726f6a65637453746174757344617465223a22323032302d30332d32385430303a30303a30302e3030305a222c2276616c69646174696f6e44617465223a22323032322d30332d30315430303a30303a30302e3030305a222c2277617265686f75736550726f6a6563744964223a2237353339656336392d636238652d343464362d383832332d653062313135303162643433222c2274696d65537461676564223a313634363639343630322c226f7267556964223a2230623039643861653437626665323731366263323532383231333463653661613931616333646364663933363335616338656436626362333031626234636238227d\"}] The hex from this example can be decoded to obtain the following: key = project|7539ec69-cb8e-44d6-8823-e0b11501bd43 value = { \"currentRegistry\":\"Cultivo\", \"registryOfOrigin\":\"Cultivo\", \"originProjectId\":\"MacTest15\", \"program\":\"MacTest15\", \"projectId\":\"MacTest15\", \"projectName\":\"MacTest15\", \"projectLink\":\"MacTest15\", \"projectDeveloper\":\"MacTest15\", \"sector\":\"Energy distribution\", \"projectType\":\"Ozone Depleting Substances\", \"coveredByNDC\":\"Outside NDC\", \"ndcInformation\":\"MacTest15\", \"projectStatus\":\"Completed\", \"unitMetric\":\"tCO2e\", \"methodology\":\"Baseline Methodology for decomposition of N2O from existing adipic acid production plants --- Version 3.0\", \"projectTags\":\"MacTest15\", \"validationBody\":\"Carbon Check (India) Private Ltd.\", \"projectStatusDate\":\"2020-03-28T00:00:00.000Z\", \"validationDate\":\"2022-03-01T00:00:00.000Z\", \"warehouseProjectId\":\"7539ec69-cb8e-44d6-8823-e0b11501bd43\", \"timeStaged\":1646694602, \"orgUid\":\"0b09d8ae47bfe2716bc25282134ce6aa91ac3dcdf93635ac8ed6bcb301bb4cb8\" }","s":"update_data_store","u":"/datalayer-cli/","h":"#update_data_store","p":828},{"i":874,"t":"Functionality: Verifies a merkle proof of inclusion Usage: chia data verify_proof [OPTIONS] Options: Short Command Long Command Type Required Description -p --proof TEXT True Proof to validate in JSON format -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -h --help None False Show a help message and exit Notes about this command: It only needs to perform a single lookup of the on-chain root. It doesn't need to have synced any of the data, or be subscribed to the data store. To keep the proofs smaller, only the clvm hash of the key and value are included in the proof, and not the actual key or value. (A clvm hash is just a sha256 hash of the data prepended with 0x01.) Datalayer uses CLVM hashes for ease of verification in CLVM, although for this specific use case, there is no on-chain validation happening. When using this command, pay attention to the current_root value in the returned JSON. If current_root is True, this data chains to the current published root, and so if you synced the data, you can be sure it would be there. If current_root is False, the root has moved from the time the proof was generated. You cannot make any assumptions in this case about whether the data is in fact in the datastore or not since the root has changed, therefore the data might have changed. It is up to the caller to determine how to treat this case; one possible action would be to obtain a new proof. The proof to validate requires several fields: coin_id inner_puzzle_hash store_proofs proofs key_clvm_hash value_clvm_hash node_hash layers Each of these fields is output with the get_proof command. For more examples, see chia-blockchain PR #16845. Example chia data verify_proof -p '{\"coin_id\": \"0x774e5f9ba7a8afbfa7fd2050347b4a2d400d3cd530637a18b61b094bb5a0f756\", \"inner_puzzle_hash\": \"0x875cc80014bc72f2028c27500d5b44bf6906cd13ad16d7b5f4a5da77a06c8c2f\", \"store_proofs\": {\"proofs\": [{\"key_clvm_hash\": \"0xa143e7ffd81147f136f921fef88760c46c7a05f15b81995f9c5cfed2a737a3f1\",\"layers\": [], \"node_hash\": \"0xe488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb\", \"value_clvm_hash\": \"0xed052604ee4ff3996c15ef9b2cb0925233a2e78b6168bb6e67d133e074109b42\"}], \"store_id\": \"0x7de232eecc08dc5e524ad42fad205c9ec7dd3f342677edb7c2e139c51f55d40e\"}}' Response: { \"current_root\": true, \"success\": true, \"verified_clvm_hashes\": { \"inclusions\": [ { \"key_clvm_hash\": \"0xa143e7ffd81147f136f921fef88760c46c7a05f15b81995f9c5cfed2a737a3f1\", \"value_clvm_hash\": \"0xed052604ee4ff3996c15ef9b2cb0925233a2e78b6168bb6e67d133e074109b42\" } ], \"store_id\": \"0x7de232eecc08dc5e524ad42fad205c9ec7dd3f342677edb7c2e139c51f55d40e\" } }","s":"verify_proof","u":"/datalayer-cli/","h":"#verify_proof","p":828},{"i":876,"t":"Functionality: Request that the wallet service be logged in to the specified fingerprint Usage: chia data wallet_log_in [OPTIONS] Options: Short Command Long Command Type Required Description -dp --data-rpc-port INTEGER False Set the port where the DataLayer is hosting the RPC interface. See rpc_port under wallet in config.yaml -f --fingerprint INTEGER True Fingerprint of the wallet to use -h --help None False Show a help message and exit","s":"wallet_log_in","u":"/datalayer-cli/","h":"#wallet_log_in","p":828},{"i":878,"t":"This document is a comprehensive listing of CLI commands for interacting with Chia DIDs.","s":"DID CLI","u":"/did-cli/","h":"","p":877},{"i":881,"t":"Functionality: Create a DID wallet Usage: chia wallet did create [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -n --name TEXT False Set the DID wallet name [default: None] -a --amount INTEGER False Set the DID amount in mojos. Value must be an odd number. [default: 1] -m --fee TEXT False Set the fees per transaction, in XCH. [default: 0] -h --help None False Show a help message and exit. Example Create a new DID: chia wallet did create -n My_DID Response: Successfully created a DID wallet with name My_DID and id 2 on key 4288332900 Successfully created a DID did:chia:17jvhl9z8zj6jma2uxk4mqj22p90hfpf29svlvlyalu8ksyefsvpql7f403 in the newly created DID wallet View your wallet and DID: chia wallet show Response: Wallet height: 1117451 Sync status: Synced Balances, fingerprint: 4288332900 Chia Wallet: -Total Balance: 0.999989999992 txch (999989999992 mojo) -Pending Total Balance: 0.999989999991 txch (999989999991 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 My_DID: -Total Balance: 0.0 -Pending Total Balance: 1.0 -Spendable: 0.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:17jvhl9z8zj6jma2uxk4mqj22p90hfpf29svlvlyalu8ksyefsvpql7f403 -Wallet ID: 2","s":"create","u":"/did-cli/","h":"#create","p":877},{"i":883,"t":"Functionality: Find the did you should own and recover the DID wallet Usage: chia wallet did find_lost [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -id --coin_id TEXT True The DID ID, launcher ID, or latest coin ID of the DID you want to recover. The most time-efficient of these is the latest coin ID -m --metadata TEXT False The new whole metadata in json format -r --recovery_list_hash TEXT False Override the recovery list hash of the DID. Only set this if your last DID spend updated the recovery list -n --num_verification INTEGER False Override the required verification number of the DID. Only set this if your last DID spend updated the required verification number -h --help None False Show a help message and exit. Example Locate a DID owned by the local wallet: chia wallet did find_lost -id did:chia:1gam05w9xhdc406t03w79pst7hrhs36yw70ekg7hdsxvgds703kpskr64tz Response: Successfully found lost DID did:chia:1gam05w9xhdc406t03w79pst7hrhs36yw70ekg7hdsxvgds703kpskr64tz, latest coin ID: 618a2eee48b111517cbd4f8d11889dc78396c9bcbad11c135dcbedb12f60b58b","s":"find_lost","u":"/did-cli/","h":"#find_lost","p":877},{"i":885,"t":"Functionality: Get more details of any DID Usage: chia wallet did get_details [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which key to use -id --coin_id TEXT True The DID ID, launcher ID, or latest coin ID of the DID you want to recover. The most time-efficient of these is the latest coin ID -l --latest None False If the coin_id is not the latest coin ID of this DID, set this flag to receive the latest DID information (not allowed if the coin_id is the DID ID) -h --help None False Show a help message and exit. Note that coin_id could pertain to any DID, not just those owned by this wallet. Example Get the latest details of a DID from a coin ID: chia wallet did get_details -id 618a2eee48b111517cbd4f8d11889dc78396c9bcbad11c135dcbedb12f60b58b -l Response: DID: did:chia:1gam05w9xhdc406t03w79pst7hrhs36yw70ekg7hdsxvgds703kpskr64tz Coin ID: 618a2eee48b111517cbd4f8d11889dc78396c9bcbad11c135dcbedb12f60b58b Inner P2 Address: xch172j7w7gzv7c8xlpju8j2qexx8d7nqjet23z5pxtxr0w8yaerrtrq0tuwae Public Key: a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02e Launcher ID: 4776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83 DID Metadata: {} Recovery List Hash: 4bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a Recovery Required Verifications: 0 Last Spend Puzzle: 0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02eff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080 Last Spend Solution: [['0x6bda0005da7a59d65485cc415af74cb4bafc997f8d0446c25fdfc630cda8764b', '0x56e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082', '0x01'], '0x01', ['0x01', ['0x', ['0x01', ['0x33', '0x56e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082', '0x01', ['0xf2a5e7790267b0737c32e1e4a064c63b7d304b2b54454099661bdc7277231ac6']], ['0x33', '0x02a55ce8286e3360f6c7507c7c12102a25ae85e92ee02c058a6aadcadbe11f4a', '0x', ['0x02a55ce8286e3360f6c7507c7c12102a25ae85e92ee02c058a6aadcadbe11f4a']], ['0x33', '0xbabcbe5486a1820d2f91bb738649d13e56a649c554deb3f4756f180891ec1be1', '0x', ['0xbabcbe5486a1820d2f91bb738649d13e56a649c554deb3f4756f180891ec1be1']], ['0x3c', '0xe3ce3f595a6b498335ed5519b1d31903c38da16f55efa3dfbf122113886c1295'], ['0x3d', '0x72304dc38049428843bcee366be361ce94517aa9175c936173e586d520cf0d9e'], ['0x3d', '0x07942250c330ea81e8b98c587fd3c813c5833170c6e33f63fde02386e975fe1f'], ['0x3d', '0xf4bcb562ca143b7823811d29e44f1244136c62f3b15d7d7b7d58d3b60dda3fec'], ['0x3d', '0x6f714cf3869bdd04ade21f4883d11bc2e6bbad04cc730aef8316907eaf93624f'], ['0x3f', '0x7951b5ba3108ced9a70efd7d516c9f9b913a22224b4360bd9cf318ee2ea4f8d6'], ['0x3f', '0x01347a220c1f352a890e4a9e80b47f2262e7225588d3d47654f0fb06834977ce']], '0x']]] Last Spend Hints: ['f2a5e7790267b0737c32e1e4a064c63b7d304b2b54454099661bdc7277231ac6']","s":"get_details","u":"/did-cli/","h":"#get_details","p":877},{"i":887,"t":"Functionality: Get the DID and Coin ID for a DID wallet Usage: chia wallet did get_did [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True ID of the wallet to use -h --help None False Show a help message and exit. Example Get info for DID with ID 2: chia wallet did get_did -i 2 Response: DID: did:chia:17jvhl9z8zj6jma2uxk4mqj22p90hfpf29svlvlyalu8ksyefsvpql7f403 Coin ID: 0xe6c28c30c7dd2801a4cbfdb0e61186315ae9695dde0a75a6901c1394c3300db8","s":"get_did","u":"/did-cli/","h":"#get_did","p":877},{"i":889,"t":"Functionality: Generate a DID spend bundle for announcements (does not modify the blockchain) Usage: chia wallet did message_spend [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True ID of the wallet to use -pa --puzzle_announcements TEXT False The list of puzzle announcement hex strings, split by commas (,) -ca --coin_announcements TEXT False The list of coin announcement hex strings, split by commas (,) -h --help None False Show a help message and exit. Example Create a default message spend bundle from a DID wallet: chia wallet did message_spend -i 4 Response: Message Spend Bundle: { 'aggregated_signature': '0xad0d726ae7935978129b1c9c558b75c2b629aef893c89c3ec989c347a9eb71ddbaa83dadfe923599e7f14276eaeb84d9063d02b9b91fa561d09689716f177c0304aebb701f9c0f04eba9120b561f482e538a72ece30c086ffd942624b0962c83', 'coin_solutions': [ { 'coin': { 'amount': 1, 'parent_coin_info': '0x0b51251268ff8c71c0d2a74495b8dce93d2a86591501e71e71d8349112ca8051', 'puzzle_hash': '0x50f90b0ff7cdd672953ccfe8b90c2543673bc8aa56981dd7ccee1c41746f6e72' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02eff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080', 'solution': '0xffffa04c534c738148865f4cdb2aaef734810df68dac6cab738544630991ae46a980dfffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082ff0180ff01ffff01ffff80ffff01ffff33ffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082ff01ffffa0f2a5e7790267b0737c32e1e4a064c63b7d304b2b54454099661bdc7277231ac6808080ff80808080' } ] }","s":"message_spend","u":"/did-cli/","h":"#message_spend","p":877},{"i":891,"t":"Functionality: Set the name for a DID wallet Usage: chia wallet did get_did [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True ID of the wallet to use -n --name TEXT True Set the DID wallet name -h --help None False Show a help message and exit. Example Set the name for Wallet ID 2 to New Name: chia wallet did set_name -i 2 -n \"New Name\" Response: Successfully set a new name for DID wallet with id 2: New Name Confirm changes: chia wallet show Response: Wallet height: 1117563 Sync status: Synced Balances, fingerprint: 4288332900 Chia Wallet: -Total Balance: 0.999989999991 txch (999989999991 mojo) -Pending Total Balance: 0.999989999991 txch (999989999991 mojo) -Spendable: 0.999989999991 txch (999989999991 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 New Name: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:17jvhl9z8zj6jma2uxk4mqj22p90hfpf29svlvlyalu8ksyefsvpql7f403 -Wallet ID: 2 Connections: Type IP Ports NodeID Last Connect MiB Up|Dwn FULL_NODE 127.0.0.1 58444/58444 f40100b8... Jun 15 12:22:02 0.0|1.7 -Height: No Info -Hash: No Info -Trusted: True","s":"set_name","u":"/did-cli/","h":"#set_name","p":877},{"i":893,"t":"Functionality: Sign a message using a specified DID ID. This command does not modify the blockchain. Usage: chia wallet did sign_message [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --did_id TEXT True DID ID you want to use for signing -m --hex_message TEXT True The message you want to sign -h --help None False Show a help message and exit Example chia wallet did sign_message -f 590161281 -i did:chia:1cxw5dqug4gavvgylx88zfkmqv235ryr6j9tvyjwwuga0pa52wjvqavdyar --hex_message \"This is a test message.\" Response: Message: This is a test message. Public Key: b478c6a0ef7410679831d616d06e9fca856f6e08b8a6f13f344cc9aa20981ab7fe287663584e2fc53e2ac14edab883ca Signature: 981ed9b983440c06ae5d9f2f2a0f45c0a00015939d30f512364f44597dc381007ee6911d9320d3c991d5a795823e429f06f35117b1e51c4c30454af19c69f2399e30bff5ea109bc5b95f869f48f2e32d0beccfcbbe72b384903536d3aeed848d","s":"sign_message","u":"/did-cli/","h":"#sign_message","p":877},{"i":895,"t":"Functionality: Transfer a DID Usage: chia wallet did transfer [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True ID of the DID wallet to transfer -ta --target-address TEXT True Target recipient wallet address -r --reset_recovery None False Set this flag if you want to reset the recovery DID settings (they will not be transferred with the DID) -m --fee TEXT False An optional transaction fee, in XCH --reuse None False Reuse existing address for the change -h --help None False Show a help message and exit Example chia wallet did transfer -i 4 -ta xch1gdhch02gp6352plffxqy7ppaar2dvtnek6p2cc79nc5apqzae37sktag6l Response: Successfully transferred DID to xch1gdhch02gp6352plffxqy7ppaar2dvtnek6p2cc79nc5apqzae37sktag6l Transaction ID: 0xf6d1a4158a5f278a8cbf2babca8d6894b7bac4c8601b8b564d343168430d740d Transaction: { 'additions': [{ 'amount': 1, 'parent_coin_info': '0x618a2eee48b111517cbd4f8d11889dc78396c9bcbad11c135dcbedb12f60b58b', 'puzzle_hash': '0xc4a4c20475a5f7b3c72185c3dc792d3f56cb5325bf6c57a89947576a707c60c9' }], 'amount': 1, 'confirmed': False, 'confirmed_at_height': 0, 'created_at_time': 1682568012, 'fee_amount': 0, 'memos': { 'f61f38ceeda5e1d0a042f669cda40e62d38bc01a134efc6a057c29719702748e': '436f8bbd480ea34507e949804f043de8d4d62e79b682ac63c59e29d0805dcc7d' }, 'name': '0xf6d1a4158a5f278a8cbf2babca8d6894b7bac4c8601b8b564d343168430d740d', 'removals': [{ 'amount': 1, 'parent_coin_info': '0x0b51251268ff8c71c0d2a74495b8dce93d2a86591501e71e71d8349112ca8051', 'puzzle_hash': '0x50f90b0ff7cdd672953ccfe8b90c2543673bc8aa56981dd7ccee1c41746f6e72' }], 'sent': 0, 'sent_to': [], 'spend_bundle': { 'aggregated_signature': '0x8afa4a5d523bebc954c6c0869c10030b3d3c3bb31853335e9a68ab05686708e9e87ab0a45893f278bf079727f28baada16fcb2141c6b76386b78e71b1c02e0f199a852f111005fbd7fe0466a82753f59a3209f862f067ca3f7241c88c5202091', 'coin_spends': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0x0b51251268ff8c71c0d2a74495b8dce93d2a86591501e71e71d8349112ca8051', 'puzzle_hash': '0x50f90b0ff7cdd672953ccfe8b90c2543673bc8aa56981dd7ccee1c41746f6e72' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02eff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080', 'solution': '0xffffa04c534c738148865f4cdb2aaef734810df68dac6cab738544630991ae46a980dfffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082ff0180ff01ffff02ffff80ffff01ffff33ffa0856a10b0d4fc93c371fb4cf1e9c77aa0e9beb0e77e2cfafe9d6099c6c43641ebff01ffffa0436f8bbd480ea34507e949804f043de8d4d62e79b682ac63c59e29d0805dcc7d8080ffff3cffa0618a2eee48b111517cbd4f8d11889dc78396c9bcbad11c135dcbedb12f60b58b8080ff8080ff80ff80ff80ff808080' }] }, 'to_address': 'xch17n77yhjjz6ur2lculgjslqqxvcqaf2a8ldmr4f0xte2auu6nl3zsg4feza', 'to_puzzle_hash': '0xf4fde25e5216b8357f1cfa250f80066601d4aba7fb763aa5e65e55de7353fc45', 'trade_id': None, 'type': 1, 'wallet_id': 4 }","s":"transfer","u":"/did-cli/","h":"#transfer","p":877},{"i":897,"t":"Functionality: Update the metadata of a DID Usage: chia wallet did update_metadata [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True ID of the DID wallet to use -m --metadata TEXT True The new whole metadata in json format --reuse None False Set this flag to reuse existing address for the change -h --help None False Show a help message and exit","s":"update_metadata","u":"/did-cli/","h":"#update_metadata","p":877},{"i":899,"t":"Welcome to the official documentation site for Chia Network! Here, you'll find a comprehensive resource that guides you through the diverse and innovative world of Chia, a blockchain and smart transaction platform. Whether you're a seasoned developer, a blockchain enthusiast, or someone just beginning to explore the possibilities of decentralized technologies, our documentation is designed to empower you with the knowledge and tools needed to navigate the Chia ecosystem. From understanding the fundamentals of our unique Proof of Space and Time consensus algorithm to exploring our advanced smart transaction capabilities, we invite you to embark on a journey of discovery and collaboration. Dive into the documentation, and unlock the potential of Chia Network for your projects and aspirations. Happy exploring!","s":"Chia Docs Home","u":"/docs-home/","h":"","p":898},{"i":901,"t":"Embark on your Chia Network journey with our Beginner Documentation! Uncover the essentials of Chia's unique Proof of Space and Time, perfect the art of farming, explore wallet basics, and navigate the intuitive GUI.","s":"Beginner Install and Usage Docs","u":"/docs-home/","h":"#beginner-install-and-usage-docs","p":898},{"i":903,"t":"Explore the advanced features of Chia Network through our comprehensive documentation. From installation guides and testnet access to plotting, farming, and detailed references for RPC, CLI, and WalletConnect, we've got you covered.","s":"Advanced Install and Usage Docs","u":"/docs-home/","h":"#advanced-install-and-usage-docs","p":898},{"i":905,"t":"Navigate Chia Network's Troubleshooting Documentation with precision. Check the status of essential components, troubleshoot node syncing issues, and utilize our logging reference for effective problem-solving. Resolve challenges swiftly and ensure a seamless Chia experience.","s":"Troubleshooting the Chia Reference Client","u":"/docs-home/","h":"#troubleshooting-the-chia-reference-client","p":898},{"i":907,"t":"Embark on a knowledge journey through Chia Network's Learn documentation. Delve into the consensus model intricacies, explore the architecture, unravel blockchain consensus mechanisms, decode Chia keys, understand protocols, and immerse yourself in the details presented in the Green Paper.","s":"Learn About Chia, Primitives, and the Reference Client","u":"/docs-home/","h":"#learn-about-chia-primitives-and-the-reference-client","p":898},{"i":909,"t":"Dive into Chia Network's Developer Guides for an immersive experience. Begin with a Crash Course, delve into the core primitives shaping our ecosystem, and accelerate your skills through hands-on tutorials.","s":"Develop with Chia Primitives","u":"/docs-home/","h":"#develop-with-chia-primitives","p":898},{"i":911,"t":"Sub-epoch: Sub-epoch N starts when sub-epoch N-1 ends (except for 0th sub-epoch), and it ends at the end of the first slot where 384 * (N+1) blocks have been included since genesis. Epoch: Epoch N starts when epoch N-1 ends (except for 0th epoch), and it ends at the end of the first slot where 4608 * (N + 1) blocks have been included since genesis. Difficulty: A constant that scales the number of iterations for a given proof of space. Iterations are computed as difficulty / quality. Every 4608 blocks, the difficulty adjustment is automatically performed. This modifies two parameters: The slot_iterations parameter, and the difficulty parameter. The sub_slot_iterations parameter is reset so a 600-second slot requires close to slot_iterations many iterations. The reset is done using the values from the last epoch to approximate the iterations-per-second ratio, concretely. We'll define epoch$ as the period beginning with the last block that was infused prior to the current epoch, and ending with the last block that was infused in the current epoch. Thus, epoch$ is a slightly shifted period that occurs for each epoch. The values t1,i1 and w1 denote the timestamp, iterations (since genesis), and weight (since genesis) at the beginning of epoch$. Along the same lines, (t2,i2,w2) are the values at the end of epoch$. Here's how we calculate iterations per second: iterations per second = floor(num iterations in last epoch / duration of last epoch) = floor((i2 - i1) / (t2 - t1)) That is, the delta in total iterations from the start to the end of the epoch, divided by the delta in timestamps. Sub-slot iterations is the total number of iterations per ten-minute sub-slot. Signage point interval iterations is sub-slot iterations divided by 64 (the number of signage points per sub-slot). sub slot iterations = iterations per second * 600 sp interval iterations = floor(sub slot iterations / 64) Note that we don't take the iterations and time exactly at the end of an epoch, but at the last infusion point of a block in an epoch (aka epoch$), the reason being simply that we only have timestamps available when blocks are infused. weight/sec of last epoch = (new weight - old weight) / duration of last epoch = (w2 - w1) / (t2 - t1) new difficulty = (weight/sec * target seconds) / target number of blocks = ((w2 - w1) / (t2 - t1) * (4608/64) * 600) / 4608 This can be rearranged to use only one floor division: new difficulty = floor(75 * (w2 - w1) / (16 * (t2 - t1))) The sub-slot iterations are adjusted such that each slot lasts around 600 seconds. The difficulty is adjusted such that every challenge gets 32 blocks on average with fewer iterations than slot_iterations. It is important to note that the VDF iterations per slot is not material to the weight. That is, if there were two identical worlds where VDF speeds were equal and space was equal, but the sub-slot iterations parameter was twice as high in one world, then the blockchain with the higher sub-slot iterations would get twice as many blocks included per slot, but each slot would take twice as long. The weight per second added to the chain would be the same in both cases. Another way to look at it is that increasing sub-slot iterations increases the number of blocks per slot, but it also makes slots last longer, and thus has no effect on weight per second.","s":"Epoch and Difficulty","u":"/epoch-and-difficulty/","h":"","p":910},{"i":913,"t":"As described in the Three VDF Chains page, the challenge chain is completely separate and does not refer to anything in the rewards chain. If these chains stayed separate forever, an attacker with a faster VDF would be able to look into the far future and predict challenges. The attacker could create one block per slot, with limited space, thus creating a whole challenge chain. This would allow them to create plots and instantly create proofs of space for these plots that will win in the future, and then delete the plots (a long range replotting attack). This would enable them to fill their reward chain and increase their weight. The solution to this is to periodically (every 384 blocks, which is an average of 2 hours) infuse the reward chain into the challenge chain. This means that the attacker can only perform the replotting attack for a few hours into the future. Plotting takes some time, but even if the attacker could replot instantly, the cost of a replotting attack will outweigh the benefits. This is because we do not infuse the current reward chain output; instead we infuse the previous sub-epoch's reward chain output (two hours in the past). The cost of creating a plot includes the electricity to calculate all of the tables, the RAM necessary while creating this plot, and the fixed infrastructure costs (space, power, cooling, etc). Assuming the worst case scenario of a super fast VDF, and instant ASIC plotting - the benefits would be equivalent to the benefits of storing that plot on a HDD for a few hours. Note that this would not guarantee a winning plot; it would be the equivalent of storing a normal plot. It is clear that this attack is not worthwhile, and that storing the plots is much cheaper. This is discussed in further detail in the Attacks and Countermeasures page. The above explains why the sub-epoch interval should be kept relatively low. But why can't we further reduce it to lower than 2 hours to further disincentivize replotting attacks? The reason is that whenever non-canonical data is infused into the challenge chain (which the reward chain contains, see the Foliage page for more info), an opportunity for grinding occurs. This means an attacker can possibly choose to include or exclude blocks to manipulate what the challenge will be 2 hours into the future. If this time is too short, they can gain a small space advantage by doing this more often. The second (and completely separate) purpose for sub-epochs is to act as checkpoints in a Flyclient-like protocol explained in the Light Clients page, to increase the efficiency of light clients.","s":"Sub Epochs","u":"/epoch-and-difficulty/","h":"#sub-epochs","p":910},{"i":915,"t":"Chia's farmers are analogous to Bitcoin's miners. They earn block rewards and fees by finding valid proofs of space inside their stored plots. The farmer processes don't maintain a copy of the blockchain, but they trust a full node to provide updates. The full node and farmer processes communicate with each other using the farmer protocol. Farmers communicate with harvesters (individual machines, including the farmer machine, that actually store the plots) through the harvester protocol. Farmers operate by waiting for updates from a full node, which gives them new signage points (equivalent to a lottery's winning numbers) approximately every nine seconds. Farmers then send the signage point to each harvester, to check whether any winning proofs of space exist. If the harvester finds any valid proofs, it sends them to the farmer, which separates them into two categories: Full proofs must match or surpass the quality required by the network's difficulty level. These proofs are sent to the full node, which then creates a new block. Partial proofs are used by pools to approximate a node's total storage. Farmers also have a private key, which is used for both signing blocks when a winning proof is found, as well as for signing partial proofs, which are then sent to pools.","s":"Farmers","u":"/farmer-architecture/","h":"","p":914},{"i":917,"t":"Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc wallet create_new_wallet '{\"wallet_type\": \"nft_wallet\"}' To run the same command on Windows, you need to escape the quotes, so it looks like this (the braces have been removed to support the formatting for this page. You still need to use them in your actual commands.): chia rpc wallet create_new_wallet '\\\"wallet_type\\\": \\\"nft_wallet\\\"'","s":"DID RPC","u":"/did-rpc/","h":"","p":916},{"i":920,"t":"Functionality: Create a new DID wallet (From the Chia wallet RPC endpoint) Usage: chia rpc wallet [OPTIONS] create_new_wallet [REQUEST] Note: This is part of the wallet RPC API. It is included here to document the only way in which to create a new DID with an RPC. Because backup_dids is required, you must already have access to a DID in order to run this RPC. If you do not already have a DID, then run the CLI command to create a DID wallet instead. Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_type True This must be set to did_wallet in order to create a DID wallet did_type True Set this to new to create a new DID amount True Number of mojos to add to the DID initially. Minimum value is 1 backup_dids True A list of DIDs to be used for recovery. Must match actual DIDs num_of_backup_ids_needed True The number of backup DIDs required for recovery. Minimum value is 1, maximum value is the number of DIDs in backup_dids fee False An optional blockchain fee, in mojos Example chia rpc wallet create_new_wallet '{\"wallet_type\": \"did_wallet\", \"did_type\": \"new\", \"amount\": 1, \"backup_dids\": [\"did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83\"], \"num_of_backup_ids_needed\": 1, \"fee\": 10000000}' Response: { \"my_did\": \"did:chia:1pzrm9dyhvu8hmqyzqmy0v3wyp7cn98jlxk49jv7mgkhvk229erhqmh6c2m\", \"success\": true, \"type\": 8, \"wallet_id\": 2 } Show the newly created DID wallet: chia wallet show Response: Wallet height: 1144662 Sync status: Synced Balances, fingerprint: 455254876 Chia Wallet: -Total Balance: 0.999999999999 txch (999999999999 mojo) -Pending Total Balance: 0.999999999999 txch (999999999999 mojo) -Spendable: 0.999999999999 txch (999999999999 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1pzrm9dyhvu8hmqyzqmy0v3wyp7cn98jlxk49jv7mgkhvk229erhqmh6c2m -Wallet ID: 2","s":"create_new_wallet","u":"/did-rpc/","h":"#create_new_wallet","p":916},{"i":922,"t":"Functionality: Create an attest for a DID, to be used for recovery. This command will output the attest data, which can then be added or redirected to a file Usage: chia rpc wallet [OPTIONS] did_create_attest [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID for which to create the attest coin_name True The coin to use for the attest pubkey True The public key to use for the attest puzhash True The puzzle hash to use for the attest Example For this example, we'll use a pre-existing DID. First, obtain the coin_id (coin_name): chia rpc wallet did_get_did '{\"wallet_id\": 4}' Response: { \"coin_id\": \"0x44a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c7\", \"my_did\": \"did:chia:1d2x5wnm4sl4j2ena8ka3fyv8x7tzc9v520gstd3zfdu4pf6c2yksk8th4u\", \"success\": true, \"wallet_id\": 4 } Next, obtain the did_innerpuz (puzhash): chia rpc wallet did_get_current_coin_info '{\"wallet_id\": 4}' Response: { \"did_amount\": 1, \"did_innerpuz\": \"0xb83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea\", \"did_parent\": \"0x7738c8bc6629a6ece9197280238fa2db9437a66d4dc09d8c7d8446956e91e905\", \"my_did\": \"did:chia:1d2x5wnm4sl4j2ena8ka3fyv8x7tzc9v520gstd3zfdu4pf6c2yksk8th4u\", \"success\": true, \"wallet_id\": 4 } Next, obtain the Master public key (pubkey); chia keys show Response: Showing all public keys derived from your master seed and private key: Fingerprint: 3003259627 Master public key (m): af8024892a231de462ed7f70abfc1a49372be4d2c34b80f9b48f06093a1629f7a0734c001eb0dd3942aeaecb372b70d2 Farmer public key (m/12381/8444/0/0): 88305aa55e306dd25d433ce889b3c307f20076ce44429950fa507426197df27b5ce8cbd9df4ec166a3888d372c9ea91c Pool public key (m/12381/8444/1/0): 85d02120064fe68236e2a274d8bc76100b2e8b632e454d4465db44b6dc9b6eabcdb66c9e44a04f3bed4a49fa45411886 First wallet address: txch13w2ytvchereqawqjp4r09mqjhwk7unvndew2a400jxtu7q5kr7csqy70f7 Finally, using the above values, output the attest data: chia rpc wallet did_create_attest '{\"wallet_id\": 4, \"coin_name\": \"0x44a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c7\", \"pubkey\": \"af8024892a231de462ed7f70abfc1a49372be4d2c34b80f9b48f06093a1629f7a0734c001eb0dd3942aeaecb372b70d2\", \"puzhash\": \"0xb83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea\"}' Response: { \"attest_data\": \"6a8d474f7587eb25667d3dbb14918737962c159453d105b6224b7950a758512d:0000000144a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c77ffee04b4796a1442b18ddb41644acd8de703ac23771a7bb779ff08cbc97cf290000000000000000ff01ffff3cffa044a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c780ffff31ffb0af8024892a231de462ed7f70abfc1a49372be4d2c34b80f9b48f06093a1629f7a0734c001eb0dd3942aeaecb372b70d2ffa0b83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea808080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:7738c8bc6629a6ece9197280238fa2db9437a66d4dc09d8c7d8446956e91e905:b83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea:1\", \"info\": [ \"7738c8bc6629a6ece9197280238fa2db9437a66d4dc09d8c7d8446956e91e905\", \"b83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea\", 1 ], \"message_spend_bundle\": \"0000000144a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c77ffee04b4796a1442b18ddb41644acd8de703ac23771a7bb779ff08cbc97cf290000000000000000ff01ffff3cffa044a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c780ffff31ffb0af8024892a231de462ed7f70abfc1a49372be4d2c34b80f9b48f06093a1629f7a0734c001eb0dd3942aeaecb372b70d2ffa0b83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea808080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\", \"success\": true } The attest_data value can then be directed to a text file, which can later be used for recovery with the did_recovery_spend RPC. For example: echo \"6a8d474f7587eb25667d3dbb14918737962c159453d105b6224b7950a758512d:0000000144a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c77ffee04b4796a1442b18ddb41644acd8de703ac23771a7bb779ff08cbc97cf290000000000000000ff01ffff3cffa044a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c780ffff31ffb0af8024892a231de462ed7f70abfc1a49372be4d2c34b80f9b48f06093a1629f7a0734c001eb0dd3942aeaecb372b70d2ffa0b83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea808080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:7738c8bc6629a6ece9197280238fa2db9437a66d4dc09d8c7d8446956e91e905:b83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289ea:1\" > attest1","s":"did_create_attest","u":"/did-rpc/","h":"#did_create_attest","p":916},{"i":924,"t":"Functionality: Output the backup data of a DID wallet's metadata. This output can then be saved or redirected to a file Usage: chia rpc wallet [OPTIONS] did_create_backup_file [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet from which to obtain the coin info Example chia rpc wallet did_create_backup_file '{\"wallet_id\": 3}' > wallet2.bak more wallet2.bak Response: { \"backup_data\": \"9818b416c60ad3052ff3a8dd702a6f32fc21cbd1bd3712583c331452505bba02:eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9:1:6a8d474f7587eb25667d3dbb14918737962c159453d105b6224b7950a758512d,443a397fe5f8db5b38cd47eea3e2538fe7ae7bed48a1d858a87556118b1953d9:ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0840620390879eecb831216e9d19dbab041c62075a4dede87ce15b6ae93e1c3e413e00533bd20811ae4d6d148d285c4d2ff018080ffff04ffff01a06e904ff8aa967cac220193d5b0745d0475e844db8bbbf88daa94f0e7f3d1d0f3ffff04ffff0102ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0f41209fefd72794b52620c74cd7b87a008bb87dde6f6b3a6b0929711b7a85119a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080:2:{}\", \"success\": true, \"wallet_id\": 3 }","s":"did_create_backup_file","u":"/did-rpc/","h":"#did_create_backup_file","p":916},{"i":926,"t":"Functionality: Recover a missing or unspendable DID wallet by submitting a coin id of the DID Usage: chia rpc wallet [OPTIONS] did_find_lost_did [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Type Required Description coin_id STRING True The DID ID, launcher ID, or latest coin ID of the DID you want to recover. The most time-efficient of these is the latest coin ID recovery_list_hash STRING False Override the recovery list hash of the DID. Only set this if your last DID spend updated the recovery list num_verification NUMBER False Override the required verification number of the DID. Only set this if your last DID spend updated the required verification number metadata STRING False The new whole metadata in json format Example 1 If the DID belongs to the current wallet, the command should succeed: chia rpc wallet did_find_lost_did '{\"coin_id\": \"did:chia:1cxw5dqug4gavvgylx88zfkmqv235ryr6j9tvyjwwuga0pa52wjvqavdyar\"}' Response: { \"latest_coin_id\": \"fa6a754142a557b0bf3ce5122f0146b5d7d996aadd521cf63b97f49a0e998c53\", \"success\": true } Example 2 If the DID does not belong to this wallet, the command will fail: chia rpc wallet did_find_lost_did '{\"coin_id\": \"fa6a754142a557b0bf3ce5122f0146b5d7d996aadd521cf63b97f49a0e998c53\"}' Response: Request failed: {'error': 'This DID c19d468388aa3ac6209f31ce24db6062a341907a9156c249cee23af0f68a7498 is not belong to the connected wallet', 'success': False}","s":"did_find_lost_did","u":"/did-rpc/","h":"#did_find_lost_did","p":916},{"i":928,"t":"Functionality: Get the current coin info (parent coin, puzzle hash, amount) for a DID wallet Usage: chia rpc wallet [OPTIONS] did_get_current_coin_info [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet from which to obtain the coin info Example chia rpc wallet did_get_current_coin_info '{\"wallet_id\": 3}' Response: { \"did_amount\": 1, \"did_innerpuz\": \"0x02067ee5d738b59436477a13c6d1450916d46b45e5f39062cdfb5973776be836\", \"did_parent\": \"0x0a0ea8551568817765ef05c3c198f96d7376b19250bdb5ffaab24378f5593d09\", \"my_did\": \"did:chia:17sfqnlhawfu5k5nzp36v67u85qythp7aummt8f4sj2t3rdag2yvskjyqal\", \"success\": true, \"wallet_id\": 3 }","s":"did_get_current_coin_info","u":"/did-rpc/","h":"#did_get_current_coin_info","p":916},{"i":930,"t":"Functionality: Fetch the my_did and coin_id (if applicable) settings for a given wallet Usage: chia rpc wallet [OPTIONS] did_get_did [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet for which to get the DID info Example chia rpc wallet did_get_did '{\"wallet_id\": 3}' Response: { \"coin_id\": \"0xce323237c656693fc2f633f911a589b42fe142f18c70883fbe70f7718538cf66\", \"my_did\": \"did:chia:17sfqnlhawfu5k5nzp36v67u85qythp7aummt8f4sj2t3rdag2yvskjyqal\", \"success\": true, \"wallet_id\": 3 }","s":"did_get_did","u":"/did-rpc/","h":"#did_get_did","p":916},{"i":932,"t":"Functionality: Obtain info from a DID wallet Usage: chia rpc wallet [OPTIONS] did_get_info [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description coin_id NUMBER True The coin ID of the DID get info (can be in the 0x618... or did:chia:16 format Example chia rpc wallet did_get_info '{\"coin_id\": \"0x618a2eee48b111517cbd4f8d11889dc78396c9bcbad11c135dcbedb12f60b58b\"}' Response: { \"full_puzzle\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02eff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080\", \"hints\": [\"f2a5e7790267b0737c32e1e4a064c63b7d304b2b54454099661bdc7277231ac6\"], \"latest_coin\": \"618a2eee48b111517cbd4f8d11889dc78396c9bcbad11c135dcbedb12f60b58b\", \"launcher_id\": \"4776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83\", \"metadata\": {}, \"num_verification\": 0, \"p2_address\": \"xch172j7w7gzv7c8xlpju8j2qexx8d7nqjet23z5pxtxr0w8yaerrtrq0tuwae\", \"public_key\": \"a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02e\", \"recovery_list_hash\": \"4bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a\", \"success\": true }","s":"did_get_info","u":"/did-rpc/","h":"#did_get_info","p":916},{"i":934,"t":"Functionality: Display all relevant information needed to recover a given DID. This RPC must be called on a DID wallet that was created with \"did_type\":\"recovery\". Usage: chia rpc wallet [OPTIONS] did_get_information_needed_for_recovery [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet from which to obtain the recovery information Example chia rpc wallet did_get_information_needed_for_recovery '{\"wallet_id\": 2}' Response: { \"backup_dids\": [ \"0x0fc4d8aea5b66cac7c29d93d9eee37b6c0bd9ffcd6b8e38e2c8810de5199c4d3\" ], \"coin_name\": \"025b4ed9eafab653a6e80c1c1603272cfec0e5c5591bb45a7025dadedba63e23\", \"my_did\": \"did:chia:19z0ladugc29x36580yejgp0s6czq0axt4tq0w7kr9uk4042asusqvxldga\", \"newpuzhash\": \"0x3929e3a268d3d04b8a40f226b66f0ab4f00b5c12fd628bc18f8ce573e76b291f\", \"pubkey\": \"0xa1b184cf85e9804ba1df27acd2efd4622366315293f2c2e06eae7d9776cd3ef474edd4d0f10323e8a7a817b5a42317de\", \"success\": true, \"wallet_id\": 2 }","s":"did_get_information_needed_for_recovery","u":"/did-rpc/","h":"#did_get_information_needed_for_recovery","p":916},{"i":936,"t":"Functionality: Fetch the metadata for a given wallet Usage: chia rpc wallet [OPTIONS] did_get_metadata [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet for which to get the metadata list Example chia rpc wallet did_get_metadata '{\"wallet_id\": 3}' Response: { \"metadata\": { \"foo\": \"bar\", \"something\": 5 }, \"success\": true, \"wallet_id\": 3 }","s":"did_get_metadata","u":"/did-rpc/","h":"#did_get_metadata","p":916},{"i":938,"t":"Functionality: Get the public key for a DID Usage: chia rpc wallet [OPTIONS] did_get_pubkey [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet from which to obtain the public key Example chia rpc wallet did_get_pubkey '{\"wallet_id\": 2}' Response: { \"pubkey\": \"886826068778f285c442cfd08a45c7b55ecc9ef870b9b18810e81457c56df9764793686c1756e48a91586839a4abd290\", \"success\": true }","s":"did_get_pubkey","u":"/did-rpc/","h":"#did_get_pubkey","p":916},{"i":940,"t":"Functionality: For a given wallet, fetch the recovery list, as well as the number of IDs required for recovery Usage: chia rpc wallet [OPTIONS] did_get_recovery_list [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet for which to get the recovery list Example: chia rpc wallet did_get_recovery_list '{\"wallet_id\": 3}' Response: { \"num_required\": 2, \"recovery_list\": [ \"did:chia:1d2x5wnm4sl4j2ena8ka3fyv8x7tzc9v520gstd3zfdu4pf6c2yksk8th4u\", \"did:chia:1gsarjll9lrd4kwxdglh28cjn3ln6u7ldfzsask9gw4tprzce20vsywwsqs\" ], \"success\": true, \"wallet_id\": 3 }","s":"did_get_recovery_list","u":"/did-rpc/","h":"#did_get_recovery_list","p":916},{"i":942,"t":"Functionality: Given a DID wallet's ID, retrieve the name of that wallet Usage: chia rpc wallet [OPTIONS] did_get_wallet_name [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet on which to get the name Example chia rpc wallet did_get_wallet_name '{\"wallet_id\": 3}' Response: { \"name\": \"My DID Wallet\", \"success\": true, \"wallet_id\": 3 }","s":"did_get_wallet_name","u":"/did-rpc/","h":"#did_get_wallet_name","p":916},{"i":944,"t":"Functionality: Generate a spend bundle for a DID wallet to send a message (this RPC does not modify the blockchain) Usage: chia rpc wallet [OPTIONS] did_message_spend [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description wallet_id NUMBER True The Wallet ID of the DID wallet from which to spend the message coin_announcements LIST False A list of coin announcements to include with the spend puzzle_announcements LIST False A list of puzzle announcements to include with the spend Example chia rpc wallet did_message_spend '{\"wallet_id\": 5}' Response: { \"spend_bundle\": { \"aggregated_signature\": \"0xad0d726ae7935978129b1c9c558b75c2b629aef893c89c3ec989c347a9eb71ddbaa83dadfe923599e7f14276eaeb84d9063d02b9b91fa561d09689716f177c0304aebb701f9c0f04eba9120b561f482e538a72ece30c086ffd942624b0962c83\", \"coin_solutions\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x0b51251268ff8c71c0d2a74495b8dce93d2a86591501e71e71d8349112ca8051\", \"puzzle_hash\": \"0x50f90b0ff7cdd672953ccfe8b90c2543673bc8aa56981dd7ccee1c41746f6e72\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02eff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080\", \"solution\": \"0xffffa04c534c738148865f4cdb2aaef734810df68dac6cab738544630991ae46a980dfffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082ff0180ff01ffff01ffff80ffff01ffff33ffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082ff01ffffa0f2a5e7790267b0737c32e1e4a064c63b7d304b2b54454099661bdc7277231ac6808080ff80808080\" } ] }, \"success\": true }","s":"did_message_spend","u":"/did-rpc/","h":"#did_message_spend","p":916},{"i":946,"t":"Functionality: Recover a DID to a new DID by using an attest file Usage: chia rpc wallet [OPTIONS] did_recovery_spend [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet to recover attest_data True A list of attest files to be used for recovery pubkey False The public key of the wallet to recover. If this is not provided, a temporary public key will be used instead puzhash False The puzzle hash of the wallet to recover. If this is not provided, a temporary puzzle hash will be used instead fee False An optional blockchain fee, in mojos Example There are several steps involved in performing a DID recovery spend. We'll go through them one at a time here. For this example, we'll start with a brand new setup: a single fingerprint with a Chia wallet and some TXCH: $ chia wallet show Wallet height: 1190999 Sync status: Synced Balances, fingerprint: 2136152685 Chia Wallet: -Total Balance: 28.312944999982 txch (28312944999982 mojo) -Pending Total Balance: 28.312944999982 txch (28312944999982 mojo) -Spendable: 28.312944999982 txch (28312944999982 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 We'll start by creating two DIDs, labeled \"DID A\" and \"DID B\". DID A is the one we'll recover later. $ chia wallet did create -n \"DID A\" -a 1 -m 0.00001 Successfully created a DID wallet with name DID A and id 2 on key 2136152685 Successfully created a DID did:chia:1yk9vl86ek6duzah5pj0xtsp8wd5czqu9p3hvlsxw0c8cj3w95tssg0l2d6 in the newly created DID wallet $ chia wallet did create -n \"DID B\" -a 1 -m 0.00001 Successfully created a DID wallet with name DID B and id 3 on key 2136152685 Successfully created a DID did:chia:1l3hkwrlkmja526pzjuxhfm9c859hn64m2hwq76hfdletpfj09q6qf6e9k4 in the newly created DID wallet At this point, both DIDs will show up. They are listed under Wallet IDs 2 and 3: $ chia wallet show Wallet height: 1191003 Sync status: Synced Balances, fingerprint: 2136152685 Chia Wallet: -Total Balance: 28.312934999981 txch (28312934999981 mojo) -Pending Total Balance: 28.31292499998 txch (28312924999980 mojo) -Spendable: 0.899879999999 txch (899879999999 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 DID A: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1yk9vl86ek6duzah5pj0xtsp8wd5czqu9p3hvlsxw0c8cj3w95tssg0l2d6 -Wallet ID: 2 DID B: -Total Balance: 0.0 -Pending Total Balance: 1.0 -Spendable: 0.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1l3hkwrlkmja526pzjuxhfm9c859hn64m2hwq76hfdletpfj09q6qf6e9k4 -Wallet ID: 3 Next, update the recovery list of DID A. This command will add DID B as the recovery ID: $ chia rpc wallet did_update_recovery_ids '{\"wallet_id\": 2, \"new_list\": [\"did:chia:1l3hkwrlkmja526pzjuxhfm9c859hn64m2hwq76hfdletpfj09q6qf6e9k4\"]}' { \"success\": true } Now we can create a backup file of DID A: chia rpc wallet did_create_backup_file '{\"wallet_id\": 2}' { \"backup_data\": \"e1995096382bcb7fef4c961bc09c32cbe0af929e768fc927133405271b3ca759:eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9:1:fc6f670ff6dcbb456822970d74ecb83d0b79eabb55dc0f6ae96ff2b0a64f2834:ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b083770b050c01211b8e966c7dc40fa970e5d150293c0615910c09482c1491dd87d9115b639e88f84b0c6fc634df4b7b0fff018080ffff04ffff01a0bd61b4e994cc949bfc9350386c1818aea4ff5a300e9acfeb9e0ff7111d26a453ffff04ffff0101ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0258acf9f59b69bc176f40c9e65c02773698103850c6ecfc0ce7e0f8945c5a2e1a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080:1:{}\", \"success\": true, \"wallet_id\": 2 } At this point we need to create a new wallet fingerprint. This will be the final location for the recovered DID: chia keys generate Generating private key Added private key with public key fingerprint 2118200991 WARNING: using a farmer address which we might not have the private keys for. We searched the first 50 addresses. Consider overriding txch13amy3jfp8kkmqa87eswytj3a8ef22nm8zwsf3ckptpm8rv72qtgqgvk6fs with txch1phed5va8r3ch94qr6kp8mu5hu52xz6u7267624vtq2lkl06zn73q3sryj6 WARNING: using a pool address which we might not have the private keys for. We searched the first 50 addresses. Consider overriding txch13amy3jfp8kkmqa87eswytj3a8ef22nm8zwsf3ckptpm8rv72qtgqgvk6fs with txch1phed5va8r3ch94qr6kp8mu5hu52xz6u7267624vtq2lkl06zn73q3sryj6 Show both wallet keys: $ chia keys show Showing all public keys derived from your master seed and private key: Fingerprint: 2118200991 Master public key (m): 93e0afa4e8c537c8d6642225a45e267bc6f12fe9dfcbb3fab177645df6a7c8bb8fd62892b534ca82e4c05e45e774ccc3 Farmer public key (m/12381/8444/0/0): b63fbd179e3089bee17bfb430f1a559ab16ec8217b0a26dbb9a9501a82840614c74167c76e759716aae9b6c1cf4a701a Pool public key (m/12381/8444/1/0): 9028d7a806a6ddcb2e3266442002c70fba369fe5e46cc7fae0c4dcd12ffb1ce993752abdc45a1bf17d15918f1cfb7891 First wallet address: txch1phed5va8r3ch94qr6kp8mu5hu52xz6u7267624vtq2lkl06zn73q3sryj6 Fingerprint: 2136152685 Master public key (m): b9bcda4cd4affe38e4f8bbb2943eb478ed4799c1abfda150d583433e8f5e45b5d0eb57e459193a6a2d6ed6339f5d32cf Farmer public key (m/12381/8444/0/0): 9521e9cb089d2185f5547cfed0547d3eb7d1b0dfb372174d6a46f813d02db20eb646820929ac30d0b314e7541d842f66 Pool public key (m/12381/8444/1/0): a3a9f40c651f1ba0e56b33182920496939decc6a23bda6c6dc040644203b216ddf42f0a605fe6977b9d42fe30d734997 First wallet address: txch1svp4tl59wzhz97lemf228jsrtlansej48wec5cuzxpc7g0g4tqcq0s5v68 Sync the second wallet fingerprint and show the contents. So far, there is only a regular Chia wallet: chia wallet show Wallet keys: 1) * 2118200991 (Synced) 2) 2136152685 Choose a wallet key [1-2] ('q' to quit, or Enter to use 2118200991): Wallet height: 1191071 Sync status: Synced Balances, fingerprint: 2118200991 Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.0 txch (0 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Now we can create a new wallet within the second fingerprint. This will have a did_type of \"recovery\". It will use the backup file of DID A. At this point, however, it will just be an empty DID because the recovery spend has not yet been performed. Note the values of coin_name, pubkey and newpuzhash as they will be used shortly when creating the attest: chia rpc wallet create_new_wallet '{\"wallet_type\":\"did_wallet\", \"did_type\":\"recovery\", \"backup_data\":\"e1995096382bcb7fef4c961bc09c32cbe0af929e768fc927133405271b3ca759:eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9:1:fc6f670ff6dcbb456822970d74ecb83d0b79eabb55dc0f6ae96ff2b0a64f2834:ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b083770b050c01211b8e966c7dc40fa970e5d150293c0615910c09482c1491dd87d9115b639e88f84b0c6fc634df4b7b0fff018080ffff04ffff01a0bd61b4e994cc949bfc9350386c1818aea4ff5a300e9acfeb9e0ff7111d26a453ffff04ffff0101ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0258acf9f59b69bc176f40c9e65c02773698103850c6ecfc0ce7e0f8945c5a2e1a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080:1:{}\"}' { \"backup_dids\": [ \"0xfc6f670ff6dcbb456822970d74ecb83d0b79eabb55dc0f6ae96ff2b0a64f2834\" ], \"coin_list\": [ \"0x7aa58b37be28b3dde7f8990bf9d32913e7cd89d2cd490196234bcab327645cf9\", \"0x90d067146f4ffd80d37ecbd754e3a3b15c86186fcfb1113562d4ec12e24ca0ae\", 1 ], \"coin_name\": \"7b7cb8ea30d4bda2bb4d8bfaf82fbc0a6893d2e55c56d47c333d0d96b1509fe5\", \"my_did\": \"258acf9f59b69bc176f40c9e65c02773698103850c6ecfc0ce7e0f8945c5a2e1\", \"newpuzhash\": \"1220da328f91466714867ffeed7159db14d9522a784adf042beb91ffbaed9013\", \"num_verifications_required\": 1, \"pubkey\": \"8a1a8036d61a3bb5f2d751c90e643989f0db6ad2fd4e5aa63c6716e187e10c3493c2d59a58e688b78261211cd446d0ba\", \"success\": true, \"type\": 8, \"wallet_id\": 2 } Next, sync the original wallet and show the contents: chia wallet show Wallet keys: 1) 2118200991 2) * 2136152685 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 2136152685): Wallet height: 1191076 Sync status: Synced Balances, fingerprint: 2136152685 Chia Wallet: -Total Balance: 28.31292499998 txch (28312924999980 mojo) -Pending Total Balance: 28.31292499998 txch (28312924999980 mojo) -Spendable: 28.31292499998 txch (28312924999980 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 DID A: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1yk9vl86ek6duzah5pj0xtsp8wd5czqu9p3hvlsxw0c8cj3w95tssg0l2d6 -Wallet ID: 2 DID B: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1l3hkwrlkmja526pzjuxhfm9c859hn64m2hwq76hfdletpfj09q6qf6e9k4 -Wallet ID: 3 Create the attest using DID B. The coin_name, pubkey, and puzhash (called newpuzhash above) all come from the recovery wallet in the new wallet fingerprint. chia rpc wallet did_create_attest '{\"wallet_id\": 3, \"coin_name\": \"0x7b7cb8ea30d4bda2bb4d8bfaf82fbc0a6893d2e55c56d47c333d0d96b1509fe5\", \"pubkey\": \"8a1a8036d61a3bb5f2d751c90e643989f0db6ad2fd4e5aa63c6716e187e10c3493c2d59a58e688b78261211cd446d0ba\", \"puzhash\": \"0x1220da328f91466714867ffeed7159db14d9522a784adf042beb91ffbaed9013\"}' { \"attest_data\": \"fc6f670ff6dcbb456822970d74ecb83d0b79eabb55dc0f6ae96ff2b0a64f2834:000000010aa0becc194467bf318773b2a9f2afb11372021cd91dbdd2c9b86ce62a0958ec295226d71b97c9ad9aa47bb4bdc7724c64426c587ccf726154af3e98d7f765b30000000000000000ff01ffff3cffa07b7cb8ea30d4bda2bb4d8bfaf82fbc0a6893d2e55c56d47c333d0d96b1509fe580ffff31ffb08a1a8036d61a3bb5f2d751c90e643989f0db6ad2fd4e5aa63c6716e187e10c3493c2d59a58e688b78261211cd446d0baffa01220da328f91466714867ffeed7159db14d9522a784adf042beb91ffbaed9013808080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:9b28688c247e13f6d25d9213f56f1cb98efed8553d3fdf7b2bafb02946f10b1d:4e87afa498547c9086455b9e922208dc698816c4100d089884adbc35c6d5c036:1\", \"info\": [ \"9b28688c247e13f6d25d9213f56f1cb98efed8553d3fdf7b2bafb02946f10b1d\", \"4e87afa498547c9086455b9e922208dc698816c4100d089884adbc35c6d5c036\", 1 ], \"message_spend_bundle\": \"000000010aa0becc194467bf318773b2a9f2afb11372021cd91dbdd2c9b86ce62a0958ec295226d71b97c9ad9aa47bb4bdc7724c64426c587ccf726154af3e98d7f765b30000000000000000ff01ffff3cffa07b7cb8ea30d4bda2bb4d8bfaf82fbc0a6893d2e55c56d47c333d0d96b1509fe580ffff31ffb08a1a8036d61a3bb5f2d751c90e643989f0db6ad2fd4e5aa63c6716e187e10c3493c2d59a58e688b78261211cd446d0baffa01220da328f91466714867ffeed7159db14d9522a784adf042beb91ffbaed9013808080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\", \"success\": true } Send some money to the new wallet to be used during the recovery: chia wallet send -t txch1phed5va8r3ch94qr6kp8mu5hu52xz6u7267624vtq2lkl06zn73q3sryj6 -a 1 -m 0.00001 Wallet keys: 1) 2118200991 2) * 2136152685 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 2136152685): Submitting transaction... Transaction submitted to nodes: [{'peer_id': 'f40100b8b46550eb75b79edab4de38611eb543ac8975e262c2d2bf1e1c594312', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 2136152685 -tx 0x09dc82f5d8737def4b0ec70e7cd6a92a3a00be8b31152d30fbe73bc939776187' to get status Sync the new wallet and show its contents. Note that Profile 1 has zero balance: chia wallet show Wallet keys: 1) * 2118200991 (Synced) 2) 2136152685 Choose a wallet key [1-2] ('q' to quit, or Enter to use 2118200991): Wallet height: 1191101 Sync status: Synced Balances, fingerprint: 2118200991 Chia Wallet: -Total Balance: 1.0 txch (1000000000000 mojo) -Pending Total Balance: 1.0 txch (1000000000000 mojo) -Spendable: 1.0 txch (1000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1yk9vl86ek6duzah5pj0xtsp8wd5czqu9p3hvlsxw0c8cj3w95tssg0l2d6 -Wallet ID: 2 Now perform the recovery, passing in the attest_data obtained previously: chia rpc wallet did_recovery_spend '{\"wallet_id\":2, \"attest_data\":[\"fc6f670ff6dcbb456822970d74ecb83d0b79eabb55dc0f6ae96ff2b0a64f2834:000000010aa0becc194467bf318773b2a9f2afb11372021cd91dbdd2c9b86ce62a0958ec295226d71b97c9ad9aa47bb4bdc7724c64426c587ccf726154af3e98d7f765b30000000000000000ff01ffff3cffa07b7cb8ea30d4bda2bb4d8bfaf82fbc0a6893d2e55c56d47c333d0d96b1509fe580ffff31ffb08a1a8036d61a3bb5f2d751c90e643989f0db6ad2fd4e5aa63c6716e187e10c3493c2d59a58e688b78261211cd446d0baffa01220da328f91466714867ffeed7159db14d9522a784adf042beb91ffbaed9013808080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:9b28688c247e13f6d25d9213f56f1cb98efed8553d3fdf7b2bafb02946f10b1d:4e87afa498547c9086455b9e922208dc698816c4100d089884adbc35c6d5c036:1\"]}' { \"spend_bundle\": { \"aggregated_signature\": \"0xafc1f292dc4c6d6492a1d5ba760c4f28941398392f414f7e937b0695c68bd9d144bdbfba5956d5a49f4a02f0a72b2a5206345539b20a7ccc4a5ad7463e5c0bfeb6246511f9bdebfdcf55275e2c94833162e86ecc6335ae9a1c39073b24dae873\", \"coin_solutions\": [ { \"coin\": { \"amount\": 0, \"parent_coin_info\": \"0x0aa0becc194467bf318773b2a9f2afb11372021cd91dbdd2c9b86ce62a0958ec\", \"puzzle_hash\": \"0x295226d71b97c9ad9aa47bb4bdc7724c64426c587ccf726154af3e98d7f765b3\" }, \"puzzle_reveal\": \"0xff01ffff3cffa07b7cb8ea30d4bda2bb4d8bfaf82fbc0a6893d2e55c56d47c333d0d96b1509fe580ffff31ffb08a1a8036d61a3bb5f2d751c90e643989f0db6ad2fd4e5aa63c6716e187e10c3493c2d59a58e688b78261211cd446d0baffa01220da328f91466714867ffeed7159db14d9522a784adf042beb91ffbaed90138080\", \"solution\": \"0x80\" }, { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x7aa58b37be28b3dde7f8990bf9d32913e7cd89d2cd490196234bcab327645cf9\", \"puzzle_hash\": \"0x90d067146f4ffd80d37ecbd754e3a3b15c86186fcfb1113562d4ec12e24ca0ae\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0258acf9f59b69bc176f40c9e65c02773698103850c6ecfc0ce7e0f8945c5a2e1a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b083770b050c01211b8e966c7dc40fa970e5d150293c0615910c09482c1491dd87d9115b639e88f84b0c6fc634df4b7b0fff018080ffff04ffff01a0bd61b4e994cc949bfc9350386c1818aea4ff5a300e9acfeb9e0ff7111d26a453ffff04ffff0101ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0258acf9f59b69bc176f40c9e65c02773698103850c6ecfc0ce7e0f8945c5a2e1a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080\", \"solution\": \"0xffffa0767eec938e0b05170de23d79423404985e9f50dd1b43c3021fc66c42b9b83337ffa065ed09d2efb33577d189a0db02378a4de36eb228abfc1458e356f8f6353a2bf8ff0180ff01ffff80ff01ffa01220da328f91466714867ffeed7159db14d9522a784adf042beb91ffbaed9013ffffffa09b28688c247e13f6d25d9213f56f1cb98efed8553d3fdf7b2bafb02946f10b1dffa04e87afa498547c9086455b9e922208dc698816c4100d089884adbc35c6d5c036ff018080ffb08a1a8036d61a3bb5f2d751c90e643989f0db6ad2fd4e5aa63c6716e187e10c3493c2d59a58e688b78261211cd446d0baffffa0fc6f670ff6dcbb456822970d74ecb83d0b79eabb55dc0f6ae96ff2b0a64f283480ffa07b7cb8ea30d4bda2bb4d8bfaf82fbc0a6893d2e55c56d47c333d0d96b1509fe58080\" } ] }, \"success\": true } Wait a few minutes for the recovery spend to be confirmed on the blockchain. Afterward, Profile 1 will have a balance of 1.0: chia wallet show Wallet keys: 1) * 2118200991 (Synced) 2) 2136152685 Choose a wallet key [1-2] ('q' to quit, or Enter to use 2118200991): Wallet height: 1191108 Sync status: Synced Balances, fingerprint: 2118200991 Chia Wallet: -Total Balance: 1.0 txch (1000000000000 mojo) -Pending Total Balance: 1.0 txch (1000000000000 mojo) -Spendable: 1.0 txch (1000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1yk9vl86ek6duzah5pj0xtsp8wd5czqu9p3hvlsxw0c8cj3w95tssg0l2d6 -Wallet ID: 2","s":"did_recovery_spend","u":"/did-rpc/","h":"#did_recovery_spend","p":916},{"i":948,"t":"Functionality: Set the name of a DID wallet Usage: chia rpc wallet [OPTIONS] did_set_wallet_name [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet on which to set the name name True The new name of the DID wallet Example chia rpc wallet did_set_wallet_name '{\"wallet_id\": 3, \"name\": \"My DID Wallet\"}' Response: { \"success\": true, \"wallet_id\": 3 } Show wallet with new name: chia wallet show -w decentralized_id Response: Wallet height: 1122161 Sync status: Synced Balances, fingerprint: 4288332900 My DID Wallet: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:16kgxghw80cjlytl7x7zxuuux32v308fnmcgkfrh652rtcdqexm4q7gsarr -Wallet ID: 3","s":"did_set_wallet_name","u":"/did-rpc/","h":"#did_set_wallet_name","p":916},{"i":950,"t":"Functionality: Transfer a DID Usage: chia rpc wallet [OPTIONS] did_transfer_did [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet to transfer inner_address True The address of the inner puzzle to which to transfer the DID fee False An optional blockchain fee, in mojos with_recovery_info False If True, transfer recovery info [Default: True] reuse_puzhash False If true, will not generate a new puzzle hash / address for this transaction only. Note that setting this parameter to true will override the global default setting from config.yaml Example chia rpc wallet did_transfer_did '{\"wallet_id\": 4, \"inner_address\": \"txch1r2hc8zaxmqetkwuqz99nspwa7dlhnyx6uuxlt8srrsd2n7pscwfqgjhy7h\"}' Response: { \"success\": true, \"transaction\": { \"additions\": [ { \"amount\": 1, \"parent_coin_info\": \"0x78daa350eeb408613973c4b60496a306fed5a3986eb2e45b22d075eeb7c29a69\", \"puzzle_hash\": \"0x347677678e38bbdfe4ed17039f39c2f147d1887f7cc2bccbaf3527bb5acffdc0\" } ], \"amount\": 1, \"confirmed\": false, \"confirmed_at_height\": 0, \"created_at_time\": 1655565303, \"fee_amount\": 0, \"memos\": { \"8b43e84b7e42831bf6c02b01d69a5c0a6710b3ff521750fd9c49b4b99396acd4\": \"1aaf838ba6d832bb3b80114b3805ddf37f7990dae70df59e031c1aa9f830c392\" }, \"name\": \"0x0af39652e953671261b177b3624041c17770f810c8f77a88f295e683774956be\", \"removals\": [ { \"amount\": 1, \"parent_coin_info\": \"0x44a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c7\", \"puzzle_hash\": \"0x4661af019be51293df0052563b1d2e5ab658a66b71df38db7ca96d8b0645b785\" } ], \"sent\": 0, \"sent_to\": [], \"spend_bundle\": { \"aggregated_signature\": \"0xaf4ec07cd194c50ff3ee219fa2be43d216e7851925eadc076254745080e4861a5ab59a89a6034fc1cf84dee1866420f20589c7c33c7d1f0d41c90bc60be8ee9a14c68ea6c608c38c4a37360136702db9c1fd7d118c2bbb67a1b2f9865ba493b4\", \"coin_spends\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x44a3e90ab1f103d6a259aa3009bdb34e9b092dce9f320f96342368df6b0555c7\", \"puzzle_hash\": \"0x4661af019be51293df0052563b1d2e5ab658a66b71df38db7ca96d8b0645b785\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa06a8d474f7587eb25667d3dbb14918737962c159453d105b6224b7950a758512da0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a3e80190c5920d683e1058cba5d4fbaede4d62c08db85047e256eba971fde5aad1762cb79bd0be6b990f1005d0cbef8bff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa06a8d474f7587eb25667d3dbb14918737962c159453d105b6224b7950a758512da0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080\", \"solution\": \"0xffffa07738c8bc6629a6ece9197280238fa2db9437a66d4dc09d8c7d8446956e91e905ffa0b83b62a297e44cb53878276e51db3daaf6b0a69ca8fdd4165c8c5bb1816289eaff0180ff01ffff02ffff80ffff01ffff33ffa0120a2e3743c2ca08ff09e64c6615537d0269c39137d413c3034d8d5fde4fa316ff01ffffa01aaf838ba6d832bb3b80114b3805ddf37f7990dae70df59e031c1aa9f830c392808080ff8080ff80ff80ff80ff808080\" } ] }, \"to_address\": \"txch1r2hc8zaxmqetkwuqz99nspwa7dlhnyx6uuxlt8srrsd2n7pscwfqgjhy7h\", \"to_puzzle_hash\": \"0x1aaf838ba6d832bb3b80114b3805ddf37f7990dae70df59e031c1aa9f830c392\", \"trade_id\": null, \"type\": 1, \"wallet_id\": 4 }, \"transaction_id\": \"0x0af39652e953671261b177b3624041c17770f810c8f77a88f295e683774956be\" }","s":"did_transfer_did","u":"/did-rpc/","h":"#did_transfer_did","p":916},{"i":952,"t":"Functionality: Update the metadata for a DID wallet. The current metadata can be obtained with the did_get_metadata endpoint Usage: chia rpc wallet [OPTIONS] did_update_metadata [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet for which to update the metadata metadata False The updated metadata fee False An optional blockchain fee, in mojos reuse_puzhash False If true, will not generate a new puzzle hash / address for this transaction only. Note that setting this parameter to true will override the global default setting from config.yaml Example chia rpc wallet did_update_metadata '{\"wallet_id\": 3, \"metadata\": {\"foo\": \"bar\", \"something\": 5}}' Response: { \"success\": true }","s":"did_update_metadata","u":"/did-rpc/","h":"#did_update_metadata","p":916},{"i":954,"t":"Functionality: Append one or more IDs to be used for recovery of a DID wallet. The current list can be obtained with the did_get_recovery_list endpoint Usage: chia rpc wallet [OPTIONS] did_update_recovery_ids [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Parameter Required Description wallet_id True The Wallet ID of the DID wallet for which to update the recovery IDs new_list True The new recovery ID list. Each item from this list will be appended to the existing list num_verifications_required False Optionally set the number of IDs required for wallet recovery. If not set, then the entire updated list will be required by default fee False An optional blockchain fee, in mojos reuse_puzhash False If true, will not generate a new puzzle hash / address for this transaction only. Note that setting this parameter to true will override the global default setting from config.yaml Example To show an example, first we need at least one DID to be used for recovery. In this case, we'll create two and use them both. Create one recovery DID: chia wallet did create -n \"Recovery DID 1\" Response: Successfully created a DID wallet with name Recovery DID 1 and id 4 on key 3003259627 Successfully created a DID did:chia:1d2x5wnm4sl4j2ena8ka3fyv8x7tzc9v520gstd3zfdu4pf6c2yksk8th4u in the newly created DID wallet Create another recovery DID: chia wallet did create -n \"Recovery DID 2\" Response: Successfully created a DID wallet with name Recovery DID 2 and id 6 on key 3003259627 Successfully created a DID did:chia:1gsarjll9lrd4kwxdglh28cjn3ln6u7ldfzsask9gw4tprzce20vsywwsqs in the newly created DID wallet Example of adding both recovery DIDs: chia rpc wallet did_update_recovery_ids '{\"wallet_id\": 3, \"new_list\": [\"did:chia:1d2x5wnm4sl4j2ena8ka3fyv8x7tzc9v520gstd3zfdu4pf6c2yksk8th4u\", \"did:chia:1gsarjll9lrd4kwxdglh28cjn3ln6u7ldfzsask9gw4tprzce20vsywwsqs\"]}' Response: { \"success\": true }","s":"did_update_recovery_ids","u":"/did-rpc/","h":"#did_update_recovery_ids","p":916},{"i":956,"t":"This document provides a comprehensive reference to Chia's Farmer RPC API. Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc farmer get_reward_targets '{\"search_for_private_key\": false}' To run the same command on Windows, you need to escape the quotes with backslashes. In other words, add a \\ before each double quote, such that: \"search_for_private_key\" becomes \\\"search_for_private_key\\\" etc","s":"Farmer RPC","u":"/farmer-rpc/","h":"","p":955},{"i":958,"t":"Functionality: List all harvesters in your network, including all plots on each individual harvester Usage: chia rpc farmer [OPTIONS] get_harvesters [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc farmer get_harvesters Response: { \"harvesters\": [ { \"connection\": { \"host\": \"127.0.0.1\", \"node_id\": \"0xbefeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"port\": 61934 }, \"duplicates\": [], \"failed_to_open_filenames\": [], \"last_sync_time\": 1677653735.9421551, \"no_key_filenames\": [], \"plots\": [ { \"file_size\": 674281385, \"filename\": \"/plots/plot-k25-2023-03-01-14-52-160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a.plot\", \"plot_id\": \"0x160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a\", \"plot_public_key\": \"0xa82069430a7ef8a6491f8b3a5ec64553a33b86e0a713ad03106879231ae77161a0b860df659dbfbb1cc07b6343e95d62\", \"pool_contract_puzzle_hash\": \"0xf5daa5a0d83c6a628782a386aa1f94ff041e29c4da4b9b97f91f4d46563d8e9b\", \"pool_public_key\": null, \"size\": 25, \"time_modified\": 1677653720 } ], \"syncing\": null, \"total_plot_size\": 674281385 } ], \"success\": true }","s":"get_harvesters","u":"/farmer-rpc/","h":"#get_harvesters","p":955},{"i":960,"t":"Functionality: List all harvesters in your network, including the number of plots (but not the individual plots) Usage: chia rpc farmer [OPTIONS] get_harvesters_summary [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc farmer get_harvesters_summary Response: { \"harvesters\": [ { \"connection\": { \"host\": \"127.0.0.1\", \"node_id\": \"0xbefeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"port\": 61934 }, \"duplicates\": 0, \"failed_to_open_filenames\": 0, \"last_sync_time\": 1677653735.9421551, \"no_key_filenames\": 18, \"plots\": 1, \"syncing\": null, \"total_plot_size\": 674281385 } ], \"success\": true }","s":"get_harvesters_summary","u":"/farmer-rpc/","h":"#get_harvesters_summary","p":955},{"i":962,"t":"Functionality: List duplicate plots Usage: chia rpc farmer [OPTIONS] get_harvester_plots_duplicates [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description node_id HEX STRING True This node's node_id, obtainable from the get_harvesters RPC page INTEGER True The page in the results sequence to list (starts with 0) page_size INTEGER True The number of entries per page to list Note that the request parameters are automatically combined to create PlotInfoRequestData. Example chia rpc farmer get_harvester_plots_duplicates '{\"node_id\": \"0xbefeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_size\": 1}' Response: { \"node_id\": \"befeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_count\": 1, \"plots\": [], \"success\": true, \"total_count\": 0 }","s":"get_harvester_plots_duplicates","u":"/farmer-rpc/","h":"#get_harvester_plots_duplicates","p":955},{"i":964,"t":"Functionality: List invalid plots in your local network Usage: chia rpc farmer [OPTIONS] get_harvester_plots_invalid [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description node_id HEX STRING True This node's node_id, obtainable from the get_harvesters RPC page INTEGER True The page in the results sequence to list (starts with 0) page_size INTEGER True The number of entries per page to list Note that the request parameters are automatically combined to create PlotInfoRequestData. Example chia rpc farmer get_harvester_plots_invalid '{\"node_id\": \"0xbefeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_size\": 1}' Response: { \"node_id\": \"befeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_count\": 1, \"plots\": [], \"success\": true, \"total_count\": 0 }","s":"get_harvester_plots_invalid","u":"/farmer-rpc/","h":"#get_harvester_plots_invalid","p":955},{"i":966,"t":"Functionality: List plots from your plot directories that have missing keys / are not associated with the current node_id Usage: chia rpc farmer [OPTIONS] get_harvester_plots_keys_missing [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description node_id HEX STRING True This node's node_id, obtainable from the get_harvesters RPC page INTEGER True The page in the results sequence to list (starts with 0) page_size INTEGER True The number of entries per page to list Note that the request parameters are automatically combined to create PlotInfoRequestData. Example chia rpc farmer get_harvester_plots_keys_missing '{\"node_id\": \"0xbefeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_size\": 5}' Response: { \"node_id\": \"befeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_count\": 4, \"plots\": [ \"/plots/plot-k25-2022-07-11-19-06-4d6433c28333540ddf8fe23915b9128363a123967676b69a8dd6c740b758e236.plot\", \"/plots/plot-k25-2022-07-11-19-08-a3f6d15955bf3b7d1f3b8f822956e8c8d6187a06144a88758ea2f8c8cd89cb31.plot\", \"/plots/plot-k25-2022-07-11-19-11-401393c153a0335ab4a846b39413ba7bef9f140dfd36f658e72050aa08abf6e7.plot\", \"/plots/plot-k25-2022-07-11-19-13-b3e7169303d6d7697f80f92d72d28a00537215e66316e12c6a5e2cf69889c88f.plot\", \"/plots/plot-k25-2022-07-11-19-15-7769e4a90f6c10cfed2cdb2e37755e92fe73febf265d8528cf333ff01406ca5f.plot\" ], \"success\": true, \"total_count\": 18 }","s":"get_harvester_plots_keys_missing","u":"/farmer-rpc/","h":"#get_harvester_plots_keys_missing","p":955},{"i":968,"t":"Functionality: List valid plots in your local network Usage: chia rpc farmer [OPTIONS] get_harvester_plots_valid [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description node_id HEX STRING True This node's node_id, obtainable from the get_harvesters RPC page INTEGER True The page in the results sequence to list (starts with 0) page_size INTEGER True The number of entries per page to list Note that the request parameters are automatically combined to create PlotInfoRequestData. Example chia rpc farmer get_harvester_plots_valid '{\"node_id\": \"0xbefeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_size\": 1}' Response: { \"node_id\": \"befeeb05fa599f07c5be2b94b2d872b2516f03101ed49cc53312f086de197913\", \"page\": 0, \"page_count\": 1, \"plots\": [ { \"file_size\": 674281385, \"filename\": \"/plots/plot-k25-2023-03-01-14-52-160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a.plot\", \"plot_id\": \"0x160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a\", \"plot_public_key\": \"0xa82069430a7ef8a6491f8b3a5ec64553a33b86e0a713ad03106879231ae77161a0b860df659dbfbb1cc07b6343e95d62\", \"pool_contract_puzzle_hash\": \"0xf5daa5a0d83c6a628782a386aa1f94ff041e29c4da4b9b97f91f4d46563d8e9b\", \"pool_public_key\": null, \"size\": 25, \"time_modified\": 1677653720 } ], \"success\": true, \"total_count\": 1 }","s":"get_harvester_plots_valid","u":"/farmer-rpc/","h":"#get_harvester_plots_valid","p":955},{"i":970,"t":"Functionality: Get a URI to view your pool info Usage: chia rpc farmer [OPTIONS] get_pool_login_link [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description launcher_id HEX STRING True The launcher_id from your pool, obtainable from the get_pool_state RPC Example chia rpc farmer get_pool_login_link '{\"launcher_id\": \"0x55244acf3017c2fc245020b46600827047dce8f54c982adaf95248ff2e955ad8\"}' Response: { \"login_link\": \"https://asia1.pool.space/login?launcher_id=55244acf3017c2fc245020b46600827047dce8f54c982adaf95248ff2e955ad8&authentication_token=5592184&signature=a529ccabdadb2f3cdb1dcefe8f3f609ab512d5a2b871e85e779d21329f593b1d1b95f6978483c09cf414f74d239c973e19d37b676eff11d019cc1f5849cf00e1b886f2d1c1520cf41ea9b7134ce599c67b216dcaa1bb226bbcf0a799f3c88554\", \"success\": true }","s":"get_pool_login_link","u":"/farmer-rpc/","h":"#get_pool_login_link","p":955},{"i":972,"t":"Functionality: If pooling is enabled, show all pool info, such as p2_singleton_puzzle_hash and plot_count Usage: chia rpc farmer [OPTIONS] get_pool_state [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc farmer get_pool_state Response: { \"pool_state\": [ { \"authentication_token_timeout\": 5, \"current_difficulty\": 1, \"current_points\": 0, \"next_farmer_update\": 1677651891.2115443, \"next_pool_info_update\": 1677655190.955341, \"p2_singleton_puzzle_hash\": \"f5daa5a0d83c6a628782a386aa1f94ff041e29c4da4b9b97f91f4d46563d8e9b\", \"plot_count\": 0, \"points_acknowledged_24h\": [], \"points_acknowledged_since_start\": 0, \"points_found_24h\": [], \"points_found_since_start\": 0, \"pool_config\": { \"launcher_id\": \"0x55244acf3017c2fc245020b46600827047dce8f54c982adaf95248ff2e955ad8\", \"owner_public_key\": \"0xb5ab4fb9ef69ac933868ef951fe7a78557ca334ff356b8eb79790ceb18ed4687ca78b96b0144c9d507d650905d7b98d9\", \"p2_singleton_puzzle_hash\": \"0xf5daa5a0d83c6a628782a386aa1f94ff041e29c4da4b9b97f91f4d46563d8e9b\", \"payout_instructions\": \"716f88dcadafa320d840aad02799a500fe4d01831dab6c0a47bb61f6451ad557\", \"pool_url\": \"https://asia1.pool.space\", \"target_puzzle_hash\": \"0x2f2c9ba1b2315d413a92b5f034fa03282ccba1767fd9ae7b14d942b969ed5d57\" }, \"pool_errors_24h\": [ { \"error_code\": 10, \"error_message\": \"Farmer with launcher_id 55244acf3017c2fc245020b46600827047dce8f54c982adaf95248ff2e955ad8 unknown.\" }, { \"error_code\": 10, \"error_message\": \"Farmer with launcher_id 55244acf3017c2fc245020b46600827047dce8f54c982adaf95248ff2e955ad8 unknown.\" } ] } ], \"success\": true }","s":"get_pool_state","u":"/farmer-rpc/","h":"#get_pool_state","p":955},{"i":974,"t":"Functionality: List the payout targets for the farmer (1/8 of the reward) and pool (7/8) Usage: chia rpc farmer [OPTIONS] get_reward_targets [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description search_for_private_key BOOLEAN True List whether the private key (sk) is available for both the farmer and pool keys max_ph_to_search INTEGER False The maximum number of puzzle hashes to search [Default: 500] If the wallet's derivation index is large, this number may be insufficient to locate the correct puzzle hashes. In this case, you may need to increase this value Example chia rpc farmer get_reward_targets '{\"search_for_private_key\": false}' Response: { \"farmer_target\": \"xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j\", \"pool_target\": \"xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j\", \"success\": true }","s":"get_reward_targets","u":"/farmer-rpc/","h":"#get_reward_targets","p":955},{"i":976,"t":"Functionality: List all available RPC routes Usage: chia rpc farmer [OPTIONS] get_routes [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc farmer get_routes Response: { \"routes\": [ \"/get_signage_point\", \"/get_signage_points\", \"/get_reward_targets\", \"/set_reward_targets\", \"/get_pool_state\", \"/set_payout_instructions\", \"/get_harvesters\", \"/get_harvesters_summary\", \"/get_harvester_plots_valid\", \"/get_harvester_plots_invalid\", \"/get_harvester_plots_keys_missing\", \"/get_harvester_plots_duplicates\", \"/get_pool_login_link\", \"/get_connections\", \"/open_connection\", \"/close_connection\", \"/stop_node\", \"/get_routes\", \"/healthz\" ], \"success\": true }","s":"get_routes","u":"/farmer-rpc/","h":"#get_routes","p":955},{"i":978,"t":"Functionality: Given a signage point's hash, list the details of that signage point Usage: chia rpc farmer [OPTIONS] get_signage_point [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description sp_hash HEX STRING True The hash of a signage point, listed as pos_ss_cc_challenge_hash in the block details Example chia rpc farmer get_signage_point '{\"sp_hash\": \"0xd1d48067e1a355e69808201db516008c3d71c88d8c07fcee7c790f725e56e9ac\"}' Response: { \"proofs\": [], \"signage_point\": { \"challenge_chain_sp\": \"0xd1d48067e1a355e69808201db516008c3d71c88d8c07fcee7c790f725e56e9ac\", \"challenge_hash\": \"0xd1d48067e1a355e69808201db516008c3d71c88d8c07fcee7c790f725e56e9ac\", \"difficulty\": 1992, \"reward_chain_sp\": \"0x0be5727cfe27822fc45852f983c6eee96d2160566eb7b6a18c7c92154ee01fbb\", \"signage_point_index\": 0, \"sub_slot_iters\": 147849216 }, \"success\": true }","s":"get_signage_point","u":"/farmer-rpc/","h":"#get_signage_point","p":955},{"i":980,"t":"Functionality: List details for all signage points going back several challenges Usage: chia rpc farmer [OPTIONS] get_signage_points [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc farmer get_signage_points Response: { \"signage_points\": [ { \"proofs\": [], \"signage_point\": { \"challenge_chain_sp\": \"0xe7bff062bcddd480852422d6e1db0af6ff8db96959dd06300cb6f9768ac62fc9\", \"challenge_hash\": \"0xdce6ce932f790f1846e7875ac9899036920672ec38f542ea148f5718a56870bd\", \"difficulty\": 1992, \"reward_chain_sp\": \"0x217cb43d129f0576d5e0aeb6dd4946c2786619b8cbd4ca0f784357862e1bef45\", \"signage_point_index\": 39, \"sub_slot_iters\": 147849216 } }, { \"proofs\": [], \"signage_point\": { \"challenge_chain_sp\": \"0x98fefcd637299a9d7fb923b68adcac0f5ead98d7f76e1cbc629c9498b80a4ce7\", \"challenge_hash\": \"0xdce6ce932f790f1846e7875ac9899036920672ec38f542ea148f5718a56870bd\", \"difficulty\": 1992, \"reward_chain_sp\": \"0xea03892b3ff17926ec55f9b002c5a57b399cc3150d847db44165fae2d1d016c2\", \"signage_point_index\": 40, \"sub_slot_iters\": 147849216 } }, { \"proofs\": [], \"signage_point\": { \"challenge_chain_sp\": \"0x94157672db825df25a3d9d6860785716c3a01678430ba92a7aaaa5d8b2ab81df\", \"challenge_hash\": \"0xdce6ce932f790f1846e7875ac9899036920672ec38f542ea148f5718a56870bd\", \"difficulty\": 1992, \"reward_chain_sp\": \"0xd23c76d3d308b58657a2b6d847056d607aa0bd474ab6049b0ddf83f9f3ccfbec\", \"signage_point_index\": 41, \"sub_slot_iters\": 147849216 } }, ... ... { \"proofs\": [], \"signage_point\": { \"challenge_chain_sp\": \"0xe213a89280cb67644a196e84d16241117844e31f4b7eac199c6743adc37b0282\", \"challenge_hash\": \"0x2544de1fe6a12f6cd11241accf858a29fc5d8540d78afb8f872798533a51043b\", \"difficulty\": 1992, \"reward_chain_sp\": \"0xa4e51e9db27b1594c38cac43d86bcb58db5e3fe3b8623325526369ca61558fe0\", \"signage_point_index\": 38, \"sub_slot_iters\": 147849216 } }, { \"proofs\": [], \"signage_point\": { \"challenge_chain_sp\": \"0xed7eb2541620e7fdf77233a8ea2b31eceb1ccb79be04c090da03b8a9debc5569\", \"challenge_hash\": \"0x2544de1fe6a12f6cd11241accf858a29fc5d8540d78afb8f872798533a51043b\", \"difficulty\": 1992, \"reward_chain_sp\": \"0x00ea6a98f662e1d5b3187c8fbec1a68aae048a9eb790cdac2e8383b6dfdffc29\", \"signage_point_index\": 39, \"sub_slot_iters\": 147849216 } } ], \"success\": true }","s":"get_signage_points","u":"/farmer-rpc/","h":"#get_signage_points","p":955},{"i":982,"t":"Functionality: Set the payout_instructions parameter for your pool configuration Usage: chia rpc farmer [OPTIONS] set_payout_instructions [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description launcher_id HEX STRING True The launcher_id from your pool, obtainable from the get_pool_state RPC payout_instructions HEX STRING True The puzzle hash to be used as the new payout_instructions Example chia rpc farmer set_payout_instructions '{\"launcher_id\": \"0x55244acf3017c2fc245020b46600827047dce8f54c982adaf95248ff2e955ad8\", \"payout_instructions\": \"19d5a0c14e294e48451959819e8c7407c1a06f4f81c69a943ac86433a9ff29e6\"}' Response: { \"success\": true }","s":"set_payout_instructions","u":"/farmer-rpc/","h":"#set_payout_instructions","p":955},{"i":984,"t":"Functionality: Set the farmer and/or pool reward target address(es) Usage: chia rpc farmer [OPTIONS] set_reward_targets [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description farmer_target HEX STRING False Set the farmer reward target pool_target HEX STRING False Set the pool reward target Example Set both targets: chia rpc farmer set_reward_targets '{\"farmer_target\": \"xch1zuedypasfgpa6ltz9nylfyw58js9v88h8g004nd2pcnw3ypv3descqnxpr\", \"pool_target\": \"xch1r826ps2w998ys3getxqearr5qlq6qm60s8rf49p6epjr820l98nqm705cx\"}' Response: { \"success\": true } Verify that the targets have been set: chia rpc farmer get_reward_targets '{\"search_for_private_key\": false}' Response: { \"farmer_target\": \"xch1zuedypasfgpa6ltz9nylfyw58js9v88h8g004nd2pcnw3ypv3descqnxpr\", \"pool_target\": \"xch1r826ps2w998ys3getxqearr5qlq6qm60s8rf49p6epjr820l98nqm705cx\", \"success\": true }","s":"set_reward_targets","u":"/farmer-rpc/","h":"#set_reward_targets","p":955},{"i":986,"t":"As detailed in the plotting section, compressed plots are supported for both plotting and harvesting as of Chia version 2.0. Before you can harvest compressed plots, you need to inform your harvesters of the fact that they exist. info As of Chia version 2.0, decompression must be performed at the harvester level. You therefore will need to apply the settings listed on this page to each of your harvesters individually. This also means that each individual harvester will need to be capable of decompressing the plots that have been installed locally. In the future, we plan to enable decompression at the farmer level. This means that only one computer on your network will need to be equipped with a fast CPU or GPU for decompressing plots.","s":"Compressed Plot Farming","u":"/farming-compressed-plots/","h":"","p":985},{"i":989,"t":"Navigate to the Settings panel in the lower-left corner of the GUI. Click the HARVESTER tab at the top of the panel. The following screen will appear: Slide the Enable compressed plot support slider to the right, as shown in the above image. For Parallel Decompressor Count, the default value of 1 will be fine for most users. Here are some details: This number only affects the amount of memory used for decompression. The amount memory required will vary according to the level of compression. For example, if Parallel Decompressor Count is set to 1, around 600-700 MB of memory will be consumed while decompressing a single C7 plot. The amount of memory required will scale linearly, so setting it to 2 will double the required memory. If your harvester has sufficient memory, as well as a high CPU core count, you can increase this number. For example, 2 might be optimal for a 16-core CPU, or 4 for dual 32-core CPUs. However, the generation and speed of your CPU will also have a large impact on the optimal setting. If you do increase Parallel Decompressor Count, be sure to monitor your harvester's performance as there is no one-size-fits-all solution. The default value for Decompressor Thread Count is 0. This is the number of threads that will participate in decompressing plots. This number, multiplied by Parallel Decompressor Count, needs to less than or equal to the total number of harvester cores. For example, if your harvester has one CPU with eight cores, you might use the following settings: _ Parallel Decompressor Count: 1 _ Decompressor Thread Count: 6 This would instruct the harvester process to use six of the eight cores for decompressing plots, and to use the remaining cores to run the OS, etc. 5. If you want to use a GPU for harvesting, slide the Enable GPU Harvesting slider to the right, as shown in the above image. Note that in order to use this setting, your harvester must have an NVIDIA CUDA-class GPU. For harvesting C7 plots, 600-700 MB of DRAM is required. 6. If your harvester has multiple GPUs, you can use GPU Device Index to choose which one to use. If your harvester only has one GPU, then leave this set to 0. After all of these settings have been properly set, click the red RESTART LOCAL HARVESTER TO APPLY CHANGES button. After your harvester restarts, it will use the updated settings.","s":"GUI","u":"/farming-compressed-plots/","h":"#gui","p":985},{"i":991,"t":"All of the new harvester settings live inside ~/.chia/mainnet/config/config.yaml. If you have never installed Chia on this harvester, config.yaml won't exist. In this case, run the following command to generate a new copy: chia init If you have previously installed Chia on this computer, then config.yaml likely already exists. In this case, you will need to add several new settings. However, If you run chia init when the config file already exists, Chia won't make any modifications. If you delete config.yaml and run chia init, the new settings will be added, but you will lose any custom changes you previously made. In the case where config.yaml already exists, you therefore are recommended to do the following: Edit config.yaml Search for harvester: From inside this section, add the following parameters, which include the default settings: parallel_decompressor_count: 0 decompressor_thread_count: 0 use_gpu_harvesting: false enforce_gpu_index: false gpu_index: 0 decompressor_timeout: 20 disable_cpu_affinity: false max_compression_level_allowed: 7 At this point, regardless of whether you are upgrading or running a new build of Chia on this harvester, your copy of config.yaml contains all of the latest settings. Their definitions and recommended values are as follows: parallel_decompressor_count: The number of CPUs to be used for decompressing plots. If this is set to 0, then harvesting of compressed plots will be disabled. For GPU harvesting, set this value to 1. For CPU harvesting, set it to the number of CPUs you want to use for decompression (typically 1). decompressor_thread_count: The number of CPU threads that will participate in decompressing plots. This number multiplied by Parallel Decompressor Count needs to less than or equal to the total number of CPU cores. use_gpu_harvesting: Set to true to enable harvesting with a GPU. Note that in order to use this setting, your harvester must have an NVIDIA GPU with CUDA capability 5.2 and up, with at least 8GB of vRAM. gpu_index: If your harvester has multiple GPUs, use this setting to choose which one to use. If your harvester only has one GPU, then leave this set to 0. enforce_gpu_index: Set to true if your harvester has more than one GPU and you want to use one other than the default of 0. decompressor_timeout: The number of seconds for your decompressor to time out. The default value of 20 is typically fine. disable_cpu_affinity: This should typically be false. When it is false, when using multiple CPU decompressors, each with multiple threads, the threads for each decompressor will be assigned to different physical CPUs. This prevents them for competing over compute time. If it is set to true, the threads for each decompressor will be assigned to the same CPU. max_compression_level_allowed: The highest level of compression your harvester will support. In Chia version 2.0, the maximum level is 7. This will likely be increased in the future, but for now, you cannot increase it beyond the default. You can, however, set it to a lower number if desired. After you have finished making these updates, save config.yaml and restart your harvester by running the following command: chia start harvester -r Your new settings will be applied.","s":"CLI","u":"/farming-compressed-plots/","h":"#cli","p":985},{"i":993,"t":"Rewards in Chia scale with the amount of storage space (hence the name “Proof of Space”). Storage is a commodity and is relatively low power compared to other computing devices. In general, a Chia farmer expects to spend the majority of their investment on disk (generally 80-90%) and the rest on operational expenses. A less efficient farm may spend 50-80% of the cost on disks and the rest on operational expenditures (OpEx) like power and cooling. We can work backward and take into consideration the goals for setting up a Chia farm. Maximize the amount of storage capacity you can fit in a given footprint. In the data center, this is commonly referred to as TB/rack unit. This can be achieved by having dense storage systems (e.g. JBOD, NAS) and using high-capacity hard disk drives (HDD) Spend as little as possible. /TBattachedor/TB attached or /TBattachedor/drive attached since the system cost is amortized over how many drives the farmer can attach the more drives you have per system, the lower the cost per drive. Minimize power consumption. We want Chia to be as energy-efficient as possible, so we want the supporting farming platform to minimize the power overhead of the farmer. In a well build Chia farm the drives consume the majority of the power. Power efficiency. We want the power we consume to be used by the hard drives and the farmer, not to be wasted in power supply efficiency or from excess cooling (fans). Minimize noise (measured in dB). If you are hosting your farmer at home, you need it to be reasonably quiet. Ignore this if you are putting in colocation, a datacenter, or a remote location where noise is not an issue. The tradeoff for noise is usually with cooling (fan speed) and power. Keep drives cool. HDDs last longer (fail less) when they are kept in the recommended temperature operating range. This varies between consumer and data center grade HDDs. To do this requires adequate airflow and fans in the farming case, and also monitoring with SMART. Reliability and Availability (uptime). We do not want the farming system to go down. We do not want any single failed component on the farmer to take the whole system down. We do not want farming downtime (this is lost time and XCH farming) Host connectivity. In general, farming will be either remotely connected through the network (NAS, network-attached storage) or directly attached to the farmer (DAS, direct attach storage). There is not one correct way to attach many drives, but generally a DAS is going to be the lowest cost and complexity for Chia farming. Redundancy & RAID. The majority of storage systems are designed with durable storage in mind, and contain redundancy with RAID, erasure code, mirroring, or backups. This is not required in Chia because plots can be recreated upon a device failure and the opportunity cost of using redundant storage vs having that space farming generally outweighs the energy and time to create the plots. This may not be the case for very small farmers with limited plotting power, but the overwhelming majority of users should not need to use any sort of RAID with Chia. Nice to haves (these are standard in JBODs that make life much, much easier) Hot-swap, field-replaceable drives: the ability to swap a hard drive without taking the system offline (turning it off), generally accessible through the front or top of the chassis staggered spin-up: hard drives consume much more power (25W) for the first 10 seconds or so that they are turned on, from something called in-rush current. Compare this with the 3.5-5W required for idle operation in farming per drive. Staggered spin-up spins up only a certain number of drives at a time to limit max power consumption slot identification: hard drives fail. When this happens, you want to easily identify a slot that contains the failed drive. This is done through a LED locate.","s":"Farming Hardware Considerations","u":"/farming-considerations/","h":"","p":992},{"i":995,"t":"Farming is the next step after plotting. Once a plot has been created, you have a chance of winning Chia as long as the file is being stored and the Chia farming software is running. When farming, you allocate a certain amount of storage space in order to have a chance at winning Chia. The more plots you have, the higher your chances of winning. Farming is similar to a lottery. Each plot acts like a lottery ticket, where a new drawing is performed every 9 seconds or so. If you win the lottery, you earn the right to create a new block, and you will be rewarded with Chia. With an average of 4608 blocks a day, you'll have many chances to win. Our consensus section has the technical details of how this \"lottery\" system works.","s":"Farming Basics","u":"/farming-basics/","h":"","p":994},{"i":997,"t":"You can find your win time estimation from the Farming tab in the Chia software. It's important to note that this is just an estimation. The real time could be 2-5x greater than -- or less than -- this estimation, depending on luck. info Prior wins (or lack thereof) do not determine new wins. If your estimated time to win is one week but it has been three months, you are no closer to winning than when you started.","s":"Estimated Time to Win","u":"/farming-basics/","h":"#estimated-time-to-win","p":994},{"i":999,"t":"To combat the infrequency and inconsistency of winning, you can join a pool. It works similar to a lottery pool. Instead of occasionally earning a large reward, you will frequently earn a small payment. In the long run, pooling and solo-farming (aka self-pooling) will yield the same result (minus any pool fee), but pooling is much more predictable, and recommended for most farmers. An additional benefit of pooling is instant feedback as to whether your farm is running properly. With solo-farming you may be left wondering if you really can win a block. Chia has designed an official pooling protocol that introduces pooling in a way never done by by other cryptocurrencies. This allows for officially-supported predictability without compromising on decentralization.","s":"Pooling to the Rescue","u":"/farming-basics/","h":"#pooling-to-the-rescue","p":994},{"i":1001,"t":"With each new block, a certain amount of Chia is rewarded to the farmer that created it. Chia launched with a block reward of 2 XCH per block. This comes out to 64 XCH distributed every 10 minutes. Every three years, there is a scheduled halving of the block reward. This means that three years after mainnet launch, the block reward is cut in half, to 1 XCH. Here is the complete block reward schedule: Year Block Reward XCH / 10 mins 1-3 2.0 XCH 64 4-6 1.0 XCH 32 7-9 0.5 XCH 16 10-12 0.25 XCH 8 13+ 0.125 XCH 4 Starting with year 13, block rewards are forever locked in at an average of 4 XCH every 10 minutes. As time goes on, the ratio of new XCH to existing XCH goes down. As a result, the inflation rate of Chia will continually decline. Chia's inflation falls through 0.5% 22 years after mainnet launch.","s":"Block Reward","u":"/farming-basics/","h":"#block-reward","p":994},{"i":1004,"t":"When you are first operating Chia and wondering if the software is working, here are some tips to keep you sane. First off, you'll want to have your configuration set up to do additional logging. The configurations can be found in config.yaml. This file is located in chia/mainnet/config.yaml. The location of the .chia folder varies, On windows you'll want to look in C:/Users/your username)/.chia/mainnet/config.yaml. On Mac, this file is located in /Users/(your username)/.chia/mainnet/config/config.yaml. Shut down Chia before config access. Open config.yaml and edit the first log_level, setting it INFO instead of WARNING. Save the file. Now, you can relaunch Chia. Give it 20 minutes to run. Opening the log file while Chia is running, you'll see additional messages. You can find debug.log in the log directory right next to config directory accessed earlier. Log files are very informative. Once a log fills to 20mb another is created. If there are too many you can delete some of them. Inside what you are looking for are these lines: _07:02:41.663 harvester src.harvester.harvester : INFO 1 plots were eligible for farming f53c496e80... Found 0 proofs. Time: 0.00500 s. Total 8 plots_ This means Chia is working. The filter system is 2 parts. Chia found that 1 plot passed the first part, now it looks inside to determine if a pre-formulated \"proof\" will be able to do a transaction in the fastest time (2-3 seconds). If it secures one in your plot, you win. Many times it will say 0 proofs. But it shows it's working. This is where luck/time comes into play. At the end of that line it will indicate how many plots the software registers. info Another way to ensure your farm is operational is checking against a pool. Consistent payouts from regulary partials sent gives you peace of mind. This is opposed to solo farming where you may need to wait days, weeks, or months for a win, the whole time wondering if it truly is set up right. Checkout pool-farming.","s":"How to tell if Chia Farming is Working?","u":"/farming-faq/","h":"#how-to-tell-if-chia-farming-is-working","p":1002},{"i":1006,"t":"Below is a copy of normal information from a log file: 9:32:00.322 full_node full_node_server : INFO <- new_signage_point_or_end_of_sub_slot from peer 68b376e5846696df3510822ea527d0899ac6183f261e8858119235cd24903720 193.91.103.92.- 9:32:00.278 farmer farmer_server : INFO <- new_signage_point from peer 62d37909657e183dcd702b66d0e694474f907361f5981eceaba00878e84419c4 127.0.0.1. 09:32:01.806 full_node full_node_server : INFO -> respond_peers to peer 202.185.44.200 e5b7f06ba6ece8698917e0e22971aef8602972de81efe379d693b2baa0dffc24. 09:32:08.063 full_node full_node_server : INFO -> request_signage_point_or_end_of_sub_slot to peer 74.138.106.114 b567363c3a96c13366ef2dbff2e080da77f310875a8beda7c1c07246173c3a06. 09:32:08.202 harvester harvester_server : INFO <- new_signage_point_harvester from peer 5bfd9af9bc76270cf76746255db9a435dca56b9adb37f5d1daec71e3c699c807 192.168.0.44. 09:32:08.211 harvester src.harvester.harvester : INFO 0 plots were eligible for farming fec1fff66e... Found 0 proofs. Time: 0.00200 s. Total 8 plots. The last line shows at that current time of 09:32:08.211 8 plots were farming and 0 plots were eligible. It still means the software recognized the plots and is farming.","s":"What is Normal Information in a Log File?","u":"/farming-faq/","h":"#what-is-normal-information-in-a-log-file","p":1002},{"i":1008,"t":"tip Always make sure to protect yourself from malicious actors by securing your chia and making yourself a hard target This guide will show you how to run a harvester on each machine in your network. This architecture is composed of one main machine which runs the farmer, full node, and wallet, and other machines which run only the harvester. Only your main machine will connect to the Chia network. This is the recommended setup for all Chia farms that use more than one computer. It uses less bandwidth, space and CPU versus running a full node on each computer. It also keeps your keys safer because they will only need to be stored on one computer. Finally, it makes your overall farm quicker and more efficient when replying to challenges. To secure communication between your harvester and main machine, TLS is used where your main machine will be the private Certification Authority (CA) that signs all certificates. Each harvester must have its own signed certificate to properly communicate with your main machine. _____ Harvester 1 (certificate A) / other network peers -------- Main machine (CA) ------ Harvester 2 (certificate B) \\_____ Harvester 3 (certificate C) If you are more of a visual learner, JM made a video outlining the steps from this tutorial. This video is from 2021, but the steps are still relevant today:","s":"How to harvest on other machines that are not your main machine","u":"/farming-on-many-machines/","h":"","p":1007},{"i":1010,"t":"First, make sure Chia is installed on all machines and initialized by running the following command: chia init When creating plots on the harvesters, run: chia plots create -f -p Where and can be obtained by running the following command on your main machine: chia keys show After creating a plot, run chia plots check to ensure everything is working correctly. A copy of your main machine CA directory needs to be accessible by your harvester machines. This directory is located in: ~/.chia/mainnet/config/ssl/ca Options to make this directory accessible include: Share the directory on a network drive Copy it using a USB key Do a network copy to each harvester Be aware that major updates might need you to copy the new ca contents. Verify that the harvester does not report SSL errors on connection attempts.","s":"Prerequisites","u":"/farming-on-many-machines/","h":"#prerequisites","p":1007},{"i":1012,"t":"For each harvester, follow these steps: Make sure your main machine's IP address on port 8447 is accessible by your harvester machines Shut down all Chia daemon processes by running: chia stop all -d Make a backup of any settings in your harvester Run the following command on your harvester, where is the copy of your main machine's /ca directory that you put in a temp folder: chia init -c This command creates a new certificate signed by your main machine's CA. warning For step 4, you are using a copy of your /ca directory from your main machine temporarily. DO NOT replace the /ca folder on your harvester. Put the /ca directory into a temp folder on your harvester. You're going to show your harvester these files temporarily and then you can delete the /ca directory in your temp folder. This keeps your system more secure by limiting the exposure to your certificates. Open the following file in each harvester: ~/.chia/mainnet/config/config.yaml Search for the remote harvester's farmer_peer section (NOT full_node). Enter the local IP address of your main machine (typically 192.168.xxx.yyy) as the host value. In other words, replace in the following snippet with your main machine's local IP: harvester: chia_ssl_ca: crt: config/ssl/ca/chia_ca.crt key: config/ssl/ca/chia_ca.key farmer_peer: host: port: 8447 Launch the harvester by running the following command: chia start harvester -r You should see a new connection on your main machine in your INFO level logs. note To stop the harvester, run the following command: chia stop harvester warning You cannot copy the entire config/ssl directory from one machine to another. Each harvester must have a different set of TLS certificates for your main machine to recognize it as different harvesters. Unintended bugs can occur, including harvesters failing to work properly when the same certificates are shared among different machines. info A few minutes after the GUI starts running, it will begin to show harvester plots. The easiest way to see if it's working is to go the Farm tab, and check the Last Attempted Proof pane. Every nine seconds or so, you should see the different harvesters reporting numbers under Plots Passed Filter such as 0 / 26, 1 / 412, 3 / 864, etc. After your farmer has been running for a few minutes, you can run the following command to obtain a list of harvesters: chia farm summary If you need to debug, you can set the logging level to DEBUG by running this command: chia configure --log-level DEBUG You will need to restart your farmer for the change to take effect: chia start -r farmer Now you can check the log ~/.chia/mainnet/log/debug.log and see if you get messages like the following: [time stamp] farmer farmer_server : DEBUG -> new_signage_point_harvester to peer [harvester IP address] [peer id - 64 char hexadecimal] [time stamp] farmer farmer_server : DEBUG <- farming_info from peer [peer id - 64 char hexadecimal] [harvester IP address] [time stamp] farmer farmer_server : DEBUG <- new_proof_of_space from peer [peer id - 64 char hexadecimal] [harvester IP address] The outgoing new_signage_point_harvester message states the farmer sent a challenge to your harvester and the incoming farming_info message indicates a response. The new_proof_of_space message states the harvester found a proof for the challenge. You will get more new_signage_point and farming_info messages than new_proof_of_space messages. Here's how to find your logs: Where to Find Things","s":"Setup Steps","u":"/farming-on-many-machines/","h":"#setup-steps","p":1007},{"i":1014,"t":"(This is basically repeating what @mariano54 said in this discussion.) Security is about making better choices. You can never be 100% secure, but you can always make better choices to become more secure.","s":"Good Security Practices on Many Machines","u":"/farming-on-many-machines/","h":"#good-security-practices-on-many-machines","p":1007},{"i":1016,"t":"In other words, only use the keys specific to your machine's purpose. Your master/farming key should not be in your plotting machine(s). Your master/farming key should not be in your harvester machine(s). Plotting On Multiple Machines​ As stated above, run the following command when creating plots: chia plots create -f -p When you use the -f and -p parameters, you do not need to copy the keys to the local plotting machine. Harvesting On Multiple Machines​ Rather than maintaining a copy of your farmer's certificates on each harvester, follow the above steps to keep them in one place while farming.","s":"Keep Your Keys Separate","u":"/farming-on-many-machines/","h":"#keep-your-keys-separate","p":1007},{"i":1018,"t":"One way to not get your wallet hacked is to not have it accessible to the internet. Here is how to do this: Chia Keys Management info Your reward address for Chia rewards should be a separate key as well, kept in an offline machine. You can generate an address on a different computer, and put this address in the config.yaml (farmer.xch_target_address and pool.xch_target_address), so if your farming machine gets hacked, you don't lose past rewards. (Source)","s":"Keep Your Wallet Separate","u":"/farming-on-many-machines/","h":"#keep-your-wallet-separate","p":1007},{"i":1020,"t":"warning ONLY VIEW YOUR KEYS IN A SAFE PLACE AND MAKE SURE NO ONE CAN SEE YOUR SCREEN.","s":"How to Find Your Keys","u":"/farming-on-many-machines/","h":"#how-to-find-your-keys","p":1007},{"i":1022,"t":"chia keys show","s":"Using CLI","u":"/farming-on-many-machines/","h":"#using-cli","p":1007},{"i":1024,"t":"Click on the Logout icon at the top right. You will see your wallets listed. Click on the eye icon.","s":"Using the GUI","u":"/farming-on-many-machines/","h":"#using-the-gui","p":1007},{"i":1026,"t":"info These instructions are tailored for Linux. A similar approach could likely be followed for MacOS. In some cases, you may want to farm the same plots you farm on mainnet on one of the testnets as well, without removing them from mainnet. This is doable with a bit of extra legwork to set up unique ports for the testnet Chia installation. There are a couple options for setting this up. You can either ensure you have the CHIA_ROOT set to unique values for each instance you want to run, or else run the installations on separate users. These instructions will show setting a specific CHIA_ROOT.","s":"Dual Farming","u":"/farming/dual-farming-testnet-mainnet/","h":"","p":1025},{"i":1028,"t":"For the mainnet installation, we will stick with the default ports and CHIA_ROOT, so these steps are essentially no different than the standard installation instructions.","s":"Set Up Mainnet Installation","u":"/farming/dual-farming-testnet-mainnet/","h":"#set-up-mainnet-installation","p":1025},{"i":1030,"t":"(Optional) Install yq to make editing the yaml files easier Alternatively, you can manually edit the ports in config.yaml Run this command: export CHIA_ROOT=~/.chia/testnet Run this command: chia init Run this command: chia configure --testnet true cd to the ~/.chia/testnet/config directory and run the following script. Alternatively, you can edit the file manually. You do not need to use the ports listed below. However, if you choose to change the port numbers, ensure that they are different than the default values for mainnet: yq -i '.daemon_port = 55401' ./config.yaml yq -i '.\"*\".log_syslog_port = 1514' ./config.yaml yq -i '.data_layer.rpc_port = 10562' ./config.yaml yq -i '.data_layer.wallet_peer.port = 11256' ./config.yaml yq -i '.data_layer.host_port = 10575' ./config.yaml yq -i '.farmer.port = 10447' ./config.yaml yq -i '.farmer.rpc_port = 10559' ./config.yaml yq -i '.harvester.rpc_port = 10560' ./config.yaml yq -i '.harvester.farmer_peers.port = 10447' ./config.yaml yq -i '.wallet.rpc_port = 11256' ./config.yaml yq -i '.full_node.rpc_port = 10555' ./config.yaml yq -i '.timelord.rpc_port = 10557' ./config.yaml yq -i '.timelord.vdf_server.port = 10000' ./config.yaml yq -i '.timelord_launcher.port = 10000' ./config.yaml yq -i '.ui.rpc_port = 10555' ./config.yaml yq -i '.ui.daemon_port = 55401' ./config.yaml Run this command: chia start farmer","s":"Set Up Testnet Installation","u":"/farming/dual-farming-testnet-mainnet/","h":"#set-up-testnet-installation","p":1025},{"i":1032,"t":"To swap between running commands for mainnet and running commands for testnet, you need to ensure your CHIA_ROOT is set properly before running any commands: Mainnet: export CHIA_ROOT=~/.chia/mainnet Testnet: export CHIA_ROOT=~/.chia/testnet","s":"Swapping between mainnet and testnet","u":"/farming/dual-farming-testnet-mainnet/","h":"#swapping-between-mainnet-and-testnet","p":1025},{"i":1034,"t":"In this lesson, we go over the plotting process, and what happens when a Farmer wins a challenge.","s":"Farming Overview","u":"/farming-overview/","h":"","p":1033},{"i":1036,"t":"Protocols: Understand the basics of the Chia Farming protocol. Puzzles and Solutions: Understand the use of puzzles and solutions in Chialisp.","s":"Learning objectives","u":"/farming-overview/","h":"#learning-objectives","p":1033},{"i":1039,"t":"Expand for the full script 0:00 Farmers are nodes that seek to win Proof of Space challenges in exchange for rewards. The Farmer that wins a challenge constructs and processes a block of transactions and adds it to the blockchain. 0:20 To start, the Farmers pre-generate hashes into large blocks called Plots. The size of these plots are determined by a constant, k. k32 is the minimum required size and equates to around 108GB per plot. 0:40 This plotting process is computationally intensive, similar to classic blockchain \"mining\", however, this process is only done once, reducing the overall energy usage immensely. Once the plots are created, they are then passively monitored by harvesters to determine if they contain a valid Proof of Space for the current network challenge. 1:00 If the Farmer wins the challenge, they will start filling a block with transactions from the mempool. The Farming client has control of which transactions to include in the block, and will usually choose based on the largest Farming Fee, adding to the overall reward received. 1:20 The block is then processed, meaning all the transactions and programs within smart coins are executed and resolved. The block is then signed by the farmer and submitted to the chain.","s":"Script","u":"/farming-overview/","h":"#script","p":1033},{"i":1041,"t":"Continuous Harvesting: Plots do not need to be continuously created. A Farmer can create many plots all at once, and continuously harvest from those plots well into the future. The plots will remain valid and in use even after a proof of space has been found. Choosing Transactions: Transactions are stored temporarily in the \"mempool\" and are retrieved by a winning Farmer to create a block. The transactions can be chosen to maximize the reward a Farmer receives by prioritizing the transactions that include Farming Fees. This means that if a transaction doesn't include a Fee, there is a chance that it will not be included in a block even if it was created before the transactions that were.","s":"Common gotchas","u":"/farming-overview/","h":"#common-gotchas","p":1033},{"i":1043,"t":"Question 1 - k Size What is the minimum k size required by the Chia blockchain? Answer (expand when ready to see the answer) k32 Question 2 - Plot File Size How large is a plot file when using the minimum k-size, k32? Answer (expand when ready to see the answer) Around 108GB Question 3 - Plotting Frequency How often should a Farmer replot? Answer (expand when ready to see the answer) Ideally, a Farmer should not have to replot. There may be some instances a Farmer may want to replot (alter the k-size or compression, changing from pool-based farming to solo-farming etc.), but the plots should remain valid and useful well into the future. Question 4 - Processing Smart Coins. True or False; When a block is created, the Timelord processes and evaluates all the contained smart coins. Answer (expand when ready to see the answer) False. The Farmer processes the smart coins contained in the block. The Timelord infuses the block to the rest of the chain.","s":"Knowledge check","u":"/farming-overview/","h":"#knowledge-check","p":1033},{"i":1046,"t":"More farming basics: overviews of plotting, pooling, and rewards. In depth architecture overview: describing the interactions between Farmers, Harvesters, Wallets, etc. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/farming-overview/","h":"#links","p":1033},{"i":1048,"t":"In this lesson, we learn how to set up the Chia client, sync our full node using a torrent file, and create our first plot to start farming.","s":"Creating your first Plot","u":"/first-plot/","h":"","p":1047},{"i":1050,"t":"Syncing a Full Node: Learn how to set up the Chia client and sync a full node. Plot Creation: Learn how to create a plot.","s":"Learning objectives","u":"/first-plot/","h":"#learning-objectives","p":1047},{"i":1053,"t":"Joining a pool before plotting: It might seem strange to join a pool before setting up your plots, but the plots need to be generated using a plotnft in order for the pool to know who runs them. You must associate a plotnft with a pool if you want to use pooling, and if set up correctly you can always leave the pool later and farm your plots solo.","s":"Common gotchas","u":"/first-plot/","h":"#common-gotchas","p":1047},{"i":1055,"t":"Follow along with the video, and start plotting!","s":"Knowledge check","u":"/first-plot/","h":"#knowledge-check","p":1047},{"i":1058,"t":"More farming basics: overviews of plotting, pooling, and rewards. In depth architecture overview: describing the interactions between Farmers, Harvesters, Wallets, etc. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/first-plot/","h":"#links","p":1047},{"i":1060,"t":"The core of Chia's peer-to-peer system is composed of full nodes. Full nodes have several responsibilities: Maintain a copy of the blockchain. Validate the blockchain. Propagate new blocks, transactions, and proofs through the network, using the peer protocol. (Optional) Serve light clients (wallets) through the wallet protocol. (Optional) Communicate with farmers. (Optional) Communicate with timelords. Usually, farmers run a full node process alongside their farmer process. Full nodes earn no rewards or fees, but they are important to maintain the consensus rules and the security of the system. Running a full node allows a user to be confident about the full state of the blockchain, and avoid trusting others. Full nodes are always connected to a random set of full nodes in the network. Full nodes broadcast their own information (IP address and port) to their peers periodically, so that the entire network is aware that they are still running. Full nodes also broadcast all new blocks and transactions to their peers, allowing all nodes in the network to keep a complete copy of the blockchain.","s":"Full Nodes","u":"/full-node-architecture/","h":"","p":1059},{"i":1062,"t":"So you want to be a Chia farmer? You've come to the right place! Chia plotting and farming can seem daunting at first, but it's a relatively straightforward process: Obtain hardware Install Chia Run and configure Chia Create a plot Start farming This guide will take you through each of these steps. We will set up a Chia farm, which includes syncing a full node and creating your first plot. This will take anywhere from an hour to several days, depending on a number of factors. But don't worry -- most of this time will not require you to be active on your computer. info This guide is intentionally light on technical details. It is only intended to help new users set up a basic farm, ideally using equipment they already own. Subsequent pages on this website will go into the concepts introduced in this guide in much greater detail. Ready? Let's get started!","s":"Beginner's Guide to Farming","u":"/farming-guide/","h":"","p":1061},{"i":1064,"t":"You may already have everything you need, but let's make sure. (All you need for this tutorial is the minimum requirements. We'll cover more optimized setups later.)","s":"Obtain hardware","u":"/farming-guide/","h":"#obtain-hardware","p":1061},{"i":1066,"t":"Most computers made after 2010 can be used for farming, as long as they have a 64-bit CPU. Windows, Linux, and Mac OS are supported. This entire guide was created from a Windows laptop. Farming does not require a fast computer. The minimum spec is a Raspberry Pi4 with 4 GB of RAM for a CLI farm, or 8 GB for a GUI farm. (This guide will show you how to set up a GUI farm.) Many farmers choose a Pi because it consumes very little electricity. Plotting, on the other hand, is resource-intensive. Luckily, once a plot has been created, it can be farmed for many years. A Pi can be used for plotting, but it will be quite slow. As will a laptop. Long-term, these are not great options. However, for creating your first plot, it's a good idea to use the equipment you already own. Once you get a feel for Chia farming, you will have a much better idea of what to acquire later.","s":"Computer","u":"/farming-guide/","h":"#computer","p":1061},{"i":1068,"t":"For this guide, we will create a single plot. This will require: 4 GB of available RAM If you don't have this much, you can use Linux swap space, but it will be very slow 275 GB of temporary storage An HDD will work, but it will be slow An SSD will be much faster; it's a good option for this tutorial RAM is the fastest option (the minimum for RAM plotting is 256 GB; if you don't have that much, don't worry about it for now) 108.8 GB of free space where the plot will live An SSD will work, but is overkill The vast majority of plots are stored on HDDs A laptop or desktop with 400 GB of free space will satisfy these requirements. A 512-GB external SSD (available for ~$35 on Amazon) is another option.","s":"Plot storage","u":"/farming-guide/","h":"#plot-storage","p":1061},{"i":1070,"t":"In order to store the blockchain database, an SSD with at least 520 MB/s read/write speeds is required (it doesn't need to be a high-speed NVMe SSD, but unfortunately HDDs aren't fast enough). As of mid-2023 the database is ~130 GB; a 256 GB SSD will likely be usable until 2025. External and internal SSDs are both fine. info Let's say you have a computer without much free space. If you add a 1024-GB external SSD, it will be sufficient to create and store a plot, as well as to store the blockchain database. This will not be an ideal setup for creating a larger farm. But if you already have this equipment, you can set up a small farm without spending any money. Once you have the required hardware, it's time to install Chia.","s":"Database SSD","u":"/farming-guide/","h":"#database-ssd","p":1061},{"i":1072,"t":"Head to the official download page; download and run the installer for your Operating System. The default settings are fine for most setups. Two check boxes will be shown on the last screen after the install has completed. It's a good idea to check both of them. Doing so will allow you to type chia in a terminal window without requiring the full path, and it will automatically start the application.","s":"Install Chia","u":"/farming-guide/","h":"#install-chia","p":1061},{"i":1074,"t":"The first time Chia starts, you will be given the option to run in either Wallet Mode or Farming Mode. You will be setting up a Chia farm, so click CHOOSE FARMING MODE:","s":"Run and configure Chia","u":"/farming-guide/","h":"#run-and-configure-chia","p":1061},{"i":1076,"t":"Assuming you don't have a wallet yet, click CREATE A NEW WALLET KEY (If you already have a wallet, you can import it by clicking the green ADD WALLET button): You will be presented with a list of twenty-four words. This is your wallet's recovery phrase. These words are all that are needed to recover your wallet on a new computer. Write them down and store them in a safe place. The order of the words is also important. You can also choose a custom name for your wallet. Click NEXT when you are finished. warning If someone obtains a copy of these words, they can steal your entire wallet, including all of its funds. Be sure to store your recovery phrase in a safe place. You will be taken to your wallet, which will show a zero-XCH balance. There will be two round icons in the upper-right corner, one for the full node and one for the wallet: Full node -- this icon will appear red until you connect to at least one peer. At this point it will turn yellow, which indicates that your full node is syncing. Wallet -- this icon will appear yellow at first. Your wallet will attempt to connect to three peers for syncing. It should be synced within a few seconds, at which point the icon will turn green.","s":"Create a wallet","u":"/farming-guide/","h":"#create-a-wallet","p":1061},{"i":1078,"t":"If you think you will ever want to join a pool (recommended for small and medium farms), you will need at least one mojo (one trillionth of an XCH). To help with this, we have set up an online faucet at faucet.chia.net. To use the faucet you will need to identify your Master Public Key (also referred to as the Public Key). You can use either the GUI or CLI to identify the Master Public Key by following these steps: GUI​ warning Never share your private / secret keys or mnemonics with anyone. These give access to spend funds from your wallet. In the top right corner select logout: Using the desired keys menu, select details: View and copy the Public Key to the field on the Faucet page: CLI​ warning NEVER share your private / secret keys or mnemonics with anyone. These give access to spend funds from your wallet. In order to view your keys from the cli, run chia keys show, optionally including the -f flag to show only the info for the key you just generated: From terminal (mac/linux) or powershell (windows) run chia keys show: chia keys show View and copy the Master Public Key to the field on the faucet page: Showing all public keys derived from your master seed and private key: Label: Demo Wallet Fingerprint: 2281896037 Master public key (m): 96ce91d974daa0990e6681ac2de3e3f49142f6b655a081817832265c143e658a6e60a5dec856f292f45fe2d04c7856f6** Farmer public key (m/12381/8444/0/0): a9e366b26f155491af9a903c0ed9717bfd09a71cbe283eeda825128fd7c6b9ac60e1608f9f008adcfbf66e233d5b4ce8 Pool public key (m/12381/8444/1/0): 9566fa434f342dd5f9380a6bfc59dd7d1abd22869a425a8ca09cf27200eaa6aad5bc8fc00db90af832eb8028b0c6e3f0 First wallet address: xch1kr3zf7dqw5q953ex6zt33lndj90q0zlh68404tsntnljthnwqs2qvjmwrg note For more security best practices please review the Securing Your Chia – How to Be a Hard Target blog article. info You can continue with this guide while waiting for your faucet payment to arrive.","s":"Fund your wallet","u":"/farming-guide/","h":"#fund-your-wallet","p":1061},{"i":1080,"t":"Click the Full Node icon on the left side of your wallet: This screen shows your node's syncing status. In order to farm Chia, your node needs to be fully synced. You have two options to achieve this: Sync from genesis -- the above image shows this happening. Your node will connect with up to 80 peers and download information for each block. This is the most secure way to sync a node, and the only way to be sure that the information is accurate. However, it will take at least a few days, and possibly a week or more to sync from genesis, depending on your node's speed, your internet connection, and the quality of the peers to which you connect. Download a checkpoint database -- this option will allow you to sync much faster, but you have to trust that the information is accurate. For most users, this will be a worthwhile tradeoff. Head to our official checkpoint download page and click the Torrent link for the mainnet Database. When your download has completed, use BitTorrent to open it; be sure to verify it with the checksum listed on the download page. Move the database to the appropriate destination (see below). warning Never download a database from a third party. A database or torrent file with a checksum that does not match the checksum from the official download page is likely malware. Installing malware will result in all of your XCH being stolen, or worse. info By default, the database will be stored in ~/.chia/mainnet/db. If you don't want to store it there (for example, if your computer lacks sufficient free space), you will need to change your configuration: Edit ~/.chia/mainnet/config/config.yaml -- this is this primary configuration file for all Chia settings. Search for database_path in the full_node: section. The default value is db/blockchain_v2_CHALLENGE.sqlite. Change the path to the location of your database. For example, to store the database on an external SSD, you might change this to /media/externalSSD/db/blockchain_v2_CHALLENGE.sqlite. You do not need to change the name of the .sqlite file. If you change this setting, you will need to restart Chia for the change to be applied. Even if you choose to download the checkpoint database, it will take some time for your node to sync. This is because the checkpoint database is only updated once every three months. You will therefore need to sync from the time the checkpoint was taken until the head of the chain. Regardless of which method you choose for syncing, you can continue with this guide while waiting.","s":"Sync your node","u":"/farming-guide/","h":"#sync-your-node","p":1061},{"i":1082,"t":"Over the long term, your reward for farming will be directly proportional to the total space on the network (AKA netspace). For example, if your farm controls 1% of the netspace, it will win 1% of the rewards, on average. Over the short-to-medium term, luck can play a large factor in your winnings. Small farms could get lucky and win an outsized number of rewards very quickly, but they are equally likely to be unlucky. For this tutorial, we are creating a single plot, the smallest farm possible. As of this writing, a single-plot farm will only collect a reward once every 161 years! So why even bother trying? That's where pooling becomes valuable. Pools, well, pool their farming resources. When one member of a pool wins a reward, it is split among all participants according to the amount of space they contributed. The effect is a smoothing out of one's rewards over time, resulting in a consistent payout. Most users with small farms (and even some with large farms) join a pool. Click the Pooling icon on the left side of your wallet, and click JOIN A POOL: Before you can join a pool, you will need to create a plot NFT. This will allow you to easily change pools later. Select Connect to pool. You will need to enter a valid pool URL. We will use OpenChia for this example, but there are many great pools to choose from. For a list of reputable pools, see Chialinks.com. (Chia Network Inc. does not run a pool, and is not affiliated with OpenChia or Chialinks). info If you don't want to join a pool, select Self pool. This will assign you to a pool with only one participant: you. Later, you can join a pool with the same plot NFT if desired. Creating a plot NFT requires an on-chain transaction that will cost one mojo. You are also recommended to enter a blockchain fee. If you used the faucet, you will now have 100 mojos. Depending on how busy the network is, a one-mojo fee is typically enough to complete your transaction within a few minutes. info If you have not received your faucet payment, unfortunately you will not be able to create a plot NFT. This is a really important step. If you skip it, you will only ever be able to solo farm with the plots you create. You are therefore not recommended to skip this step. If your faucet payout has not arrived after more than 10 minutes, someone on Discord might be willing to send you some mojos if you ask nicely. If you entered a valid pool URL, the details will pop up. For example, this pool has a fee of 1%. If everything looks acceptable, click CREATE: Your transaction will be pushed to the blockchain. While it is pending, a new screen will appear: After the transaction has been finalized (typically 1-3 minutes), the details of your plot NFT will appear: A two-word name will automatically be assigned to your plot NFT, in this case \"Harlequin Koala\". In order to determine how much space you are contributing, your pool will periodically send you challenges. If you want to change pools later, simply return to this screen and click CHANGE POOL. note Pools typically require you to wait for 30 minutes before leaving. This is to prevent you from leaving the pool when you are about to farm a block, thus keeping the reward for yourself. info Chia's pooling protocol has several significant advantages over pools on other blockchains. Read more about these advantages, as well as the technical details of how the protocol works, in our pooling section.","s":"Join a pool","u":"/farming-guide/","h":"#join-a-pool","p":1061},{"i":1084,"t":"Plots are large files that consist almost entirely of cryptographic data to be used in Chia farming. The plot creation process does not require a full node or wallet to be synced. In fact, it doesn't even require an internet connection. For this tutorial, we will create a plot from inside the same application that runs the node and wallet. For the creation of subsequent plots, you may want to offload this work to a computer that has been optimized for plotting. From the Chia application, click the Farm icon and click ADD A PLOT: If you previously created a plot NFT, it will show up now. The plots you create will be associated with this NFT. It is important that you associate all of your plots to the same NFT in order to farm to a pool, as well as to be able to change pools easily if desired. As long as your plot NFT shows up here, there is no need to change it: Next, you will need to choose a plotter. When creating a single plot, Chia Proof of Space and madMAx both will work on almost all hardware. The plot from this example was created with madMAx because it requires the smallest amount of temporary disk space. info When building a larger farm, the plotter you choose will depend greatly on your available hardware. It may help to experiment with multiple plotters to get a feel for which ones work best for your setup. For details on each of the available plotters, see our Plotting Software section. For the Keys section, you typically won't need to change anything. Next, you will need to choose a k value, and possibly a compression level. k is a constant that dictates the size of the plot. The minimum k for Chia's mainnet is 32. This is also the most common size used, by far. With each increment in this value, all of a plot's associated parameters are doubled. For example, a k33 plot is twice as large as a k32 plot, and it requires twice the memory, temporary storage, and time to be created. For this tutorial, we'll choose k32. Note that some plotters are only capable of creating k32 plots, so you might not see any other options. info Due to advancements in technology, the minimum k value will likely need to be increased at some point. This would require you to replot all k32 plots. However, there are currently no plans to increase the minimum k, and we will do our best to give you at least a one-year notice if any such plans are made. Certain plotters are also capable of creating compressed plots, which are discussed in great detail in the Plotting Basics section. If the Compression Level dropdown appears, fee free to select 3. This is a modest level of compression that even low-power systems can harvest. Most farmers will want to create compressed plots, but for now we just want to get a feel for creating a single plot. A C0 (uncompressed) plot is fine for accomplishing this goal. Next, you need to select the temporary and final directories for your plot. The medium for temporary storage will greatly affect the speed at which your plot is created: RAM -- For plots created entirely in RAM, there is no temporary storage. RAM plotters can typically create k32 plots in a few minutes, but they also require a significant amount of memory (256 GB - 416 GB, depending on the plotter). SSD -- Most farmers choose to use an enterprise NVMe SSD for the temporary storage. These SSDs can handle large amounts of reads and writes in their lifetimes. HDD -- If you don't mind plotting slowly, you can choose a directory located on an HDD. The final directory is where the plot will be copied after it has been created. Most farmers will choose to use an HDD as the final directory. However, for this tutorial an NVMe SSD was used for both the temporary and final directories. warning SSDs are rated for a certain number of writes. Creating a plot is write-intensive. If you plan to create thousands of plots, avoid doing so on a consumer SSD or you will risk wearing it out. You will also need to choose how many plots to create. Certain plotters can be optimized by creating multiple plots in parallel. However, we will only create a single plot for this tutorial: After you have gone through all of these settings, click CREATE. You will be taken to a progress panel: The amount of time required to create this plot is highly dependent on your hardware. The world record time to create a k32 plot is around 30 seconds. The plot for this tutorial was created on a laptop in around 3 hours. info Some of the available plotters can create k25 plots. These plots are significantly smaller than k32, so they can be created quickly. However, they are for testing purposes only. Any proof of space taken from a plot smaller than k32 on mainnet will be rejected. While waiting for your plot to be created, feel free to browse through the Chia application. However, if you shut down the application, the plotting process will be stopped and all progress will be lost. There is no \"pause\" button for plotting.","s":"Create a plot","u":"/farming-guide/","h":"#create-a-plot","p":1061},{"i":1086,"t":"Before you can begin farming, you need to be running a synced full node. Earlier in this tutorial, you either chose to sync from genesis, or to sync from a checkpoint database. In both cases, the Full Node screen will eventually show a status of Synced: Your node is now synced. If your plot has finished being created, you are also farming. To verify this, click the Farm icon: You will be shown a number of details about your farm. As long as the Farm Health section has all green icons, everything is working as expected. Congratulations! You have become a Chia farmer. There is still a lot to learn, but you already have the basic knowledge needed to grow your farm.","s":"Start farming","u":"/farming-guide/","h":"#start-farming","p":1061},{"i":1088,"t":"Once you have a small farm up and running, you can decide whether to expand, and how to do so. The following pages will show you: Basic details of Chia plots, including \"compressed\" versus \"uncompressed\" plots How to select the optimal computer for plotting List of Chia plotting software How to choose a plot compression level How to create Chia plots Notes about SSD encurance How to move plots to their final destinations","s":"Next steps","u":"/farming-guide/","h":"#next-steps","p":1061},{"i":1090,"t":"Get help on CNI's official Discord, in the #farming-and-plotting and #support channels. Get more questions answered in the plotting FAQ.","s":"How to Get Help","u":"/farming-guide/","h":"#how-to-get-help","p":1061},{"i":1092,"t":"So you want to set up and use a chia wallet? You've come to the right place! Install Chia Run and Configure Chia Create a Wallet Use the Chia Wallet This guide will take you through each of these steps. We will set up a Chia wallet, which includes syncing a wallet node and learning about offer files. info This guide is intentionally light on technical details. It is only intended to help new users set up a basic wallet. Subsequent pages on this website will go into the concepts introduced in this guide in much greater detail. Ready? Let's get started!","s":"Wallet Guide","u":"/getting-started/wallet-guide/","h":"","p":1091},{"i":1094,"t":"Head to the official download page; download and run the installer for your Operating System. The default settings are fine for most setups. Two check boxes will be shown on the last screen after the install has completed. It's a good idea to check both of them. Doing so will allow you to type chia in a terminal window without requiring the full path, and it will automatically start the application.","s":"Install Chia","u":"/getting-started/wallet-guide/","h":"#install-chia","p":1091},{"i":1096,"t":"The first time Chia starts, you will be given the option to run in either Wallet Mode or Farming Mode. You will be setting up a Chia wallet, so click CHOOSE WALLET MODE:","s":"Run and configure Chia","u":"/getting-started/wallet-guide/","h":"#run-and-configure-chia","p":1091},{"i":1098,"t":"Assuming you don't have a wallet yet, click CREATE A NEW WALLET KEY (If you already have a wallet, you can import it by clicking the green ADD WALLET button): You will be presented with a list of twenty-four words. This is your wallet's recovery phrase. These words are all that are needed to recover your wallet on a new computer. Write them down and store them in a safe place. The order of the words is also important. You can also choose a custom name for your wallet. Click NEXT when you are finished. warning If someone obtains a copy of these words, they can steal your entire wallet, including all of its funds. Be sure to store your recovery phrase in a safe place. You will be taken to your wallet, which will show a zero-XCH balance. There will be a round icon in the upper-right corner for the wallet sync status: Wallet -- this icon will appear yellow at first. Your wallet will attempt to connect to three peers for syncing. It should be synced within a few seconds, at which point the icon will turn green.","s":"Create a wallet","u":"/getting-started/wallet-guide/","h":"#create-a-wallet","p":1091},{"i":1100,"t":"This tutorial demonstrates using Chia Offers with the reference wallet GUI. See also our command line tutorial and our Offers standard reference. Chia Asset Tokens (CATs) are fungible assets on Chia's blockchain. In Chia parlance, \"CAT\" and \"token\" are often used interchangeably. Each CAT must come with its own Token and Asset Issuance Limiter (TAIL), a program that dictates how the CAT may be issued. For more information, see our CAT standard documentation.","s":"Use the Chia Wallet","u":"/getting-started/wallet-guide/","h":"#use-the-chia-wallet","p":1091},{"i":1102,"t":"If you would like to acquire a CAT from an Offer, your wallet will need to recognize the CAT first. Click MANAGE TOKEN LIST in the lower-left corner of the reference wallet GUI: The Chia reference wallet comes with a few included CATs, but most will need to be entered manually. If you want to add one of the included CATs, click the slider next to the CAT you would like to add. Otherwise, click the + button: If your new CAT is not included in the reference wallet, you will need to obtain its Asset ID (TAIL). There are multiple websites that provide a listing of CATs and their IDs. One such site is spacescan.io. Simply browse to the website, then search for your CAT. For example, here is a search for \"dexie bucks\": In addition to CATs, Spacescan provides a listing of NFTs. In certain cases, such as with Dexie Bucks, there are CAT and NFT collections with the same name. In this case, be sure to click on CAT2, as in the above image. The result will show you the details of the CAT you selected, including its ID. Copy this ID by clicking the icon as shown here: It is recommended that you check with another source of truth to make sure you have the correct ID. Another website that provides a listing of CATs and their IDs is taildatabase.com. Browse to this site, click the Explore menu, and search for your CAT. The name should appear in the search results: Some information about the CAT will appear, including its Asset ID, as highlighted here: Copy this ID and continue to the next step. warning If someone sends you an Asset ID (TAIL), do not assume it is correct. Instead, double-check with spacescan.io or taildatabase.com (or preferably both) to verify that you have the correct ID. Enter the name and asset ID for your new CAT, then click ADD: Your new CAT will now appear in the \"Tokens\" list in your wallet.","s":"Add a new CAT","u":"/getting-started/wallet-guide/","h":"#add-a-new-cat","p":1091},{"i":1104,"t":"For our first example Offer, we will offer 1 XCH in exchange for the new CAT. Click the Offers icon, then click CREATE AN OFFER to get started: Next, fill in the details of the Offer. By default, the Offer will be set to expire after 7 days. This is likely fine in most cases. (If an Offer never expires, there is a chance it will be taken as arbitrage long after the maker has forgotten about it.) However, feel free to enter a different expiration time if desired. In this example, we will offer 1 XCH for 1000 tokens, and include a small blockchain fee, which will only be applied when the Offer is taken. After all of the details have been filled in, click CREATE OFFER: If anyone acquires this Offer and it is still valid, they will be able to take it. Click the I UNDERSTAND button and the Offer will be created: At this point, the Offer has been created locally. However, until you share it, it is unlikely that anyone will know it exists. Feel free to email the Offer file, share it on social media, etc. The Offer file does not contain any sensitive data. Whoever sees it will only have two options: take it or ignore it. You can also use the panel that appears to share your Offer in a few default locations: _ Dexie -- a bulletin board that acts as a Decentralized EXchange (DEX) _ Hashgreen -- another DEX, as well as an Automated Market Maker (AMM) _ Offerpool -- a bulletin board for sharing offers _ Spacescan -- an explorer and bulletin board * Finally, you can save the file to your local computer and share it however you want The Offer will now appear as Pending Accept, and the amount of time (if any) until it expires will also be shown: Congratulations! You have created an Offer. A few things to note: Your wallet has reserved the coin(s) necessary to complete the Offer. The blockchain has not recorded this Offer. You can distribute the Offer file wherever you want. Anyone who sees the Offer file can attempt to accept it.","s":"Create an XCH-CAT offer","u":"/getting-started/wallet-guide/","h":"#create-an-xch-cat-offer","p":1091},{"i":1106,"t":"This example will use a different computer to accept the Offer that was created in the previous example. Keep in mind, offers are accepted on a first-come, first-served basis. Prior to accepting the Offer, this wallet has 1,000,000 CATs: Click Offers, then view the Offer by either loading, dragging/dropping, or pasting the file: In this case, the Offer will expire in 6 days. The Taker must give 1000 CATs in exchange for 1 TXCH. The Maker has included a blockchain fee, and the Taker has the option of adding to this fee if desired. If the terms are acceptable, click ACCEPT OFFER: You will need to confirm that you actually want to accept the Offer, which will initiate an on-chain transaction: The Offer has been accepted. Click OK: While the blockchain transaction is pending, you will see this status in the Offers you accepted panel: Meanwhile, the Tokens screen will show the pending XCH and CAT amounts: After the transaction has been confirmed (typically 1-3 minutes), the Offer's status will be updated to Confirmed: The final XCH and CAT balances will then be reflected in the Tokens screen:","s":"Accept an offer","u":"/getting-started/wallet-guide/","h":"#accept-an-offer","p":1091},{"i":1108,"t":"You can cancel any Offer you created, as long as it has not already been accepted. In the \"Offers\" dialog, locate the Offer you want to cancel. It must be in the \"Pending Accept\" state. Click the three dots in the \"Actions\" column: Click \"Cancel Offer\". The \"Cancel Offer\" dialog will appear. The default option is to cancel on the blockchain, as shown in the red circle in the image below. This option will use your wallet to spend the coin(s) you had offered, and create new coins of the same type and value. This process does not involve taking the other end of the Offer, so you will not receive any funds of the type you had requested. The end result is that your wallet's balance will be the same as it was before you made the Offer (minus any transaction fees). The advantage of canceling in this manner is that it ensures that nobody can accept your Offer in the future. The disadvantages are that you will need to wait a few minutes for your transaction to be processed, and that you may have to pay a transaction fee. If you uncheck the checkbox, your wallet will un-reserve the coins for your Offer. However, nothing will be recorded on the blockchain. If you have copied your Offer file elsewhere, someone could still accept it. The advantages of this option are that it will cancel your Offer instantly, and there's no need to include a fee. If you left the checkbox checked in the previous step, your Offer will enter the \"Pending Cancel\" state while the cancellation is being recorded on the blockchain. This could take several minutes. When your order has been successfully canceled, it will enter the \"Cancelled\" state. Your funds are now available in your wallet.","s":"Cancel an offer","u":"/getting-started/wallet-guide/","h":"#cancel-an-offer","p":1091},{"i":1110,"t":"You can also create Offers to buy or sell NFTs. While it is possible to select NFTs from the Offers dialog, this example will demonstrate how to do so directly from the NFTs dialog. Enter the NFTs dialog and select the NFT(s) to offer. If you would like to offer more than one NFT, click the checkbox (as shown below) to enter multi-select mode. To offer all of your NFTs, click SELECT ALL: In this case, both of the NFTs are selected. Next, click ACTIONS and Create Offer: The Offer Maker dialog will appear. Fill in any additional details for your Offer (be sure to request something!), and click CREATE OFFER: Share the Offer as you would with a CAT Offer. After the Offer has been created, the NFTs being offered will appear in the Offer summary:","s":"NFT Offers","u":"/getting-started/wallet-guide/","h":"#nft-offers","p":1091},{"i":1112,"t":"You can also swap NFTs for other NFTs, just like trading cards. From the Offers dialog, select the NFT(s) you would like to offer and request. You can mix and match the Offer with a combination of XCH, CATs, and NFTs: When you are satisfied with terms of the Offer, click CREATE OFFER: After the Offer has been created, the assets to be trade will be displayed in the summary, just as with other Offers:","s":"NFT Swaps","u":"/getting-started/wallet-guide/","h":"#nft-swaps","p":1091},{"i":1114,"t":"It is also possible to send a peer-to-peer notification to the owner of an NFT you would like to buy. You don't even need to know who owns the NFT; the notification will figure it out for you. This example will continue with the same NFT-NFT Offer from the last section. After creating an Offer to acquire an NFT, share it to Dexie, Mint Garden, etc: Be sure to verify that the Offer is correct; after it is shared publicly, someone could accept it: Click NOTIFY CURRENT OWNER: You have the option to add a transaction fee for the notification. You can also choose whether to allow counter offers: A new offer coin will be created. If the owner of the NFT you would like to acquire is using the reference wallet, the wallet will notice this new coin and examine its contents. A new notification will appear in the owner's wallet. Click the notification bell: A summary of the Offer will appear. Click the summary to see the details of the Offer:","s":"Offer notifications","u":"/getting-started/wallet-guide/","h":"#offer-notifications","p":1091},{"i":1116,"t":"By default, all Offers will expire seven days after being created. However, you can modify the expiration time on individual Offers, and you can also modify the default expiration time. From the GENERAL tab in the Settings menu, scroll down to Offer Expiration Time. From here, you can modify the default, or even disable expiring Offers altogether: You can also access this setting from the Offer Builder menu by clicking Change default timing:","s":"Default expiration time","u":"/getting-started/wallet-guide/","h":"#default-expiration-time","p":1091},{"i":1118,"t":"This section will detail a non-comprehensive list of issues you might encounter while making or taking offers. Contents:​ Maker doesn't have enough money Taker doesn't have enough money Taker accepts an unknown CAT offer Taker attempts to accept an invalid offer Maker cancels an Offer locally, Taker accepts the offer Whole coins must be reserved Offer involving a CAT1 is invalid Maker doesn't have enough money​ Let's say a Maker has wallets for XCH and CKC, with no money in either of them. The maker attempts to make an ambitious offer: 100 XCH for 1 million CKC. However, the Maker does not have enough money to create this Offer. As a result, an Error is displayed: Taker doesn't have enough money​ Let's say the Taker has a wallet with no money in it: And there's an outstanding Offer requesting 0.1 XCH for 10,000 CKC: However, the Taker does not have enough money to accept this Offer. As a result, an Error is displayed: Taker accepts an unknown CAT offer​ You should be extra careful before accepting offers for unknown CATs. This is because the Offer might be a scam where a different -- and worthless -- token is actually being offered. Here's how the scam would work: Let's say a potential Taker has 0.1 XCH in their wallet. There is an Offer of 0.25 Shibe (an unknown CAT) in exchange for 0.1 XCH. Here's the Offer from the Taker's perspective: The Taker decides to accept the Offer. There is a warning dialog about the unknown cat, after which the Offer is confirmed successfully: Notice that the Offer file was named 0.25_Shibe_for_0.1_XCH.offer, but the file name itself does not dictate the contents of the Offer. The Taker may have inadvertently accepted an Offer for a worthless token! Luckily, it is easy to avoid this scam by cross-referencing the unknown CAT's ID before accepting the Offer. In this case, the Taker should verify from a trusted source that 4ac6a35e5fecb50d85604b19250a942afdc81876fe11db1f9d970c95dcf2c43f indeed corresponds to Shibe. Chia does install a list of known CATs by default, so this scam should be rare, but you should always be diligent in scrutinizing offers for unknown CATs. Taker attempts to accept an invalid offer​ If the Maker has canceled the Offer on the blockchain, or a Taker has already taken the Offer, it is no longer valid. Any potential Takers will be conveyed this information upon viewing the Offer. For example: Maker cancels an Offer locally, Taker accepts the offer​ This example will demonstrate that if you need to cancel an Offer, you should always do so on-chain unless you are certain the Offer file has not left your computer. Let's say a Maker has 0.1 XCH and 1 USDS: The Maker offers 0.1 XCH in exchange for 10 USDS: The Maker then decides to cancel the Offer, and unchecks the \"Cancel on blockchain\" checkbox: The offer's state is immediately changed to \"Cancelled\". After the Offer has been canceled, a Taker notices the Offer file and decides to accept it: Later, the Maker notices that the Offer has gone through, despite having been canceled: If the Offer had been canceled on-chain, the reserved coins would have been spent. At that point, even if someone else had gotten access to the Offer file, the Offer itself would've been invalid. The lesson here is do not uncheck the \"Cancel on blockchain\" checkbox unless you're certain the Offer file has never left your computer. Whole coins must be reserved​ Under the coin set model, coins can be of any value. When an Offer is created, the Maker's wallet must reserve enough coins to meet the requirements of the Offer. The coin set model has many advantages over the account model, but it can create some situations that take time to understand. For example, let's say a Maker has 1 XCH and 0 USDS: The Maker creates an Offer of 0.1 XCH for 10 USDS. The Maker received the XCH in one lump sum, so there is a single coin worth 1 XCH in the Maker's wallet. This is viewable in the offer's details: Scroll to the bottom to view coins reserved for the Offer. While the Offer is pending, the Maker attempts to send 0.1 XCH to another address. Notice that while the Total Balance is 1, the Spendable Balance is 0. This should be possible -- the Maker has 0.9 XCH, even after taking the Offer into account. The reason for the Exception is because the Maker only has a single coin worth 1 XCH, and that coin has already been reserved for the Offer. It's similar to using a 10billtobuysomethingfor10 bill to buy something for 10billtobuysomethingfor1. Before you receive your change, you can't buy anything else. On the other hand, if you had started with two 5billsandboughtthesame5 bills and bought the same 5billsandboughtthesame1 item, you could've purchased something else while waiting for your change. The Maker can work around this issue by canceling the Offer, then breaking the single large coin into multiple small ones. One simple way to do this would be to send money to him/herself: The Maker can then recreate the same Offer. The new offer's details show a coin worth 0.9 XCH being reserved: The Maker's wallet shows a Total Balance of 1 XCH. This is the same as before, but there are now two coins that sum to 1 XCH. Because there are now two coins in the Maker's wallet, and only one (worth 0.9 XCH) has been reserved for the Offer, the Spendable Balance is 0.1 XCH: The Maker can now send 0.1 XCH to another wallet, even while the Offer is still pending: One of the Maker's coins has been reserved for the Offer, and the other has been sent to another wallet. The Maker can further break apart the large coin as needed. Offer involving a CAT1 is invalid​ The CAT1 Standard reached its end of life (EOL) with block 2,311,760 in July 2022. Any offers that include a CAT1 on either side of the trade will result in an invalid offer error.","s":"Potential issues","u":"/getting-started/wallet-guide/","h":"#potential-issues","p":1091},{"i":1120,"t":"Offers blog entry Offers reference CLI tutorial Info on the coin set model","s":"Further reading","u":"/getting-started/wallet-guide/","h":"#further-reading","p":1091},{"i":1123,"t":"This document outlines the rationale and main design ideas behind the consensus layer of Chia\\textrm{{\\sf Chia}}Chia, a longest-chain blockchain akin to Bitcoin. It achieves comparable security guarantees as Bitcoin's Proof of Work (PoW) based Nakamoto consensus, while using Proofs of Space in combination with Verifiable Delay Functions (VDFs) to achieve Sybil resistance. This makes Chia\\textrm{{\\sf Chia}}Chia much more sustainable and also more decentralized than a PoW based blockchain could be. We outline the challenges one must solve when replacing proofs of work with an efficient proof system like proofs of space, and how they are addressed in Chia\\textrm{{\\sf Chia}}Chia. Here efficient means that once the resource (like space or stake) is available, computing many proofs is basically as cheap as computing one. This document is not a formal specification of Chia\\textrm{{\\sf Chia}}Chia. Instead, it aims at readers who want to understand the design choices of Chia’s\\textrm{{\\sf Chia's}}Chia’s consensus, and are interested in permissionless longest-chain blockchains from efficient proof systems in general. Green Paper PDF - updated October 8, 2024","s":"Abstract","u":"/green-paper-abstract/","h":"#abstract","p":1121},{"i":1125,"t":"In order to provide historical context, the Green Paper's previous version that discusses a precursor consensus which was never implemented is available here for viewing: Precursor Green Paper.","s":"Precursor Consensus Green Paper","u":"/green-paper-abstract/","h":"#precursor-consensus-green-paper","p":1121},{"i":1127,"t":"This guide will act as a glossary for many of the concepts utilised in Chia. If you are familiar with how Bitcoin transactions work, a lot of this will be familiar. Aggregated Signature/AggSig - Aggregated Signatures allow us to condense multiple signatures into a single aggregated signature, such that if we know a public key and value we can verify if it exists inside of the single aggregate. This uses BLS non-interactive aggregation. Authorized Payees - Authorized Payees is a smart contract that means that Wallet A can give Wallet B some money, but Wallet B is only allowed to spend that money in ways that Wallet A has explicitly authorised. CATs - Chia Asset Token - a special kind of chia coin which are created by users. A CAT is a uniquely marked subset of chia which can't be forged and can be linked to other assets. More information can be found on the CATs Puzzles page. CAT1 - First version of the Chia token standard, there was a bug in this standard and its fix deprecated the standard creating the CAT2 standard. CAT2 - Second version of the Chia token standard, there was a bug in the first standard and its fix deprecated the standard creating the CAT2 standard. Chia - Uppercase “Chia”. The software, the blockchain, or the company. chia - Lowercase \"chia\" represents the coin aka \"xch\". Chia Network Inc. - Proper format for Chia the company's name. chia reference wallet - our own implementation which supports many features, but does not use wallet SDK and contains other wallets - e.g CAT wallets, DID wallet, NFT wallets and is mapped to a specific wallet key. ChiaLisp - ChiaLisp is the Turing-complete functional language which the puzzles for spending coin are programmed in. For more information see our Chialisp site. CHIPs - CHia Improvement Proposals. CLVM - The CLVM is the ChiaLisp Virtual Machine which is the sandboxed environment that puzzles and solutions are run in. The CLVM only runs the compiled minimal version of ChiaLisp, though a compiler can convert the higher level ChiaLisp to the compiled minimal version. See more about that here CNI - Chia Network Inc. Coin (TXO/transaction output) - A coin stores value. All coins are generated as the output of a transaction or a coinbase reward or fee target. A coin is spent exactly once, allowing its value to go into other coins, and is then permanently destroyed. Each unspent coin is locked with a ChiaLisp program which is that coin’s puzzle, and whoever has the information to solve that puzzle is the person who can spend that coin. The most basic puzzle has a public key and accepts a solution which contains a list of conditions signed by the corresponding private key, so only the owner of the private key can unlock the coin and spend it. Coin ID/CoinName (TXO ID/transaction output ID) - The ID of a coin in Chia is generated by hashing the primary input ID, puzzle hash, and amount concatenated in that order. This is very different from Bitcoin which uses much more data to form the TXO ID, restricting what smart contracts are capable of. (See also: SegWit) DAO - Decentralized Autonomous Organization. dApp - Decentralized Application. DataLayer™ - Datalayer connects an offchain database to the chia blockchain via merkel tree hashes ensuring any and all changes to the database are transparent and auditable. https://chia.net/chia-datalayer. Decentralised ID (DID) - A decentralised ID is a smart contract that enables a wallet to act as an ID which can create messages to other IDs. Based on the work of the identity foundation. Farming - Verifying transactions and creating blocks on the chia blockchain. full node rpc api - Full node access with JSON formatting. green paper - Overviews the chia blockchain and the various new technologies implemented at the consensus level. Light Wallet - Chia client functionality - a chia wallet that does not require a full node but rather gets balance and transaction data from peers in a decentralized method. NFT - Non-fungible Token, a token that is inherently and provably unique. NFT0 - Chia’s in development NFT standard before NFT1 was launched. NFT1 - Chia’s current NFT standard. Op Constraints/Conditions - Constraints are returned by the puzzle when it’s passed the solution. If all of the returned conditions are met then a transaction is valid. PFP - Profile picture. plugin wallet - A wallet implementation that uses the wallet SDK to provide extremely easy access to adding new coins and app types. PoS or POS - Proof of Stake. PoSpace - Proof of Space. PoST - Proof of Space and Time. Prepend Signature - Prepend signatures are used so that we can retain metadata about the structure of an aggregated signature. Primary Input/Parent - When a coin is created the coin that was used as input in the transaction is designated as the primary input. This is used to create the coin ID. If more than one coin is used up as an input in a transaction then one of the coins is designated the primary input, and the others simply reinforce the transaction. Puzzle (Scriptpubkey) - A ChiaLisp program which specifies the behaviour of a coin when it is spent. A puzzle can either reject a solution or output a set of constraints. Puzzle Generator - A wallet will use a Puzzle Generator to define how it wants to receive transactions. Most wallets will want to generate the standard transaction, however by storing a ChiaLisp program that generate a puzzle, all a Sending Wallet needs to do is ask the Recipient Wallet what its Program Generator is and then run that to create the puzzle to lock the coin up with. Puzzle Generator ID - This is the hash of a wallet's puzzle generator. A wallet can do a hash-lookup and see if it already knows the source code for that puzzle generator. If not, it will request the full source code and store that information in its lookup table. Rue - Rue is an alternative language to Chialisp that compiles to CLVM which the puzzles for spending coin are programmed. Rue is being developed by a community member (Rigidity) and more information can be found on his github repo or the Rue website. Smart Contract/Puzzle - A smart contract is a specialised ChiaLisp puzzle which locks a coin up and enables complex blockchain interactions. Solution (Scriptsig) - This is some ChiaLisp which is passed to the puzzle for evaluation when a transaction is submitted. For more information about how transactions work, and how solutions can generate new coins check out this guide Spend/CoinSolution - A spend is a reveal of a coin's ID, along with the full puzzle code, and a solution to be ran with the puzzle. The result of a spend is determined by the returned Op Constraints after running the puzzle with the solution. Spend Bundle - A spend bundle is a collection of spends grouped together with an aggregated signature to be sent to the network. Unspents (UTXO set/unspent transaction output set) - This is the set of all unspent coins on the network. It is used to check if a transaction is valid, acting as a lookup for the puzzles. It maps a coin ID to a birthdate in blockheight. A transaction must contain a reveal of the information used to calculate the ID in order for it to be possible to validate because the unspents doesn’t contain that information, only hashes which can be used to validate it. Unspent Coin (UTXO/unspent transaction output) - A coin which has been created but not yet spent and hence is storing value. VDF - Verifiable Delay Function. This creates the proofs of time in a method that is verifiable and requires some amount of time to complete. VPB - Virtual Private Blockchain. Wallet - Software written to interact with transactions. Chia uses Hierarchical Deterministic Wallets (HD Wallets). This means that they can generate many different public keys that are all valid and verifiable as unique to that wallet. A wallet contains a coin if it possesses the information necessary to unlock that coin and create a transaction which spends it. wallet protocol - Communication protocol for wallets and full nodes to interact via WebSocket Streamable integrations. wallet rpc api - Wallet node access with JSON formatting. wallet SDK - Software that calls wallet protocol, potentially abstracting out sync and rollbacks. white paper - Overviews Chia Network Inc as a business and its founding objectives.","s":"The Great Chia Glossary","u":"/glossary/","h":"","p":1126},{"i":1131,"t":"You can read about each of them and the architecture in the Architecture Overview page. The Consensus Intro page is the most current documentation, however.","s":"What are harvesters, farmers, full nodes, and timelords?","u":"/faq/","h":"#what-are-harvesters-farmers-full-nodes-and-timelords","p":1128},{"i":1133,"t":"A proof of space is a proof that a farmer has allocated a portion of their storage in a way that is very difficult to create in real-time but efficient to pre-compute and store on a hard drive. The Chia Proof of Space Construction document goes deeply into the math and implementation considerations to mitigate Hellman's Time - Memory tradeoff problem. A plot is a large set of proofs of space. A harvester can harvest multiple plots on the same machine. A farmer can then control multiple harvesters across many machines to manage the whole \"farm\". Farming uses substantially less electricity than Proof of Work for the same unit of security. You can learn more at chiapower.org.","s":"What is a proof of space?","u":"/faq/","h":"#what-is-a-proof-of-space","p":1128},{"i":1135,"t":"A VDF, also known as a proof of time, is a sequential operation that takes a prescribed amount of time to compute (and which cannot be accelerated by parallelism) and which produces an accompanying proof whose result may be quickly verified. This must be done in a group, for which Chia uses ideal class groups. You can learn about them in our class group document. Timelords usually run three VDFs at a time for the three internal blockchains of the Chia blockchain. They run as vdf_client processes.","s":"What is a VDF/proof of time?","u":"/faq/","h":"#what-is-a-vdfproof-of-time","p":1128},{"i":1137,"t":"A genesis challenge is the first VDF challenge on a network that uses the Proof of Space and Time consensus. For more info about the genesis challenge for Chia's mainnet, see the consensus section of this website.","s":"What is a genesis challenge?","u":"/faq/","h":"#what-is-a-genesis-challenge","p":1128},{"i":1139,"t":"XCH is the currency symbol for Chia. TXCH is the currency symbol currently being used for testnet chias. TXCH has no value and is only used for testing purposes. Chias and testnet chias can be divided up to 12 decimal places (trillionths). The smallest unit of chia, a trillionth of a chia, is called a mojo, as a tribute to Mojo Nation, a decentralized file storage platform created in the early 2000s by Zooko Wilcox, Bram Cohen, and others.","s":"What is XCH, TXCH, and mojos?","u":"/faq/","h":"#what-is-xch-txch-and-mojos","p":1128},{"i":1141,"t":"Chia - uppercase Chia depending on context, this can refer to Chia Network the company, the Chia software (Chia client), or the Chia blockchain. XCH - refers to the Chia token, XCH. mojo - a trillionth of an XCH. chia - lowercase chia refers to the Chia token, XCH. Similarly, mojos are lowercase.","s":"Chia vs XCH vs mojo vs chia","u":"/faq/","h":"#chia-vs-xch-vs-mojo-vs-chia","p":1128},{"i":1143,"t":"You can sign up for the Chia email newsletter by following this link. You can select either General Chia News or Developers News or both to receive emails about those topics.","s":"How do I sign up for the Chia email newsletter?","u":"/faq/","h":"#how-do-i-sign-up-for-the-chia-email-newsletter","p":1128},{"i":1145,"t":"Chia, like all companies, has an obligation to protect and enforce its Trademarks and Copyrights in the relevant jurisdictions. We do this both to ensure that we properly maintain our own responsible use of them, as well as to prevent bad actors from attempting to leverage Chia’s property in an effort to scam the ecosystem or cause other harm. That said, we do want to make it possible for people to talk about Chia, and build tools and platforms that support it’s growth openly. To this effect we have several guidelines that we hope will help you better understand some “Do’s and Don’ts” as you go about this. (And if you are ever unsure, you are always welcome to email us at hello@chia.net with questions about this subject!)","s":"What are the rules and guidelines around using Chia's trademarks and copyrighted materials on my own site or project?","u":"/faq/","h":"#what-are-the-rules-and-guidelines-around-using-chias-trademarks-and-copyrighted-materials-on-my-own-site-or-project","p":1128},{"i":1147,"t":"You can email us at hello@chia.net or join us on Discord. Please note that for support with Chia, we do not offer 1:1 direct support. All support is provided via our discord #support channel.","s":"How do I contact Chia with more questions?","u":"/faq/","h":"#how-do-i-contact-chia-with-more-questions","p":1128},{"i":1149,"t":"Our hope is that, over time, Chia will be supported by point of sale systems and consumer payment apps all over the world. For example, if you pay for a coffee at Tully’s in England with your GrabPay app from Thailand, it should “just work” without you needing to know it was paid in Chia. Or, for example, if services like Venmo or Cash App aren’t available where you live, using Chia will be far less of a hassle than executing a slow and expensive wire transfer. Using legacy banking to send and convert cash across borders is cumbersome, slow and expensive, and while alternative money transfer services might be faster, they’re not cheap: Western Union can charge upwards of 10% in transfer fees. The technology is completely open source and accessible, and anyone can build a new wallet without our permission or assistance. However, we intend to help wallet, exchange, and merchant processing partners with support and integration services, joint marketing and lending for liquidity.","s":"Will the average person be able to use Chia as a payment instrument?","u":"/faq/","h":"#will-the-average-person-be-able-to-use-chia-as-a-payment-instrument","p":1128},{"i":1151,"t":"We’re green money! Our founder Bram Cohen started the company knowing he wanted to reduce the energy dependence of blockchains through a “green” option. The concept of farming seemed to be the best metaphor for filling unused disk space and monitoring it for winning sprouts. This led us to look for a grain that had the properties we wanted to embody with our new Network. The team wanted a name that would be short and impactful. Everyone was amused that it was also a grain associated with a whimsical meme. Chia Network was born.","s":"Why are you named Chia?","u":"/faq/","h":"#why-are-you-named-chia","p":1128},{"i":1153,"t":"We believe that Chia coins will be less volatile than other cryptocurrencies due to the planned nature of our planned public company status which will allow financial institutions to hedge and leverage coins and equity. Initially, we expect Chia Network to largely be valued based upon the valuation of the chia that the Company will hold on its balance sheet. Movements in the price of chia on digital exchanges are likely to be mirrored by price movements in the price of our stock on a stock exchange. There will be more ways to get exposure to the success of chia than traditional blockchain projects. This will also allow the usual options and derivatives to our stock to be used as something like a synthetic derivative for the price of chia coins. Additionally, our ability to use the Chia Strategic Reserve may reduce some volatility of chia in the market.","s":"Is the value of Chia going to be as volatile as other cryptocurrencies?","u":"/faq/","h":"#is-the-value-of-chia-going-to-be-as-volatile-as-other-cryptocurrencies","p":1128},{"i":1155,"t":"We believe that more eyes on our code will only make it better. For example, the results of our VDF Competition produced a VDF implementation whose runtime was 80% faster than our original implementation.","s":"Why does Chia run competitions?","u":"/faq/","h":"#why-does-chia-run-competitions","p":1128},{"i":1157,"t":"Chia has created three new core inventions and advanced the interest in, and adoption of, a fourth. Firstly, Chia created the first intended for production BLS Signatures library. Second, Chia is the first production use of Verifiable Delay Functions, or VDFs. Third, Chia created Proof of Space and Time for Nakamoto consensus. Finally, Chia is the first production use of class groups of unknown order which has spawned significant new research into their applicability to cryptography.","s":"Where has Chia advanced the state of the art in applied cryptography?","u":"/faq/","h":"#where-has-chia-advanced-the-state-of-the-art-in-applied-cryptography","p":1128},{"i":1159,"t":"No. Chia is written entirely from scratch with a custom form of Lisp called Chialisp. Chia also advanced applied cryptography as described above.","s":"Does Chia use Bitcoin's code?","u":"/faq/","h":"#does-chia-use-bitcoins-code","p":1128},{"i":1161,"t":"When Bitcoin was developed, it was not foreseen that specialized hardware could vastly outperform the computers that everyone owns. What was intended to be a decentralized network is now controlled by a small number of miners with access to chip fabrication plants and wholesale electricity purchasing (or worse). The miners who currently control the Bitcoin Network feel they have a competitive advantage as is and oppose changing the protocol even when it’s clear that it should be changed. Chia has had ten years to study the new digital money ecosystem and believes we can make cryptocurrency more decentralized, more secure, and easier to use.","s":"Isn't Bitcoin good enough?","u":"/faq/","h":"#isnt-bitcoin-good-enough","p":1128},{"i":1163,"t":"After the Chia pre-farm, Chia offers farming rewards of 64 chia every 10 minutes. Over the first 12 years the farming rewards will be halved at the end of each 3rd year. From year 13 to infinity, the rewards will remain constant at 4 chia every 10 minutes leading to ever decreasing inflation rates. Chia’s inflation falls through the 0.50% rate 22 years after mainnet launch. More information can be found in our halving schedule","s":"What is Chia's inflation?","u":"/faq/","h":"#what-is-chias-inflation","p":1128},{"i":1165,"t":"The Chia Blockchain comes together from a few different repositories: Repository Contents chia-blockchain Consensus code, networking, and reference Chialisp implementations. chia-blockchain-gui An Electron/React graphical user interface to the plotter, node, and wallets. clvm Chialisp Virtual Machine in Python clvm-rs Chialisp Virtual Machine in Rust for security and performance. chiapos Creating plots and verifying Proofs of Space. chiavdf Proofs of time/VDFs and Timelords. bls-signatures IETF standard BLS-12-381 signature scheme. clvm_tools Tools for Chialisp and CLVM. Chia Network Organization Contains all of the public Chia repos released by Chia Network","s":"Where is the Chia source code?","u":"/faq/","h":"#where-is-the-chia-source-code","p":1128},{"i":1167,"t":"Chia launched mainnet on March 19, 2021. You can follow along with code updates across our many repositories outlined here","s":"When did Chia launch mainnet?","u":"/faq/","h":"#when-did-chia-launch-mainnet","p":1128},{"i":1169,"t":"Chia has a novel business model to both, lower volatility of the coin and increase adoption. By loaning Chia and managing the interest rates of those loans as well as other tools like buying our stock with chia coins, we hope to lower the quarter to quarter volatility of the coin. To drive adoption, we intend to loan Chia to Global 5000 companies who will use it to pay their international vendors quickly, less expensively, and more securely. We also intend to use the strategic reserve to aid development and adoption. We plan to do things like invest in promising startups in the Chia ecosystem, potentially increase farming rewards during limited periods of time to spur additional farming, and fund corporations paying 105% of the value of their international payables in Chia instead of fiat currency. Chia Network Inc created 21 million chia at mainnet launch. This is known as the Strategic Reserve. For details on the Company’s plans for the Strategic Reserve, see page 20 of the Business Whitepaper.","s":"What is the Chia Strategic Reserve?","u":"/faq/","h":"#what-is-the-chia-strategic-reserve","p":1128},{"i":1171,"t":"No. Chia did not have and is not planning an ICO. Instead, our goal is to take the company’s equity public on an American stock exchange. This way, shareholders can share risk and return with management with transparency and disclosure while we use well understood corporate controls to make binding statements about how Chia Network intends to use the Strategic Reserve. The chia coin (XCH) is meant to be a useful payment instrument and not an investment opportunity. Chia intends to complete a fully compliant SEC registered equity IPO and will come to market as market-timing is amenable.","s":"Did Chia have an ICO?","u":"/faq/","h":"#did-chia-have-an-ico","p":1128},{"i":1173,"t":"You can farm Chia on the unused storage of your laptop, desktop, or corporate network and, in return, you have the chance to receive rewards in chia for helping secure the blockchain. Our software allows you to allocate a certain amount of unused disk space to create plots. Since the only resource intensive step is the initial plotting, once you download the Chia node software, your drives will be plotted in the background. Once plotting is complete, your computer will begin farming on your behalf and the software does all the work and tracks your rewards for you. Ongoing farming uses very little network bandwidth and almost no resources other than storage. By making the farming process available to anyone with unused disk space, we are moving towards our goal of a truly decentralized blockchain that will also serve as a cross subsidy to the storage and cloud industry. Visit our Farming Basics doc to get started.","s":"Why do I want to farm Chia?","u":"/faq/","h":"#why-do-i-want-to-farm-chia","p":1128},{"i":1175,"t":"It is our belief that the blockchain industry is still led by developers. We intend to be the superior chain for deploying new applications and services as well as being the only serious and secure choice for applications like sovereign backed stable coins. The Chia Network business will be the first for profit company that manages a pre-farm and we intend to be the first publicly tradable “near ETF” cryptocurrency. We believe that - as Redhat and MySQL AB were necessary to drive corporate adoption of linux and mysql - we will be the source for support and training as sovereigns, financial institutions, and corporations look to use cryptocurrency in daily commerce. Finally, we believe that we will be able to leverage the storage ecosystem to drive adoption at corporations and end users as hard drive manufacturers and storage server sellers are likely to bundle space farming into their offerings. Our Business Whitepaper is the definitive document on our strategy and approach.","s":"What is the Chia Network Strategy?","u":"/faq/","h":"#what-is-the-chia-network-strategy","p":1128},{"i":1177,"t":"Details can be found on the Consensus page of our docs site. Additionally, we maintain a list of academic papers and presentations about Chia on our references page.","s":"Where can I learn more about the technical details of your consensus algorithm?","u":"/faq/","h":"#where-can-i-learn-more-about-the-technical-details-of-your-consensus-algorithm","p":1128},{"i":1179,"t":"Mining requires expensive single use hardware that consumes exorbitant amounts of electricity. We are mitigating this problem through a fair, eco-friendly, and better blockchain that uses farming to leverage existing empty hard disk space distributed on nodes around the globe. Farming remains decentralized because anyone that has installed our software and has plots can win the next block. Mining requires expensive custom single use hardware and access to electricity at wholesale or better prices which only purpose built corporations can afford to mine. Farming is more decentralized because it relies on empty hard disk space and anyone with a mobile phone, laptop, or corporate network tends to have extra space not currently being used. Unlike mining, once you’re done farming your storage you can repurpose it to, for example, store your family photos. For more information we have this blog article, or you can refer to our Farming and Plotting docs.","s":"What is the difference between mining and farming?","u":"/faq/","h":"#what-is-the-difference-between-mining-and-farming","p":1128},{"i":1181,"t":"Documentation can be found at Chialisp.com.","s":"Where can I learn more about Chialisp?","u":"/faq/","h":"#where-can-i-learn-more-about-chialisp","p":1128},{"i":1183,"t":"Chia has a new innovative Nakamoto consensus algorithm, Proof of Space and Time, that removes the energy demands of Proof of Work from the system. Compared to other cryptocurrencies, Chia has significantly better security due to its more decentralized blockchain by Nakamoto Coefficient. Chialisp is Chia’s new smart transaction programming language that is powerful, easy to audit, and secure and will unlock the security, transparency, and ease of use that cryptocurrencies promise. Chia is also adopting more modern cryptographic tools to enable richer smart transaction capabilities. Chia is taking a new and superior approach to funding, building, and supporting a blockchain via an eventually public, for-profit, open source development company that holds a pre-farm. Chia will use its Strategic Reserve to ease the volatility of the coin to mitigate bubbles and crashes and to drive adoption of chia.","s":"Why is Chia better?","u":"/faq/","h":"#why-is-chia-better","p":1128},{"i":1185,"t":"Chia developed a new innovative Nakamoto consensus algorithm, Proof of Space and Time, that eliminates the energy demands of Proof of Work while maintaining and in some cases enhancing security. Proof of Space is a cryptographic technique where provers show that they allocate unused hard drive space for storage space. In order to be used as a consensus method, Proof of Space must be tied to Proof of Time. PoT ensures that block times have consistency in the time between them and increases the overall security of the blockchain.","s":"What is Proof of Space and Time?","u":"/faq/","h":"#what-is-proof-of-space-and-time","p":1128},{"i":1187,"t":"Chia has a newly developed, innovative blockchain programming language called Chialisp.com, which is powerful, easy to audit, and secure. Chialisp is a superior on-chain smart transaction development environment that will unlock the security, transparency, and ease of use that cryptocurrencies promise.","s":"What is Chialisp?","u":"/faq/","h":"#what-is-chialisp","p":1128},{"i":1189,"t":"Proof of space can be thought of as a way to prove that you are keeping some storage unused on your hard-disk drive. Users of the Chia blockchain will “seed” unused space on their hard-disk drive by installing software which stores a collection of cryptographic numbers on the disk into “plots.” These users are called “farmers.” When the blockchain broadcasts a challenge for the next block, farmers can scan their plots to see if they have the hash that is closest to the challenge. A farmer’s probability of winning a block is the percentage of the total space that a farmer has compared to the entire network. Proof of time requires a small period of time to pass between blocks. Proof of time is implemented by a Verifiable Delay Function that takes a certain amount of time to compute, but is very fast to verify. The key idea of a VDF is that they require sequential computation, and since having many parallel machines does not yield any benefit, electricity waste is minimized. There will likely be relatively few VDF servers (“Timelords”), as the fastest one will always finish first and it takes only one fast and fair Timelord on the network to complete a block and move the chain forward. More information can be found in the Green Paper.","s":"How does Proof of Space and Proof of Time work?","u":"/faq/","h":"#how-does-proof-of-space-and-proof-of-time-work","p":1128},{"i":1191,"t":"You should first read through the Chia Introduction and docs FAQ, check out the wealth of information on our docs site and join us on discord in the #support or #general channels. We have also created a good summary of the basics of creating plots for Chia.","s":"Where can I get answers to questions about running Chia?","u":"/faq/","h":"#where-can-i-get-answers-to-questions-about-running-chia","p":1128},{"i":1193,"t":"Chia was incorporated in August of 2017 to develop an improved blockchain and smart transaction platform. We are building the Chia Network to improve the global financial and payments systems. Chia is the first enterprise-grade digital money. Chia is using the first new Nakamoto consensus algorithm since Bitcoin. Called Proof of Space and Time, it was created by Bram Cohen, the best network protocol engineer alive and the inventor of BitTorrent. Chialisp is Chia’s new smart transaction programming language that is powerful, easy to audit, and secure. Reference smart transactions currently available are: atomic swaps, authorized payees, recoverable wallets, multisig wallets, and rate-limited wallets.","s":"What is Chia?","u":"/faq/","h":"#what-is-chia","p":1128},{"i":1195,"t":"From time to time, Chia Network may release NFTs for a variety of reasons, such as our inaugural Chia Friends collection. Any NFTs minted by Chia Network will use our official DID: did:chia:19qf3g9876t0rkq7tfdkc28cxfy424yzanea29rkzylq89kped9hq3q7wd2. Always check the provenance of an NFT purportedly to be official from us by looking for this DID as the minter. Fortunately, the majority of 3rd party platforms are designed to automatically show the Chia Network name and/or logo with these NFTs, but it never hurts to double check! What makes Chia different from proof of work blockchains? One core difference is the consensus algorithm called proof of space and proof of time. Basically as after the farmer creates a proof of space and a block, other computers called timelords add proofs of time to the block, which is a cryptographic proof that says that a certain amount of time (like 30 seconds) has passed. So instead of the whole world mining at the same time, only a few computers are \"mining\" for each proof of space that won. Since these are all cryptographic proofs, they cannot be forged or broken, making the consensus extremely secure. In Chia, the only electricity required is the electricity to create the plots, and to run the hard drives, which is on the order of 10 watts to power, plus CPU power required to run a full node (which is very light). In comparison Blockchains like Bitcoin and Ethereum rely on huge farms of GPUs ( 300W each GPU), or ASICs (hundreds or thousands of watts per machine) to secure the blockchain. You can think of proof of work, as millions of computers \"making\" lottery tickets by using electricity, but each ticket can only be used once. Chia will use vastly less electricity as each plot will last over 5 years, and the only electricity required is the initial setup (plotting) and 10W for farming a drive. For more information on the power utilization of Chia please read through the Chia power site.","s":"What is the official Chia Network DID used for NFTs?","u":"/faq/","h":"#what-is-the-official-chia-network-did-used-for-nfts","p":1128},{"i":1197,"t":"Mainnet Burn Address​ xch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ks6e8mvy Testnet Burn Address​ txch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ksh7qddh The Burn Address Explained​ Chia addresses are puzzle hashes encoded into the \"xch\" prefix address format using the bech32m encoding scheme. A traditional bech32m puzzle hash for a burn address is all zeros ending in \"dead\": 0x000000000000000000000000000000000000000000000000000000000000dead Converting this to an address, you end up with the burn address for mainnet: xch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ks6e8mvy The testnet burn address is different: txch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ksh7qddh You can use a puzzle hash converter to verify these burn addresses for yourself. What is a burn address?​ A burn address is an address whose private key (24 words) is unobtainable. There's no feasible way to determine the key for the above burn addresses. This means anything sent to a burn address is inaccessible forever, aka \"burned.\" Thank you to r/chia member juraj for this information.","s":"What is Chia's burn address?","u":"/faq/","h":"#what-is-chias-burn-address","p":1128},{"i":1199,"t":"Some important changes went into the transactions_generator code with the 2.1.0 hard fork. These changes are detailed in the Block Format page.","s":"How does the transactions_generator work?","u":"/faq/","h":"#how-does-the-transactions_generator-work","p":1128},{"i":1202,"t":"\"k\" is the space parameter that controls the size of plots. It is an integer for the following equation: plot_size_bytes = C1 * 2^k(k + C2) where C1 is constant 1 and C2 is constant 2. In practice this means that final size is roughly ((2 * k) + 1) * (2 ** (k - 1)) * 0.78005 though that constant is estimated. You can examine the Space Required section of the Chia Proof of Space Construction document for the calculation of how much space is required for a given k. note Prior to Chia 2.0, the estimated space constant factor of 0.762 slightly incorrect. This led to a netspace calculation that was lower than the actual netspace. To correct this, we have updated the constant factor to 0.78005.","s":"What is k?","u":"/faq/","h":"#what-is-k","p":1128},{"i":1204,"t":"You can see some example plot sizes, times to plot, and working space needed based on various k's in these k size tables. Current working space needed for the default plotting options of a k=32 is 239 GiB and the final file is approximately 101.4 GiB. There is small natural variation in temp space needed and the final file size of each plot. Note that 239 GiB is 256.6 GB.","s":"How big are plot sizes (k)?","u":"/faq/","h":"#how-big-are-plot-sizes-k","p":1128},{"i":1206,"t":"The minimum plot size is k=32. There is only one reason why you might want to plot larger than k=32: to maximize the total utilization of a given drive or space. A couple of k=33 plots with a majority of k=32 plots can reduce the amount of leftover unused space on a drive. The reason k=32 was chosen as the minimum plot size was to prevent a short-range replotting attack, which is detailed in our consensus doc. The gist of the attack is that if someone can create a plot in less than ~30 seconds, they could create a new plot that passes the filter for each signage point, and then delete the new plot immediately afterward. This would effectively emulate storing 512 plots, thus turning Chia into PoW. Note that this attack does not create a winning plot; it only creates a plot that passes the filter. This attack won't be economically feasible for some time, if ever. Two potential mitigation techniques are to lower the plot filter (thus reducing the benefit of the attack), or to increase the minimum plot size (thus making the attack more difficult to perform). k=32 is expected to be the minimum plot size until at least 2026. If and when that size is increased, you will be given ample notice to replot before the change is made effective.","s":"What k-size should you plot?","u":"/faq/","h":"#what-k-size-should-you-plot","p":1128},{"i":1208,"t":"We think you will want to use used Data Center grade NVMe SSD drives to create your plots. Regular consumer NVMe SSD generally has too low of a TBW rating. One of our community members keeps this handy SSD Endurance page up to date so you can compare various SSDs. You should never use your root/OS SSD to plot as it can lead to drive failure and loss of booting. You can plot directly to hard drives and get good results, especially if you plot in parallel to different drives. You can use non-root SSD over Thunderbolt 3 and migrate your plots off to whatever storage you want to keep them on long term. You could even load them on a Raspberry Pi 4 with outdated USB 2.0 drives attached and they will harvest and farm just fine. PC World offers this great background on current storage technologies but this graph gives you a quick view of why we recommend NVMe SSD:","s":"What is recommended for plotting?","u":"/faq/","h":"#what-is-recommended-for-plotting","p":1128},{"i":1210,"t":"Yes, using either the GUI or CLI. Over the short run you have a bit more control of plotting using the CLI. You can read the Installation page to learn more. You may have better results if you stagger the start time of parallel plotting processes depending on your hardware setup.","s":"Can I plot more than one plot at a time?","u":"/faq/","h":"#can-i-plot-more-than-one-plot-at-a-time","p":1128},{"i":1212,"t":"Yes. The Moving Plots page gives you the details. You may also want to consider running a remote harvester. You can also use the same private key set to plot on more than one machine at a time but be aware of the uPnP issues.","s":"Can I make plots on one machine and move it to another machine?","u":"/faq/","h":"#can-i-make-plots-on-one-machine-and-move-it-to-another-machine","p":1128},{"i":1214,"t":"-2 is in use during phase 3 and 4. It is the file being built into the resulting .plot file. As it is done compressing tables during phase 3, it will move them into the .plot.2.tmp file (-2), and phase 4 will scan through the entire .plot.2.tmp (-2) file, and write table headers for easy access by the harvester. When phase 4 is done, if -2 = -d, it will simply rename the .plot.2.tmp to .plot. If -2 != -d, it will copy the file into place, then rename, and finally remove the -2 file. The amount of writing is about 110% of the resulting .plot file size. It is a setup dependent option - is your setup faster at moving the compressed tables into the .plot.2.tmp file, and then scan through the entire file, and write table headers during phase 4 - and then copy to -d (-2 = -t) - or is it faster to send the compressed tables directly into the -d (-2 = -d) directory, and then in phase 4, scan through the entire file, and write table headers inside -d (-2 = -d) thereby skipping the final copy into place. The -2 directory can be set in the Advanced Options for Step 3 in the GUI.","s":"What is the secondary temp directory -2, and how should I set it?","u":"/faq/","h":"#what-is-the-secondary-temp-directory--2-and-how-should-i-set-it","p":1128},{"i":1216,"t":"If you see something like Caught plotting error: Not enough memory for sort in memory. Need to sort X.XXGiB then you need to either select more memory buffer or more buckets. More buckets require less memory but will create more temp files and more sporadic disk writing. You will almost always want to use 128 buckets and you should try increasing the RAM max usage/-b to 4608MiB.","s":"My plotting attempt got \"Caught plotting error: Not enough memory...\"?","u":"/faq/","h":"#my-plotting-attempt-got-caught-plotting-error-not-enough-memory","p":1128},{"i":1218,"t":"This is a RAM problem with your machine. It can be how your swap file is configured. It is often your overclock, or XMP settings and even can be a faulty RAM stick. Chia plotting is better than memtest at surfacing broken or mis-configured RAM.","s":"My plotting attempt ended with \"RuntimeError: bad allocation\"?","u":"/faq/","h":"#my-plotting-attempt-ended-with-runtimeerror-bad-allocation","p":1128},{"i":1220,"t":"Unfortunately, resuming a plot is not supported. We suggest that you disable power saving mode - especially for external drives - and try to limit other possible causes of interruptions. Plotting a k=32 could take multiple hours, depending on your hardware, so these interruptions can be painful. They are also a part of why we don't recommend plotting plots larger than k=32 as each increment in k generally doubles the time to complete a single plot.","s":"Can I resume plotting if my computer or drive reboots or enters power save mode while plotting? ?","u":"/faq/","h":"#can-i-resume-plotting-if-my-computer-or-drive-reboots-or-enters-power-save-mode-while-plotting-","p":1128},{"i":1222,"t":"No. Plotting can be done entirely offline and needs nothing from the blockchain to complete. The only time you have to be online and synced is when you're farming so that you receive new challenges for the next blocks and transactions to include in a transaction block if you're lucky enough to win one of them and get the transaction fees. Note that one farmer winning is independent of other farmers winning at the same time. All farmers can \"win\" at nearly the same time. That is why sometimes there are 10 blocks in one minute, and sometimes there is only 1 block per minute, etc.","s":"Do I have to be connected to the internet or synced to plot?","u":"/faq/","h":"#do-i-have-to-be-connected-to-the-internet-or-synced-to-plot","p":1128},{"i":1224,"t":"No. As long as you plot at least k=32, those plots will be eligible to win on mainnet. In a decade or more, k=32 may become too small, but that's speculative. Usually the only reason to plot larger than k=32 is to optimize using all of the space on a given drive. For example, it may make sense to have two k=33's and the rest k=32 so that you only leave 10 GB free on a given drive.","s":"Is there any advantage in plotting larger k sizes?","u":"/faq/","h":"#is-there-any-advantage-in-plotting-larger-k-sizes","p":1128},{"i":1226,"t":"Yes.","s":"Is the final size of the plotted space the only variable in how often I can win block rewards?","u":"/faq/","h":"#is-the-final-size-of-the-plotted-space-the-only-variable-in-how-often-i-can-win-block-rewards","p":1128},{"i":1228,"t":"Run chia plots check -n 30 to try 30 sample challenges for each plot. Each of your plots should return a number around 30, which means it found around 100% of the attempted proofs of space. If you're still worried try -n 100 as more random attempts will give you a more valid assessment that the plots is fine. It really is ok if your plot is within 80%-120%. If some of your plots are missing for some reason you may need to add the directory they are in to your config.yaml file. That can be done in the GUI with the MANAGE PLOT DIRECTORIES button or on the command line with chia plots add -d [directory].","s":"How do I know if my plots are OK?","u":"/faq/","h":"#how-do-i-know-if-my-plots-are-ok","p":1128},{"i":1230,"t":"On Windows, it has not worked well since the communication speed is not fast enough, sometimes the usb turns off, then the plot is not valid. It's possible to run 1 plot, but limiting when trying to process multiple plots. Most are installing PCIe adapters to SSC/NVME and that solves the issue. The mac has very fast communication to do the first plot, many others are saying that they can do 2 plots but process time increases dramatically. Technology is constantly changing so continue to do research and ask in the chat rooms.","s":"Can I use USB 3.0 cable connected to SSD/NVME running the Temp files?","u":"/faq/","h":"#can-i-use-usb-30-cable-connected-to-ssdnvme-running-the-temp-files","p":1128},{"i":1233,"t":"UPnP is an optional setting that allows users to open a port in their router and therefore allow other nodes to connect to them. This is not required, since your node can still make outgoing connections without UPnP. For some routers, UPnP is enabled automatically, but for others, you might have to go into your router settings and enable UPnP manually. Sometimes restarting the router is also necessary. Another option is port forwarding, where you tell your router/NAT to forward requests on port 8444 or 58444 for testnet to your machine.","s":"What is this UPnP Error?","u":"/faq/","h":"#what-is-this-upnp-error","p":1128},{"i":1235,"t":"First, running more than one node with the same private keys on your home network is wasting bandwidth by syncing two copies of the blockchain over your download link. You can get the same results by running one node and using multiple harvesters on multiple computers. Second, if you have uPnP enabled on both nodes and your home router supports uPnP (and most do) it will cause both of your nodes to not sync the blockchain. You need to disable uPnP on all or all but one node behind a uPnP enabled router. The CLI command chia configure --enable-upnp false will turn uPnP off on a node. It requires a restart of the node to take effect. If you disable UPnP on all but one of your nodes then your local router will forward inbound 8444 traffic to the one node and the rest will now be able to connect to the network but just will not accept inbound connections from the network.","s":"Why should I not run more than one node on a home network and what's this about UPnP?","u":"/faq/","h":"#why-should-i-not-run-more-than-one-node-on-a-home-network-and-whats-this-about-upnp","p":1128},{"i":1237,"t":"Step 1. Make sure you are running the most recent version of the Chia software. Check out the Installation page. Step 2. If your node has no connections, it could be one of many reasons. The most likely reason is that there are no users with space to have new connections, so you cannot connect to them. To solve this, you should try opening port 8444 on your router so other peers can connect to you. Follow the steps in the Node Syncing page. Port 8444 is the port through which other Chia computers can communicate with your PC. When you set up port forwarding on port 8444, the Chia software on your computer can quickly talk to other PCs, link up, and start downloading and syncing with the Chia blockchain. The network is undergoing rapid growth and expansion. Many of the newly arrived Chia peers (computers) do not open up port 8444. It makes it very hard for the network. So please port forward on port 8444! Use this link to check if your router's port 8444 is closed: https://portchecker.co/ Step 3: You might need to disable UPnP in the config file (~/.chia/mainnet/config/config.yaml) or by using the cli command chia configure -upnp false. You might have multiple nodes running on the same machine, or in the same wifi network. Make sure to close all Chia applications on your computer. Also check your firewall or antivirus software, which might be blocking connections. Step 4: Try deleting your peer DB which is located at ~/.chia/mainnet/db/peer_table_node.sqlite. Close then restart Chia. Step 5: Edit ~/.chia/mainnet/config/config.yaml, search for weight_proof_timeout and increase it from 180 to 400. If that value is not there, you can add it under the full_node section. It can take a few minutes to start receiving peers and several hours to completely sync.","s":"Why does my node have no connections? How can I get more connections?","u":"/faq/","h":"#why-does-my-node-have-no-connections-how-can-i-get-more-connections","p":1128},{"i":1239,"t":"This is usually a system clock issue, which is causing the display of \"Not synced\", even though you are. Your clock must be set to the exact time, and cannot be more than 5 minutes off. Check your phone and your computer and ensure the time is the same.","s":"I am seeing blocks and connections but my node says \"Not Synced\"","u":"/faq/","h":"#i-am-seeing-blocks-and-connections-but-my-node-says-not-synced","p":1128},{"i":1241,"t":"Chia began using version 2 of its blockchain database in 2022. Version 1 has since reached its end-of-life. About version 2​ Version 2 of the database is still written in SQLite, but it has undergone a series of optimizations from version 1, such as storing hashes in binary, rather than human-readable hex format. It also is more compressed than version 1. These two factors combined have resulted in an approximately 45% reduction in the size of the database, as well as a slight improvement in its performance. When you install a brand new full node, version 2 of the database will be created when you run chia init. If you are upgrading from Chia 1.x to 2.1 or later (which is required due to the hard fork), you will no longer be able run with version 1 of the database. In this case, your options are to download a database checkpoint or to upgrade to version 2 manually, as described below. About the upgrade process​ If you still have a copy of version 1 of the database, you can upgrade it to version 2. This upgrade will not happen automatically. The command to perform the upgrade is chia db upgrade. This is documented in detail in our CLI reference. Be sure you have enough free space on the disk that contains your database file to write the new file. The upgrade could take several hours. After it has completed, run chia start farmer -r to restart your farmer and switch to the new database. Note that the new database will have the same peak as version 1 at the time you initiated the upgrade. Your node will still need to run a short sync to fetch the remaining blocks that had gotten added while the upgrade was being performed. Because the upgrade from version 1 to 2 of the database is time-consuming, most users will likely only perform it on one of their systems and copy the new database file to their other systems afterward. If you choose this option, be sure to either copy the file before running chia start farmer -r, or stop Chia altogether if it is already using the new database. Once the database is swapped from v1 to v2, you also need to update your config.yaml to reflect the new v2 database change. Under the full_node: section set database_path: db/blockchain_v1_CHALLENGE.sqlite to database_path: db/blockchain_v2_CHALLENGE.sqlite warning If you copy your database file to another computer while Chia is currently using it, you'll risk corrupting it, which will necessitate a full sync from genesis. Technical details​ If you're interested in learning more technical details of the new database, see the first Github Pull Request that introduced the changes: https://github.com/Chia-Network/chia-blockchain/pull/9442 And there were two follow-up Pull Requests with additional improvements, along with some benchmarks. https://github.com/Chia-Network/chia-blockchain/pull/9454 https://github.com/Chia-Network/chia-blockchain/pull/9455 Finally, here is the Pull Request that added the upgrade functionality: https://github.com/Chia-Network/chia-blockchain/pull/9613","s":"What is the new database?","u":"/faq/","h":"#what-is-the-new-database","p":1128},{"i":1243,"t":"When you load Chia's client GUI for the first time, you'll be asked to choose whether to run in Wallet Mode or Farming Mode. Here are the main features of each mode: Wallet Mode: This mode runs a Chia wallet, but not a full node. The wallet will sync by connecting to external peers. You'll be able to send and receive Chia and/or CATs. Farming will be disabled. Farming Mode: This mode runs a full node, so farming will be enabled. The wallet will also sync by connecting to external peers, unless specific conditions are met (see below). You'll be able to send and receive Chia and/or CATs, just as while running in Wallet Mode. To switch between Wallet Mode and Farming Mode, click the gear icon on the upper-right side of your client. The settings menu will appear. Click the desired mode. Note that in both modes, the light wallet protocol is always used. This protocol will sync your wallet by only downloading information from a subset of the blocks. The more transactions your wallet has had, the longer this process will require. The following are situations when your wallet will NOT connect to external peers: connect_to_unknown_peers = false is set in config.yaml, under wallet:. Your wallet is connected to a trusted node (typically this is your local host) AND that node is fully synced. For example, let's say you're running Chia for the first time and you have not modified connect_to_unknown_peers. Here is one potential workflow: Start the GUI and select Wallet Mode. Your wallet will sync by downloading relevant information from external peers. Change to Farmer Mode. Your full node will be started. Your wallet will continue to download relevant information from external peers. After your full node has synced, your wallet will automatically connect to your full node in order to stay synced. It will terminate its connections with external peers. Change to Wallet Mode. Your full node will continue to run in the background, and your wallet will remain connected to your full node in order to stay synced. Stop and restart Chia. You will return to Wallet Mode, and your full node will no longer be running. Your Chia client is now in state 2. Depending on how you are using your Chia client, we recommend the following: Casual users who are not farming or running a business such as a DEX can use Wallet Mode. Farmers need to run in Farming Mode. Anyone running a business, as well as anyone who frequently trades XCH or CATs, should do one of the following: Run in Farming Mode. Only transact when your node is fully synced. Set connect_to_unknown_peers = false. Run in either Wallet Mode or Farming Mode.","s":"What is the difference between Wallet Mode and Farming Mode?","u":"/faq/","h":"#what-is-the-difference-between-wallet-mode-and-farming-mode","p":1128},{"i":1245,"t":"There are two types of peer nodes -- trusted/known and untrusted/unknown. By default, your local node is your only trusted node. It is possible to add other nodes to the trusted list, for example if you personally run more than one full node. One reason to add a trusted node is to speed up the sync time of your light wallet. The light wallet protocol has two techniques to sync: If you have access to at least one trusted node that is fully synced, then your wallet will sync by downloading blocks only from your trusted node(s) Otherwise, your wallet will sync by connecting to, and downloading from, multiple untrusted nodes, and verifying that the information downloaded from each node is the same Typically, it is much faster to sync a wallet by connecting to a trusted node. Therefore, if you have access to a synced node that you trust, you may want to add that node to your trusted peers list. We recommend that you only add your own full nodes to this list. Prerequisites​ Chia needs to be version 1.3.0 or later on all computers Have a full node running on version 1.3.0 or later Steps to add a trusted node (peer)​ You'll need your trusted node's ID. From your trusted node, run chia show -s. Copy the value of Node ID, which will appear near the beginning of the output. For example: ~$chia show -s Network: mainnet Port: 8444 Rpc Port: 8555 Node ID: 0ThisisanexampleNodeID7ff9d60f1c3fa270c213c0ad0cb89c01274634a7c3cb9 Edit config.yaml. This file is located in ~/.chia/mainnet/config on Linux and MacOS, and C:\\Users\\\\.chia\\mainnet\\config on Windows. Search for the wallet: section. It should be near the end of the file. Edit the following values from within this section: connect_to_unknown_peers - Default is true; change it to false target_peer_count - Default is 3; change it to 1 (assuming you only have one trusted full node) trusted_peers Default is 0ThisisanexampleNodeID7ff9d60f1c3fa270c213c0ad0cb89c01274634a7c3cb9: Does_not_matter Change to : Does_not_matter Note 1: Replace with the actual Node ID you obtained above Note 2: It doesn't matter what you enter on the right side of the colon. The argument will be ignored. Just make sure to enter something Optional (this setting ensures the node is automatically used while starting the client) full_node_peer: the default host: is localhost. Change this to the IP address of the trusted full node (local IP if the node is on the same LAN and public IP if it is not). Note 3: The IP address can be found by reviewing your full nodes network connection information (local IP) or by searching \"What's my IP\" in your favorite search engine. Restart Chia on the computer you are connecting to the trusted node to pick up the changes. Note 4: If you did not add the full node peer in the optional step you will need to run chia peer wallet -a :8444 to manually connect to the node peer. To verify that the changes are working, run chia wallet show. The last line of the output should contain -Trusted: True","s":"What are trusted peers and how do I add them?","u":"/faq/","h":"#what-are-trusted-peers-and-how-do-i-add-them","p":1128},{"i":1247,"t":"This response will give a non-technical overview of Chia's light wallet syncing process. For technical info, see our docs site, as well as the FlyClient White Paper, which details the process from which Chia's light client is based. First, a bit about addresses in Chia. A single Chia wallet can use up to four billion (2^32) addresses. Hopefully, you won't need more than that! Using multiple addresses can help provide anonymity. Rather than having to sign up for a new account each time you want to receive money, you can simply click \"NEW ADDRESS\" and presto -- a new address appears. Additionally, each time you receive change from sending money, a new address is automatically generated. Your wallet keeps track of each of the addresses that have been used. As long as your wallet is synced, it always knows how much money you have. One important thing to remember is that your wallet addresses will always be generated in the same order. When you generate a \"new\" address, you're actually calculating the next address in the sequence. Your wallet doesn't know what the next address will be until it's generated, but the sequence will always be the same. For example, if you generate 50 new addresses (and write them down), and then install Chia on a new computer and import the same wallet, the first 50 addresses you generate will exactly match those from your original computer. Next, we'll introduce a setting called initial_num_public_keys. This setting is part of config.yaml, located in ~/.chia/mainnet/config on Linux and MacOS, and C:\\Users\\\\.chia\\mainnet\\config on Windows. The default value of this setting is 100. The majority of users should not change it. You can think of initial_num_public_keys as the number of future addresses to examine. It's a window that expands with time (and never contracts). Here's how it works: The first time you run Chia's software, your wallet will attempt to sync. It does this by checking the first address in the sequence. If that address has ever received money, your wallet will account for that transaction history and examine the next address, and so on. It would take a very long time to examine all four billion addresses, so your wallet will stop looking at some point. This is where initial_num_public_keys comes in. By default, your wallet will stop after it has examined 100 straight addresses that have never received money. If it examines 50 empty addresses and then finds a transaction on the 51st address, the number left to examine is reset back to 100. Because the addresses always appear in the same sequence, it will be rare to have even a single address without any transaction history. But there is one exception: if you click \"NEW ADDRESS\" twice, then one address will remain unused. If you click \"NEW ADDRESS\" 101 times without receiving money at any of those addresses, then you'll have 100 consecutive unused addresses in the sequence. Let's say you receive money at the 101st address. When your wallet attempts to sync, it will stop looking after the 100th blank address. Transactions from subsequent addresses will remain undiscovered, and your balance will be incorrect. The default setting for initial_num_public_keys is quite conservative -- it should be rare for anyone to click \"NEW ADDRESS\" more than 100 times without actually using any of those addresses. That said, you might have a legitimate reason to do this, for example if you're running an exchange. In that case, feel free to set initial_num_public_keys to a higher number, stop your wallet, delete your wallet database, and start your wallet again to begin a fresh sync. Why not set initial_num_public_keys to a higher number by default? Because it would take longer for your wallet to sync. Why not set it lower? If the default setting were 2, most wallets would likely still show the correct balance and the sync time would be faster. However, we set the default to 100 to prioritize showing the correct balance over syncing as fast as possible. How does your wallet know it has the correct info for each address? It polls one or more of its peers. These peers can be either trusted or untrusted, as explained in the previous question. By default, your own node is the only one you trust. If your node is fully synced, then your wallet only needs to query your node to determine your transaction history for each address. If your node is not fully synced, then your wallet will query a number of peers about this info. If any of them lie, omit info, or disconnect in the middle of a query, your wallet will know because the responses won't all match. If you believe your balance is incorrect, changing initial_num_public_keys is unlikely to fix the problem. If at all possible, you should sync a full node, stop Chia, delete your wallet database, and start Chia again. This time, Chia will sync based on your own node alone. If this is not an option, then resyncing from untrustred nodes might fix the problem as well.","s":"How does light wallet syncing work?","u":"/faq/","h":"#how-does-light-wallet-syncing-work","p":1128},{"i":1249,"t":"The Chia database (db) is located in the db/ directory inside the .chia/mainnet/ directory. The .chia/ directory will be found in your user's home directory. You will find the testnet database in the same db/ directory if you are using testnet. mainnet database filename: blockchain_v2_mainnet.sqlite testnet database filename: blockchain_v2_testnet11.sqlite Windows Systems​ info To show hidden files on Windows file explorer click View \\ Show \\ Hidden items C:\\Users\\ └─ .chia/ └── mainnet/ └─ db/ macOS and Linux Systems​ info To show hidden files on Mac finder click \"COMMAND\"+\"SHIFT\"+\".\" (period), on linux GNOME explorer click the carrot (small down arrow in top right) then select Show Hidden Files /Users/ └─ .chia/ └── mainnet/ └─ db/","s":"Where is the Chia blockchain database located?","u":"/faq/","h":"#where-is-the-chia-blockchain-database-located","p":1128},{"i":1251,"t":"Download the torrent file from https://www.chia.net/downloads/#database-checkpoint Use a torrent client to download the full db (I have used bittorrent and qbittorrent) Unpack/reassemble the torrent file that was downloaded (on windows I used 7zip, Mac and linux have built in tools that work for this) Move the db to the correct folder (~.chia\\mainnet\\db) and update the name to \"blockchain_v2_mainnet.sqlite\" (removing the date information in the name) Verify the config file (~.chia\\mainnet\\config\\config.yaml) has the correct value under the full_node section for database_path: db/blockchain_v2_CHALLENGE.sqlite (should only need to change the v1 to v2) Launch chia and wait for a bit (the height to hash and peers files need to be built so this can take upwards of 30 minutes)","s":"How do I use the Official Chia Blockchain snapshot torrent?","u":"/faq/","h":"#how-do-i-use-the-official-chia-blockchain-snapshot-torrent","p":1128},{"i":1253,"t":"The Chia blockchain database will continue to grow as new blocks are farmed creating the ever-growing need for additional space. In some cases this requires users to move their database to a different drive. warning We strongly urge using a fast ssd to store the blockchain database. Using a slow drive can create issues with maintaining sync with the network. Stop all chia processes. Locate the database file you want to move. Blockchain db: ~/.chia/mainnet/db/blockchain_v2_CHALLENGE.sqlite Wallet db: ~/.chia/mainnet/wallet/db/blockchain_wallet_v1_CHALLENGE_KEY.sqlite Note: CHALLENGE will either be mainnet or testnet based on your selected network. Note: KEY will be the fingerprint of your wallet. Copy the database file(s) you want to move to their new location. Update the applicable config.yaml parameters from the table below. Config file: ~/.chia/mainnet/config/config.yaml Database Config.yaml Parameter Default New Location Blockchain full_node: database_path: db/blockchain_v1_CHALLENGE.sqlite /db/blockchain_v1_CHALLENGE.sqlite Blockchain peer table full_node: peer_db_path: db/peer_table_node.sqlite /db/peer_table_node.sqlite Wallet wallet: database_path: wallet/db/blockchain_wallet_v1_CHALLENGE_KEY.sqlite /wallet/db/blockchain_wallet_v1_CHALLENGE_KEY.sqlite Wallet peer table wallet: wallet_peers_path: wallet/db/wallet_peers.sqlite /wallet/db/wallet_peers.sqlite Note: This information has been adapted from the Spacefarmers guide. info Chia versions 2.1.0 and newer no longer support the version 1 (v1) blockchain database. Please refer to the upgrade instructions if your database is version 1.","s":"How do I move the Chia blockchain database to another drive?","u":"/faq/","h":"#how-do-i-move-the-chia-blockchain-database-to-another-drive","p":1128},{"i":1255,"t":"Chia versions 2.1.0 and newer no longer support the version 1 (v1) blockchain database. There are two method for updating the database to version 2, either using the upgrade cli command or downloading the official database snapshot torrent. CLI command:​ Stop the chia client (this can be done while chia is running but stopping the client saves from any potential issues). Run the command chia db upgrade (you do not need the input or output paths if these are still default). Upgrade command context. This process will take some time and requires additional space as the v1 db is compacted into the v2 db which leaves the v1 db intact. Remove any -wal or -shm files that are present in the directory (these are temporary files that should only be removed when all chia processes are stopped). Verify the config file (~.chia\\mainnet\\config\\config.yaml) has the correct value under the full_node section for database_path: db/blockchain_v2_CHALLENGE.sqlite (should only need to change the v1 to v2) After the above completes start the chia client. If all loads up properly (might take ~5-10 minutes to load) then you can safely delete the v1 db found here ~\\.chia\\mainnet\\db\\blockchain_v1_mainnet.sqlite. Official torrent:​ Download the torrent file from the official database snapshot torrent. Use a torrent client to download the full db. Bittorrent is recommended but any torrent client will work. Unpack/reassemble the torrent file that was downloaded (on windows one can use 7zip, Mac and linux have built in tools that work for this). Stop all chia processes if you have not already. Move the db to the correct folder ~\\.chia\\mainnet\\db\\ and update the name to blockchain_v2_mainnet.sqlite (removing the date information in the name). Remove any -wal or -shm files that are present in the directory (these are temporary files that should only be removed when all chia processes are stopped). Verify the config file (~.chia\\mainnet\\config\\config.yaml) has the correct value under the full_node section for database_path: db/blockchain_v2_CHALLENGE.sqlite (should only need to change the v1 to v2). Launch chia and wait for a bit (the height to hash, sub-epoch, and peers files need to be built so this can take 5-10 minutes).","s":"How do I upgrade my version 1 blockchain database to version 2?","u":"/faq/","h":"#how-do-i-upgrade-my-version-1-blockchain-database-to-version-2","p":1128},{"i":1257,"t":"info This functionality was first made available in Chia version 2.2.0, in PR #17369. Special thanks to Felix Brucker for creating it! By default, when you start a Chia full node, it will attempt to connect to a random set of peers. This is normally fine, but there are some cases in which you might want to connect to the same peer(s) every time, such as if: You are a pool operator who wants to establish consistent groups of nodes to support your pool You are running a small, private testnet where all peers are known You are connecting to a larger testnet which nonetheless has an insufficient number of nodes to locate your first peer immediately upon starting a full node Steps to connect to the same full node peers: Edit your config file; the default location is ~/.chia/mainnet/config/config.yaml In the full_node: section, you should see the following line: full_node_peers: [] If you do not see this line, you can either add it manually, or rename your config file and run chia init to create a new copy, which will contain this line. Remove the square brackets ([]) and add add new lines with - host and port. Be sure to indent port, even though it does not have a hyphen. For example, to add two mainnet peers, use the following syntax: full_node_peers: - host: port: - host: port: Typically, will be either 8444 (for mainnet) or 58444 (for most testnets). note These are not trusted peers (for more info, see the question on connecting to trusted peers). Instead, these are normal peers that you happen to want to connect to on an ongoing basis. If you lose your connection to one of these peers, your node will automatically attempt to reestablish the connection.","s":"How can I connect to the same full node peers whenever I start Chia?","u":"/faq/","h":"#how-can-i-connect-to-the-same-full-node-peers-whenever-i-start-chia","p":1128},{"i":1260,"t":"A harvester can be thought of as a node that is an extension of your farmer. The harvester checks the plots and reports the results to the farmer, the farmer then submits the results to the blockchain. If setting up harvesters it is important to review the proper way to farm on many machines","s":"What is the difference between a Farmer and a Harvester?","u":"/faq/","h":"#what-is-the-difference-between-a-farmer-and-a-harvester","p":1128},{"i":1262,"t":"If you see plots in the Plots section of the Farm page in the GUI - your plots are being farmed. You will see challenges and proof attempts as they come through in the Last Attempted Proof section however you usually will not have a proof worth sending to the network due to the plot filter. You can additionally see the Total Size of Plots on the Farm view and it will tell you how much unique space is being farmed and statistically how long it should take - on average - to win a block. Also, your node needs to be synced for you to farm properly. In the GUI, check the Full Node page. On the cli, do chia show -s -c.","s":"How do I tell if I'm farming correctly?","u":"/faq/","h":"#how-do-i-tell-if-im-farming-correctly","p":1128},{"i":1264,"t":"No. You have 30 seconds to respond to challenges.","s":"Does it matter how fast my internet connection is?","u":"/faq/","h":"#does-it-matter-how-fast-my-internet-connection-is","p":1128},{"i":1266,"t":"ChiaCalculator.com does a good job at running the numbers. First, the bad news. Statistically, it would take multiple years to win a reward with a 10-TB farm. (\"So you're saying there's a chance...\") Now, the good news. You can join a pool and collect regular rewards, no matter your farm's size! See the Pool Farming page for more info.","s":"I have only 10 TB, will I ever win XCH?","u":"/faq/","h":"#i-have-only-10-tb-will-i-ever-win-xch","p":1128},{"i":1268,"t":"Farmers compute a plot filter based on the signage point, their plot id, and the sub-slot challenge - which are hashed together to create the plot filter bits. If the plot filter bits start with 9 zeroes, that plot passes the filter for that signage point, and can proceed. This disqualifies around 511/512 of all proofs of space on the network, for each signage point. There are 4608 * 2 or 9216 signage points per day so the average plot should pass the filter 18 times per 24 hours on average. Once a plot passes the plot filter it then competes for the best proof of space with every other plot that also passed that plot filter for that signage point. For reasons that aren't super simple to intuit, the only thing each plot is competing on is to have the best proof of space and thus the chances of getting a reward depend on total size of plots on the farm - even with the plot filter in place. As long as the plot passes the filter, and do not have any internal file errors, the plot will always be eligible to compete for the best proof of space. Moving the plot to another directory or server will not change its eligibility. Please note that the speed of your lookups when passing the plot filter should be below 5 and preferably below 2 seconds. When you actually win a reward, your drive will have to do more lookups than these, so it's important that the the lookups are happening fast.","s":"What is the plot filter and why didn't my plot pass it?","u":"/faq/","h":"#what-is-the-plot-filter-and-why-didnt-my-plot-pass-it","p":1128},{"i":1270,"t":"This means that your harvester did not respond to one or more signage points in time to be eligible to win a reward. However, if you miss fewer than 100 signage points per day, it is not a serious issue. On average there are 9216 signage points per day, or one every 9.375 seconds. If your harvester misses 9 signage points per day, then your farm was operational 99.9% of the time. This would be considered normal, even for a farm with a stable internet connection. If you are consistently missing more than 1% of the signage points, or around 100 per day, then it is probably worth investigating the cause. Some reasons your harvester might miss more than 100 signage points per day: Your harvester can't handle its required compute load -- typically this will happen if you are farming with compressed plots. However, even with uncompressed plots, if your harvester sometimes requires more than five seconds to perform its lookups, it may miss some signage points. See our plotting documentation for more info on how determine the maximum number of plots your harvesters can handle. Lost connections to peers -- check your peer count by clicking the FULL NODE icon in the upper right corner of your farmer GUI. If you only have a few peers, your local network might have a UPNP issue. See our question on obtaining more peer connections. Changed external IP address -- some ISPs will change the IP address of their customers frequently and without warning. This may be happening to your home network. Your ISP might be able to provide you with more info. Unfortunately, if this is happening, often the only recourse is to pay for a dedicated IP address. Changed internal IP address -- your home network might also have changed the IP address of your harvester(s). Your router's settings might provide you with more info. Temporary loss of internet -- you don't need a fast internet connection to run a Chia node. But you do need a stable one. If your local network loses internet connectivity for a few seconds, you might miss a signage point. Bad wifi connection -- we recommend that you run your farmer with a wired internet connection. If you need to use wifi, try to keep your farmer as close to your router as possible. While wifi tends to be consistent enough to run a Chia farm, if your farmer is in a different room than your router, you might occasionally miss a signage point.","s":"Why does my Chia farm say Missing signage points?","u":"/faq/","h":"#why-does-my-chia-farm-say-missing-signage-points","p":1128},{"i":1272,"t":"Yes you can. Please check the Pool Farming page.","s":"Can I join a farming pool?","u":"/faq/","h":"#can-i-join-a-farming-pool","p":1128},{"i":1274,"t":"This was our advice in 2020, long before the launch of mainnet. However, we no longer advise anyone to delete their winning plots. Some background: The consensus Chia originally used during the testnet phase contained the possibility of an attack where an attacker who could co-ordinate N deep from the tip of the chain could try to coerce a winning farmer to re-write a historical transaction block. However, before the launch of mainnet, the consensus was updated; this attack is no longer viable. See the link for more details.","s":"I have heard that it's recommended that a winning plot be deleted on mainnet?","u":"/faq/","h":"#i-have-heard-that-its-recommended-that-a-winning-plot-be-deleted-on-mainnet","p":1128},{"i":1276,"t":"No, your plots are virtually unaffected by the passage of time, aside from hardware errors. Even in the presence of bit flips due to aging hardware, plots remain mostly effective. The only cases where you would need to re-plot are: 1. if you are using solo plots (not NFT plots) and wish to join a pool (please see note below) or 2. if hardware speeds advance to the point of a certain k value becoming obsolete (e.g., k=32 becomes too fast to plot and we ban them, forcing you to replace them with k≧33 plots). For case 1., you are free to have any mix of solo plots and pool plots if you do not want to re-plot. For case 2., k=32 is not expected to become outdated until sometime between 2026-2031. Note on case 1: We have added a Pooling Protocol that replaces the hard-coded \"Pool Public Key\" of a plot, with a plotNFT's \"Pool Contract Address\" - more on this subject can be read here: https://docs.chia.net/pool-farming/#pooling-faq","s":"Do my plots \"wear out\" or \"go bad\"/\"go stale\" over time? Will I have to regularly re-plot?","u":"/faq/","h":"#do-my-plots-wear-out-or-go-badgo-stale-over-time-will-i-have-to-regularly-re-plot","p":1128},{"i":1278,"t":"It is unlikely, but it is possible. There are multiple reasons why this might be the case. The most common is that due to network delay, or drive speed delay (for example using a slow NAS), you missed the time for inclusion into the blockchain, which is 28 seconds. This time is from when the timelords create the signage points, to when the timelords infuse your block. Check to make sure that you are connected and synced to multiple peers, and that your quality lookup are fast (<2 seconds, definitely less than 5). Another reason might be that the signage point where you won did not get included into the blockchain. This can sometimes happen, since timelords may publish signage points that don't end up on chain.","s":"Is it possible to have a proof but not get a reward?","u":"/faq/","h":"#is-it-possible-to-have-a-proof-but-not-get-a-reward","p":1128},{"i":1281,"t":"To use the chia faucet or testnet11 faucet you will need to identify your Master Public Key (also referred to as the Public Key). You can use either the GUI or CLI to identify the Master Public Key by following these steps: GUI​ warning Never share your private / secret keys or mnemonics with anyone. These give access to spend funds from your wallet. In the top right corner select logout: Using the desired keys menu, select details: View and copy the Public Key to the field on the Faucet page: CLI​ warning NEVER share your private / secret keys or mnemonics with anyone. These give access to spend funds from your wallet. In order to view your keys from the cli, run chia keys show, optionally including the -f flag to show only the info for the key you just generated: From terminal (mac/linux) or powershell (windows) run chia keys show: chia keys show View and copy the Master Public Key to the field on the faucet page: Showing all public keys derived from your master seed and private key: Label: Demo Wallet Fingerprint: 2281896037 Master public key (m): 96ce91d974daa0990e6681ac2de3e3f49142f6b655a081817832265c143e658a6e60a5dec856f292f45fe2d04c7856f6** Farmer public key (m/12381/8444/0/0): a9e366b26f155491af9a903c0ed9717bfd09a71cbe283eeda825128fd7c6b9ac60e1608f9f008adcfbf66e233d5b4ce8 Pool public key (m/12381/8444/1/0): 9566fa434f342dd5f9380a6bfc59dd7d1abd22869a425a8ca09cf27200eaa6aad5bc8fc00db90af832eb8028b0c6e3f0 First wallet address: xch1kr3zf7dqw5q953ex6zt33lndj90q0zlh68404tsntnljthnwqs2qvjmwrg note For more security best practices please review the Securing Your Chia – How to Be a Hard Target blog article.","s":"How do I use the Chia faucet?","u":"/faq/","h":"#how-do-i-use-the-chia-faucet","p":1128},{"i":1283,"t":"The Wallets page in the GUI will display your receive address and provide an interface for you to spend your chia funds. You can also obtain a new wallet receive address any time you would like and those funds will all come to the same place as they are based on HD Keys. There is growing wallet functionality available on the command line. Try chia wallet -h. Wallet software also provides features related to CAT's, and trade offers. You can get a receive address on the cli with chia keys show.","s":"How do I send or receive a transaction?","u":"/faq/","h":"#how-do-i-send-or-receive-a-transaction","p":1128},{"i":1285,"t":"The coin (or UTXO) model is a Bitcoin-style transaction model which is also used in Chia. Your wallet keeps track of a set of coins, where each coin can be any amount of XCH. When spending a coin (making a transaction), you have to spend the entire amount, and split that coin into multiple outputs, called coin additions. One addition is to the recipient of the transaction, and the other one is to you, as change. The change usually goes to a new address, so you will not see it in your normal address on Chia explorer, but your wallet will keep track of it and include it in the balance. Each block in Chia is a list of removals (coins spent) and additions (coins created). There are no transactions in the blockchain, which is why you cannot lookup transactions in the block explorers.","s":"What is the Coin model?","u":"/faq/","h":"#what-is-the-coin-model","p":1128},{"i":1287,"t":"HD or Hierarchical Deterministic keys are a type of public key/private key scheme where one private key can have a nearly infinite number of different public keys (and therefor wallet receive addresses) that will all ultimately come back to and be spendable by a single private key.","s":"What are HD Keys?","u":"/faq/","h":"#what-are-hd-keys","p":1128},{"i":1289,"t":"Small reorgs in Chia are possible, though rare. In order to be confident that your transaction won't be reorged, you should wait around six blocks, or two minutes, after the first confirmation. More details are available in our consensus documentation.","s":"How many confirmations do I need to trust that a chia transaction is final?","u":"/faq/","h":"#how-many-confirmations-do-i-need-to-trust-that-a-chia-transaction-is-final","p":1128},{"i":1291,"t":"Try the following options: GUI may not be fully refreshed. Try the \"force reload\" option under View to force the GUI to refresh. It's possible the wallet DB may be corrupted. Deleting the wallet DB will resolve this, but will also cause you to lose any Offer history and you will need to setup your CAT wallets again. To delete your wallet DB follow these steps: Shut down Chia and all Chia processes, check the task manager to see if they are all shut down. Note that this will cancel running plots, so be careful. Restart your computer (if there are still running processes and you can't get those processes to quit) Delete the ~/.chia/mainnet/wallet/db folder Restart Chia","s":"Why is my wallet not synced? Why can I not connect to wallet from the GUI?","u":"/faq/","h":"#why-is-my-wallet-not-synced-why-can-i-not-connect-to-wallet-from-the-gui","p":1128},{"i":1293,"t":"Your pending transaction can take a few minutes if blocks are full. If it's not confirmed after a while, your pending transaction might be stuck. Try the following steps: Shut down your wallet and node Delete your wallet db files: located at ~/.chia/mainnet/wallet/db. This will require syncing up your wallet, but not your node. And then you can resubmit the transaction. Make sure you have upgraded to the latest version Start the application and wait for the wallet to sync up After your wallet is fully synced to the same height as the Full Node, your Wallet Balance will be correct. Known problem: After your wallet is resynced, any previous outgoing transaction will appear as incoming transaction at the block height you made the outgoing transaction.","s":"Why do I have a negative balance? Why is my pending transaction not confirming?","u":"/faq/","h":"#why-do-i-have-a-negative-balance-why-is-my-pending-transaction-not-confirming","p":1128},{"i":1295,"t":"Visit chia.net/buy-xch for instructions on buying Chia with USDS and offers using the Chia light wallet and Offers. There are also several exchanges that offer XCH. You can see a list of exchanges supporting XCH here. This list is for informational purposes only. It is up to the reader to do their own research on the best exchange for their needs.","s":"Where can I buy Chia?","u":"/faq/","h":"#where-can-i-buy-chia","p":1128},{"i":1297,"t":"If you were running the light wallet beta app (v1.2.11 dev 265) and you've upgraded to the latest beta (v1.2.12+), you can get your offer history and your CAT wallets back by following these instructions: Close the Chia app Check the following directory: ~/.chia/mainnet/wallet/db if it's not empty, then be sure to delete all the .sqlite files that match the key (e.g., blockchain_wallet_v2_mainnet_1123456789.sqlite) copy the file(s) from ~/.chia/standalone_wallet/wallet/db/blockchain_wallet_v1_mainnet_123456789.sqlite_new to ~/.chia/mainnet/wallet/db rename the file ~/.chia/mainnet/wallet/db/blockchain_wallet_v1_mainnet_123456789.sqlite_new to blockchain_wallet_v2_mainnet_123456789.sqlite launch the Chia app","s":"I was running the light wallet beta app and I upgraded to the latest beta and my offer history disappeared. How do I get that back?","u":"/faq/","h":"#i-was-running-the-light-wallet-beta-app-and-i-upgraded-to-the-latest-beta-and-my-offer-history-disappeared-how-do-i-get-that-back","p":1128},{"i":1299,"t":"This is because of the newly integrated light wallet client sync. The wallet will sync through the light wallet sync while the full node syncs up in the background. Once the full node is synced up, then the wallet will sync primarily through the local trusted full node.","s":"Why does the wallet tab tell me that it's synced, but when I look at the full node tab, it still shows that I'm syncing?","u":"/faq/","h":"#why-does-the-wallet-tab-tell-me-that-its-synced-but-when-i-look-at-the-full-node-tab-it-still-shows-that-im-syncing","p":1128},{"i":1301,"t":"If you've lost your offer history and want to cancel those offers but can't access them, then the only way to cancel the offer would be to send yourself a transaction with the CAT tokens that were part of the offer.","s":"I lost my offer history, and I have open offers. How do I cancel those offers since I can't access the open offers through the wallet?","u":"/faq/","h":"#i-lost-my-offer-history-and-i-have-open-offers-how-do-i-cancel-those-offers-since-i-cant-access-the-open-offers-through-the-wallet","p":1128},{"i":1303,"t":"The wallet no longer automatically adds unknown CATs wallets for CATs that may have been airdropped to your wallet. This is to help ensure that syncing doesn't slow down with all the additional CATs that could suddenly show up. It is recommended that you use a tail database to look up and add. We understand that this will add some extra work to know which CATs to add wallets for and set them up manually. We do hope to improve upon this experience Soon™","s":"Why don't new CAT tokens automatically show up in my wallet anymore?","u":"/faq/","h":"#why-dont-new-cat-tokens-automatically-show-up-in-my-wallet-anymore","p":1128},{"i":1305,"t":"This capability is available by using the ASSERT_BEFORE_* conditions, originally added in CHIP-14. In order to prevent the possibility of bricking a coin, you are recommended to use these conditions only in a coin's solution and not in its puzzle. See our documentation for more info.","s":"How can I make a coin that may only be spent until a certain timestamp or block height?","u":"/faq/","h":"#how-can-i-make-a-coin-that-may-only-be-spent-until-a-certain-timestamp-or-block-height","p":1128},{"i":1307,"t":"If you only installed Chia for the current user, the exe will be installed to the following location (be sure to replace with your actual user ID): C:\\Users\\\\AppData\\Local\\Programs\\Chia\\Chia.exe If you installed Chia for all users, then this is the location of the exe: C:\\Program Files\\Chia\\Chia.exe","s":"Where is the executable file to start the reference wallet GUI located on Windows?","u":"/faq/","h":"#where-is-the-executable-file-to-start-the-reference-wallet-gui-located-on-windows","p":1128},{"i":1309,"t":"In crypto parlance, \"dust\" refers to coins that have almost no value. In Chia, the smallest denomination is 1 mojo, or 1-trillionth of an XCH. Unsolicited coins of this value certainly count as dust, but even much larger coins, for example 1 million mojos, are still worth a fraction of a penny. Chia experienced its first \"dust storm\" in late 2021. The \"duster\" spammed the blockchain with millions of tiny coins, likely in an attempt to stress-test the network. Chia's blockchain is robust, so it continued without issue. However, many people ended up with thousands of dust coins in their wallets. This proved problematic. In version 1.2.x, wallets that had received tens of thousands of dust coins were unable to sync. The task of optimizing our wallet was a difficult one, but by version 1.3 we had made significant improvements, and these wallets could finally sync. However, sync times for dusted wallets were still measured in days, which was unacceptable. We continued making optimizations, and by version 1.5.1, a wallet with over 100,000 coins could sync within a few minutes. But we wanted to reduce those sync times even more. The dust filter is a new feature, added in version 1.6.0. It is activated whenever there are at least a certain number of unspent dust coins in the wallet. While activated, the filter ignores any coins considered \"dust\". Two new settings have been added to ~/.chia/mainnet/config/config.yaml in the wallet section: spam_filter_after_n_txs: 200 xch_spam_amount: 1000000 If you are upgrading an existing Chia installation, these settings won't be added automatically. In this case, you will need to either add them manually or delete config.yaml and run chia init to generate a new copy. The default settings essentially say, \"If my wallet contains more than 200 coins, ignore all coins after the first 200 that are worth less than 1 million mojos.\" Note that the filter is not applied for CATs or NFTs. You can modify these default values to support different functionality. For example: Disable the filter by setting xch_spam_amount to 0 (nothing is dust) Enable the filter regardless of your wallet's status by setting spam_filter_after_n_txs to 0 Consider coins to be \"dust\" only if they are smaller than 100 mojos by setting xch_spam_amount to 100 However, we believe the default settings will be sufficient for most users. Note that if the number of unspent coins in your wallet falls to 200 (by default) or lower, then the dust filter will be deactivated. This could happen if you spend or consolidate some of your coins.","s":"What is the dust filter?","u":"/faq/","h":"#what-is-the-dust-filter","p":1128},{"i":1311,"t":"If you have more than two hundred unspent coins (by default) in your wallet, the dust filter will be activated. Depending on which mode your wallet is using, your balance could show slight differences each time you sync. This is because the coins will not necessarily show up in the same order while syncing. The maximum difference in your balance is spam_filter_after_n_txs * xch_spam_amount. However, the actual difference will rarely be more than a few thousand mojos. There are three potential scenarios: Light wallet only (untrusted mode) -- Your wallet is syncing from multiple remote full nodes. Each time your wallet syncs, it will connect to a new set of nodes, so the coins might not show up in the same order. Different coins could be filtered, so your balance may be slightly different each time you sync. Synced full node (trusted mode) on multiple computers -- If you load the same wallet on different full nodes, the databases will be slightly different due to network latency. Even though the coins themselves all exist, they might not show up in the same order, so different coins could be filtered. In this case, your balance might be slightly different between the two computers. Synced full node (trusted mode) with one computer -- Your trusted database will be the same each time you sync, so the wallet balance will also be the same.","s":"Why is my wallet's balance inconsistent?","u":"/faq/","h":"#why-is-my-wallets-balance-inconsistent","p":1128},{"i":1313,"t":"This error can occur when attempting to send XCH, CATs, or NFTs. Unfortunately, the error is vague, so there is a bit of guesswork in determining the cause. In the future, we plan to make this error -- along with the recommended way to fix it -- more specific. Some of the potential causes include: You don't have enough money in your wallet. Double check your wallet's Total Balance. You have enough money, but one or more of your coins are locked. Chia uses the coin set model of accounting, where everything is a coin. If some of your coins are part of either a pending transaction or an Offer, they have been temporarily locked. In this case, your Spendable Balance is less than your Total Balance. In order to unlock these coins, cancel any pending offers and click Actions --> Delete Unconfirmed Transactions in your wallet's Summary panel. The CLVM cost of your transaction is greater than the maximum cost allowed. In order to add a Chia transaction to the blockchain, a certain amount of processing power is required. This is the transaction's cost. When sending a single coin or NFT to another wallet, the cost is low. However, if you are attempting to send hundreds of coins or dozens of NFTs in a single transaction, the total cost could be prohibitively high, thus triggering the error. One way to fix this is to break your large transaction into multiple smaller ones -- try sending only the amount indicated in the error message. Another fix is to combine your coins by opening a command prompt or terminal window and running chia wallet coins combine.","s":"Why does my wallet say Error Can't send more than xxxxxxxx mojos in a single transaction?","u":"/faq/","h":"#why-does-my-wallet-say-error-cant-send-more-than-xxxxxxxx-mojos-in-a-single-transaction","p":1128},{"i":1315,"t":"Unfortunately, no. However, to obtain the user-specified wallet names programmatically, you can use the chia keys label show CLI command. Another way to obtain this info is by connecting to the daemon over a websocket by using wscat: wscat -n --cert ~/.chia/mainnet/config/ssl/daemon/private_daemon.crt --key ~/.chia/mainnet/config/ssl/daemon/private_daemon.key -c wss://localhost:55400 From there, you can use the get_keys command, similar to the following example (the request_id can be any string): { \"ack\": false, \"command\": \"get_keys\", \"data\": {}, \"destination\": \"daemon\", \"origin\": \"client\", \"request_id\": \"43dc226cef76963ddd56c7068972947f373918c24b0fdf5bfa767a1340271da6\" } This command will return a payload with all of the pubkeys/fingerprints/labels -- private keys omitted. If you want the private keys included, pass \"include_secrets\":true in the data object. For example: { \"ack\": false, \"command\": \"get_keys\", \"data\": { \"include_secrets\": true }, \"destination\": \"daemon\", \"origin\": \"client\", \"request_id\": \"43dc226cef76963ddd56c7068972947f373918c24b0fdf5bfa767a1340271da6\" }","s":"Is there an RPC to list wallet names?","u":"/faq/","h":"#is-there-an-rpc-to-list-wallet-names","p":1128},{"i":1317,"t":"Edit ~/.chia/mainnet/config/config.yaml If xch_spam_amount doesn't exist, add it Set the value for xch_spam_amount to 0 (nothing is dust) Restart Chia","s":"How do I disable the dust filter?","u":"/faq/","h":"#how-do-i-disable-the-dust-filter","p":1128},{"i":1319,"t":"Starting in version 1.7.0, Chia's reference wallet will accept both 12- and 24-word mnemonics. This allows you to import a mnemonic from another wallet. Simply click IMPORT FROM 12 WORD MNEMONIC when importing your wallet. However, do keep in mind: Chia's reference wallet only allows you to import a 12-word mnemonic. It does not allow you to create a new 12-word mnemonic. Certain wallets use 12-word mnemonics that are not compatible with Chia's reference wallet. As far as we know, this only applies to the Pawket wallet, but there may be others as well. In the case of Pawket, you need to export a 24-word mnemonic from their app in order to use Chia's reference wallet. More info can be found on their FAQ page.","s":"Can I import a 12-word mnemonic seed phrase from another wallet?","u":"/faq/","h":"#can-i-import-a-12-word-mnemonic-seed-phrase-from-another-wallet","p":1128},{"i":1321,"t":"By default, Chia will update your receive address for every new transaction. This is done for privacy reasons -- it is more difficult to associate multiple transactions with the same wallet if each transaction uses a different address. However, there are some downsides to using multiple addresses: It can be more difficult to track the history of your own transactions. For example, block explorers cannot associate multiple addresses with the same wallet. (Note, however, that the reference wallet will show you a complete history.) Some wallets only search a limited number of addresses for a given key, so they may not display your full balance. Wallet performance can degrade after a large number of addresses have been used. This is because the wallet must search for transactions for each address in the derivation index. Starting in version 1.7.1, Chia's reference wallet will allow you to keep the same receive address with each transaction. If you change this setting, each of the above issues will be mitigated, at the expense of reduced privacy. To set up your wallet to reuse the same receive address: Edit ~/.chia/mainnet/config/config.yaml Search for reuse_public_key_for_change: If this parameter doesn't exist, you can add it manually. Under wallet: add the following two lines: reuse_public_key_for_change: '2999502625': false 2999502625 is a dummy fingerprint that is added by default. You will need to obtain your wallet's fingerprint actual by running chia keys show. For example, $ chia keys show Showing all public keys derived from your master seed and private key: Label: Testnet1 Fingerprint: 2104826454 Change the dummy fingerprint to your wallet's actual fingerprint, and update the value to true. For example, reuse_public_key_for_change: '2104826454': true If you wish to specify the behavior for more than one fingerprint, you can add additional fingerprints to new lines. If a fingerprint is not listed, the default value of false will be used. Restart Chia for the changes to take effect. Your wallet will now reuse the same receive address for every transaction. To verify that the same address is being reused: Run chia wallet get_address -f . Replace with the fingerprint you would like to test This command will give you the latest address for that fingerprint Run chia wallet send -f -t
-a 0.000000000001 -m 0.000000000001 --override. Some notes: Replace with fingerprint you used in step 1 Replace
with the address you retrieved from step 1 This command will send 1 mojo to your latest address, and attach a 1 mojo fee. Feel free to adjust these amounts accordingly. (You can also send money from the GUI.) The --override flag is needed because the amounts to send are considered unusual After the transaction has completed, run chia wallet get_address -f . You should receive the same address as you received in step 1. If you received a different address, reuse_public_key_for_change was not set to true for the specified fingerprint.","s":"How can I configure Chia to reuse the same receive address?","u":"/faq/","h":"#how-can-i-configure-chia-to-reuse-the-same-receive-address","p":1128},{"i":1323,"t":"Identical spend aggregation is a mempool feature that allows multiple different spend bundles to spend the same coin. It is being introduced in version 1.8.2. There are two requirements for identical spend aggregation to be successful: The puzzle of the coin being spent must not contain any AGG_SIG_ME or AGG_SIG_UNSAFE conditions Each of the spend bundles that spend the coin must have identical solutions for spending that particular coin In cases where both of these requirements are met, when a farmer creates a block, it will choose one of the identical spends from the mempool as the \"winner\", based on which transaction pays the highest fee-per-cost. The remaining copies of that spend will then be deduplicated against the winner (they will be aggregated into a single spend). Any announcements the coin makes will then be available for any other spend to assert within the same block.","s":"What is identical spend aggregation?","u":"/faq/","h":"#what-is-identical-spend-aggregation","p":1128},{"i":1325,"t":"In Chia versions prior to 1.8.2, two key features were not supported by the mempool: The ability of a transaction to spend the output of another mempool item (i.e. inter-transaction ephemeral spends) The ability to assert an announcement made by another mempool item (i.e. inter-transaction announcements) These features both would necessitate the creation of dependency graphs, which a farmer would need to solve (and ideally optimize) when creating a block. Regarding feature 1, the only ephemeral spends that are currently supported must come from the same spend bundle. Inter-transaction ephemeral spends are not yet supported as of version 1.8.2. Chia version 1.8.2 introduces identical spend aggregation, which addresses some of the use cases of Feature 2. Spends that make use of this feature are still restricted by the lack of AGG_SIG_* conditions, which means that anyone who needs to assert an announcement from an aggregated spend could also have spent the coin. However, this version brings Chia one step closer to offering full support for inter-transaction announcements.","s":"Which mempool feature does identical spend aggregation introduce?","u":"/faq/","h":"#which-mempool-feature-does-identical-spend-aggregation-introduce","p":1128},{"i":1327,"t":"This error message occurs when you submit a transaction that does not include a high enough fee, for example when the network is quite busy. Try submitting the transaction again with a higher fee (100 million mojos will generally suffice for standard transactions). For more details, see our mempool documentation.","s":"Why do I see INVALID_FEE_TOO_CLOSE_TO_ZERO in my log file?","u":"/faq/","h":"#why-do-i-see-invalid_fee_too_close_to_zero-in-my-log-file","p":1128},{"i":1330,"t":"Chia Offers enable a decentralized, peer-to-peer trading of assets on the Chia blockchain. For more information, see our: Technical reference document GUI (graphical user interface) tutorial Video - Offers GUI Demo CLI (command line interface) tutorial","s":"What are Chia Offers?","u":"/faq/","h":"#what-are-chia-offers","p":1128},{"i":1332,"t":"When you create an offer, coins are reserved to ensure that when the offer has been accepted and written on to the blockchain, the transaction can be completed. Chia's wallet will reserve the largest coin to fulfill an offer, and when that coin is reserved, it will lower the spendable balance by the total coin amount.","s":"After creating an offer file, why does my spendable balance differ more than the amount specific in the offer?","u":"/faq/","h":"#after-creating-an-offer-file-why-does-my-spendable-balance-differ-more-than-the-amount-specific-in-the-offer","p":1128},{"i":1334,"t":"To create smaller coins, send money to your own wallet in smaller denominations. For more info, see our reference doc.","s":"I plan on making many offers and I want to ensure that my coins aren't locked up?","u":"/faq/","h":"#i-plan-on-making-many-offers-and-i-want-to-ensure-that-my-coins-arent-locked-up","p":1128},{"i":1336,"t":"You should use this option if the offer file has left your computer. If you don't use this option, someone who sees your offer could still accept it. See our reference doc for more info.","s":"When canceling an offer, when should I check the \"cancel on blockchain\" checkbox?","u":"/faq/","h":"#when-canceling-an-offer-when-should-i-check-the-cancel-on-blockchain-checkbox","p":1128},{"i":1338,"t":"No, canceling on the blockchain ensures that your offer can no longer be fulfilled.","s":"If I cancel my offer on the blockchain, will other people be able to fulfill it?","u":"/faq/","h":"#if-i-cancel-my-offer-on-the-blockchain-will-other-people-be-able-to-fulfill-it","p":1128},{"i":1340,"t":"You should always check the ID of the asset(s) being offered before accepting any offers. First make sure you have a CAT wallet set up for the assets that you are trading for and are getting that information from a reputable source. Second, when you view the offer in the wallet, ensure the amounts and the CATs match up to what you are expecting. For more info, see our GUI tutorial.","s":"I'm accepting an offer, but it shows a Unknown CAT, what should I do?","u":"/faq/","h":"#im-accepting-an-offer-but-it-shows-a-unknown-cat-what-should-i-do","p":1128},{"i":1342,"t":"Once you've created the offer, you'll need to find someone who will take the other side of it. You can share your offers through the following methods: Send your offer file directly to another user Offerbin - an open marketplace for Chia Offers Offerpool.io - an open-sourced, decentralized offers database built on top of OrbitDB and IPFS dexie.space - a decentralized exchange for Chia offers supporting Chia tokens (CATs) and NFTs","s":"Where can I share my offers?","u":"/faq/","h":"#where-can-i-share-my-offers","p":1128},{"i":1344,"t":"You are probably running the wallet that comes installed with the full node. Be sure to download the standalone lightwallet here (and be sure not to install on the same machine as your full node). We will be integrating the new capabilities of the standalone light wallet into the full node so you can farm and use all the new features of the wallet Soon™.","s":"Why don't I see the offers option in my wallet?","u":"/faq/","h":"#why-dont-i-see-the-offers-option-in-my-wallet","p":1128},{"i":1346,"t":"Prices in cryptocurrencies fluctuate all the time. You can review any of the existing DEXes like Hashgreen or Offerbin to see what trading pairs are trading for in the open market. Alternatively you can find a reputable website that will give you the currency valuation for more popular and well known currencies like USDS.","s":"How do I know if I'm getting the right exchange value for an offer?","u":"/faq/","h":"#how-do-i-know-if-im-getting-the-right-exchange-value-for-an-offer","p":1128},{"i":1348,"t":"No, Offers are created and stored locally on each machine. Any accepted offers will only be seen by other computers through the transaction history list.","s":"Will my Offers sync across different Chia wallets on different machines?","u":"/faq/","h":"#will-my-offers-sync-across-different-chia-wallets-on-different-machines","p":1128},{"i":1350,"t":"Yes, the coin can be spent from another computer. Coins are reserved locally on the computer where the offer was created. If that coin is spent from another computer, then the offer will be canceled. In general, it is recommended that you don't use two machines to access the same wallet that offers are being made from.","s":"Can my coin be spent on another computer with a wallet that uses the same keys, even if I am running two wallets on two different computers and I have an open Offer on one computer?","u":"/faq/","h":"#can-my-coin-be-spent-on-another-computer-with-a-wallet-that-uses-the-same-keys-even-if-i-am-running-two-wallets-on-two-different-computers-and-i-have-an-open-offer-on-one-computer","p":1128},{"i":1352,"t":"Version 1.7.0 of the reference wallet uses a slightly different Offer format than previous versions. If your version of the reference wallet is older than 1.7.0, and the offer was created on version 1.7.0 or later, you will see Error 6. To fix this, download and install the latest version of the reference wallet and accept the same offer. You should no longer see the error.","s":"Why do I see Error 6 when attempting to accept an Offer?","u":"/faq/","h":"#why-do-i-see-error-6-when-attempting-to-accept-an-offer","p":1128},{"i":1355,"t":"Non-Fungible Tokens have become extremely popular in the last few years. This site gives a beginner-friendly explanation of what NFTs are.","s":"What are NFTs?","u":"/faq/","h":"#what-are-nfts","p":1128},{"i":1357,"t":"Chia NFTs make use of a unique feature: Offers. You may already have used Offers to trade XCH and CATs, but to summarize, they enable the trustless, peer-to-peer exchange of assets on Chia's ecosystem, with no involvement from central parties or intermediaries. And now you can use them to buy and sell NFTs, as well. Simply click the Offers button in your Electron wallet, then click \"Create an Offer\" and \"NFT Offer\". We'll have a more detailed guide that includes all of the options soon.","s":"How do I buy NFTs?","u":"/faq/","h":"#how-do-i-buy-nfts","p":1128},{"i":1359,"t":"The CLI commands for NFT offers are almost the same as those for CAT offers. The main difference is that you have to include the NFT singleton's value after the NFT ID (typically this is :1). For example, to make an offer, you can run: chia wallet make_offer -o 1:0.1 -r nft1g5gzj3hl9gdyrq83zveepf8wmeet8mxl8zutfyahs0wfkg9mcs9qepc4w5:1 -p test.offer -m 0.001 The result is: Creating Offer -------------- OFFERING: - 0.1 XCH (100000000000 mojos) REQUESTING: - 1 nft1g5gzj3hl9gdyrq83zveepf8wmeet8mxl8zutfyahs0wfkg9mcs9qepc4w5 (1 mojos) Offers for NFTs will have royalties automatically added. Are you sure you would like to continue? (y/n): y Confirm (y/n): y Created offer with ID 55314ee65db39c173de05873138440c48525eac39fd4a622fd766b3bb4ab02ff Use chia wallet get_offers --id 55314ee65db39c173de05873138440c48525eac39fd4a622fd766b3bb4ab02ff -f 2118200991 to view status To view your new offer, run the get_offers command that was output upon the offer's creation. Using the above example: chia wallet get_offers --id 55314ee65db39c173de05873138440c48525eac39fd4a622fd766b3bb4ab02ff -f 2118200991 The result is: Record with id: 55314ee65db39c173de05873138440c48525eac39fd4a622fd766b3bb4ab02ff --------------- Created at: 2022-07-12 11:27:17 Confirmed at: 0 Accepted at: N/A Status: PENDING_ACCEPT ---------------","s":"How can I make an NFT offer using the CLI?","u":"/faq/","h":"#how-can-i-make-an-nft-offer-using-the-cli","p":1128},{"i":1361,"t":"Continuing with the previous example, we can run the take_offer command from the wallet that owns the NFT: chia wallet take_offer test.offer Summary: OFFERED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) REQUESTED: - 45102946ff2a1a4180f1133390a4eede72b3ecdf38b8b493b783dc9b20bbc40a: 0.001 (1 mojo) Included Fees: 0.001 Would you like to take this offer? (y/n): y Accepted offer with ID 11abdc8b7bb241303d2f0c909860785e0e09a842fb6178bdf6527c99e37f3d35 Use chia wallet get_offers --id 11abdc8b7bb241303d2f0c909860785e0e09a842fb6178bdf6527c99e37f3d35 -f 757927417 to view its status Use the suggested command to view the offer's status: chia wallet get_offers --id 11abdc8b7bb241303d2f0c909860785e0e09a842fb6178bdf6527c99e37f3d35 -f 757927417 Record with id: 11abdc8b7bb241303d2f0c909860785e0e09a842fb6178bdf6527c99e37f3d35 --------------- Created at: 2022-07-12 11:41:50 Confirmed at: 1241919 Accepted at: 2022-07-12 11:41:50 Status: CONFIRMED","s":"How can I take an NFT offer using the CLI?","u":"/faq/","h":"#how-can-i-take-an-nft-offer-using-the-cli","p":1128},{"i":1363,"t":"Yes. Just as with XCH and CATs, you can send NFTs to an XCH address. If the recipient doesn't have an NFT wallet, one will be created automatically.","s":"Can I send an NFT to an XCH address?","u":"/faq/","h":"#can-i-send-an-nft-to-an-xch-address","p":1128},{"i":1365,"t":"As with buying NFTs, you can also sell them using Offers. Simply create an Offer in your Electron wallet, then send it wherever you want, including to our community galleries and marketplaces such as MintGarden, Dexie, and SpaceScan. If an Offer file is modified, then that copy is no longer valid. This means that you can share your Offers with confidence -- the only thing a \"thief\" can do with your Offer is accept it.","s":"How do I sell my NFTs?","u":"/faq/","h":"#how-do-i-sell-my-nfts","p":1128},{"i":1367,"t":"As of version 1.6.1, you can use the Offer Builder to construct an offer of any asset(s) for any other asset(s). This includes offering XCH, CATs, and NFTs on both sides of the offer.","s":"Is there any limitation to which assets I can offer?","u":"/faq/","h":"#is-there-any-limitation-to-which-assets-i-can-offer","p":1128},{"i":1369,"t":"A sale involves using an offer, which in turn requires an NFT to be exchanged for one or more assets. Any time you want to buy or sell an NFT, you will create or accept an Offer. Royalties are built into the NFT, so they will automatically be accounted for when the offer is created/accepted. A transfer is where you move an NFT from one address to another. No money is exchanged, and there are no royalties. The two main use cases for transferring an NFT are Moving an NFT to another wallet that you own Giving an NFT away for free","s":"What is the difference between a transfer and a sale?","u":"/faq/","h":"#what-is-the-difference-between-a-transfer-and-a-sale","p":1128},{"i":1371,"t":"No. You can send and receive NFTs from the same address you have used in the past. One caveat is that if you send an NFT to an address that is currently running on a pre-1.4 wallet, your wallet won't recognize the NFT. However, the NFT will be safely kept inside your wallet, and it will become accessible after you upgrade to version 1.4 or greater.","s":"Do I need a new wallet address in order to receive NFTs?","u":"/faq/","h":"#do-i-need-a-new-wallet-address-in-order-to-receive-nfts","p":1128},{"i":1373,"t":"If you are comfortable using a command line interface (CLI), then you can follow our dev guide to mint an NFT. If you prefer a browser-based minting tool, options include MintGarden and Omakasea ChiaNFT. Other community-developed marketplaces are listed on ChiaLinks.com.","s":"How do I mint an NFT?","u":"/faq/","h":"#how-do-i-mint-an-nft","p":1128},{"i":1375,"t":"Yes, but you need to use an RPC. If you use the CLI command, the comma will be interpreted as a delimiter -- two separate URLs will be created. However, even though URLs that include commas are generally not recommended, they should work with the RPC command. You don't even need to escape the comma or use extra quotes. But, as with all things NFT-related, you should test this functionality on the testnet before attempting it on mainnet.","s":"Can I mint an NFT with a URL that includes a comma?","u":"/faq/","h":"#can-i-mint-an-nft-with-a-url-that-includes-a-comma","p":1128},{"i":1377,"t":"On other blockchains, NFTs are typically custodied in a marketplace. This is akin to having an account with a company. The marketplace has a reputational motivation to keep your NFT safe and secure, but your NFT is still in their hands. Self custody means that you have control over your own assets. The same mantra of \"Not your keys, not your coins\" also applies to NFTs. When you self-custody your Chia NFTs, it means that they are controlled by your keys, and therefore they are your assets.","s":"What does it mean to self-custody an NFT?","u":"/faq/","h":"#what-does-it-mean-to-self-custody-an-nft","p":1128},{"i":1379,"t":"There are two components of a Chia NFT: on-chain and off-chain. On-Chain: An NFT is a special type of coin called a \"singleton\". It contains three lists of URIs, which link to: The NFT's data. This is typically an image file. The NFT's metadata. This is typically a JSON file containing information about the NFT. The NFT's license. This is typically a text file the spells out what rights the NFT's owner has. The URI lists can only be prepended to; existing URIs cannot be modified or deleted. For security purposes, each NFT contains a hash of the data represented by each of the corresponding URIs. The hashes can never be modified after minting. Off-Chain: The actual NFT image lives in at least one location online. It can be stored under any number of URI protocols, including (but not limited to) http, https, ftp and ipfs. Because Chia NFTs use a list of URIs (as opposed to a single one), the image can be stored in multiple locations. This is important for preserving an NFT's permanence because a single link could break. For high-end NFTs, you may even want to store the image offline. Why would you do this? Let's say each of the online links is broken. As long as you (or anyone else) has a copy of the image, you can upload it and add a new link to the NFT. As long as the image's hash matches the hash that's built into the NFT, the new image is guaranteed to be identical to the original, and therefore valid. It is for these reasons that we believe NFTs on Chia will have stronger permanence than on any other blockchain. The same rules apply for the metadata and license information. They can exist in multiple locations, but their hashes may not be modified after the initial minting. This prevents future owners from modifying this information, even though they can add new links. The metadata URI can provide a wide variety of information about the NFT, including its title, properties (eg - year created, attributes, colors used, etc), rankings (eg - power: 25 out of 100, etc), collection name, as well as series number (eg - 1 of 100). The NFT's minter is free to include whatever information they want at the time of minting. The NFT1 spec allows different metadata formats to be developed. At the time of this writing, almost all NFTs use CHIP-7, which allows marketplaces to parse the metadata more easily. The license URI can provide any relevant information concerning the NFT's license, such as who owns the Intellectual Property.","s":"Where does my NFT live?","u":"/faq/","h":"#where-does-my-nft-live","p":1128},{"i":1381,"t":"You can add new URIs to the data, metadata and license URI lists of any NFT you own. The new URIs will always be prepended to the list (added to the front of the list).","s":"Can I add new links?","u":"/faq/","h":"#can-i-add-new-links","p":1128},{"i":1383,"t":"Yes -- you can only add one link at a time. After the transaction has been processed, you can add another link.","s":"After the NFT has been minted, is there a limit to how many links I can add at a time?","u":"/faq/","h":"#after-the-nft-has-been-minted-is-there-a-limit-to-how-many-links-i-can-add-at-a-time","p":1128},{"i":1385,"t":"No. (Well, you can't have infinite data, but Chia doesn't enforce any limits.)","s":"Is there a limit to the total data size of the metadata?","u":"/faq/","h":"#is-there-a-limit-to-the-total-data-size-of-the-metadata","p":1128},{"i":1387,"t":"Chia doesn't enforce a limit. However, because the links are contained within the NFT, as you add links, the size of the NFT also grows. If you were to add thousands of links, the NFT would eventually grow so large, it wouldn't fit inside a block and would no longer be spendable. If you only wanted to add a few dozen links, you would not run into this limitation.","s":"Is there a limit to the number of links?","u":"/faq/","h":"#is-there-a-limit-to-the-number-of-links","p":1128},{"i":1389,"t":"On Chia's blockchain, everything is a coin. This includes XCH, CATs, and NFTs. Whenever any coin is spent, the original puzzle is revealed. Therefore, with NFTs, every link is posted on every spend.","s":"Are all the links posted on every spend, or only when adding them?","u":"/faq/","h":"#are-all-the-links-posted-on-every-spend-or-only-when-adding-them","p":1128},{"i":1391,"t":"You cannot modify or remove any existing URIs, or their corresponding hashes. This was a design decision to keep NFTs from being arbitrarily modified after their minting.","s":"Can I modify links?","u":"/faq/","h":"#can-i-modify-links","p":1128},{"i":1393,"t":"In Chia, all transactions within a single block are processed simultaneously. As long as your NFT makes it into a block, it will take the same amount of time as any other transaction to process. The only caveat is that NFTs have a higher CLVM cost than XCH transactions. Therefore, if the mempool is full, a higher fee will be required in order for an NFT to be included in a block. However, if the mempool is not full, then this caveat does not apply.","s":"Does an NFT transaction take longer than an XCH (or CAT) transaction?","u":"/faq/","h":"#does-an-nft-transaction-take-longer-than-an-xch-or-cat-transaction","p":1128},{"i":1395,"t":"If the mempool is not full, then no fee is needed. If the mempool is full, then in order for your transaction to be included into the next block, you'll need to add a fee of at least 5 mojos per cost. The recommended minimum fee in this scenario is: Minting an NFT with a DID: 615 million mojos Transferring/selling an NFT: 335 million mojos For other scenarios, see our NFT developer documentation.","s":"How much is the fee for minting/selling an NFT?","u":"/faq/","h":"#how-much-is-the-fee-for-mintingselling-an-nft","p":1128},{"i":1397,"t":"Then two separate NFTs will be created. They will have different IDs, but everything else will be identical.","s":"What happens if exactly the same nft mint command is executed twice?","u":"/faq/","h":"#what-happens-if-exactly-the-same-nft-mint-command-is-executed-twice","p":1128},{"i":1399,"t":"An NFT's royalty percentage and receive address may optionally be included in an NFT upon its minting. After the NFT has been minted, the royalty may never be modified. If an NFT includes a royalty, then every time the NFT is sold, the appropriate percentage of the sale will be paid to the royalty's receive address (typically the address of the original artist). The amount paid both to the new owner, as well as the royalty address, will be clearly displayed within the Offer. On other blockchains, royalties are paid at the discretion of the marketplace on which the NFT is custodied. On Chia, however, the royalties are built directly into the NFT. While under-the-table transfers could still circumvent royalties, they would also introduce counterparty risk for both the buyer and seller. In order to transfer a Chia NFT in a trustless manner, royalties must be paid.","s":"How do royalties work?","u":"/faq/","h":"#how-do-royalties-work","p":1128},{"i":1401,"t":"No -- there would be no fair way to assess royalties for NFT-for-NFT offers, so these are treated as swaps with no royalties being calculated.","s":"Are there any royalties when exchanging an NFT for another NFT?","u":"/faq/","h":"#are-there-any-royalties-when-exchanging-an-nft-for-another-nft","p":1128},{"i":1403,"t":"This depends on what assets are included in the offer. A few rules to keep in mind: If more than one NFT is being traded, the royalties will be divided by the number of NFTs. For example: If 4 NFTs are being traded for 1 XCH, then each NFT will have an assumed price of 0.25 XCH If the royalty for each NFT is 10%, then each NFT will receive a 0.025 XCH royalty, for a total royalty of 0.1 If the royalties are 10%, 8%, 5%, and 3%, then the NFTs will receive 0.025 XCH, 0.02 XCH, 0.0125 XCH, and 0.0075 XCH, for a total royalty of 0.65 XCH If the NFTs are being traded for more than one fungible asset, then the royalties will be calculated for each asset individually For example, if 1 NFT is being traded for both 1 XCH and 1000 SBX and it carries a 10% royalty, then the royalties shall be 0.1 XCH and 100 SBX for this sale If multiple NFTs are being traded for multiple fungible assets, then rules 1. and 2. will both be applied When NFTs are traded for other NFTs, no royalties are exchanged","s":"How are royalties calculated in offers that involve multiple assets?","u":"/faq/","h":"#how-are-royalties-calculated-in-offers-that-involve-multiple-assets","p":1128},{"i":1405,"t":"An NFT can include a maximum of one royalty address. However, because the royalty address can be any XCH address, the address can correspond to a smart coin that splits all royalties between multiple recipient addresses. See CHIP-8 for one potential implementation of split royalties.","s":"Can I use more than one royalty address?","u":"/faq/","h":"#can-i-use-more-than-one-royalty-address","p":1128},{"i":1407,"t":"No. Transfers are conducted without any royalties being paid.","s":"Are royalties paid upon transferring an NFT?","u":"/faq/","h":"#are-royalties-paid-upon-transferring-an-nft","p":1128},{"i":1409,"t":"Chia Friends was an airdrop of 10,000 NFTs. While Chia Network Inc gave these NFTs to 10,000 lucky recipients for free, they currently can be bought or sold just like any other NFT. All sales include a 3% royalty, which goes to the Marmot Recovery Foundation (here's their wallet address). For more information, see the Chia Friends website.","s":"What is the Chia Friends project?","u":"/faq/","h":"#what-is-the-chia-friends-project","p":1128},{"i":1411,"t":"No, these are two completely different projects. Chia Friends was an airdrop of 10,000 NFTs. While Chia Network Inc gave these NFTs to 10,000 lucky recipients for free, they currently can be bought or sold just like any other NFT. All sales include a 3% royalty, which goes to the Marmot Recovery Foundation (here's their wallet address). For more information, see the Chia Friends website. The Holiday 21 tokens were an airdrop of CATs for farmers who farmed a block in 2021. These tokens are redeemable for a Holiday NFT until November 10th, 2023. For more information please refer to our blog article about the Holiday NFTs.","s":"Is Chia Friends the same as the Holiday 21 token?","u":"/faq/","h":"#is-chia-friends-the-same-as-the-holiday-21-token","p":1128},{"i":1413,"t":"You sure can! The Marmot Recovery Foundation website lists a variety of ways to donate to the cause of saving the Vancouver Island marmot from extinction.","s":"Can I donate directly to the Marmot Recovery Foundation?","u":"/faq/","h":"#can-i-donate-directly-to-the-marmot-recovery-foundation","p":1128},{"i":1415,"t":"The Profile in your wallet is a Decentralized Identifier (DID). These can be used for tracking an NFT's provenance (history). Each NFT can be assigned to one DID. Though not strictly required, most NFTs will use DIDs for their added provenance. You can create a new DID by clicking the Settings button (the gear icon) in the lower left corner of Chia's Electron wallet.","s":"Why do I have a Profile in my wallet?","u":"/faq/","h":"#why-do-i-have-a-profile-in-my-wallet","p":1128},{"i":1417,"t":"No. NFTs can be left unassigned to a Profile.","s":"Do I need to have a Profile to own/trade an NFT?","u":"/faq/","h":"#do-i-need-to-have-a-profile-to-owntrade-an-nft","p":1128},{"i":1419,"t":"Our dev guide will walk you through creating DID and NFT wallets, minting an NFT, adding links and transferring your NFT, all using the CLI. In addition to the dev guide, we have a complete reference with all CLI commands for using DIDs and NFTs.","s":"How do I use the CLI for creating and using DIDs and NFTs?","u":"/faq/","h":"#how-do-i-use-the-cli-for-creating-and-using-dids-and-nfts","p":1128},{"i":1421,"t":"We also have a dev guide geared at using RPCs. For more details about each of our individual RPCs, see our reference for DIDs and NFTs.","s":"What RPC functionality is available for DIDs and NFTs?","u":"/faq/","h":"#what-rpc-functionality-is-available-for-dids-and-nfts","p":1128},{"i":1423,"t":"Chia's bulk minting tool allows you to mint 25 NFTs per block. If you attempt to mint more than this, you run the risk of your spend bundle sitting in the mempool for a long time. Additionally, if you don't use the bulk minting tool (or a similar tool), you can only mint one NFT per block.","s":"What limitations, if any, are there for NFTs on Chia's blockchain?","u":"/faq/","h":"#what-limitations-if-any-are-there-for-nfts-on-chias-blockchain","p":1128},{"i":1425,"t":"Unfortunately, fraud and outright theft are common in this space. If you take a few basic precautions, you'll have a much better chance of keeping your NFTs safe: Never give away your wallet's seed phrase. If anyone asks for it, they are attempting to scam you. When viewing an offer for an NFT, always check its provenance. The links to do this are located below the image when viewing it in an offer. An NFT's provenance is a complete record of its ownership history. This helps to verify that the NFT is authentic. Avoid directly sending someone money in exchange for an NFT. Use offers whenever possible. Occasionally, legitimate projects may require you to send them a token in exchange for an NFT, but the most secure way to buy and sell NFTs is with offers.","s":"Are there any security concerns I should consider?","u":"/faq/","h":"#are-there-any-security-concerns-i-should-consider","p":1128},{"i":1427,"t":"If your NFT is stolen, then unfortunately there's not much you can do, other than offer to buy it back from the thief or the current owner. This is why you should be extra diligent in avoiding theft in the first place, beginning with following the above tips.","s":"What recovery options are available if my NFT gets stolen?","u":"/faq/","h":"#what-recovery-options-are-available-if-my-nft-gets-stolen","p":1128},{"i":1429,"t":"Chia Network Inc has no ability to censor content on the Chia blockchain. However, the metadata schema that most NFTs use includes a \"sensitive_content\" object, with a default value of false. This flag will indicate to wallets and marketplaces whether the NFT contains any sensitive content, which they can then use in deciding whether to display the NFT.","s":"What is the stance on NSFW NFTs being created?","u":"/faq/","h":"#what-is-the-stance-on-nsfw-nfts-being-created","p":1128},{"i":1431,"t":"Starting in version 1.6.1, you can send and receive notifications to a specified puzzle hash. This will eventually enable us to support sending an offer to an NFT's owner without having to go through an exchange. This functionality is disabled by default. It includes two settings in the wallet: section of ~/.chia/mainnet/config/config.yaml: accept_notifications - a boolean to specify whether you want to allow notifications to be received. If this setting is missing, it will automatically be set to false. Set to true to receive notifications required_notification_amount - the amount (in mojos) you require to be sent with a notification in order to receive it. If this setting is not specified, the default of 10000000 (10 million) will be used In order to enable notifications, you can either add these settings manually, or rename config.yaml and run chia init. A new copy of config.yaml will be created which contains the new settings. Finally, you need to restart Chia for these settings to be picked up. Note that for version 1.6.1, messages are sent and received via an RPC only. This is a primitive that will be added to the GUI in a future release. For more information on sending and receiving messages, see our RPC documentation.","s":"How do I configure my system to send and receive notifications?","u":"/faq/","h":"#how-do-i-configure-my-system-to-send-and-receive-notifications","p":1128},{"i":1433,"t":"This process is documented under Example 2 of the send_notification RPC doc.","s":"How can I use the CLI to send an Offer notification to the owner of an NFT?","u":"/faq/","h":"#how-can-i-use-the-cli-to-send-an-offer-notification-to-the-owner-of-an-nft","p":1128},{"i":1435,"t":"From the CLI, you can use the chia wallet nft sign_message command. See our CLI documentation for more details. From the GUI, you can sign and verify messages from the ADVANCED tab in the Settings section. Note that as of February 2023, this has not been included in an official build yet. It is only available in the main branch of the chia-blockchain-gui repository. Eventually this will be added to an official build, but for now you can use it at your own risk. Click Settings, click on the ADVANCED tab, and click CREATE SIGNATURE: Click NFT, enter the message you want to sign, and click SIGN: The message details will appear. Copy these details to the clipboard or save them to a file: To verify a signature, click VERIFY SIGNATURE from the ADVANCED tab and enter the signature's details: If the signature is valid for the details you entered, you will receive a Valid message:","s":"How can I sign and verify a message with an NFT?","u":"/faq/","h":"#how-can-i-sign-and-verify-a-message-with-an-nft","p":1128},{"i":1438,"t":"MacOS 10.14 Mojave Windows 10 Ubuntu 18.04 (20.04 highly recommended) Raspberry Pi OS 64 or Ubuntu 20.04 for Pi/ARM64 (Not recommended for plotting or timelord) An SSD for storing the blockchain's database. A 256 GB model with 520 MB/s read/write speeds will work just fine and is available for around $30 USD (do not use an SD card as they are not fast enough)","s":"What are the minimum officially supported OS versions?","u":"/faq/","h":"#what-are-the-minimum-officially-supported-os-versions","p":1128},{"i":1440,"t":"Chia supports all versions of Python that have not reached their end-of-life. Starting with Chia version 2.0.0, the minimum version of Python supported is 3.8. See the official Python version list for more info.","s":"What versions of Python are supported?","u":"/faq/","h":"#what-versions-of-python-are-supported","p":1128},{"i":1442,"t":"Use the instructions below to verify Chia download integrity in a command line. Windows – Verify Checksum Run the following command: certutil -hashfile [location of file] SHA256 For example: certutil -hashfile C:\\Users\\%USERNAME%\\Downloads\\Setup-Win64.exe SHA256 macOS – Verify Checksum Run the following command: shasum -a 256 [location of file] For example: shasum -a 256 ~/Downloads/Setup-MacOS.dmg Linux – Verify Checksum Run the following command: shasum -a 256 [location of file] For example: shasum -a 256 ~/Downloads/chia-blockchain_1.1.7_amd64.deb","s":"How do I verify file checksum?","u":"/faq/","h":"#how-do-i-verify-file-checksum","p":1128},{"i":1444,"t":"A very high-end HDD might be fast enough, but we still recommend a $30 SSD, as stated above. It can be an external SSD, connected via USB. The database is always growing, but 256 GB should be sufficient until at least 1H 2024.","s":"Can I use a fast SAS HDD for storing the blockchain's database?","u":"/faq/","h":"#can-i-use-a-fast-sas-hdd-for-storing-the-blockchains-database","p":1128},{"i":1446,"t":"Raspberry Pi 4 is supported, but Pi 3 is not. Here are the instructions. This project requires a 64-bit OS. One can install and run harvesters, farmers, and full nodes on the Pi. Plotting on a Pi is feasible now with Chacha8 instead of AES, but the Pi isn't quick. Modern desktops and laptops plot in the 0.07 - 0.10 GiB/minute range and the Pi 4 plots at 0.025 GiB/minute. Pi is also not a candidate for Timelords or VDF clients...","s":"Can I run this on a Raspberry Pi 3 or 4?","u":"/faq/","h":"#can-i-run-this-on-a-raspberry-pi-3-or-4","p":1128},{"i":1448,"t":"If you use the GUI, it will migrate from release to release for you. For both the GUI and the command line, your keys are stored on OS specific keychains. If running services from the command line only, chia init will migrate your config.yaml and dbs - if appropriate - to the new version. Keys and plots made before Beta 8 are deprecated and useless.","s":"How do I upgrade and keep my keys and plots?","u":"/faq/","h":"#how-do-i-upgrade-and-keep-my-keys-and-plots","p":1128},{"i":1450,"t":"Windows users can run C:\\Users\\\\AppData\\Local\\Programs\\Chia\\Chia.exe (be sure to replace with the actual ID) to start the reference wallet GUI. This will also start a full node if that features has been enabled.","s":"Where is the executable file to start Chia's reference wallet on Windows?","u":"/faq/","h":"#where-is-the-executable-file-to-start-chias-reference-wallet-on-windows","p":1128},{"i":1452,"t":"For power users, it is possible to install Chia from source. In this case, you will run Chia from a virtual environment on the command line. However, most users will prefer to download a packaged installer from Chia's official download site. After installing with the packaged installer, you can run Chia from the command line by invoking the executable file. The easiest way to set this up is by running the alias command. The exact command needed depends on your OS: Chia setup Windows Linux MacOS (Be sure to use powershell and update to match the name of the user that installed Chia.) If installed just for your user: Set-Alias -Name chia \"C:\\Users\\\\AppData\\Local\\Programs\\Chia\\resources\\app.asar.unpacked\\daemon\\chia.exe\" If installed for all users: Set-Alias -Name chia \"C:\\Program Files\\Chia\\resources\\app.asar.unpacked\\daemon\\chia.exe\" Alias command is not needed, but you should still run the following: chia init --fix-ssl-permissions alias chia='/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia' chia init --fix-ssl-permissions To test your setup, run chia version. You should be shown the correct version. For example: chia version 1.6.1","s":"I installed Chia with the packaged installer. How do I run CLI commands?","u":"/faq/","h":"#i-installed-chia-with-the-packaged-installer-how-do-i-run-cli-commands","p":1128},{"i":1454,"t":"Linux & macOS Chia config: ~/.chia/mainnet/config/config.yaml Chia logs: ~/.chia/mainnet/log/ Windows Chia config: C:\\Users\\%USERNAME%\\.chia\\mainnet\\config\\config.yaml Chia logs: C:\\Users\\%USERNAME%\\.chia\\mainnet\\log\\","s":"Where are the config and log files stored?","u":"/faq/","h":"#where-are-the-config-and-log-files-stored","p":1128},{"i":1456,"t":"CLI You can use the CLI command chia configure --set-log-level INFO to set your log level to the useful INFO setting. Be sure to restart Chia after making settings changes. Config File In config.yaml you can set the level of detail for your logs. Look for this section in config.yaml. It’s useful to change the logger setting log_level from WARNING to INFO to get the detail needed to troubleshoot. logging:&id001 log_filename: log/debug.log log_level: INFO log_stdout:false","s":"How do I change the log level to show more detail?","u":"/faq/","h":"#how-do-i-change-the-log-level-to-show-more-detail","p":1128},{"i":1458,"t":"You can run grep (Linux, macOS) or Select-String (Windows) to search through your logs for relevant information. Linux & macOS cat ~/.chia/mainnet/log/debug.log | grep -i 'error' Windows Get-Content -Path \"~\\.chia\\mainnet\\log\\debug.log\" | Select-String -Pattern \"error\" Harvester log lookup examples​ The time it takes to do a proof challenge should be below 30 seconds. If you see higher times, something is wrong with your setup. Here are some example commands you can use to examine debug.log for problems. Linux & macOS tail ~/.chia/mainnet/log/debug.log | grep eligible Windows Select-String -Path \"~\\.chia\\mainnet\\log\\debug*\" -Pattern \"eligible\" Select-String -Path \"~\\.chia\\mainnet\\log\\debug*\" -Pattern \"Found [^0] proof\" Select-String -Path \"~\\.chia\\mainnet\\log\\debug*\" -Pattern \"Farmed unfinished_block\" Get-Content -Path \"~\\.chia\\mainnet\\log\\debug.log\" -Wait | Select-String -Pattern \"found\"","s":"How do I quickly search the log file for errors?","u":"/faq/","h":"#how-do-i-quickly-search-the-log-file-for-errors","p":1128},{"i":1460,"t":"Chia - depending on context, this can refer to Chia Network the company, the Chia software (Chia client), or the Chia blockchain chia - lowercase chia refers to the Chia token, XCH. Similarly, mojos are lowercase.","s":"What is the difference between chia and Chia (chia capitalization)?","u":"/faq/","h":"#what-is-the-difference-between-chia-and-chia-chia-capitalization","p":1128},{"i":1462,"t":"By default, Chia will install .crt certificates in ~/.chia/mainnet/config/ssl. If you are a .NET developer who is developing an application that connects to a full node, it is much easier to do this with .pfx certificates. This is because the TLS layer on Windows requires that the private key be written to disk (in a particular way). The PEM-based certificate loading doesn't do that, only PFX-loading does. We plan to add .pfx certificates by default in a future version of Chia. However, for now there is an easy workaround -- export the certificates to .pfx and immediately reimport them. The command to do this in c# is: cert = new X509Certificate2(cert.Export(X509ContentType.Pfx)) See this stackoverflow thread for more info. info This issue only affects developers of Windows .NET applications. It does not affect Chia users on Windows, nor does it affect users or developers on other Operating Systems.","s":"How can I use PFX certificates for .NET development on Windows?","u":"/faq/","h":"#how-can-i-use-pfx-certificates-for-net-development-on-windows","p":1128},{"i":1464,"t":"This is the Repository FAQ which focuses on how to use the software. We have released our Business Whitepaper that goes into details of both the tokenomics, the pre-farm, and our go to market strategy. Additionally you can review the Project FAQ.","s":"What are the plans for the project and what are its tokenomics?","u":"/faq/","h":"#what-are-the-plans-for-the-project-and-what-are-its-tokenomics","p":1128},{"i":1466,"t":"You should check out CONTRIBUTING.md in the repository but the quick answer is to please base your pull requests off the dev branch. The dev branch will only accept rebase merges or squash merges. You can help translate the application as well. Translating the GUI is especially useful and pretty easy to do with our Crowdin Chia-Blockchain-GUI tool.","s":"How can I contribute?","u":"/faq/","h":"#how-can-i-contribute","p":1128},{"i":1468,"t":"Gene uses an Electro-Voice RE20.","s":"What microphone is Gene using?","u":"/faq/","h":"#what-microphone-is-gene-using","p":1128},{"i":1470,"t":"No. Around the world, governments and banks cause problematic interactions that make banks difficult to trust, especially in volatile regions like Hong Kong, Venezuela Argentina or Lebanon. International payments, when they are available and work, are slow, expensive and insecure. International SWIFT wires often take 1-5 days. Correspondent banks often charge up to 3% and since the changes to banking since 9/11 and 2008, many countries have limited correspondent banks. International wire fraud losses are very large, and we have a better solution to mitigate these problems.","s":"Isn't the current international monetary system good enough?","u":"/faq/","h":"#isnt-the-current-international-monetary-system-good-enough","p":1128},{"i":1472,"t":"Identifier Publication AAC+17 Hamza Abusalah, Joël Alwen, Bram Cohen, Danylo Khilko, Krzysztof Pietrzak, and Leonid Reyzin. Beyond Hellman’s time-memory trade-offs with applications to proofs of space. In Tsuyoshi Takagi and Thomas Peyrin, editors, Advances in Cryptology - ASI- ACRYPT 2017 - 23rd International Conference on the Theory and Applications of Cryptology and Information Security, Hong Kong, China, December 3-7, 2017, Proceedings, Part II, volume 10625 of Lecture Notes in Computer Science, pages 357–379. Springer, 2017. BBBF18 Dan Boneh, Joseph Bonneau, Benedikt Bu ̈nz, and Ben Fisch. Verifiable delay functions. In Hovav Shacham and Alexandra Boldyreva, editors, Advances in Cryptology - CRYPTO 2018 - 38th Annual International Cryptology Conference, Santa Barbara, CA, USA, August 19-23, 2018, Proceedings, Part I, volume 10991 of Lecture Notes in Computer Science, pages 757–788. Springer, 2018. BBF18 Dan Boneh, Benedikt Bu ̈nz, and Ben Fisch. A survey of two verifi- able delay functions. IACR Cryptol. ePrint Arch., page 712, 2018. BDK+19 Vivek Bagaria, Amir Dembo, Sreeram Kannan, Sewoong Oh, David Tse, Pramod Viswanath, Xuechao Wang, and Ofer Zeitouni. Proof- of-stake longest chain protocols: Security vs predictability. 2019. BGK+18 Christian Badertscher, Peter Gazi, Aggelos Kiayias, Alexander Russell, and Vassilis Zikas. Ouroboros genesis: Composable proof-of-stake blockchains with dynamic availability. In David Lie, Mohammad Mannan, Michael Backes, and XiaoFeng Wang, editors, Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, CCS 2018, Toronto, ON, Canada, October 15-19, 2018, pages 913–930. ACM, 2018. BNPW19 Jonah Brown-Cohen, Arvind Narayanan, Alexandros Psomas, and S. Matthew Weinberg. Formal barriers to longest-chain proof-of-stake protocols. In Anna Karlin, Nicole Immorlica, and Ramesh Johari, editors, Proceedings of the 2019 ACM Conference on Economics and Computation, EC 2019, Phoenix, AZ, USA, June 24-28, 2019, pages 459–473. ACM, 2019. BP22 Mirza Ahad Baig and Krzysztof Pietrzak. On the existence of proof of space longest chain protocols (working title), 2022. 2022. Manuscript in preparation. CKWN16 Miles Carlsten, Harry A. Kalodner, S. Matthew Weinberg, and Arvind Narayanan. On the instability of bitcoin without the block reward. In Edgar R. Weippl, Stefan Katzenbeisser, Christopher Kruegel, Andrew C. Myers, and Shai Halevi, editors, Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, Vienna, Austria, October 24-28, 2016, pages 154–167. ACM, 2016. CP19 Bram Cohen and Krzysztof Pietrzak. The chia network blockchain. 2019. DFKP15 Stefan Dziembowski, Sebastian Faust, Vladimir Kolmogorov, and Krzysztof Pietrzak. Proofs of space. In Rosario Gennaro and Matthew Robshaw, editors, Advances in Cryptology - CRYPTO 2015 - 35th Annual Cryptology Conference, Santa Barbara, CA, USA, August 16-20, 2015, Proceedings, Part II, volume 9216 of Lecture Notes in Computer Science, pages 585–605. Springer, 2015. DKT21 Soubhik Deb, Sreeram Kannan, and David Tse. Posat: Proof-of-work availability and unpredictability, without the work. In Nikita Borisov and Claudia Diaz, editors, Financial Cryptography and Data Security - 25th International Conference, FC 2021, Virtual Event, March 1-5, 2021, Revised Selected Papers, Part II, volume 12675 of Lecture Notes in Computer Science, pages 104–128. Springer, 2021. DW13 Christian Decker and Roger Wattenhofer. Information propagation in the bitcoin network. In 13th IEEE International Conference on Peer-to-Peer Computing, IEEE P2P 2013, Trento, Italy, September 9-11, 2013, Proceedings, pages 1–10. IEEE, 2013. EFKP20 Naomi Ephraim, Cody Freitag, Ilan Komargodski, and Rafael Pass. Continuous verifiable delay functions. In Anne Canteaut and Yuval Ishai, editors, Advances in Cryptology - EUROCRYPT 2020 - 39th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Zagreb, Croatia, May 10-14, 2020, Proceedings, Part III, volume 12107 of Lecture Notes in Computer Science, pages 125–154. Springer, 2020. ES18 Ittay Eyal and Emin Gu ̈n Sirer. Majority is not enough: bitcoin mining is vulnerable. Commun. ACM, 61(7):95–102, 2018. FZ17 Lei Fan and Hong-Sheng Zhou. iching: A scalable proof-of-stake blockchain in the open setting (or, how to mimic nakamoto’s design via proof-of-stake). IACR Cryptol. ePrint Arch., page 656, 2017. GKL15 Juan A. Garay, Aggelos Kiayias, and Nikos Leonardos. The bitcoin backbone protocol: Analysis and applications. In Elisabeth Oswald and Marc Fischlin, editors, Advances in Cryptology - EUROCRYPT 2015 - 34th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Sofia, Bulgaria, April 26-30, 2015, Proceedings, Part II, volume 9057 of Lecture Notes in Computer Science, pages 281–310. Springer, 2015. GKR18 Peter Gazi, Aggelos Kiayias, and Alexander Russell. Stake-bleeding attacks on proof-of-stake blockchains. In Crypto Valley Conference on Blockchain Technology, CVCBT 2018, Zug, Switzerland, June 20-22, 2018, pages 85–92. IEEE, 2018. Hel80 Martin E. Hellman. A cryptanalytic time-memory trade-off. IEEE Trans. Inf. Theory, 26(4):401–406, 1980. Lew21 Andrew Lewis-Pye. Byzantine generals in the permissionless setting. CoRR, abs/2101.07095, 2021. LR21 Andrew Lewis-Pye and Tim Roughgarden. How does blockchain security dictate blockchain implementation? In Yongdae Kim, Jong Kim, Giovanni Vigna, and Elaine Shi, editors, CCS ’21: 2021 ACM SIGSAC Conference on Computer and Communications Security, Virtual Event, Republic of Korea, November 15 - 19, 2021, pages 1006–1019. ACM, 2021. Pie19a Krzysztof Pietrzak. Proofs of catalytic space. In Avrim Blum, editor, 10th Innovations in Theoretical Computer Science Conference, ITCS 2019, January 10-12, 2019, San Diego, California, USA, volume 124 of LIPIcs, pages 59:1–59:25. Schloss Dagstuhl - Leibniz- Zentrum für Informatik, 2019. Pie19b Krzysztof Pietrzak. Simple verifiable delay functions. In Avrim Blum, editor, 10th Innovations in Theoretical Computer Science Conference, ITCS 2019, January 10-12, 2019, San Diego, California, USA, volume 124 of LIPIcs, pages 60:1–60:15. Schloss Dagstuhl - Leibniz-Zentrum fu ̈r Informatik, 2019. PKF+18 Sunoo Park, Albert Kwon, Georg Fuchsbauer, Peter Gazi, Joël Alwen, and Krzysztof Pietrzak. Spacemint: A cryptocurrency based on proofs of space. In Sarah Meiklejohn and Kazue Sako, editors, Financial Cryptography and Data Security - 22nd International Conference, FC 2018, Nieuwpoort, Cura ̧cao, February 26 - March 2, 2018, Revised Selected Papers, volume 10957 of Lecture Notes in Computer Science, pages 480–499. Springer, 2018. PS17 Rafael Pass and Elaine Shi. The sleepy model of consensus. In Tsuyoshi Takagi and Thomas Peyrin, editors, Advances in Cryptology - ASIACRYPT 2017 - 23rd International Conference on the Theory and Applications of Cryptology and Information Security, Hong Kong, China, December 3-7, 2017, Proceedings, Part II, volume 10625 of Lecture Notes in Computer Science, pages 380–409. Springer, 2017. SNM+21 Caspar Schwarz-Schilling, Joachim Neu, Barnab ́e Monnot, Aditya Asgaonkar, Ertem Nusret Tas, and David Tse. Three attacks on proof-of-stake ethereum. IACR Cryptol. ePrint Arch., page 1413, 2021. SSZ15 Ayelet Sapirshtein, Yonatan Sompolinsky, and Aviv Zohar. Optimal selfish mining strategies in bitcoin. CoRR, abs/1507.06183, 2015. Wes20 Benjamin Wesolowski. Efficient verifiable delay functions. J. Cryptol., 33(4):2113–2147, 2020.","s":"References","u":"/green-paper-references/","h":"","p":1471},{"i":1474,"t":"How to Store a Permutation Compactly by Bram Cohen and Dan Boneh","s":"Additional Reading","u":"/green-paper-references/","h":"#additional-reading","p":1471},{"i":1476,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-primer/intro/","s":"1. Intro to Chialisp","u":"/guides/","h":"","p":1475},{"i":1478,"t":"In this video, Adam Kelly discusses announcements and oracles. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Announcements, Oracles","u":"/guides/announcements-oracles-video-series/","h":"","p":1477},{"i":1480,"t":"CHIA Your Code | +--------------------+ +----------+ Node RPC <---|-> | Specialized Wallet |<----->| Database | ^ | +--------------------+ +----------+ | | ^ ^ | | | | | | | v v | | +------------------+ Wallet RPC --|-------+ | State management | | +------------------+ | ^ | v User","s":"Basic structure of an app using chia","u":"/guides/application-structure-tutorial/","h":"","p":1479},{"i":1482,"t":"The app likely needs a connection to the chia RPC at least for now. A \"wallet\" type system is needed to track blockchain traffic so that the app's concept of the current state can be recovered from the same information that's represented in the blockchain and in order to keep the state presented to the end user consistent via the node API and a well designed set of arguments to the chialisp code. Coins touched in a block are available via the full node's get_additions_and_removals and the solutions via get_puzzle_and_solution. By checking out each block, it'll be possible to find specially formatted coin solutions and track them. The app needs at a minimum to allow the user to take actions in a comprehensible way, which means using a combination of the wallet and node's RPC API to Establish which public and private keys to use when interacting with coins on the blockchain via get_transactions, get_coin_record_by_name and get_private_key and the master_sk_to_wallet_sk function. Send transactions to the blockchain via push_tx. It's likely that the app won't be able to guarantee that it remains running for the full duration of the purpose of the code it deploys, therefore any state picked up from the blockchain should be stored in and retrieved from a local cache database. If more than one party is cooperating over the coin in question, then either an identifier picking out the coin in question needs to be sent out of band or something identifiable by the recipient needs to be embedded in the coin solution.","s":"Concerns for developing chia apps","u":"/guides/application-structure-tutorial/","h":"#concerns-for-developing-chia-apps","p":1479},{"i":1484,"t":"The CAT standard allows you to create fungible tokens on the Chia blockchain. This step-by-step guide will go through creating your own CATs. For info on how CATs are built at the Chialisp level, see our CAT primitive page. Alternatively, if you're looking for non-fungible tokens on Chia, check out our NFT guide.","s":"CAT Creation Tutorial","u":"/guides/cat-creation-tutorial/","h":"","p":1483},{"i":1486,"t":"Welcome to the world of CATs! We're excited to have you here, and we can't wait to see the creative ideas you come up with. This tutorial will help you jump right in and get started with issuing your own CATs. To minimize your risk of running into unexpected results, we recommend that you do following: Generate a new public/private key pair for each CAT you issue. Test thoroughly on testnet before issuing your CAT to mainnet. For any questions regarding this tutorial, head over to the #chialisp channel on our Discord chatroom, where there are lots of friendly folks who can help you.","s":"Introduction","u":"/guides/cat-creation-tutorial/","h":"#introduction","p":1483},{"i":1488,"t":"CAT denominations, as well as the rules behind issuance and melting, can take some getting used to. Here are a few things to keep in mind before you issue your CAT: Most Chia wallets choose to display their value in XCH. However, this is a purely cosmetic choice because Chia's blockchain only knows about mojos. One XCH is equal to one trillion (1,000,000,000,000) mojos. In a similar vein, Chia Network Inc. has made the design decision to map 1 CAT to 1000 mojos. This ratio will be the same for all CATs. caution Theoretically, it would be possible to set the CAT:mojo ratio to something other than 1:1000 for a specific CAT, but we strongly recommend against doing this. The Chia reference wallet will not support CATs with a ratio other than 1:1000. Additionally, if you created your own wallet with support for different ratios, users of this wallet would almost certainly be confused and accidentally spend too much or too little money, by multiple orders of magnitude. Please don't attempt this. The melt value of a single token is 1000 mojos. This remains true regardless of the token's face value or its circulating supply. A token's face value and its melt value are not necessarily correlated, let alone matched. With one XCH, you can issue 1 billion CATs. The face value of these tokens could be zero, or multiple XCH, or anywhere in between. This value is decided by the market -- it's worth whatever someone is willing to pay for it. The value of the tokens has nothing to do with the underlying XCH, other than their 1000-mojo melt value. These concepts are discussed in greater detail in our CAT primitive page.","s":"CAT Issuance Granularity","u":"/guides/cat-creation-tutorial/","h":"#cat-issuance-granularity","p":1483},{"i":1490,"t":"Cat issuance comes in two phases. First, you will test your issuance on a testnet. Once ready, you will issue on mainnet. For this tutorial, we'll use testnet11. Ensure that you have Python 3.7 or later by running: Linux/MacOS -- python3 --version Windows -- python --version Install the latest version of Chia's reference wallet. For more info, see our installation guide. Configure Chia to run on testnet11. For more info, see our testnet documentation. Start Chia's reference wallet GUI. The command you use will depend on your OS, as well as whether you used a binary installer or installed from source. If you need help, see the installation guide. When using the GUI, you have the option of running in Farming Mode or Wallet Mode. Both of these options will work for creating CATs. Farming Mode will be faster if you already have a synced full node, but this is not necessary for CAT issuance. info You can also run Chia's reference wallet from a command line if you prefer. Add a new wallet if you have not already done so. You will need to have a sufficient number of mojos for your CAT issuance and transaction fee(s). You can request some TXCH from the Testnet11 faucet. Before issuing a CAT, you will need to have a synced wallet, as demonstrated by the green checkmark inside the red circle in this image: Once you have a synced wallet and some TXCH, you are ready to run the CAT admin tool.","s":"Setting up your Chia Environment","u":"/guides/cat-creation-tutorial/","h":"#setting-up-your-chia-environment","p":1483},{"i":1492,"t":"Now we will set up the CAT admin tool, which will help you to issue your CATs: Linux/macOS Windows Your Linux installation may not come with Python's development tools installed by default. To be sure that these tools are installed, run: sudo apt-get install -y build-essential python3-dev Next, clone the tool's GitHub repository: git clone https://github.com/Chia-Network/CAT-admin-tool.git -b main --recurse-submodules Change to the admin tool's directory: cd CAT-admin-tool Create and activate a virtual environment: python3 -m venv venv . ./venv/bin/activate Install the prerequisites: python3 -m pip install --upgrade pip setuptools wheel Install the tool: pip install . Install chia dev tools: pip install chia-dev-tools --no-deps Install pytest: pip install pytest Next, clone the tool's GitHub repository: git clone https://github.com/Chia-Network/CAT-admin-tool.git -b main --recurse-submodules Change to the admin tool's directory: cd CAT-admin-tool Create and activate a virtual environment: python -m venv venv .\\venv\\Scripts\\Activate.ps1 Install the prerequisites: pip install --upgrade pip setuptools wheel Install the tool: pip install . Install Chia dev tools: pip install chia-dev-tools --no-deps Install pytest: pip install pytest note You might receive an error such as ERROR: Failed building wheel for CAT-admin-tool. This is likely safe to ignore. As long as you can run cats --help without errors, the tool has been installed properly. Your environment should be all set, but let's make sure: Run cats --help. You should get a usage statement. Run cdv --help. You should get another usage statement. Your environment is now set up and you are ready to start issuing CATs!","s":"CAT Admin Tool","u":"/guides/cat-creation-tutorial/","h":"#cat-admin-tool","p":1483},{"i":1494,"t":"To get started, you will create a single-issuance CAT. This is the default way to issue a CAT. It's also the simplest. It contains a TAIL that only allows the CAT to issue tokens once. note A TAIL is a Chialisp program that defines the rules for issuing and melting tokens. Learn more about the Token and Asset Issuance Limitations program. Single issuance CATs can NOT be melted. A CAT with a single-issuance TAIL will be useful for anyone who wants to create a token with a guaranteed fixed supply. First, figure out how many tokens you want to issue. Because creating a single token takes 1,000 mojos, you will multiply your supply by 1,000 to figure out how much TXCH (or XCH on mainnet) is needed. For example, if you want to issue 1 million tokens, you'll need 1 billion mojos (1/1000 of a TXCH/XCH). Take note of your Receive Address in the Chia GUI. (Alternatively, run chia wallet get_address from a terminal window.) You'll need this address for the next step. After confirming you are within the admin tool directory, run: cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to --amount -m --as-bytes --select-coin note We recommend that you include a fee with your transaction. This fee will ensure that your transaction is processed in front of any dust in the mempool. Whether you're running on testnet or mainnet, the recommended fee amount is 100 million mojos (-m 100000000). Even though you will run the cats command multiple times, the fee will only be applied once when the transaction is pushed to the network. The --select-coin flag will choose a coin from your wallet for issuing your tokens. The final line of the output will be Name: . You'll use the coin ID value in the next step. Run the same command again, this time removing the --select-coin flag and adding a new flag, --curry . It's very important to preface the coin ID with 0x here to make CLVM interpret the value as bytes and not a string. Here's the full command to run: cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to --amount -m --as-bytes --curry 0x` If everything's good so far, this command will give the following output: The transaction has been created, would you like to push it to the network? (Y/N) Enter Y. The output will be Asset ID: . Copy the asset ID value, which you will need in the next step. Meanwhile, the transaction to create your CAT is being pushed to the blockchain. Congratulations! You have issued your first CAT. You still need to tell your wallet about it, though. Next, jump to Add a CAT to Your Wallet.","s":"Creating a Single Issuance CAT","u":"/guides/cat-creation-tutorial/","h":"#creating-a-single-issuance-cat","p":1483},{"i":1496,"t":"Next we'll create a CAT capable of issuing tokens multiple times. This CAT uses a delegated TAIL, which is much more flexible than the previous one. As long as you sign a puzzle hash that you specify, you can issue new tokens using whatever TAIL you want. This allows for features such as rebate offers and distributed issuing and retiring of tokens. We'll set up this CAT to delegate the same TAIL we set up previously. What this means is that nobody else can issue new tokens until you allow it. Keep in mind that this is only one of many possible implementations of a delegated TAIL. First, figure out how many tokens you want to issue. Because creating a single token takes 1,000 mojos, you will multiply your supply by 1,000 to figure out how much TXCH (or XCH on mainnet) is needed. For example, if you want to issue 1 million tokens, you'll need 1 billion mojos (1/1000 of a TXCH/XCH). note Multi-issuance CATs can be melted with a custom spend bundle as described here. Just as with the Single Issuance CAT, we recommend that you include a fee with your transaction. This fee will ensure that your transaction is processed in front of any dust in the mempool. Whether you're running on testnet or mainnet, the recommended fee amount is 100 million mojos (-m 100000000). Even though you will run the cats command multiple times, the fee will only be applied once, when the transaction is pushed to the network. Run chia wallet get_address from a terminal window to get a new receive address. You will use this address shortly. Run chia keys show. Take note of your fingerprint and master public key. After confirming you are within the admin tool directory, run: cats --tail ./reference_tails/delegated_tail.clsp.hex --curry 0x --send-to -a -m --as-bytes --select-coin The --select-coin flag will choose a coin from your wallet to issue the CAT from. The final line of the output will be Name: . You'll use the coin ID in the next step. Now that you have a coin, you can create a full delegated TAIL. In our case, the TAIL it delegates will be of the single-issuance variety. Run cdv clsp curry ./reference_tails/genesis_by_coin_id.clsp.hex -a 0x Keep in mind the 0x before the coin ID is necessary. The result of this command will be a delegated puzzle, which you'll pass in as part of the solution to your main TAIL. Run the same command again, with the additional --treehash flag. This will give you the treehash of the puzzle you just created: cdv clsp curry ./reference_tails/genesis_by_coin_id.clsp.hex -a 0x --treehash Sign the treehash (you do not need 0x here) with the fingerprint you noted above by running this command: chia keys sign -d -f -t m -b The last two flags are for the path and bytes. Make sure the resulting public key corresponds to the fingerprint you just used. Copy the signature to use in the next step. Run the same cats command as above, but remove the --select-coin flag and add the --solution flag, passing in the delegated puzzle you just calculated. This must be surrounded by quotes and parenthesis and it must contain a solution, which we'll leave empty. Add the --signature flag as well: cats --tail ./reference_tails/delegated_tail.clsp.hex --curry 0x --send-to -a -m --as-bytes --solution \"( ())\" --signature This command will give the following output: The transaction has been created, would you like to push it to the network? (Y/N) Enter Y. The output will be Asset ID: . Copy the asset ID, which you'll need in the next step. Meanwhile, the transaction to create your CAT is being pushed to the blockchain. Because this CAT uses a delegated TAIL, you can issue more by re-doing step 1 from this section. After you run the “cdv rpc pushtx” command, the balance in your CAT wallet will increase according to the new issuance.","s":"Creating a Multiple Issuance CAT","u":"/guides/cat-creation-tutorial/","h":"#creating-a-multiple-issuance-cat","p":1483},{"i":1498,"t":"Switch to the Chia GUI. Within a few minutes, your balance should decrease by the number of mojos you spent issuing tokens (+ fees). It will not show up in your transaction history. Now you can add a wallet ID for your new CAT. In the lower left corner, click MANAGE TOKEN LIST: The first few tokens listed will be there by default (Marmot, Spacebucks, etc). At the end of the list, you should find your CAT's asset ID. Feel free to rename your CAT, and click the slider to add a new wallet with that CAT: You will now see your token in your wallet with the full issued quantity. As a reminder, this should be the number of mojos spent divided by 1,000 (as each CAT token requires 1,000 mojos to issue). You now have access to your CAT in the GUI. You can send and receive your new tokens just like you would with regular XCH.","s":"Add a CAT to Your Wallet","u":"/guides/cat-creation-tutorial/","h":"#add-a-cat-to-your-wallet","p":1483},{"i":1500,"t":"When you spend one or more CAT coins, you provide an Extra Delta in the solution, which is essentially by how much the supply is changing. If it's positive, you're increasing the supply. And if it's negative, you're melting the CAT away. When the Extra Delta is non-zero, you have to run the TAIL program, which describes the rules for when you are allowed to change the supply. Single issuance CATs cannot be melted because the TAIL only allows being run if the coin has a specific parent. In other words, the supply can only be set once, and never modified thereafter. For multi issuance CATs, you need to sign with the issuance key in order to authorize the supply change, and therefore it does support melting. You reveal and run the TAIL by outputting the following condition from the inner puzzle's spend: (list CREATE_COIN () -113 ) The documentation for this Extra Delta concept can be found here. This is an example of melting a CAT from Rigidity's wallet SDK. In this example, you start with a supply of 10000, use an extra delta of -3000, reveal the TAIL and output a new CAT with the remaining supply of 7000. Here is another example of melting a CAT from Irulast's chia crypto utils.","s":"Melting a CAT","u":"/guides/cat-creation-tutorial/","h":"#melting-a-cat","p":1483},{"i":1502,"t":"After you are comfortable with issuing your CAT on testnet, you may wish to move to mainnet. Please keep in mind that there are extra risks inherent to publishing code on a public blockchain. If your seed phrase is ever exposed, your funds could be stolen. If you created a custom TAIL, there is a possiblity of funds being bricked. Proceed with caution. That said, issuing a CAT to mainnet isn't very different from issuing one to testnet. You can continue to use the light wallet, or a full node if desired. When you are ready to issue your CAT to mainnet, the first step is to switch to mainnet. chia configure -t false The second step is to generate a new key pair and store the mnemonic in a secure manner. You can generate your key by clicking Add Wallet and Create New from the Wallet Keys login screen of the GUI. This will work in the same manner as earlier for our testnet CAT. danger We recommend the new keypair being used exclusively for the CAT ownership. The key pair you are about to use will control the issuing and retirement of these tokens forever. If the private key were ever compromised, an attacker could issue new tokens and melt any they owned into regular XCH. The only way to nullify an attack would be to keep track of illegitimate issuances (luckily all of this is fully visible on the public ledger), issue a new CAT, and then offer an exchange of legitimate old CATs for the new CAT type. This would be a complex and time-consuming process that would likely result in people being sold counterfeit CATs at some point. It's very important to keep your private key secret. tip You can generate keys from the CLI as well. Use chia keys show to see your available keys. Take note of their fingerprint as you will want to not use an existing key. Generate a key with chia keys generate, followed by chia keys show --show-mnemonic-seed to reveal the 24 words. Copy your new key pair's mnemonic seed (24 secret words) to a secure offline location. These 24 words are all you'll need to restore your wallet in the future. Finally, you can go through the same process to create a CAT now using real XCH on mainnet.","s":"Preparing for Mainnet","u":"/guides/cat-creation-tutorial/","h":"#preparing-for-mainnet","p":1483},{"i":1504,"t":"Congratulations! You've created your first CAT. What now? Well, hopefully you can share your CAT with the world and get some traction. In the meantime, you can learn more about the Single Issuance TAIL and Multi Issuance TAIL. This guide was for fungible tokens. Now you can learn about non-fungible tokens.","s":"Conclusion","u":"/guides/cat-creation-tutorial/","h":"#conclusion","p":1483},{"i":1506,"t":"CAT1 reached its end of life at block 2,311,760, which occurred on July 26, 2022 at around 17:00 UTC. This was the final block where CAT1 was valid. At this block height, a snapshot was taken of all CAT1 tokens, along with the addresses of where they were being held. CAT1 issuers are now able to issue new CAT2 tokens and airdrop them to the same addresses where the CAT1 tokens were held. Chia version 1.5.0 was released on July 26, 2022. Since then, CAT1 tokens are not shown in the wallet. Users will only see the newly-issued CAT2 tokens, which will be identical in value to their CAT1 equivalents. Are you a CAT issuer? Check out the Snapshot Generation guide to get started with issuing your CAT2 tokens.","s":"CAT2 Intro and FAQ","u":"/guides/cat2-intro/","h":"","p":1505},{"i":1509,"t":"What is a CAT?​ A CAT is a Chia Asset Token. CATs are fungible tokens that are issued on the Chia blockchain. The CAT1 standard was finalized in January 2022. You can read more about the CAT primitive. Some examples of CATs include Stably USD (USDS), Spacebucks (SBX), and Marmot (MRMT). Why were CATs transitioned to CAT2?​ The CAT standard was upgraded to CAT2 based on a security vulnerability found by an outside security audit. This resulted in an upgrade to the latest Chia wallet app as well as updates that will require all original issuers of CAT1 tokens to reissue their tokens on the CAT2 standard and end-of-life support for CAT1. Chia is working with community members to make this process as seamless as possible. Does this change impact Chia Network's security?​ No. There is no threat to the security of Chia Network technology or the Chia Blockchain. The update patched the vulnerability to CAT1. When does the end of life of CAT1 happen?​ The end-of-life block height is 2,311,760 which is on July 26, 2022 at approximately 17:00 UTC. This is when the snapshot was taken. How can I check my CAT1 balance at the time of the snapshot?​ Go to cat1.chia.net and provide your pubkey to see the CAT balances that will be airdropped to you when they get re-issued. Does everyone have to upgrade?​ We recommend that all CAT (including USDS) holders upgrade to 1.5 as soon as is convenient. The CAT1s that are visible on 1.4 and earlier versions will no longer be supported after the end-of-life block (2,311,760). If you do not own any CATs (for example, if you are a farmer who does not exchange XCH for USDS or any other CAT), then you don't need to upgrade. Do I need to upgrade my harvesters?​ This update only affects the wallet software, so you don't need to update your harvesters. Are my NFTs or XCH at risk?​ No. NFTs and XCH are not affected by the vulnerability, so no changes are required for them. Is there any risk that I'll lose money or my balance will be incorrect during the transition? If so, what do I do?​ If you have any CATs in your wallet, you will want to upgrade to 1.5 as soon as convenient and be sure not to transact with any CATs after the end-of-life block height (2,311,760) has been reached and until you have upgraded to 1.5. This will help ensure that the balance you are expecting is what will be airdropped to you when the CATs are reissued. The CAT1 website accurately reflects the CAT1 balance of your wallet as of the end-of-life announcement. It will not dynamically update, but we expect the reissuance process to take approximately a week to fully complete, so the CAT2 balance in your wallet may differ from the CAT1 website balance until the process is complete. Between the announcement and the end-of-life block height, what should I be doing as a user?​ It is recommended that you: Cancel any open CAT offers on-chain in your wallet Do not accept any CAT offers in your 1.4 or lower wallet Make note of your current CAT1 balances Upgrade to the latest Chia wallet app (1.5.0 or higher) when it becomes available How can I be sure that I've canceled all my open offers?​ Most importantly, you will want to make sure there are no outstanding offers to trade your XCH for someone else's CATs. In addition to canceling the offers in your wallet, you can also send your total balance of XCH to yourself. Due to the Chia coinset model, this will ensure that all XCH coins will no longer be available should a rogue or forgotten offer be accepted. I lost money by transacting, what do I do now?​ Unfortunately, any CAT1 transactions that happen after the end of life block height won't be recoverable. For further confirmation, please contact our support team so they can help with checking when the transactions occurred and can help determine if the money is lost or not. Do I need to cancel my XCH-for-NFT offers?​ No. Only CAT1 tokens are affected. No changes are being made to NFTs. However, if you have an open CAT-for-NFT offer, then you should cancel it. How can I trust that all of my currency will be transferred appropriately?​ You can check your CAT1 balance as of the snapshot through our website using your public key. We are providing tools and support to the community developers to help ensure that they can reissue the new CATs in a timely manner. All CAT reissuers will be going by token balances at the same end-of-life blockheight. What happens to my CAT1s?​ Your existing CAT1 tokens still exist on the blockchain, but they are no longer of use as everyone upgrades to CAT2. You will be airdropped CAT2 to replace your CAT1 based on your balance as of block height of 2,311,760. Once you upgrade to 1.5, you will no longer see any balances for your original CATs. How long will it take for me to get all my tokens airdropped to me?​ This will depend on when the original issuers re-issue their tokens based on the new CAT2 standard. We hope that it is soon after the CAT1 EOL date. It is recommended to follow social media or Discord for CAT projects so you can hear firsthand when to expect the airdrops. What happens if I have a transaction with a CAT1 token after the block height snapshot?​ You will only be airdropped the balance of the tokens at the time the snapshot is taken. Any transactions that occur after the snapshot will not be accounted for in the airdrop provided to you. How can I trust that all of my currency will be transferred appropriately? Is there any risk that I'll lose money or my balance will be incorrect during the transition? If so, what do I do?​ Your CAT1 tokens won't be transferred. Instead, you will be given an identical (in value) set of CAT2 tokens. The blockchain already contains a complete record of all coins in the coinset. We have developed a tool that will use the blockchain to calculate a complete snapshot of CAT1 tokens. This snapshot will be accurate as of CAT1's end-of-life block. However, the CAT1 issuers do need to perform a complete airdrop of CAT2 tokens. If the airdrop is not completed, or even started, then there is a risk that you will not receive your upgraded CAT2 tokens. In this case, you should ask the issuer to make the upgrade.","s":"General","u":"/guides/cat2-intro/","h":"#general","p":1505},{"i":1511,"t":"I am the issuer of a CAT1 token. What should I do?​ Follow the Snapshot Generation guide, which will guide you through the process of reissuing your token as a CAT2.","s":"CAT Issuers","u":"/guides/cat2-intro/","h":"#cat-issuers","p":1505},{"i":1513,"t":"I upgraded to 1.5, but I don't see any of my tokens yet. Did I do something wrong?​ No, you didn't do anything wrong. The Chia Wallet app, as of 1.5, only shows you your XCH, and CAT2 balances. As not all CATs will be re-issued immediately, when your CAT2s show up in your wallet is dependent on when original issuers issue their updated CAT2s. The balance of my airdrop in my wallet doesn't match the balance that the website shows me, what should I do?​ First, please consult the CAT1 balance website to view your historical CAT1 balances. We expect the full reissuance process to take approximately a week to complete. If your CAT2 balances in the 1.5.0 wallet do not match the CAT1 historical reference, then check what your wallet derivation index is at and compare it to the derivation index shown in the balance on the Tokens screen. If the derivation index in your wallet is less than the highest derivation index found on the website, you will want to update the derivation index in the wallet. To do so, go to Settings -> Derivation index and type in the number that you get from the cat1.chia.net website. I've tried all the recommendations, but the reissuer didn't get my wallet balance correct. What should I do?​ After trying all the above steps and at least a week has passed since the announcement and your CAT2 airdropped balance still doesn't match, then we recommend reaching out directly to the reissuer of the relevant CAT1 token. How do I cancel my open offers to exchange CATs?​ From the Chia Wallet GUI: Go to the Offers tab in the left hand navigation Find all Offers you created that show a status of Pending Accept Click on the three dots under Actions Click on Cancel Offer Ensure the Cancel on blockchain option is selected Enter a fee (optional, but recommended) Click on Cancel Offer From the Chia Wallet command line: Run chia wallet cancel_offer along with the parameters needed to cancel any open offers. Run chia wallet cancel_offer -h to see the relevant help output. After upgrading to 1.5, I've lost all of my wallet transaction history. How do I access my previous transaction history with CATs or XCH?​ After upgrading to 1.5, a new wallet database is created to preserve any previous copies of wallet DBs. You can install a previous version of the Chia wallet app, and that older client will look for your previous wallet db and display the transaction history for XCH, CATs, and NFTs that occurred in that wallet before upgrading to 1.5 How do I know when the updated tokens have been airdropped to my wallet?​ You should follow the projects for the tokens that you own so you can be notified when they have begun running the airdrops. You can also monitor your Chia wallet app, and look under the \"Manage token list\" to see if a new CAT2 has been airdropped to you. Why doesn't the balance in my wallet match the balance reported on the website?​ Get the Derivation Index from the website and update the derivation index in the Chia wallet app. This will ensure the balance reported on the website matches up with the balance in your wallet. What is a \"Derivation Index\"?​ The derivation index is a numeric value that is used to track how many wallet addresses have been used based on the most recent transaction. This helps establish a window for which wallet addresses to scan for on the blockchain to find all possible coins owned by a specific wallet. Why do I see multiple tokens with the same value in my 1.5 wallet?​ It is possible that you have received multiple identical airdrops from different parties. Only one of them will be the real CAT2 token. To determine which one is real, click \"MANAGE TOKEN LIST\" and click \"Search on Tail Database\". Only the original CAT1 issuer will be allowed to register their CAT2 equivalent on Tail Database, so you should use it as the source of truth for naming your CAT2 tokens. Who can I contact if I have any problems or questions?​ The Chia Network Support Team is available to answer questions and provide assistance through this process in the official Support Discord.","s":"Chia App","u":"/guides/cat2-intro/","h":"#chia-app","p":1505},{"i":1515,"t":"How do I find the pubkey to enter into the website?​ From the Chia Wallet GUI: Go to the \"Select Key\" screen and click on \"See private key\" Copy the public key from the list of keys available From the Chia Wallet command line: Run chia keys show Copy the master public key from the list of keys available I checked the website (cat1.chia.net) and I don't see any tokens for my wallet, but there should be. What can I do?​ Confirm the pubkey you entered into the website is correct and had a CAT1 token balance, and is for an unhardened key Click on the \"Search next 1000\" to see if your balance has been updated The balance that the website is reporting doesn't match what I expect. What should I do?​ The website scans the first 1000 wallet receive addresses, and if the balance doesn't reflect what you expect, then you should hit the \"search next 1000\" for the website to scan and update the balance found. We expect most users to get their correct balance from the initial search, but some users might need an expanded search. My CH21 balance is reported incorrectly on the website. What should I do?​ CH21 tokens were issued to non-observer keys, so they won't show up in the website unless they've been transferred at some point using a wallet without forcing the non-observer key support. The CAT standard was released at the same time as support for observer keys, so generally most CATs and wallets will be supported by the website. Even if your CH21 tokens are not displayed on the website, a CAT2 version will still be airdropped into your 1.5 wallet. I am running 1.5 and when I view an offer, instead of the CAT token, I see XCH. What's going on?​ You are likely viewing an offer for a CAT1 which will be an invalid offer starting with version 1.5. The reason for this is because tail IDs for CAT1s are no longer recognized by the wallet.","s":"CAT1 Balance Website","u":"/guides/cat2-intro/","h":"#cat1-balance-website","p":1505},{"i":1517,"t":"I am developing a Chia wallet. What changes do I need to make to my code?​ CAT2 inner puzzles do not enforce prepended announcements. If you preprend a coin announcement with 0xca (which was a requirement for CAT1), then the announcement will fail with ANNOUNCE_CONSUMED_FAILED. Instead, do not prepend inner puzzle announcements with anything. Note that announcements coming from the CAT layer still need to be prepended with 0xcb. This has not changed in CAT2.","s":"Wallet Developers","u":"/guides/cat2-intro/","h":"#wallet-developers","p":1505},{"i":1519,"t":"In this section we sketch the main building blocks used in the Chia\\textsf{Chia}Chia blockchain: unique digital signatures, proofs of space [DFKP15; AAC+17] and verifiable delay functions [Pie19b; BBBF18; Wes20]. The definitions are not fully general, but instead tailored to the particular constructions of PoSpace from [AAC+17] and the VDFs [Pie19b; BBBF18; Wes20] based on sequential squaring.","s":"A - Building Blocks: PoSpace, VDFs and Signatures","u":"/green-paper-appendix/","h":"","p":1518},{"i":1521,"t":"A digital signature scheme is specified by three algorithms; a (probabilistic) key-generation algorithm Sig.keygen{{\\sf Sig.keygen}}Sig.keygen, a signing algorithm μ←Sig.sign(sk,m)\\mu\\gets {{\\sf Sig.sign}}(sk,m)μ←Sig.sign(sk,m) and a verification algorithm Sig.verify{{\\sf Sig.verify}}Sig.verify. We assume the standard security notion (unforgeability under chosen message attacks) and perfect completeness, that is, a correctly generated signature will always verify: ∀m,Pr⁡[Sig.verify(pk,m,μ)=accept]=1where(pk,sk)←Sig.keygen ; μ←Sig.sign(sk,m) .\\begin{aligned} \\forall m,&& \\Pr[{{\\sf Sig.verify}}(pk,m,\\mu)={\\sf accept}]=1\\\\ \\textrm{where}&&(pk,sk)\\gets{{\\sf Sig.keygen}}\\ ;\\ \\mu\\gets{{\\sf Sig.sign}}(sk,m)~. \\end{aligned}∀m,where​​Pr[Sig.verify(pk,m,μ)=accept]=1(pk,sk)←Sig.keygen ; μ←Sig.sign(sk,m) .​ Chia\\textsf{Chia}Chia uses signatures in the foliage (to chain foliage blocks and to bind them to the trunk) and also in the trunk (so only the farmer can compute the challenge). To avoid grinding attacks, the signatures used in the trunk must be unique, that is for every pkpkpk (this includes maliciously generated public keys) and message mmm there can be at most one accepting signature ∀pk,m, (Sig.verify(pk,m,μ)=accept)∧(Sig.verify(pk,m,μ′)=accept)⇒(μ=μ′) .\\forall pk,m,\\ ({{\\sf Sig.verify}}(pk,m,\\mu)={\\sf accept})\\wedge ({{\\sf Sig.verify}}(pk,m,\\mu')={\\sf accept})\\Rightarrow (\\mu=\\mu')~.∀pk,m, (Sig.verify(pk,m,μ)=accept)∧(Sig.verify(pk,m,μ′)=accept)⇒(μ=μ′) .","s":"A.1 (Unique) Digital Signatures","u":"/green-paper-appendix/","h":"#a1-unique-digital-signatures","p":1518},{"i":1524,"t":"A proof of space is specified by the four algorithms given below PoSpace.init\\textsf{PoSpace.init}PoSpace.init​ on input a space parameter N∈NN\\in{\\cal N}N∈N (where N⊂Z+{\\cal N}\\subset \\mathbb{Z}^+N⊂Z+ is some set of valid parameters) and a unique identifier pkpkpk (we use pkpkpk to denote the identifier as in Chia\\textsf{Chia}Chia it will be the public key of a signature scheme) outputs1 S=( S.Λ , S.N=N , S.pk=pk)←PoSpace.init(N,pk)S=(\\ S.\\Lambda\\ ,\\ S.N=N\\ ,\\ S.pk=pk)\\gets {\\sf PoSpace.init}(N,pk)S=( S.Λ , S.N=N , S.pk=pk)←PoSpace.init(N,pk) Here S.ΛS.\\LambdaS.Λ is the large file of size ∣S.Λ ∣≈N\\lvert S.\\Lambda\\ \\rvert \\approx N∣S.Λ ∣≈N the prover needs to store. We also keep N,pkN,pkN,pk as part of SSS as it will be convenient. PoSpace.prove\\textsf{PoSpace.prove}PoSpace.prove​ on input SSS and a challenge c∈{0,1}wc\\in \\{0,1\\}^wc∈{0,1}w outputs a proof σ=( σ.π ,σ = σ.N=S.N , σ.pk=S.pk , σ.c=c ) ←PoSpace.prove(S,c)\\sigma=(\\ \\sigma.\\pi\\ , \\sigma\\ = \\ \\sigma.N=S.N\\ ,\\ \\sigma.pk=S.pk\\ ,\\ \\sigma.c=c\\ )\\ \\gets {\\sf PoSpace.prove}(S,c)σ=( σ.π ,σ = σ.N=S.N , σ.pk=S.pk , σ.c=c ) ←PoSpace.prove(S,c) Here σ.π\\sigma.\\piσ.π is the actual proof, the other entries in σ\\sigmaσ are just convenient to keep around. PoSpace.verify\\textsf{PoSpace.verify}PoSpace.verify​ on input a proof σ\\sigmaσ outputs accept{\\sf accept}accept or reject{\\sf reject}reject PoSpace.verify(σ)∈{reject,accept} .{\\sf PoSpace.verify}(\\sigma)\\in \\{{\\sf reject},{\\sf accept}\\}\\ .PoSpace.verify(σ)∈{reject,accept} . We assume perfect completeness ∀N∈N,c∈{0,1}w, Pr⁡[PoSpace.verify(σ)=accept]=1 where S←PoSpace.init(N,pk) and σ←PoSpace.prove(S,c)\\begin{aligned}&&\\forall N\\in{\\cal N},c\\in\\{0,1\\}^w, \\ \\Pr[{{\\sf PoSpace.verify}}(\\sigma)={\\sf accept}]=1\\textrm{ where }\\\\&&S\\gets{\\sf PoSpace.init}(N,pk) \\textrm{ and } \\sigma\\gets{{\\sf PoSpace.prove}}(S,c)\\end{aligned}​​∀N∈N,c∈{0,1}w, Pr[PoSpace.verify(σ)=accept]=1 where S←PoSpace.init(N,pk) and σ←PoSpace.prove(S,c)​","s":"A.2.1 Algorithms for PoSpace","u":"/green-paper-appendix/","h":"#a21-algorithms-for-pospace","p":1518},{"i":1526,"t":"We will not give the formal security definition for PoSpace here, but informally it states that an adversary who stores a file of size significantly less than NNN bits should not be able to produce a valid proof for a random challenge unless he invests a significant amount of computation (ideally close to what it costs to run the full initialization PoSpace.init(N,pk){\\sf PoSpace.init}(N,pk)PoSpace.init(N,pk)). Moreover it must be impossible to amortize space, that is, initializing space for m>1m>1m>1 different identities must require mmm times as much space. To prevent grinding attacks, we need our PoSpace to be unique as defined below.","s":"A.2.2 Security of PoSpace","u":"/green-paper-appendix/","h":"#a22-security-of-pospace","p":1518},{"i":1528,"t":"A PoSpace is unique if for any identity pkpkpk and any challenge ccc there is exactly one proof, i.e., ∀N,pk,c,∣{σ : (PoSpace.verify(σ)=accept)∧((σ.N,σ.pk,σ.c)=(N,pk,c))}∣=1\\begin{aligned} &\\forall N,pk,c,\\\\ &\\left|\\{\\sigma\\ :\\ \\left({{\\sf PoSpace.verify}}(\\sigma)={\\sf accept}\\right)\\wedge \\left( (\\sigma.N,\\sigma.pk,\\sigma.c)=(N,pk,c)\\right)\\}\\right|= 1 \\end{aligned}​∀N,pk,c,∣{σ : (PoSpace.verify(σ)=accept)∧((σ.N,σ.pk,σ.c)=(N,pk,c))}∣=1​ We call a PoSpace weakly unique if the expected number of proofs is close to 111, i.e., ∀N,pk,c,Ec←{0,1}w[∣{σ:(PoSpace.verify(σ)=accept})∧((σ.N,σ.pk,σ.c)=(N,pk,c))∣]≈1\\begin{aligned} &\\forall N,pk,c,\\\\ &{\\mathrm E}_{c\\gets \\{0,1\\}^w}\\left[|\\{\\sigma : \\left({{\\sf PoSpace.verify}}(\\sigma)={\\sf accept}\\} \\right) \\wedge \\left((\\sigma.N,\\sigma.pk,\\sigma.c)=(N,pk,c)\\right) |\\right]\\\\ &\\approx 1 \\end{aligned}​∀N,pk,c,Ec←{0,1}w​[∣{σ:(PoSpace.verify(σ)=accept})∧((σ.N,σ.pk,σ.c)=(N,pk,c))∣]≈1​ For weakly unique PoSpace we assume that whenever there is more than one proof for a given challenge which passes verification, PoSpace.prove(S,c){\\sf PoSpace.prove}(S,c)PoSpace.prove(S,c) outputs all of them. The [AAC+17] PoSpace used in Chia\\textsf{Chia}Chia is only weakly unique. To be able to focus on the main challenges, we will nonetheless assume a unique PoSpace when analyzing Chia\\textsf{Chia}Chia but our analysis can be extended without major difficulties to handle weakly unique PoSpace, things just get a bit more messy.","s":"A.2.3 Unique PoSpace","u":"/green-paper-appendix/","h":"#a23-unique-pospace","p":1518},{"i":1530,"t":"We give a very high level outline of the PoSpace from [AAC+17]. The space parameter is given implicitly by a value ℓ∈Z+\\ell\\in\\mathbb{Z}^+ℓ∈Z+, the actual space required is approximately N≈ℓ⋅2⋅2ℓN\\approx \\ell\\cdot 2\\cdot 2^{\\ell}N≈ℓ⋅2⋅2ℓ bits (e.g. for ℓ=40\\ell=40ℓ=40 that's 101010 terabytes). Let L:={0,1}ℓL:=\\{0,1\\}^\\ellL:={0,1}ℓ denote the set of ℓ\\ellℓ bit strings. Below we denote with X∣ℓX_{|\\ell}X∣ℓ​ the ℓ\\ellℓ bit prefix of a string XXX. The identity id:=pkid:=pkid:=pk together with a hash function H{\\sf H}H defines two functions f:L→L,g:L×L→Lf: L\\rightarrow L, g:L\\times L\\rightarrow Lf:L→L,g:L×L→L as f(x)=H(id,x)∣ℓandg(x,x′)=H(id,x,x′)∣ℓ .f(x)={\\sf H}(id,x)_{|\\ell}\\quad\\textrm{and}\\quad g(x,x')={\\sf H}(id,x,x')_{|\\ell} \\ .f(x)=H(id,x)∣ℓ​andg(x,x′)=H(id,x,x′)∣ℓ​ . Note that if we model H{\\sf H}H as a random function, then f,gf,gf,g are also random functions. On a challenge y∈Ly\\in Ly∈L the prover must answer with a tuple id,(x,x′) where x≠x′,f(x)=f(x′),g(x,x′)=yid,(x,x')\\qquad\\textrm{ where }\\qquad x\\neq x', f(x)=f(x'), g(x,x')=yid,(x,x′) where x=x′,f(x)=f(x′),g(x,x′)=y if it exists. In this construction, for roughly a (1−1/e)≈0.632(1-1/e)\\approx 0.632(1−1/e)≈0.632 fraction of the challenges y∈Ly\\in Ly∈L there will be at least one proof, and the expected number of proofs is 111 (so it is a weakly unique PoSpace). The prover will generate and store two tables so they can efficiently generate proofs. They first compute and store a table with the values (x,f(x))(x,f(x))(x,f(x)) sorted by the 2nd entry. With this table, the prover can now efficiently enumerate all tuples (x,x′)(x,x')(x,x′) where x≠x′x\\neq x'x=x′ and f(x)=f(x′)f(x)=f(x')f(x)=f(x′) to generate a table containing all triples (x,x′,y=g(x,x′))(x,x',y=g(x,x'))(x,x′,y=g(x,x′)); the expected number of such triples is ∣L∣=2ℓ|L|=2^\\ell∣L∣=2ℓ. This table is then sorted by the thrid value. Now given a challenge yyy one can efficiently look up proofs in the second table as it is sorted by the yyy values. Storing the second table requires ≈3∣L∣log⁡(∣L∣)=2ℓ+1ℓ\\approx 3|L|\\log(|L|)=2^{\\ell+1}\\ell≈3∣L∣log(∣L∣)=2ℓ+1ℓ bits, and this can be brought down to ≈2∣L∣log⁡(∣L∣)\\approx 2|L|\\log(|L|)≈2∣L∣log(∣L∣) bits by encoding it in a more clever way. Chia\\textsf{Chia}Chia is based on this PoSpace, but to further minimize the effect of time/space trade-offs (where a malicious farmer tries to save on space at the cost of doing more computations), a nested version of this construction is used. We omit the details in this writeup.","s":"A.2.4 The [AAC+17] PoSpace","u":"/green-paper-appendix/","h":"#a24-the-aac17-pospace","p":1518},{"i":1532,"t":"The definition of verifiable delay functions (VDFs) given below is not completely general, but makes some additional properties of VDF we'll need in Chia\\textsf{Chia}Chia explicit. In particular, we want a VDF where the sequential computation can start before we know the number of sequential steps for which it will run, while still being able to output proofs reasonably fast at any point during the sequential computation. This similar to the functionality provided by continuous VDFs [@Ephraim2020], which require that one can provide proofs for intermediate values almost immediately. We can allow some slack, and thus can use \"normal\" practical VDF constructions. We'll use the following notation to an (ongoing or finished) VDF computation τ\\tauτ τ.c∈{0,1}∗ ⁣:\\tau.c \\in \\{0,1\\}^* \\colonτ.c∈{0,1}∗: the challenge (usually one or more unpredictable values) used for this VDF τ.t∈N ⁣:\\tau.t \\in \\N \\colonτ.t∈N: total number of sequential steps performed For i : 0 ≤i≤τ.ti\\ :\\ 0\\ \\le i \\le \\tau.ti : 0 ≤i≤τ.t we let τ[i]\\tau[i]τ[i] denote the state of the VDF after iii sequential steps, and τ[i].x∈X ⁣:\\tau[i].x\\in {\\cal X}\\colonτ[i].x∈X: denotes the value after iii steps. τ[i].π ⁣:\\tau[i].\\pi \\colonτ[i].π: is a proof certifying that τ[i].x\\tau[i].xτ[i].x is correctly computed. We'll denote the value and proof for the last value as τ.y=defτ[τ.t].xτ.π=defτ[τ.t].π\\tau.y \\stackrel{\\scriptsize \\sf def}{=}\\tau[\\tau.t].x\\qquad \\tau.\\pi\\stackrel{\\scriptsize \\sf def}{=}\\tau[\\tau.t].\\piτ.y=defτ[τ.t].xτ.π=defτ[τ.t].π The functions defining a VDF are VDF.sample\\textsf{VDF.sample}VDF.sample​ on input a challenge c∈{0,1}∗c\\in\\{0,1\\}^*c∈{0,1}∗ samples the initial value xxx and outputs a partial VDF value τ.t:=0 , τ[0].x:=x , τ.c:=c\\tau.{\\sf t}:=0\\ ,\\ \\tau[0].{\\sf x}:=x\\ ,\\ \\tau.{\\sf c}:=cτ.t:=0 , τ[0].x:=x , τ.c:=c VDF.next\\textsf{VDF.next}VDF.next​ X→X{\\cal X}\\rightarrow {\\cal X}X→X the function doing one step of the sequential computation VDF.solve\\textsf{VDF.solve}VDF.solve​ on input a challenge c∈{0,1}∗c\\in\\{0,1\\}^*c∈{0,1}∗ and time parameter t∈Z+t\\in\\mathbb{Z}^+t∈Z+ outputs a proof τ=( τ.y , τ.π , τ.x , τ.c=c , τ.t=t )←VDF.solve(c,t)\\tau=(\\ \\tau.y\\ ,\\ \\tau.\\pi\\ ,\\ \\tau.x\\ ,\\ \\tau.c=c\\ ,\\ \\tau.t=t\\ )\\gets {\\sf VDF.solve}(c,t)τ=( τ.y , τ.π , τ.x , τ.c=c , τ.t=t )←VDF.solve(c,t) and runs in (not much more than) ttt sequential steps (what a step is depends on the particular VDF). Here τ.y\\tau.yτ.y is the output and τ.π\\tau.\\piτ.π is a proof that τ.y\\tau.yτ.y has been correctly computed. For convenience we also keep (c,t)(c,t)(c,t) as part of τ\\tauτ. VDF.verify\\textsf{VDF.verify}VDF.verify​ on input τ\\tauτ outputs accept{\\sf accept}accept or reject{\\sf reject}reject. VDF.verify(τ)∈{reject,accept}{\\sf VDF.verify}(\\tau)\\in \\{{\\sf reject},{\\sf accept}\\}VDF.verify(τ)∈{reject,accept} Verifying must be possible in ≪t\\ll t≪t steps, for existing VDFs verification just takes log⁡(t)\\log(t)log(t) [Pie19b] or even constant [Wes20] time. We have perfect completeness ∀t,c : VDF.verify(VDF.solve(c,t))=accept\\forall t,c\\ :\\ {{\\sf VDF.verify}}({{\\sf VDF.solve}}(c,t))={\\sf accept}∀t,c : VDF.verify(VDF.solve(c,t))=accept The two security properties we require are uniqueness: It is hard to come up with any statement and an accepting proof for a wrong output. More precisely, it is computationally difficult to find any τ′\\tau'τ′ where for τ←VDF.solve(τ′.c,τ′.t)\\tau\\gets {\\sf VDF.solve}(\\tau'.c,\\tau'.t)τ←VDF.solve(τ′.c,τ′.t) we have VDF.verify(τ′)=accept and τ.y≠τ′.y .{\\sf VDF.verify}(\\tau')={\\sf accept}\\quad\\textrm{ and }\\quad\\tau.y\\neq \\tau'.y\\ .VDF.verify(τ′)=accept and τ.y=τ′.y . Note that we only need τ.y\\tau.yτ.y (but not τ.π\\tau.\\piτ.π) to be unique, i.e., the proof τ.π\\tau.\\piτ.π showing that τ.y\\tau.yτ.y is the correct value can be malleable. This seems sufficient for all applications of VDFs, but let us mention that in the [Pie19b; Wes20] VDFs discussed below also τ.π\\tau.\\piτ.π is unique. sequentiality: Informally, sequentiality states that for any ttt, an adversary A{\\cal A}A who makes less than ttt sequential steps will not find an accepting proof on a random challenge. I.e., for some tiny ϵ\\epsilonϵ Pr⁡[VDF.verify(τ)=accept ∧ τ.c=c ∧ τ.t=t : c←rand{0,1}w,τ←A(c,t)]≤ϵ\\hspace{-1cm} \\Pr[{\\sf VDF.verify}(\\tau)={\\sf accept}\\ \\wedge \\ \\tau.c=c\\ \\wedge\\ \\tau.t=t \\ :\\ c\\stackrel{rand}{\\gets}\\{0,1\\}^w,\\tau\\gets{\\cal A}(c,t)]\\le \\epsilonPr[VDF.verify(τ)=accept ∧ τ.c=c ∧ τ.t=t : c←rand{0,1}w,τ←A(c,t)]≤ϵ Let us stress that A{\\cal A}A is only bounded by the number of sequential steps, but they can use high parallelism. Thus the VDF output cannot be computed faster by adding parallelism beyond what can be used to speed up a single step of the VDF computation.","s":"A.3 Verifiable Delay Functions","u":"/green-paper-appendix/","h":"#a3-verifiable-delay-functions","p":1518},{"i":1534,"t":"The VDFs proposed in [Pie19b; Wes20] (see [BBBF18a] for an overview of those constructions) are both based on squaring in a group of unknown order, for concreteness let the group be ZN∗\\mathbb{Z}_N^*ZN∗​ where N=pqN=pqN=pq is the product of two large primes p,qp,qp,q. On input VDF.solve(c,t){\\sf VDF.solve}(c,t)VDF.solve(c,t) one would first map the challenge ccc on a group element, say as xc:=hash(c) mod Nx_c:= hash(c)\\bmod Nxc​:=hash(c)modN, and the output is (y,π)(y,\\pi)(y,π) with y=xc2t mod Ny=x_c^{2^t}\\bmod Ny=xc2t​modN. This yyy can be computed by squaring xcx_cxc​ sequentially ttt times xc→xc2→xc22→⋯→xc2tx_c\\rightarrow x_c^2\\rightarrow x_c^{2^2}\\rightarrow \\cdots \\rightarrow x_c^{2^t}xc​→xc2​→xc22​→⋯→xc2t​, and it is conjectured that there is no shortcut to this computation if one doesn't know the factorization of NNN. The VDFs from [Pie19b; Wes20] differ in how the proof π\\piπ that certifies that y=xc2t mod Ny=x_c^{2^t}\\bmod Ny=xc2t​modN is defined. The proof in [Pie19b] is shorter (111 vs. log⁡(T)\\log(T)log(T) elements), but soundness of the proof requires an additional assumption (that taking random roots is hard). If one uses an RSA group as above, a trusted setup or a multiparty computation is needed to sample the modulus NNN in a way that nobody learns its factorization. As this sampling is expensive, one would then think of NNN as a public parameter to be used indefinitely. Wesolowski [Wes20] suggests using the class group of an imaginary quadratic field as the underlying group of unknown order. These groups can be obliviously sampled -- this means given random bits one can sample a group without learning its order -- and thus there is no need for a trusted setup. On the other hand, it's somewhat tricky to obliviously sample random group elements in class groups (here obliviously means in a way that does not reveal the discrete log of the element). Thus in the class group setting we can let VDF(c,t){\\sf VDF}(c,t)VDF(c,t) sample a fresh group using the challenge ccc, and then exponentiate a fixed easy to find group element (concretely the element (a=2, b=1)). This is the approach taken in Chia\\textsf{Chia}Chia. Footnotes​ The first constructions of PoSpace from [DFKP15] were based on depth-robust graphs. The initialization phase in these PoSpace was not just a function as it is here, but an interactive protocol. The definition we give here captures the [AAC+17] PoSpace (which was developed for Chia\\textsf{Chia}Chia) where the initialization phase is non-interactive, this makes its use in a blockchain design much simpler. The Spacemint [PKF+18] proposal is using graph-based PoSpace and because of that must bootstrap the blockchain itself to make initialization non-interactive: farmers must post a commitment to their space to the blockchain via a special type of transaction before it can be used for farming. Without this, Spacemint would succumb to grinding attacks (on the message send to the verifier during the initialization phase). ↩","s":"A.3.1 The [Pie19b, Wes20] VDFs","u":"/green-paper-appendix/","h":"#a31-the-pie19b-wes20-vdfs","p":1518},{"i":1536,"t":"The first constructions of PoSpace from [DFKP15] were based on depth-robust graphs. The initialization phase in these PoSpace was not just a function as it is here, but an interactive protocol. The definition we give here captures the [AAC+17] PoSpace (which was developed for Chia\\textsf{Chia}Chia) where the initialization phase is non-interactive, this makes its use in a blockchain design much simpler. The Spacemint [PKF+18] proposal is using graph-based PoSpace and because of that must bootstrap the blockchain itself to make initialization non-interactive: farmers must post a commitment to their space to the blockchain via a special type of transaction before it can be used for farming. Without this, Spacemint would succumb to grinding attacks (on the message send to the verifier during the initialization phase). ↩","s":"Footnotes","u":"/green-paper-appendix/","h":"#footnote-label","p":1518},{"i":1538,"t":"info CAT1 will reach its end of life at block 2,311,760, which will occur on July 26, 2022 at around 17:00 UTC. For more information on this end-of-life process, see the Intro and FAQ page. This document will show CAT1 issuers how to: Generate a snapshot of their CAT1 status. This will show the puzzle hash (address) and value of each individual token at the end-of-life block height Export their required data from the snapshot After completing this, CAT issuers will be able to proceed to the Token Reissuance guide.","s":"CAT1 Snapshot Generation","u":"/guides/cat2-snapshot/","h":"","p":1537},{"i":1540,"t":"note We recommend that you follow this section to generate your own snapshot of your CAT1 tokens. Please note that this process could take over 40 hours to complete. For your convenience and reference, we will also publish our own snapshot, which should be identical to the snapshot that you produce. This section will show you how to install the CAT-addresses tool and use it to get a snapshot of the puzzle hash (address) and value of each coin of a particular CAT1. It can even obtain this info for all CAT1s on Chia's blockchain.' warning In order to use this tool, you are required to run a fully synced Chia node. This node must be running version 1.5 or greater. Please ensure that you have satisfied both of these requirements before continuing. Open a terminal window and ensure you have direct access to the chia command by doing one of the following: Windows Linux macOS If you previously installed Chia from a binary build, then set up an alias to the chia command: caution Ensure that you replace and with the actual folders Set-Alias -Name chia \"C:\\Users\\\\AppData\\Local\\chia-blockchain\\app-\\resources\\app.asar.unpacked\\daemon\\chia.exe\" If you previously installed Chia from source, then navigate to the chia-blockchain directory and activate your virtual environment: .\\venv\\Scripts\\Activate.ps1 If you previously installed Chia from a binary build, then ensure that the chia binary's directory is included in your PATH. If you previously installed Chia from source, then navigate to the chia-blockchain directory and activate your virtual environment: . ./activate If you previously installed Chia from a binary build, then set up an alias to the chia command: alias chia=\"/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia\" If you previously installed Chia from source, then navigate to the chia-blockchain directory and activate your virtual environment: . ./activate Run the following command: chia version If step 1 was successful, you should see a version number in the output, such as 1.5.0. This is a requirement for the snapshot tool to work. From the same terminal window, create a new directory in which to install the CAT-addresses repository (it can be in the parent directory) and run the following: git clone https://github.com/Chia-Network/CAT-addresses.git -b main The following environment variables need to be set in order to use this tool: FULL_NODE_HOSTNAME - The hostname of the full node to call the RPCs against. This can be localhost. DB_SOURCE_DIR - The location of the full node database on the host machine. START_HEIGHT - The height of the blockchain to start creating the snapshot from (default: 0). If you are attempting to obtain all records for your CAT, the recommended start height is 1146800, which is just before CAT1 was introduced. TARGET_HEIGHT - The height of the blockchain to end the snapshot (no default - must be set). The recommended height is 2311760, which is the last block at which CAT1 is valid. caution Running this process with the recommended block heights could take over 40 hours to complete. You may wish to test it first by setting the TARGET_HEIGHT to 1146900. This will pull data from only 100 blocks, which should only take a few seconds. In order to set these variables, you are recommended to put them into a file called .env at the root of the CAT-addresses project. The tool will automatically read the variables in this file. For example: Windows Linux macOS .env FULL_NODE_HOSTNAME=localhost DB_SOURCE_DIR=C:\\Users\\Username\\.chia\\mainnet\\db START_HEIGHT=1146800 TARGET_HEIGHT=2311760 .env FULL_NODE_HOSTNAME=localhost DB_SOURCE_DIR=/home/Username/.chia/mainnet/db START_HEIGHT=1146800 TARGET_HEIGHT=2311760 .env FULL_NODE_HOSTNAME=localhost DB_SOURCE_DIR=/Users/Username/.chia/mainnet/db START_HEIGHT=1146800 TARGET_HEIGHT=2311760 Install dependencies: Windows Linux macOS python setup.py install python3 setup.py install python3 setup.py install note The result may contain several warnings such as WARNING: The wheel package is not available. These can be safely ignored. This command may take a few minutes to complete. At the end of the output, you should see something like: Finished processing dependencies for chia-transaction-exporter==0.1.dev55\" Install the dotenv and backoff modules: pip install python-dotenv pip install backoff Set up the database: Windows Linux macOS python setup_database.py python3 setup_database.py python3 setup_database.py tip If you receive an error message such as ModuleNotFoundError: No module named 'chia', then make sure you can run the chia command from this directory and try again. If this command succeeds, then it will output: INFO:setup_database:Setting up database INFO:setup_database:Database setup complete Start the snapshot generator: Windows Linux macOS python start.py python3 start.py python3 start.py This command will show its progress according to the block height. If you used the recommended range for START_HEIGHT and TARGET_HEIGHT in your .env file, then this command could take over 40 hours to complete. The reason it takes so long is it needs to process each block, one at a time. If multiple blocks were done in parallel, then there would be a chance that the results would not be accurate. By processing one block at a time, the tool will return the correct results for the range provided. note You can only generate a snapshot for each block once. If you attempt to run this command over a range against which it has already been run, you will receive an error containing this message: sqlite3.IntegrityError: UNIQUE constraint failed: coin_create.coin_name In this case, you either need to start from a higher height, or (recommended) start over. Follow the Data Cleanup section and try again.","s":"Generate a CAT1 Snapshot","u":"/guides/cat2-snapshot/","h":"#generate","p":1537},{"i":1542,"t":"Once you have populated the database with a snapshot, you can run a data export. Navigate to taildatabase.com. Search for your CAT. We'll use CAT King Cole for this example. Note the TAIL hash, which is listed above the title of the token. In this example, it's: 1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a Generate a CSV file containing all inner puzzle hashes and amounts for your CAT: Windows Linux macOS python export.py --output-dir \\ --tail-hash --coins Example command python export.py --output-dir C:\\Users\\Username\\Chia\\CAT-addresses\\results\\CKC_ --tail-hash 1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a python3 export.py --output-dir / --tail-hash --coins Example command python3 export.py --output-dir /home/Username/CAT-addresses/results/CKC_ --tail-hash 1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a python3 export.py --output-dir / --tail-hash --coins Example command python3 export.py --output-dir /Users/Username/CAT-addresses/results/CKC_ --tail-hash 1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a info - a directory of your choice in which to save the CSV file - a string to be prepended to the output file name - the TAIL hash you obtained from taildatabase.com --coins - an optional flag that will add information about individual coins to the output (which might be helpful for auditing purposes) note This command will not create any directories, so make sure already exists before running it. Otherwise, you will receive a FileNotFoundError.","s":"Export Your Data from the Snapshot","u":"/guides/cat2-snapshot/","h":"#export","p":1537},{"i":1544,"t":"This step is required for Windows users, and not needed for Linux or macOS users. If you are running on Windows, the CSV file will contain an extra CR (carriage return) character at the end of each line. This will cause \"Secure the Bag\" to fail. First, you must convert the CSV file to use UNIX-style end-of-line characters. The easiest way to accomplish this is with dos2unix. This is not included with Windows, so you will need to download it from SourceForge. Steps to convert the CSV file: Visit the SourceForge dos2unix site. Click the green \"Download\" button. After five seconds, the dos2unix zip file will be downloaded to your Downloads folder. Unzip the dos2unix zip file. From a PowerShell window, run: -o For example: ~\\Downloads\\dos2unix\\bin\\dos2unix.exe -o .\\results\\CKC_1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a.1658233083.183527.csv This message should appear in the output: dos2unix: converting file to Unix format... To verify that the conversion was successful, open the file. There should be no blank lines between the entries.","s":"Fix EOL Characters","u":"/guides/cat2-snapshot/","h":"#fix-eol","p":1537},{"i":1546,"t":"Optional: If the application exits partway through a run, it will only have imported some blocks at a particular height. You can delete the records from the database at and above a provided height by running the following command: Windows Linux macOS python clean.py --height python3 clean.py --height python3 clean.py --height ","s":"Data Cleanup","u":"/guides/cat2-snapshot/","h":"#cleanup","p":1537},{"i":1548,"t":"Optional: If you wish to obtain the balance of all CATs on the Chia blockchain, you can run export-py with various different options: Windows Linux macOS The --tail-hash flag can be dropped, resulting in an output of a single CSV file containing every puzzle hash amount for every CAT on the Chia blockchain: python export.py --output-dir \\ The --coins flag can be added, which will add information about individual coins: python export.py --output-dir \\ --coins The --explode flag can be added, which will generate multiple CSV files, each of which containing a single CAT's puzzle hashes and amounts: python export.py --output-dir \\ --explode You can also use the --explode and --coins flags together, which will generate individual CSV files that also contain coin info. The --tail-hash flag can be dropped, resulting in an output of a single CSV file containing every puzzle hash amount for every CAT on the Chia blockchain: python3 export.py --output-dir / The --coins flag can be added, which will add information about individual coins: python3 export.py --output-dir / --coins The --explode flag can be added, which will generate multiple CSV files, each of which containing a single CAT's puzzle hashes and amounts: python3 export.py --output-dir / --explode You can also use the --explode and --coins flags together, which will generate individual CSV files that also contain coin info. The --tail-hash flag can be dropped, resulting in an output of a single CSV file containing every puzzle hash amount for every CAT on the Chia blockchain: python3 export.py --output-dir / The --coins flag can be added, which will add information about individual coins: python3 export.py --output-dir / --coins The --explode flag can be added, which will generate multiple CSV files, each of which containing a single CAT's puzzle hashes and amounts: python3 export.py --output-dir / --explode You can also use the --explode and --coins flags together, which will generate individual CSV files that also contain coin info.","s":"Export Data for all CATs","u":"/guides/cat2-snapshot/","h":"#export-all","p":1537},{"i":1550,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-condition-morphing/","s":"Condition Morphing","u":"/guides/chialisp-condition-morphing/","h":"","p":1549},{"i":1552,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-bls-signatures/","s":"5. BLS Signatures","u":"/guides/chialisp-bls-signatures/","h":"","p":1551},{"i":1554,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-currying/","s":"Currying","u":"/guides/chialisp-currying/","h":"","p":1553},{"i":1556,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-first-smart-coin/","s":"4. First Smart Coin","u":"/guides/chialisp-first-smart-coin/","h":"","p":1555},{"i":1558,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-inner-puzzles/","s":"Inner Puzzles","u":"/guides/chialisp-inner-puzzles/","h":"","p":1557},{"i":1560,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-testnet-setup/","s":"3. Testnet Setup","u":"/guides/chialisp-testnet-setup/","h":"","p":1559},{"i":1562,"t":"info CAT1 will reach its end of life at block 2,311,760, which will occur on July 26, 2022 at around 17:00 UTC. For more information on this end-of-life process, see the Intro and FAQ guide. This document will show CAT1 issuers how to: Install the CAT admin tool, which will be used to reissue tokens \"Secure the bag\" – create a tree of new coins that are identical to the original CAT1 coins, in both size and destination wallet \"Unwind the bag\" – airdrop the coins to the appropriate locations Before starting this guide, you will need a snapshot CSV, instructions for which can be found in the Snapshot Generation guide.","s":"CAT2 Token Reissuance","u":"/guides/cat2-issuance/","h":"","p":1561},{"i":1564,"t":"warning A new version of the CAT Admin Tool will be released shortly after Chia version 1.5.0, at approximately the end-of-life block height (2311760). You should not attempt token reissuance before you have updated to this version. Now that you have a CSV file containing the necessary information, you can run the CAT Admin Tool to secure and airdrop a set of CAT2 tokens equivalent in size and address to their CAT1 counterparts. Open a new terminal window and run the following to clone the CAT Admin Tool repository, using the main branch: git clone https://github.com/Chia-Network/CAT-admin-tool.git -b main Change to the cloned repository: cd CAT-admin-tool Create a new virtual environment and then activate it: Windows Linux macOS python -m venv venv .\\venv\\Scripts\\Activate.ps1 python3 -m venv venv . ./venv/bin/activate python3 -m venv venv . ./venv/bin/activate Install the latest versions of pip, setuptools and wheel: Windows Linux macOS python -m pip install --upgrade pip setuptools wheel python3 -m pip install --upgrade pip setuptools wheel python3 -m pip install --upgrade pip setuptools wheel Install the CAT Admin Tool: pip install . pip install chia-dev-tools --no-deps pip install pytest note You can safely ignore the following errors: ERROR: Failed building wheel for CAT-admin-tool ERROR: pip's dependency resolver... tip Python 3.9+ may be required on macOS The CAT Admin Tool should now be installed and configured properly. To test it, run: cats --help cdv --help You should get a usage statement for each command. At this point, you're ready to create your new CAT2 coins.","s":"Install the CAT Admin Tool","u":"/guides/cat2-issuance/","h":"#install-the-cat-admin-tool","p":1561},{"i":1566,"t":"tip If your CAT used a multi-issuance TAIL, then skip to the next section. This section will show you how to create a tree of CAT2 coins that are identical to the original CAT1 coins, in both size and destination puzzle hash (address). We'll start by demonstrating how to do this with single-issuance CATs, which typically (though not always) use the genesis_by_coin_id TAIL. If you are unsure whether your CAT used a single- or multi-issuance TAIL, step 1 will show you how to view the TAIL that was used to create it. Figure out the total number of XCH mojos that were issued for your CAT1. Navigate to taildatabase.com. Search for your CAT. We'll use Spacebucks for this example. You'll see Supply (and a number) under the title on the right side of your screen. The number indicates the number of tokens issued. However, you need to multiply this number by 1,000 in order to calculate the number of XCH mojos used for the issuance. For example, Spacebucks had an issuance of 1 billion (1,000,000,000) tokens, which is equivalent to 1 trillion (1,000,000,000,000) XCH mojos. Click the Chialisp button. This will show you the TAIL that was used for issuance. If it was a single-issuance CAT, it likely used genesis_by_coin_id. If you are unsure, compare the TAIL shown with the TAIL in GitHub. Take note of this TAIL as you will need to input its hex version in a subsequent step (if you used one of our reference TAILs, then you already have a copy of this file). Sync a Chia wallet that has at least as many XCH mojos as the original issuance. note You must run Chia 1.5.0 or greater. You can run either the light wallet or a full node. You are recommended to have enough mojos to cover transaction fees for the reissuance. The recommended amount is five hundred thousand (500,000) mojos per coin to be reissued. You are required to have a single coin that is large enough to cover the entire reissuance. Even if your XCH balance is sufficient, it may be separated into multiple small coins. The easiest way to ensure that you have a sufficiently large coin is to send a transaction to yourself of at least the total value required. Use the CAT Admin Tool to select a coin that will be used for issuing the CAT2 tokens. From a terminal window you'll need to run the cats command. The arguments needed for this command include: --tail – The TAIL program that was originally used (usually this is genesis_by_coin_id), in hex file format. --send-to – Where to send the tokens when they are initially issued. This is a placeholder only – you can enter any XCH address here. The value is required, but it will be ignored. --amount – The total number of mojos for this issuance. You need to have this many mojos in your wallet. This number must match the actual number of mojos that were originally issued. --as-bytes – This tells the tool to output the spend bundle in bytes instead of JSON. --select-coin – This tells the tool to select a specific coin from your wallet. The command to run is: cats --tail --send-to
--amount --as-bytes --select-coin Here's an example of the command to reissue Spacebucks: Windows Linux macOS cats --tail .\\reference_tails\\genesis_by_coin_id.clsp.hex --send-to xch1rh6punh4fy70y80ef4g89c9hqvm54dtl0fvyc4ejdccp3y6p04fqn5x8x8 --amount 1000000000000 --as-bytes --select-coin cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to xch1rh6punh4fy70y80ef4g89c9hqvm54dtl0fvyc4ejdccp3y6p04fqn5x8x8 --amount 1000000000000 --as-bytes --select-coin cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to xch1rh6punh4fy70y80ef4g89c9hqvm54dtl0fvyc4ejdccp3y6p04fqn5x8x8 --amount 1000000000000 --as-bytes --select-coin The last line of the output will be something like: Name: 8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 This is the Coin ID of the coin that you will use for reissuance. Keep this value handy. Obtain the target puzzle hash by running the \"secure_the_bag\" command. The important arguments here are: --tail – The TAIL program that was originally used (usually this is genesis_by_coin_id), in hex file format. --amount – The total number of mojos for this issuance. You need to have this many mojos in your wallet. This number must match the actual number of mojos that were originally issued. --secure-the-bag-targets-path – The full path to the CSV file that contains the snapshot of this CAT. --curry – The value of Name: from the above output. Note that you need to prepend 0x to this argument, so for the above example, this value would start with 0x8f4. The command to run is: secure_the_bag --tail --amount --secure-the-bag-targets-path --prefix xch --curry Here's an example of the command to secure the bag for Spacebucks: Windows Linux macOS secure_the_bag --tail .\\reference_tails\\genesis_by_coin_id.clsp.hex --amount 1000000000000 --secure-the-bag-targets-path C:\\Users\\Username\\Downloads\\spacebucks.csv --prefix xch --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 secure_the_bag --tail ./reference_tails/genesis_by_coin_id.clsp.hex --amount 1000000000000 --secure-the-bag-targets-path /home/Username/Downloads/spacebucks.csv --prefix xch --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 secure_the_bag --tail ./reference_tails/genesis_by_coin_id.clsp.hex --amount 1000000000000 --secure-the-bag-targets-path /Users/Username/Download/spacebucks.csv --prefix xch --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 The command will create a tree of coins. This could take a long time, depending on how many coins need to be created. While it's in progress, it will output the percent complete. After it is finished, it will output the puzzle hash and address of the new coin to be created. For this example, the final two lines of the output are: Secure the bag root puzzle hash: 17060adf6856d2904c4fe90c9690b710cf758aee5968718e2fbfd12f7b9d817f Secure the bag root address: xch19k6cl5syzvxgkgulr7m49v2r57yh0aanm23hrffgd89j4nj3ywhqxadyqr You'll need both of these values later. Push the transaction to the network. This will actually create the coin tree (Secure the Bag). The arguments are the same as above, with one exception: --send-to – The XCH address from the \"Secure the bag root address:\" of the above output The command to run is: cats --tail --send-to --amount --as-bytes --curry <0x Coin ID> For this example, the command looks like this: Windows Linux macOS cats --tail .\\reference_tails\\genesis_by_coin_id.clsp.hex --send-to xch19k6cl5syzvxgkgulr7m49v2r57yh0aanm23hrffgd89j4nj3ywhqxadyqr --amount 1000000000000 --as-bytes --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to xch19k6cl5syzvxgkgulr7m49v2r57yh0aanm23hrffgd89j4nj3ywhqxadyqr --amount 1000000000000 --as-bytes --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to xch19k6cl5syzvxgkgulr7m49v2r57yh0aanm23hrffgd89j4nj3ywhqxadyqr --amount 1000000000000 --as-bytes --curry 0x8f4dbff8df3f6aa9303eb47625cf8f09d885f1ad6a2d440582cb6bd45f53d2e8 You will need to confirm that you want to push the transaction, then you will receive the Asset ID and Eve Coin ID. For this example, the following was the result: The transaction has been created, would you like to push it to the network? (Y/N)y Successfully pushed the transaction to the network Asset ID: 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d Eve Coin ID: 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b You will need to use both of these values later. At this point, the amount you selected should have been deducted from your wallet in order to secure the bag. However, as this is not a standard transaction, it will not show up in the Transactions section of your wallet GUI. After the transaction has been pushed to the blockchain, you will have successfully created a tree of coins that have an identical size and ultimate destination as the original set of CAT1 coins.","s":"Secure the Bag (Single Issuance)","u":"/guides/cat2-issuance/","h":"#secure-single","p":1561},{"i":1568,"t":"tip If you have already run secure_the_bag for a single-issuance CAT in the previous section, then you should skip this section and proceed to the next section, Unwind the Bag. This section will show you how to secure the bag for a multi-issuance CAT that used a delegated_tail for its outer puzzle, and a genesis_by_coin_id for its inner puzzle. This is the standard way to implement a multi-issuance CAT. If you used custom TAILs for your issuance, then you might still be able to use the commands described here. info You need to use the same public/private key pair to sign the CAT2 issuance as you used for the CAT1 issuance. Your Asset ID will not change between CAT1 and CAT2. Figure out the total number of XCH mojos that were issued for your CAT1. Navigate to taildatabase.com. Search for your CAT. You'll see Supply (and a number) under the title on the right side of your screen. The number indicates the number of tokens issued. However, you need to multiply this number by 1,000 in order to calculate the number of XCH mojos used for the issuance. In this example, we'll use an issuance of 6 million (6,000,000) tokens, which is equivalent to 6 billion (6,000,000,000) XCH mojos. Click the Chialisp button. This will show you the TAIL that was used for issuance. If it was a multi-issuance CAT, it likely used delegated_tail. If you are unsure, compare the TAIL shown with the TAIL in GitHub. Take note of this TAIL as you will need to input its hex version in a subsequent step (if you used one of our reference TAILs, then you already have a copy of this file). Sync a Chia wallet that has at least as many XCH mojos as the original issuance. note You must run Chia 1.5.0 or greater. You can run either the light wallet or a full node. You are recommended to have enough mojos to cover transaction fees for the reissuance. The recommended amount is five hundred thousand (500,000) mojos per coin to be reissued. You are required to have a single coin that is large enough to cover the entire reissuance. Even if your XCH balance is sufficient, it may be separated into multiple small coins. The easiest way to ensure that you have a sufficiently large coin is to send a transaction to yourself of at least the total value required. Use the CAT Admin Tool to select a coin that will be used for issuing the CAT2 tokens. From a terminal window you'll need to run the cats command. The arguments needed for this command include: --tail – The TAIL program that was originally used (usually this is delegated_tail), in hex file format. --send-to – Where to send the tokens when they are initially issued. This is a placeholder only – you can enter any XCH address here. The value is required, but it will be ignored. --amount – The total number of mojos for this issuance. You need to have this many mojos in your wallet. This number must match the actual number of mojos that were originally issued. --as-bytes – This tells the tool to output the spend bundle in bytes instead of JSON. --select-coin – This tells the tool to select a specific coin from your wallet. The command to run is: cats --tail --send-to
--amount --as-bytes --select-coin Here's an example of the command: Windows Linux macOS cats --tail .\\reference_tails\\delegated_tail.clsp.hex --send-to xch1rh6punh4fy70y80ef4g89c9hqvm54dtl0fvyc4ejdccp3y6p04fqn5x8x8 --amount 6000000000 --as-bytes --select-coin cats --tail ./reference_tails/delegated_tail.clsp.hex --send-to xch1rh6punh4fy70y80ef4g89c9hqvm54dtl0fvyc4ejdccp3y6p04fqn5x8x8 --amount 6000000000 --as-bytes --select-coin cats --tail ./reference_tails/delegated_tail.clsp.hex --send-to xch1rh6punh4fy70y80ef4g89c9hqvm54dtl0fvyc4ejdccp3y6p04fqn5x8x8 --amount 6000000000 --as-bytes --select-coin The last line of the output will be something like: Name: 11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 This is the Coin ID of the coin that you will use for reissuance. Keep this value handy. Obtain the target puzzle hash by running the \"secure_the_bag\" command. The important arguments here are: --tail – The TAIL program that was originally used (usually this is delegated_tail), in hex file format. --amount – The total number of mojos for this issuance. You need to have this many mojos in your wallet. This number must match the actual number of mojos that were originally issued. --secure-the-bag-targets-path – The full path to the CSV file that contains the snapshot of this CAT. --curry – The value of Name: from the above output. Note that you need to prepend 0x to this argument, so for the above example, this value would start with 0x110. The command to run is: secure_the_bag --tail --amount --secure-the-bag-targets-path --prefix xch --curry Here's an example of the command to secure the bag: Windows Linux macOS secure_the_bag --tail .\\reference_tails\\delegated_tail.clsp.hex --amount 6000000000 --secure-the-bag-targets-path C:\\Users\\Username\\Downloads\\multi.csv --prefix xch --curry 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 secure_the_bag --tail ./reference_tails/delegated_tail.clsp.hex --amount 6000000000 --secure-the-bag-targets-path /home/Username/Downloads/multi.csv --prefix xch --curry 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 secure_the_bag --tail ./reference_tails/delegated_tail.clsp.hex --amount 6000000000 --secure-the-bag-targets-path /Users/Username/Download/multi.csv --prefix xch --curry 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 The command will create a tree of coins. This could take a long time, depending on how many coins need to be created. While it's in progress, it will output the percent complete. After it is finished, it will output the puzzle hash and address of the new coin to be created. For this example, the final two lines of the output are: Secure the bag root puzzle hash: ce663d935a4ca545475eeebff680922c32f496b326ade73a9820e354526449a1 Secure the bag root address: xch1rd7hejemt57amqtxq8azqg90hgxyhd9shwyjuppq5ez2jn4rlznscn4efy You should now have obtained the Secure the bag root puzzle hash and the Secure the bag root address. Using the coin ID obtained from the cats command above, curry the ID into the genesis_by_coin_id puzzle. The command to run is: cdv clsp curry -a In this example, the command will be: Windows Linux macOS cdv clsp curry .\\reference_tails\\genesis_by_coin_id.clsp.hex -a 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 cdv clsp curry ./reference_tails/genesis_by_coin_id.clsp.hex -a 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 cdv clsp curry ./reference_tails/genesis_by_coin_id.clsp.hex -a 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 The output will be a new CLVM puzzle: (a (q 2 (i 47 (q 8) (q 2 (i (= 45 2) () (q 8)) 1)) 1) (c (q . 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6) 1)) You will need to use the resulting puzzle (the output, enclosed in parentheses) in a later step. Run the same curry command from the previous step, but add the --treehash flag at the end: Windows Linux macOS cdv clsp curry .\\reference_tails\\genesis_by_coin_id.clsp.hex -a 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 --treehash cdv clsp curry ./reference_tails/genesis_by_coin_id.clsp.hex -a 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 --treehash cdv clsp curry ./reference_tails/genesis_by_coin_id.clsp.hex -a 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6 --treehash The output will be the treehash of the puzzle you calculated in the previous step: 3a56fa8cdf70dfd0e894af58359d72cb04658a1b0628a4ffe0dcc02099c9863b Sign the treehash that you just calculated. This will effectively sign the puzzle containing the coin you selected. The command to run is: chia keys sign -d -f -t m -b Where is the fingerprint of the wallet that holds the coin you previously selected. This fingerprint can be obtained by running chia keys show. For this example, the command is: chia keys sign -d 3a56fa8cdf70dfd0e894af58359d72cb04658a1b0628a4ffe0dcc02099c9863b -f 1131363750 -t m -b The output will be the public key used for signing, as well as the signature obtained: Public key: 8a7afe10d00899b94cf0d407b85e1b9fca21868bcf158563fe9432b60e36db7136055186221fbd27ecc7fc0d5b99ef1b Signature: b75390ee21b001b7a721f719ff045e3dc2a1072ab0824a8e75c881398db0fbed8fde5c62bbdfe629dce5da3d77834559016acd6d403f9b90d3102da2e9452461457514088af0cabe0b8a8493fc9c09d1785f1322abc8958ecf7907eba0e0abcc The final step is to create the coin using the secure the bag root address as the target address. The command to run is: cats --tail --curry --send-to --amount --as-bytes --solution \"\" --signature The arguments needed are: --tail – The TAIL program that was originally used (usually this is delegated_tail), in hex file format. --curry – The public key obtained in the previous step. Be sure to prefix it with 0x. --send-to – The secure the bag root address, obtained from in a previous step. --amount – The total number of mojos for this issuance. You need to have this many mojos in your wallet. This number must match the actual number of mojos that were originally issued. --as-bytes – Output the spend bundle in bytes (don't change this). --solution – The output of the curry command from a previous step (in quotes). --signature – The signature obtained from the previous step. For this example, the command to execute is: Windows Linux macOS cats --tail .\\reference_tails\\delegated_tail.clsp.hex --curry 0x8a7afe10d00899b94cf0d407b85e1b9fca21868bcf158563fe9432b60e36db7136055186221fbd27ecc7fc0d5b99ef1b --send-to xch1rd7hejemt57amqtxq8azqg90hgxyhd9shwyjuppq5ez2jn4rlznscn4efy --amount 6000000000 --as-bytes --solution \"(a (q 2 (i 47 (q 8) (q 2 (i (= 45 2) () (q 8)) 1)) 1) (c (q . 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6) 1))\" --signature b75390ee21b001b7a721f719ff045e3dc2a1072ab0824a8e75c881398db0fbed8fde5c62bbdfe629dce5da3d77834559016acd6d403f9b90d3102da2e9452461457514088af0cabe0b8a8493fc9c09d1785f1322abc8958ecf7907eba0e0abcc cats --tail ./reference_tails/delegated_tail.clsp.hex --curry 0x8a7afe10d00899b94cf0d407b85e1b9fca21868bcf158563fe9432b60e36db7136055186221fbd27ecc7fc0d5b99ef1b --send-to xch1rd7hejemt57amqtxq8azqg90hgxyhd9shwyjuppq5ez2jn4rlznscn4efy --amount 6000000000 --as-bytes --solution \"(a (q 2 (i 47 (q 8) (q 2 (i (= 45 2) () (q 8)) 1)) 1) (c (q . 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6) 1))\" --signature b75390ee21b001b7a721f719ff045e3dc2a1072ab0824a8e75c881398db0fbed8fde5c62bbdfe629dce5da3d77834559016acd6d403f9b90d3102da2e9452461457514088af0cabe0b8a8493fc9c09d1785f1322abc8958ecf7907eba0e0abcc cats --tail ./reference_tails/delegated_tail.clsp.hex --curry 0x8a7afe10d00899b94cf0d407b85e1b9fca21868bcf158563fe9432b60e36db7136055186221fbd27ecc7fc0d5b99ef1b --send-to xch1rd7hejemt57amqtxq8azqg90hgxyhd9shwyjuppq5ez2jn4rlznscn4efy --amount 6000000000 --as-bytes --solution \"(a (q 2 (i 47 (q 8) (q 2 (i (= 45 2) () (q 8)) 1)) 1) (c (q . 0x11038a7e107cb7e17a503ba201d94166018deecd777314e4697c5269d9f37fb6) 1))\" --signature b75390ee21b001b7a721f719ff045e3dc2a1072ab0824a8e75c881398db0fbed8fde5c62bbdfe629dce5da3d77834559016acd6d403f9b90d3102da2e9452461457514088af0cabe0b8a8493fc9c09d1785f1322abc8958ecf7907eba0e0abcc The output of this command will contain the Asset ID and Eve Coin ID for your issuance: Asset ID: cd3f7b65e1c20317ea0586b272262d5d59c1f0ebcab02231f1ec6f738c1953cf Eve Coin ID: 06e2afb16c5eebb4c5fbbfe95856cf961dc59a6292b969d5c9f8c8914e57987c You'll need these values in the next section. Note that if the Asset ID doesn't match the original CAT1 Asset ID, then something is wrong.","s":"Secure the Bag (Multi Issuance)","u":"/guides/cat2-issuance/","h":"#secure-multi","p":1561},{"i":1570,"t":"info The steps in this section are the same for both single-issuance and multi-issuance CATs. tip This step will unwind the bag for the entire set of coins. You may wish to run a test by first unwinding the coins due to a specific address; this way you can verify that the unwinding to this address has worked before preceeding with unwinding the whole bag. Skip to the next section if you want to run this test. The final step is to actually send the CAT2 tokens to the correct locations (AKA \"unwind the bag\"). This will send coins to each appropriate wallet. The important values for this command are: --eve-coin-id – Obtained from the final \"secure the bag\" command above. --tail-hash – The Asset ID: from the final \"secure the bag\" command above. --secure-the-bag-targets-path – The full path to the CSV file that contains the snapshot of this CAT. --unwind-fee – An optional blockchain fee in mojos, will be applied to each spend. --wallet-id – The ID of the wallet from which to unwind (typically 1). The command to run is: unwind_the_bag --eve-coin-id --tail-hash --secure-the-bag-targets-path --unwind-fee --wallet-id For this example, the command to unwind the entire bag is: Windows Linux macOS unwind_the_bag --eve-coin-id 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b --tail-hash 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d --secure-the-bag-targets-path C:\\Users\\Username\\Downloads\\spacebucks.csv --unwind-fee 500000 --wallet-id 1 unwind_the_bag --eve-coin-id 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b --tail-hash 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d --secure-the-bag-targets-path /home/Username/Downloads/spacebucks.csv --unwind-fee 500000 --wallet-id 1 unwind_the_bag --eve-coin-id 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b --tail-hash 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d --secure-the-bag-targets-path /Users/Username/Downloads/spacebucks.csv --unwind-fee 500000 --wallet-id 1 This command could take a long time to finish running. Afterward, you will have an exact copy of your CAT1 issuance, but in CAT2 form. At this point, you can navigate to taildatabase.com and register your new CAT2 token, using the Asset ID obtained from the final step of the Secure the Bag section. 🎉 Congratulations! You've successfully reissued your tokens in the CAT2 standard. 🎉","s":"Unwind the Bag","u":"/guides/cat2-issuance/","h":"#unwind","p":1561},{"i":1572,"t":"info Optional: Before unwinding the bag all at once, you can run a test by sending the correct number of tokens to a single address. We used Spacebucks in the single-issuance example, so we'll obtain the puzzle hash of a wallet that contains some CAT1 Spacebucks. First, run: chia keys show This will show the First wallet address of the key pair that contains Spacebucks: First wallet address: xch1qzz5xrd05698f2n2tt4qm500kys6p4w79ph7s2xrlau3drfugl3qqh9j4l Use the cdv decode command to obtain the puzzle hash that corresponds to this wallet address: cdv decode xch1qzz5xrd05698f2n2tt4qm500kys6p4w79ph7s2xrlau3drfugl3qqh9j4l Which outputs: 0085430dafa68a74aa6a5aea0dd1efb121a0d5de286fe828c3ff79168d3c47e2 If you want to verify that the puzzle hash is actually due to receive some tokens, you can check the CSV file. In this case, puzzle hash 0085... should receive 42 thousand (42,000) barfs. Run the unwind_the_bag command to send the appropriate amount to that puzzle hash. Be sure to run this command from the wallet that has the appropriate funds in it. The important values for this command are: --eve-coin-id – Obtained from the final \"secure the bag\" command above. --tail-hash – The Asset ID: from the final \"secure the bag\" command above. --secure-the-bag-targets-path – The full path to the CSV file that contains the snapshot of this CAT. --unwind-fee – An optional blockchain fee in mojos, will be applied to each spend. --wallet-id – The ID of the wallet from which to unwind (typically 1). --unwind-target-puzzle-hash – The puzzle hash obtained from the cdv decode command above. The command to run is: unwind_the_bag --eve-coin-id --tail-hash --secure-the-bag-targets-path --unwind-fee --wallet-id --unwind-target-puzzle-hash You may have noticed that this command is identical to the command that unwinds the whole bag, with the addition of the --unwind-target-puzzle-hash flag that ensures only coins are sent to a specific address. In this example, the command to unwind the bag is: Windows Linux macOS unwind_the_bag --eve-coin-id 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b --tail-hash 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d --secure-the-bag-targets-path C:\\Users\\Username\\Downloads\\spacebucks.csv --unwind-fee 500000 --wallet-id 1 --unwind-target-puzzle-hash 0085430dafa68a74aa6a5aea0dd1efb121a0d5de286fe828c3ff79168d3c47e2 unwind_the_bag --eve-coin-id 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b --tail-hash 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d --secure-the-bag-targets-path /home/Username/Downloads/spacebucks.csv --unwind-fee 500000 --wallet-id 1 --unwind-target-puzzle-hash 0085430dafa68a74aa6a5aea0dd1efb121a0d5de286fe828c3ff79168d3c47e2 unwind_the_bag --eve-coin-id 9fe3e95308949cb9c49333f829922dc7118cd3e2fdf365cde669b47852ce3a7b --tail-hash 9c39398afb1d7ffa03a589f60e5e39f2ae4572ff7048e689fe3128c339581b2d --secure-the-bag-targets-path /Users/Username/Downloads/spacebucks.csv --unwind-fee 500000 --wallet-id 1 --unwind-target-puzzle-hash 0085430dafa68a74aa6a5aea0dd1efb121a0d5de286fe828c3ff79168d3c47e2 This command could take a long time, depending on the total number of coins to unwind. You will need to verify the spend of each individual coin to unwind, and the command will monitor the blockchain for the coin(s) to be spent. The end result should be that the appropriate number of coins are sent to the puzzle hash, which you can then verify in your Chia wallet (assuming you control that wallet). note Each puzzle hash in the bag can only receive one airdrop. When you later unwind the bag for each puzzle hash, any puzzle hashes that have already received an airdrop will be skipped. They will not receive a second airdrop. The puzzle hashes from the CSV file are actually inner puzzle hashes, so searching for them on chain using cdv rpc coinrecords is more complex than it normally would be. However, you can still verify that the bag was successfully unwound for that puzzle hash by searching for the hint: Windows Linux macOS chia rpc full_node get_coin_records_by_hint '{\\\"hint\\\": \\\"\\\"}' chia rpc full_node get_coin_records_by_hint '{\"hint\": \"\"}' chia rpc full_node get_coin_records_by_hint '{\"hint\": \"\"}' You should see matching coin_records for each entry in the CSV file, along with its corresponding value. Now that you've tested unwinding the bag, you can proceed to unwind the rest of the bag.","s":"Test Run: Unwind the Bag","u":"/guides/cat2-issuance/","h":"#test-unwind","p":1561},{"i":1574,"t":"This document has been migrated to the Chialisp site https://chialisp.com/chialisp-using-modules/","s":"2. Using Modules","u":"/guides/chialisp-using-modules/","h":"","p":1573},{"i":1576,"t":"In these videos, Chia developer Matt Hauff covers creating your first smart coin in Chia and running tests through the example of a piggybank smart coin. If you haven't watched the video on setting up your environment, do that first. You can download the piggybank coin example files here.","s":"Coin Lifecycle and Testing","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"","p":1575},{"i":1580,"t":"Video 4 Slides Download","s":"4 - Securing a Smart Coin","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#4---securing-a-smart-coin","p":1575},{"i":1586,"t":"If you have further questions, join our Discord and ask in the #chialisp channel.","s":"9 - Spending Your Smart Coin","u":"/guides/coin-lifecycle-and-testing-video-series/","h":"#9---spending-your-smart-coin","p":1575},{"i":1588,"t":"This tutorial teaches you how to spend a coin with any puzzle using RPC calls. We will be using the password-locked coin puzzle as an example.","s":"RPC Coin Spend","u":"/guides/coin-spend-rpc-tutorial/","h":"","p":1587},{"i":1590,"t":"RPC call for spending a coin requires you to specify which coin you are spending. For unique identification, you need the coin's amount, puzzle hash, and parent info. Those three pieces of information are also enough to calculate the coin's ID. If you know the puzzle hash or receive address of the coin you are looking for, you can use Chia Dev Tools to get the coin's information. Example for the password-locked coin: cdv rpc coinrecords --by puzzlehash 4843c869bba5f65aa1e806cd372dae5668ca3b69640d067e86837ca96b324e71 Click through this tutorial to learn more about tools and setup.","s":"Get your coin's info (amount, puzzle hash & parent info)","u":"/guides/coin-spend-rpc-tutorial/","h":"#get-your-coins-info-amount-puzzle-hash--parent-info","p":1587},{"i":1592,"t":"The next thing you need to know to spend the coin is the coin's puzzle and solution. Puzzles and solutions are provided in a serialized format, so we need to get that for each. The puzzle has to be compiled to low-level Chialisp and is serialized as normal. To serialize the solution, you need to slightly modify the solution format to make it valid Chialisp program. For that, you need to quote your solution. For example, in case of the solution (hello 0x5f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675 2) you need to change it to (q . (hello 0x5f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675 2)) which makes it valid Chialisp program that can be compiled. Example for the password-locked coin: Puzzle: (a (q 2 (i (= (sha256 5) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (q 4 (c 2 (c 11 (c 23 ()))) ()) (q 8)) 1) (c (q . 51) 1)) Serialized puzzle: 0xff02ffff01ff02ffff03ffff09ffff0bff0580ffff01a02cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b982480ffff01ff04ffff04ff02ffff04ff0bffff04ff17ff80808080ff8080ffff01ff088080ff0180ffff04ffff0133ff018080 Solution: (hello 0x5f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675 2) (as valid Chialisp program (q . (hello 0x5f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675 2))) Serialized solution: 0xff8568656c6c6fffa05f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675ff0280 WARNING: You have to change this solution and replace the target puzzle hash with your own to get your coins back","s":"Get serialized puzzle and solution","u":"/guides/coin-spend-rpc-tutorial/","h":"#get-serialized-puzzle-and-solution","p":1587},{"i":1594,"t":"The opc -H command can be used for getting the serialized version of our puzzle and solution as well. The serialized version will be included in the response on the second line. opc -H '(a (q 2 (i (= (sha256 5) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (q 4 (c 2 (c 11 (c 23 ()))) ()) (q 8)) 1) (c (q . 51) 1))' Example response: 4843c869bba5f65aa1e806cd372dae5668ca3b69640d067e86837ca96b324e71 ff02ffff01ff02ffff03ffff09ffff0bff0580ffff01a02cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b982480ffff01ff04ffff04ff02ffff04ff0bffff04ff17ff80808080ff8080ffff01ff088080ff0180ffff04ffff0133ff018080","s":"Serialization using clvm_tools","u":"/guides/coin-spend-rpc-tutorial/","h":"#serialization-using-clvm_tools","p":1587},{"i":1596,"t":"Follow repository's README to set up a new project and serialize puzzle. In short: paste your compiled puzzle/solution to your work file and call chialisp build. That will generate .hex files with a serialized version of your puzzle/solution (depending on your work file).","s":"Serialization using Chia Dev Tools","u":"/guides/coin-spend-rpc-tutorial/","h":"#serialization-using-chia-dev-tools","p":1587},{"i":1598,"t":"Paste your puzzle in the text area and click Compile. The serialized result will be displayed in the Serialized section.","s":"Serialization using Chialisp web tool","u":"/guides/coin-spend-rpc-tutorial/","h":"#serialization-using-chialisp-web-tool","p":1587},{"i":1600,"t":"To spend your coin, you only need to call push_tx RPC (broadcast transaction example) with values specific to your spend. curl --insecure --cert ~/.chia/mainnet/config/ssl/full_node/private_full_node.crt --key ~/.chia/mainnet/config/ssl/full_node/private_full_node.key -d '{ \"spend_bundle\": { \"aggregated_signature\": \"0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\", \"coin_spends\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0xccd5bb71183532bff220ba46c268991a00000000000000000000000000004082\", \"puzzle_hash\": \"0x4843c869bba5f65aa1e806cd372dae5668ca3b69640d067e86837ca96b324e71\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff03ffff09ffff0bff0580ffff01a02cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b982480ffff01ff04ffff04ff02ffff04ff0bffff04ff17ff80808080ff8080ffff01ff088080ff0180ffff04ffff0133ff018080 \", \"solution\": \"0xff8568656c6c6fffa05f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675ff0280\" } ] }}' -H \"Content-Type: application/json\" -X POST https://localhost:8555/push_tx The spend_bundle object contains an aggregated_signature, which we can later assert in the puzzle, and coin_spends: a list of objects for all of the coins we are spending. If aggregated_signature is not necessary for your puzzle, use 0xc followed by 191 zeros (as in the example above). However, it's worth noting that a puzzle that doesn't use a signature is usually unsafe and should be used only for testing purposes. The coin_solution contains information about the coin it is spending (amount, parent_coin_info, and puzzle_hash). It also includes a serialized puzzle as a puzzle_reveal and serialized solution. Note: if this is your time constructing a spend bundle, the puzzle_hash is the puzzlehash of the receive address that you wish to send to coin to. If you fill in all your information correctly and send this request, your coin will be spent according to its provided solution, and the response {\"status\": \"SUCCESS\", \"success\": true} should be returned from the RPC call. If your puzzle requires an aggregated signature, stay tuned for more tutorials. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Spend a coin with RPC call","u":"/guides/coin-spend-rpc-tutorial/","h":"#spend-a-coin-with-rpc-call","p":1587},{"i":1603,"t":"This document is a guide for using the clawback functionality introduced in version 1.8.2 of Chia's reference wallet. Clawback is a new feature that offers protection against sending XCH to the wrong address. If you are a developer or a CLI user, see the following resources for more info: Clawback Standalone Primitive Guide Clawback Standalone Primitive CLI Reference Youtube video explaining clawback In order to use Chia clawbacks, you must have: Version 1.8.2 or later of Chia's reference light wallet or full node. See our downloads page to obtain a copy. A sufficient amount of XCH or TXCH to send a transaction and pay fees. If you do not have a sufficient amount, you can obtain some from our mainnet and testnet faucets.","s":"Intro","u":"/guides/clawback-user-guide/","h":"#intro","p":1601},{"i":1605,"t":"Clawback allows the sender of XCH to return funds to their wallet during a fixed window of time before the transaction can be completed. The following demonstrates an example workflow of this process: The sender sets up a 1-XCH transaction to the receiver's wallet, and adds a 10-minute clawback Instead of being sent directly to the receiver's wallet, the 1 XCH is sent to an intermediate location (see below for an explanation) For the next 10 minutes: The sender and receiver both see the pending 1-XCH transaction in their wallets The sender can choose to return the 1 XCH to his/her wallet (this is a clawback) The receiver cannot yet claim the money The sender and receiver could communicate off-chain. For example, the sender could call the receiver and ask if the pending transaction appears in their wallet. If yes, then both parties can be confident that the money was sent to the correct address If no, then the money was sent to an incorrect address, so the sender will claw it back After 10 minutes, if the sender has not clawed the 1 XCH back, the receiver can claim it After the receiver has claimed the money, it appears in both wallets as a normal transaction. At this point, the transaction is complete; clawback is no longer possible The \"intermediate location\" is actually a coin with two rules: Before a certain timestamp, only the sender can spend the coin After the timestamp, the receiver can also spend the coin Nobody else is allowed to spend the coin. It is not held in escrow by any third parties. It is a decentralized solution, created in Chialisp, that is one of many potential custody options in Chia. This guide will show you how to perform the above workflow.","s":"Explanation","u":"/guides/clawback-user-guide/","h":"#explanation","p":1601},{"i":1608,"t":"Before initiating a clawback transaction, it's a good idea to review your wallet's settings. Click Settings (the gear icon in the lower-left corner of your wallet) and click the CUSTODY menu. From this menu: The Sender wallet can enable clawback for all outgoing transactions The Receiver wallet can automatically claim all clawback transactions by adding a default transaction fee For this tutorial, both of these settings will be disabled:","s":"Review Settings","u":"/guides/clawback-user-guide/","h":"#review-settings","p":1601},{"i":1610,"t":"This section will show you how to initiate a transaction and claw it back. From the SEND menu as shown below, enter the recipient's address, the amount to send, and an optional blockchain fee. note Prior to initiating the transaction, the sender's wallet from this example contained 5 TXCH. The amount to be sent was 1 TXCH. This example was executed on Chia's testnet, which has higher fee requirements than mainnet. For this reason, a large fee of 100 million mojos was added. After you have entered these parameters, click the dropdown for Add option to claw back transaction. Add the time (days, minutes, hours) during which the transaction will be able to be clawed back. In this case, we'll use 10 minutes. Optionally add a memo to describe this transaction, and click SEND. The transaction has been added to the mempool. This means that it is still in the Pending state for inclusion on the blockchain. At this point, there is no indication in the GUI that this is a clawback transaction. Eventually the clawback transaction will be confirmed on the blockchain. Note that the average time between transaction blocks is 52 seconds. Depending on how busy the mempool is, as well as the size of the included fee, confirmation could take much longer. After the transaction has been confirmed, a green CLAW BACK THIS TRANSACTION button will appear. This means that the recipient can also see this transaction, but has yet to claim it. While the transaction is in this state, you can claw it back by clicking the button, which will be demonstrated next. The clawback action requires another on-chain transaction. Enter a transaction fee and click CLAW BACK TRANSACTION to claw it back. Just like the original transaction, the clawback will require some time to be confirmed on the blockchain. After the clawback has been confirmed, the pending amount is returned to the sender's wallet. In this example, the wallet started with 5 TXCH. Because of the two transaction fees, it now contains 4.9998 TXCH. At this point, the transaction is final. The sender has the same amount of XCH they started with, minus the two transaction fees. Due to the clawback, the original \"receiver\" did not receive anything.","s":"Clawback","u":"/guides/clawback-user-guide/","h":"#clawback","p":1601},{"i":1612,"t":"This section will show you how to initiate a clawback transaction from the sender's wallet, and claim the transaction from the receiver's wallet. note To avoid confusion, the sender's wallet in this example uses a light theme, and the receiver's wallet uses a dark theme. Just like before, start by creating a new transaction and adding a clawback time and an optional memo. We'll use 10 minutes in this example. After the initial transaction has been confirmed on the blockchain, the green CLAW BACK THIS TRANSACTION button will appear in the sender's wallet. The receiver's wallet will show a pending transaction, including the value, the amount of time before the transaction can be claimed, and the included memo. note While the transaction is in this state, it does not show up in any of the Balance fields in the receiver's wallet. This is because the sender can still claw it back. The receiver should therefore not assume the amount will eventually be claimed. The timer showing how long until the transaction can be claimed does not begin counting down until the original transaction is confirmed on the blockchain. After the timer has expired, the receiver can claim the transaction. However, in this example, \"auto claim\" was disabled. Therefore, the sender can still claw back the transaction, even though the timer has expired. For this reason, it is a good idea for the receiver to enable \"auto claim\". If \"auto claim\" is disabled (as in this example), the receiver needs to click CLAIM TRANSACTION after the timer has expired. Enter a transaction fee and optionally click the Auto-claim checkbox if desired. Finally, click CLAIM TRANSACTION. At this point, the claim has been submitted to the mempool, but it has yet to be confirmed on chain. As stated previously, the amount of time before the transaction is completed depends on the mempool and the fee. After the claim transaction has completed, it will appear as a normal transaction in the receiver's wallet. It will also appear in the Total Balance box. At this point, the transaction is final. It can no longer be clawed back.","s":"Claim","u":"/guides/clawback-user-guide/","h":"#claim","p":1601},{"i":1614,"t":"The detailed documentation for the clawback CLI commands can be found in the following locations: clawback get_transactions send","s":"CLI","u":"/guides/clawback-user-guide/","h":"#cli","p":1601},{"i":1616,"t":"Create the clawback spend. This step uses a normal send command, with an extra --clawback timer: chia wallet send -f 4045726944 -a 1 -e \"Sending 1 TXCH with 1-hour clawback\" -m 0.0001 -t txch1pxam7zakgqfcfr0xm8xcemm76d637w6sg0l7j8h6gv7rdlf8cfxs326mze --clawback_time 3600 Response: Submitting transaction... Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 4045726944 -tx 0x5a41dbe755a7a44b827b61cfa384e79bef5f79370f63fa7ffe1ea29212a26bf6' to get status After the above transaction has been confirmed on-chain, obtain the ID for the clawback transaction: chia wallet get_transactions -f 4045726944 -l 1 --clawback Response: Transaction 0661d157b33597c33e5dc2027f07a1f0cbdc72fa950ca9617e08af326ceb7c81 Status: Pending Amount received in clawback as sender: 1 TXCH To address: txch1pxam7zakgqfcfr0xm8xcemm76d637w6sg0l7j8h6gv7rdlf8cfxs326mze Created at: 2023-06-14 13:14:16 Recipient claimable time: 2023-06-14 14:14:16 Next, claw back the transaction (this must be done before the recipient claims it): chia wallet clawback -f 4045726944 -ids 0661d157b33597c33e5dc2027f07a1f0cbdc72fa950ca9617e08af326ceb7c81 -m 0.0001 Response: {'success': True, 'transaction_ids': ['a8295c3924a8ad079093995d3129a38e26faa01ffca175572d21881865dc48ff']} Finally, show the clawback transaction to verify that it was confirmed: chia wallet get_transaction -f 4045726944 -tx 0xa8295c3924a8ad079093995d3129a38e26faa01ffca175572d21881865dc48ff Transaction a8295c3924a8ad079093995d3129a38e26faa01ffca175572d21881865dc48ff Status: Confirmed Amount claim/clawback: 1 TXCH To address: txch1dmdj4ee0ss3m7zunaymz47kdejv2pfwxdhcdjh6zffg935yqmvlsqpvvjq Created at: 2023-06-14 13:17:33","s":"Clawback","u":"/guides/clawback-user-guide/","h":"#clawback-1","p":1601},{"i":1618,"t":"The process to claim a clawback transaction is similar to the clawback process, except the receiver wallet must perform the claim. Set up a clawback send transaction with a 60-second clawback window: chia wallet send -f 4045726944 -a 1 -e \"Sending 1 TXCH with 60-second clawback\" -m 0.0001 -t txch1pxam7zakgqfcfr0xm8xcemm76d637w6sg0l7j8h6gv7rdlf8cfxs326mze --clawback_time 60 Response: Submitting transaction... Tr0ansaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 4045726944 -tx 0x3ca82042aba188d47a80b663523847fa6050a21e04647c7b31ad3aa9d8d5450f' to get status Get the status of the latest clawback transaction: chia wallet get_transactions -f 4045726944 -l 1 --clawback Response: Transaction d4d29b6381e4248fc7361abb900a154e14d3120f6ecc01e7aaccaf9d984ed2f3 Status: Pending Amount received in clawback as sender: 1 TXCH To address: txch1pxam7zakgqfcfr0xm8xcemm76d637w6sg0l7j8h6gv7rdlf8cfxs326mze Created at: 2023-06-14 13:28:38 Recipient claimable time: 2023-06-14 13:29:38 From the receiver's wallet, claim the transaction after the claimable time has elapsed: chia wallet clawback -f 2457176934 -ids d4d29b6381e4248fc7361abb900a154e14d3120f6ecc01e7aaccaf9d984ed2f3 -m 0.0001 Response: {'success': True, 'transaction_ids': ['e969bb32b4b01e2c14f67c9d6c467645779c1898d08eb4e041c937f4ba3fe9cb']} Finally, show the last transaction's status: chia wallet get_transaction -f 2457176934 -tx 0xe969bb32b4b01e2c14f67c9d6c467645779c1898d08eb4e041c937f4ba3fe9cb Response: Transaction e969bb32b4b01e2c14f67c9d6c467645779c1898d08eb4e041c937f4ba3fe9cb Status: Confirmed Amount claim/clawback: 1 TXCH To address: txch1pxam7zakgqfcfr0xm8xcemm76d637w6sg0l7j8h6gv7rdlf8cfxs326mze Created at: 2023-06-14 13:33:10","s":"Claim","u":"/guides/clawback-user-guide/","h":"#claim-1","p":1601},{"i":1621,"t":"This document will show you how to use Chia's standalone clawback primitive. Wallet developers are welcome to integrate it into their GUI wallets. For additional technical resources, see the following: Clawback CLI Reference Youtube video explaining clawback Clawback user guide some important notes The standalone clawback primitive doesn't implement wallet functionality to handle incoming clawbacks and resync deleted coin stores. Rather, it's for developers to understand the process of how clawbacks work. Chia Network Inc has added a user-friendly implementation of the clawback primitive to version 1.8.2 of the reference wallet. A synced full node AND a synced wallet are required to use the clawback primitive. You are recommended to test the clawback primitive on either the testnet or a simulator before moving to mainnet. For your reference, this guide will use a testnet. The clawback primitive currently only supports XCH/TXCH. It does not support CATs or NFTs. The -w flag will be ignored if it points to a non-XCH (or TXCH) wallet.","s":"Intro","u":"/guides/clawback-primitive-guide/","h":"#intro","p":1619},{"i":1623,"t":"The clawback primitive was designed to guard against sending Chia assets to an incorrect address. The principal behind clawback is simple: it is an intermediate coin that cannot be sent to the destination address until a timelock has expired. In the meantime, the Sender can \"claw back\" the coin, returning it to their wallet in the form of standard XCH. An Alice-Bob will demonstrate this: Alice wants to send 1 XCH to Bob, and she wants to verify that she has entered Bob's address correctly in her wallet. With this in mind, Alice creates a clawback coin with the following features: It exists on Chia's blockchain It is viewable by Alice's and Bob's wallets, as well as by block explorers It is worth 1 XCH, funded from Alice's wallet It has a 1-hour timelock It contains Alice's address as its clawback destination (Alice -- and no one else -- can modify this later) It contains Bob's address as its final destination (Bob -- and no one else -- can modify this later) The clawback coin therefore contains the following logic for how it may be spent: Before 1 hour has elapsed since the coin's creation, Alice can use p2_1_of_n to spend the coin using the same public/private key pair that created the coin. When the coin is spent in this way, a new coin is created using p2_puzzle_hash. Typically, this coin will be created in Alice's wallet, but it could be created in another wallet instead. The new coin uses the standard Chia puzzle. This is the clawback case. Before 1 hour has elapsed since the coin's creation, nobody other than Alice may spend it After 1 hour, the timelock elapses. At this point Bob can spend the clawback coin. When this spend occurs, by default a new standard XCH coin is created in Bob's wallet. Bob can also pass in a different address than the one he originally specified if he so chooses. Note that the coin's clawback logic is in place for the life of the coin. This means that until the coin is spent, Alice is able to claw it back. This is true regardless of the coin's age. Because of this, after the timelock expires, Bob must spend the clawback coin in order to receive the XCH in his wallet. After this spend has completed, the clawback coin no longer exists, and the spend is final. This guide will show you how to perform the logic outlined above: Create a clawback coin Claw back the coin Claim the clawback coin As well as a few other interesting clawback cases. We'll start by showing you how to install the clawback primitive. This guide assumes you are running a Chia node and wallet, using mainnet, the testnet, or a simulator. important The values used in the commands from this guide are just examples. You will need to update them with the equivalent values from your local node.","s":"About clawback","u":"/guides/clawback-primitive-guide/","h":"#about-clawback","p":1619},{"i":1625,"t":"The clawback primitive is included in the Chia-Network organization's chia-clawback-primitive GitHub repository. Open a new terminal window and run the following command to clone the chia-clawback-primitive repository, using the main branch: git clone https://github.com/Chia-Network/chia-clawback-primitive.git -b main Change to the cloned repository: cd chia-clawback-primitive Create and activate a virtual environment: Windows Linux macOS python -m venv venv .\\venv\\Scripts\\Activate.ps1 python3 -m venv venv . ./venv/bin/activate python3 -m venv venv . ./venv/bin/activate Install the clawback primitive: pip install .[dev] Several packages will be installed, including a bundled copy of chia-blockchain. This process will typically take a few minutes. The clawback primitive should now be installed and configured properly. To test it, run: clawback --version You should be shown the current version of the clawback primitive. For example: clawback, version 0.1.dev19 At this point, you are ready to use the clawback primitive.","s":"Install the clawback primitive","u":"/guides/clawback-primitive-guide/","h":"#install-the-clawback-primitive","p":1619},{"i":1627,"t":"For this example, we will use two wallets: a Sender and a Recipient. The Sender has a balance of 10 TXCH and the Recipient has 0 TXCH. For your reference, here is the Sender wallet's info: chia wallet show -f 3807629793 Result: Wallet height: 2391281 Sync status: Synced Balances, fingerprint: 3807629793 Chia Wallet: -Total Balance: 8.0 txch (8000000000000 mojo) -Pending Total Balance: 8.0 txch (8000000000000 mojo) -Spendable: 8.0 txch (8000000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 To create the clawback coin from the Sender's wallet, run the clawback create command. The -t (Recipient's address) and -a (amount in XCH/TXCH) flags are required. By default, the clawback coin will be locked for two weeks. For this demo, we will override the default by using the -l flag to specify a timelock period of 600 seconds. We will also use the -m flag to include a fee of 0.000275 TXCH. info The testnet is constantly being dusted (filled with small transactions) in order to simulate a busy network. Because of this you are always recommended to include a fee with testnet transactions. The 275-million mojo fee from this demo should be sufficient to push your transactions through in the next transaction block. If you are running on mainnet, a fee of 275 million mojos is likely higher than the recommended amount. The reference wallet GUI will suggest an appropriate fee to be included with all transactions. The Sender will run the following command in this example (once again, these are only example settings; replace the values as needed): clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 0.1 -l 600 -m 0.000275 Result: Created Coin with ID: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 Coin { parent_coin_info: dcedd4d573679302ee3f2a54fb51c437b8156e8cd5b1c3c08d25cadf83292c3d, puzzle_hash: 13cb7ce11775a5b42754fb382eb94c846e4be677e6d55bf665b23c075a54e930, amount: 100000000000 } As a result of running this command, a new clawback coin has been created on the blockchain, the details of which are shown above. To view this coin, along with other clawback coins created by this wallet, run the clawback show command: clawback show The basic details of the clawback coin are given: clawback show Updating coin records... Coin ID: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 Amount: 0.1 XCH (100000000000 mojos) Timelock: 600 seconds Time left: 518 seconds","s":"Create a clawback coin","u":"/guides/clawback-primitive-guide/","h":"#create-a-clawback-coin","p":1619},{"i":1629,"t":"This guide will continue from the previous section, where we created a new clawback coin, which has not yet been spent. As a reminder, these are the clawback coin's details: clawback show Result: Updating coin records... Coin ID: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 Amount: 0.1 XCH (100000000000 mojos) Timelock: 600 seconds Time left: 518 seconds The same public/private key pair that created this coin must be used to claw it back. The Sender will use the clawback claw command, passing in the ID of the coin to claw back: clawback claw -c 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 -m 0.000275 As a result, the clawback coin will be spent: Submitted spend to claw back coin: 29056b320b380c0fc4834578ca30318ae9c1d1cddbe39a91197870c4dc474532 To show the status of the clawback, run the clawback show command once again: clawback show Result: Updating coin records... No coins found After the clawback transaction has completed, the Sender wallet's balance has increased (minus transaction fees): chia wallet show -f 3807629793 Result: chia wallet show -f 3807629793 Wallet height: 2405004 Sync status: Synced Balances, fingerprint: 3807629793 Chia Wallet: -Total Balance: 7.99945 txch (7999450000000 mojo) -Pending Total Balance: 7.99945 txch (7999450000000 mojo) -Spendable: 7.99945 txch (7999450000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 At this point, the clawback coin no longer exists. The Sender is of course free to create new clawback coins as they see fit.","s":"Claw back a coin","u":"/guides/clawback-primitive-guide/","h":"#claw-back-a-coin","p":1619},{"i":1631,"t":"In this section, we'll show how to claim a clawback coin. First, the Sender creates a new clawback coin with a 60-second timelock: clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 0.1 -l 60 -m 0.000275 Result: Created Coin with ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Coin { parent_coin_info: f5e408a15299df27a00d0403ea50ed29a06f87a31b638cff1b63ef3e6060b45a, puzzle_hash: 2e91566d9549cb909109d147c79b457d15ced2d8a24dea5a125b1e5c05cdd1ec, amount: 100000000000 } The Sender can run the clawback show command to show the details of each of their clawback coins: clawback show Result: Updating coin records... Coin ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 23 seconds The timelock expires when the Time left: value reaches 0 seconds: clawback show Result: Updating coin records... Coin ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 0 seconds For your reference, the Recipient wallet currently has a balance of 0 XCH: chia wallet show -f 1231588123 Result: Wallet height: 2405060 Sync status: Synced Balances, fingerprint: 1231588123 Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.0 txch (0 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 The Recipient (or anyone else) can view the status of the clawback coin if they know the coin ID: clawback show -c ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Result: Updating coin records... Coin ID: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 0 seconds The value of Time left: is 0 seconds. In most cases (see the info box below for more info), the Recipient can now run the clawback claim command to claim the coin: clawback claim -c ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 Result: Submitted spend to claim coin: ef4b69e65e99261d6e30c8d2d331a8ed84995f3452b95aaa944f76a0f9af74c5 info In most cases, if the output of the clawback show command contains Time left: 0 seconds, this indicates that the Recipient can proceed with the claim call. However, there is a small window of time where the timer has expired, but a block still hasn't been farmed with a timestamp after the expiry. If the Recipient attempts to make the claim call during this window, they will receive the following error: You are trying to claim the coin too early In this case, the Recipient needs to wait for one more transaction block to be farmed before proceeding with the claim call. As a reminder, a new transaction block is farmed every 52 seconds, on average. While the claim transaction is being processed, it will show in the Pending Total Balance: of the Recipient's wallet: chia wallet show -f 1231588123 Result: Wallet height: 2405100 Sync status: Synced Balances, fingerprint: 1231588123 Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.1 txch (100000000000 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Finally, the Recipient can view the additional balance in their wallet: chia wallet show -f 1231588123 Result: Wallet height: 2405465 Sync status: Synced Balances, fingerprint: 1231588123 Chia Wallet: -Total Balance: 0.1 txch (100000000000 mojo) -Pending Total Balance: 0.1 txch (100000000000 mojo) -Spendable: 0.1 txch (100000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 The spend is now complete and can no longer be clawed back. The funds are stored as a standard Chia coin in the Recipient's wallet.","s":"Claim a clawback coin","u":"/guides/clawback-primitive-guide/","h":"#claim-a-clawback-coin","p":1619},{"i":1633,"t":"So far, we have shown the standard clawback and completion spends. There are also a few edge cases and errors worth discussing.","s":"Other cases","u":"/guides/clawback-primitive-guide/","h":"#other-cases","p":1619},{"i":1635,"t":"After the timelock expires, the Recipient may claim the clawback coin. Until this is done, the Sender can still claw back the coin. Let's say the Sender's wallet contains 7.899175 TXCH: chia wallet show -f 3807629793 Wallet height: 2405202 Sync status: Synced Balances, fingerprint: 3807629793 Chia Wallet: -Total Balance: 7.899175 txch (7899175000000 mojo) -Pending Total Balance: 7.899175 txch (7899175000000 mojo) -Spendable: 7.899175 txch (7899175000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 The Sender creates a new clawback coin: clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 0.1 -l 60 -m 0.000275 Result: Created Coin with ID: 5024cdd687a70d8a1340e774a9e29c3dc2aa1e3726eaae40700f2859db5fdd1e Coin { parent_coin_info: b07dbf3274bfdb49d5082fac741c4f26bf7cf5ca5382dc27234e7602b9bf66ce, puzzle_hash: f0f6294fbc4cf903694000b18764c05a4530b340a783f85dbdb2ef60c29873bb, amount: 100000000000 } The Sender waits waits for the clawback's timelock to expire: clawback show Result: Coin ID: 5024cdd687a70d8a1340e774a9e29c3dc2aa1e3726eaae40700f2859db5fdd1e Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 0 seconds At this point, the Recipient could claim this coin. However, the Sender also can claw back this coin: clawback claw -c Result: 5024cdd687a70d8a1340e774a9e29c3dc2aa1e3726eaae40700f2859db5fdd1e Submitted spend to claw back coin: 5024cdd687a70d8a1340e774a9e29c3dc2aa1e3726eaae40700f2859db5fdd1e After the transaction completes, the clawback coin has been returned to the Sender's wallet. The Sender's balance matches the original balance, minus any transaction fees: chia wallet show -f 3807629793 Result: Wallet height: 2405553 Sync status: Synced Balances, fingerprint: 3807629793 Chia Wallet: -Total Balance: 7.8989 txch (7898900000000 mojo) -Pending Total Balance: 7.8989 txch (7898900000000 mojo) -Spendable: 7.8989 txch (7898900000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Because the Sender can always claw back a clawback coin while it exists, the Recipient cannot assume that they will receive the clawback coin, even after the timelock has expired. However, after the Recipient has claimed the clawback coin and it has appeared in the Recipient's wallet as regular XCH/TXCH, the coin can no longer be clawed back.","s":"Sender performs a clawback after the timelock","u":"/guides/clawback-primitive-guide/","h":"#sender-performs-a-clawback-after-the-timelock","p":1619},{"i":1637,"t":"Before the timelock expires, a clawback coin may not be spent to its Recipient's address. For example, let's say the following clawback coin exists. Note that its Time left: is still greater than 0 seconds: clawback show -c 8aec68811dfa272e1655eb75c93de5011d9f1efb7d4ad81c610d0045055f8b8f Result: Updating coin records... Coin ID: 8aec68811dfa272e1655eb75c93de5011d9f1efb7d4ad81c610d0045055f8b8f Amount: 0.1 XCH (100000000000 mojos) Timelock: 600 seconds Time left: 529 seconds At this point, if the Recipient attempts to claim the clawback coin, it will not succeed: clawback claim -c 8aec68811dfa272e1655eb75c93de5011d9f1efb7d4ad81c610d0045055f8b8f -m 0.000275 Result: You are trying to claim the coin too early","s":"Recipient attempts to claim clawback coin before timelock has expired","u":"/guides/clawback-primitive-guide/","h":"#recipient-attempts-to-claim-clawback-coin-before-timelock-has-expired","p":1619},{"i":1639,"t":"For this example, the Sender creates a new clawback coin: clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 1 -l 300 -m 0.000275 Result: Created Coin with ID: cb11caa0f4d02b08b94e949e34105b7f5cd4f6918fd65c92beeeded6aea1f8eb Coin { parent_coin_info: 73efa5832a6d639871b7170dca86c97c1b79610a9f826d0533026d2d655e80ae, puzzle_hash: efa2dbe8f4634952518037fd1daeb3d38771a41e1ddb81657cc8d803b31c7512, amount: 1000000000000 } A different wallet (it could be the Recipient, or any other wallet) is unable to view the clawback without knowing the Coin ID: clawback show Result: clawback show Updating coin records... No coins found However, if the owner of the non-Sender wallet knows the Coin ID, they can view the clawback coin: clawback show -c cb11caa0f4d02b08b94e949e34105b7f5cd4f6918fd65c92beeeded6aea1f8eb Result: Updating coin records... Coin ID: cb11caa0f4d02b08b94e949e34105b7f5cd4f6918fd65c92beeeded6aea1f8eb Amount: 1 XCH (1000000000000 mojos) Timelock: 300 seconds Time left: 131 seconds If the non-Sender wallet attempts to claw the coin back, then this will fail: clawback claw -c cb11caa0f4d02b08b94e949e34105b7f5cd4f6918fd65c92beeeded6aea1f8eb -m 0.000275 Result: Traceback (most recent call last): File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 87, in _run_code exec(code, run_globals) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\Scripts\\clawback.exe\\__main__.py\", line 7, in File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 449, in main asyncio.run(cli()) # pylint: disable=no-value-for-parameter File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1130, in __call__ return self.main(*args, **kwargs) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1055, in main rv = self.invoke(ctx) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 760, in invoke return __callback(*args, **kwargs) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 348, in claw_cmd asyncio.get_event_loop().run_until_complete(do_command(fee, wallet_id, target_address, fingerprint)) File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\base_events.py\", line 642, in run_until_complete return future.result() File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 317, in do_command spend = await manager.create_clawback_spend(cb_info, target_ph, fee) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\drivers\\cb_manager.py\", line 195, in create_clawback_spend inner_puzzle = await self.get_puzzle_for_puzzle_hash(cb_info.sender_ph) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\drivers\\cb_manager.py\", line 85, in get_puzzle_for_puzzle_hash private_key, _, _ = await self.get_keys_for_puzzle_hash(puzzle_hash) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\drivers\\cb_manager.py\", line 82, in get_keys_for_puzzle_hash raise ValueError(f\"Couldn't find a matching key for puzzle hash: {puzzle_hash}.\") ValueError: Couldn't find a matching key for puzzle hash: ee3144040e80747af2f6ec56ed7567d22ca83ea3470e09bb9d95347a80cd2d29.","s":"Someone other than the Sender attempts to claw back a coin","u":"/guides/clawback-primitive-guide/","h":"#someone-other-than-the-sender-attempts-to-claw-back-a-coin","p":1619},{"i":1641,"t":"For this example, someone other than the Recipient is made aware of the Coin ID of a pending clawback coin: clawback show -c cb11caa0f4d02b08b94e949e34105b7f5cd4f6918fd65c92beeeded6aea1f8eb Result: Updating coin records... Coin ID: cb11caa0f4d02b08b94e949e34105b7f5cd4f6918fd65c92beeeded6aea1f8eb Amount: 1 XCH (1000000000000 mojos) Timelock: 300 seconds Time left: 0 seconds Only the Recipient may attempt to claim a clawback spend. If another wallet (it could be the Sender, or any other wallet) attempts this, the claim will fail: clawback claim -c cb11caa0f4d02b08b94e949e34105b7f5cd4f6918fd65c92beeeded6aea1f8eb -m 0.000275 Result: Traceback (most recent call last): File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 87, in _run_code exec(code, run_globals) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\Scripts\\clawback.exe\\__main__.py\", line 7, in File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 449, in main asyncio.run(cli()) # pylint: disable=no-value-for-parameter File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1130, in __call__ return self.main(*args, **kwargs) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1055, in main rv = self.invoke(ctx) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 760, in invoke return __callback(*args, **kwargs) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 444, in claim_cmd asyncio.get_event_loop().run_until_complete(do_command(fee, wallet_id, target_address, fingerprint)) File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\base_events.py\", line 642, in run_until_complete return future.result() File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 413, in do_command spend = await manager.create_claim_spend(coin_record.coin, target_ph, fee) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\drivers\\cb_manager.py\", line 242, in create_claim_spend inner_puzzle = await self.get_puzzle_for_puzzle_hash(recipient_ph) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\drivers\\cb_manager.py\", line 85, in get_puzzle_for_puzzle_hash private_key, _, _ = await self.get_keys_for_puzzle_hash(puzzle_hash) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\drivers\\cb_manager.py\", line 82, in get_keys_for_puzzle_hash raise ValueError(f\"Couldn't find a matching key for puzzle hash: {puzzle_hash}.\") ValueError: Couldn't find a matching key for puzzle hash: c08dfae2aab3b3b3cbffdd4c1f1e4bf2df278785e5ca67524d6e518e79f134c3.","s":"Someone other than the Recipient attempts to claim a clawback spend","u":"/guides/clawback-primitive-guide/","h":"#someone-other-than-the-recipient-attempts-to-claim-a-clawback-spend","p":1619},{"i":1643,"t":"The Sender has the option of performing a clawback where the coin is sent to any wallet. Let's say the Sender creates a clawback coin: clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 0.1 -l 60 -m 0.000275 Result: Created Coin with ID: 73e062705a7b44ffc92e7e79dcae8b365363fb2f7d0cf2e983905544f99a6a47 Coin { parent_coin_info: 175def0bab89a08a091af7ab02fe71523437c636dd3f746b49243915ffed4d74, puzzle_hash: 4975c4c0de463699efd07a376aebb0f81454ee406c0d5492c67aa3ee9c928ff3, amount: 100000000000 } The Sender can then claw back the coin to a new wallet address: clawback claw -c 73e062705a7b44ffc92e7e79dcae8b365363fb2f7d0cf2e983905544f99a6a47 -m 0.000275 -t txch13alcyq2x9px5mhcvalhq4jj9g9n8asz6ud8htmguwejrl6j722cq4ahxkw Result: Submitted spend to claw back coin: 73e062705a7b44ffc92e7e79dcae8b365363fb2f7d0cf2e983905544f99a6a47 Note that the wallet address specified in the claw command does not need to be associated with the Sender's wallet. In this case, the address belongs to a separate wallet. After the clawback completes, the new wallet has received the clawback coin: chia wallet show -f 1010362042 Result: Wallet height: 2405908 Sync status: Synced Balances, fingerprint: 1010362042 Chia Wallet: -Total Balance: 0.1 txch (100000000000 mojo) -Pending Total Balance: 0.1 txch (100000000000 mojo) -Spendable: 0.1 txch (100000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1","s":"Sender claws back coin to a new wallet","u":"/guides/clawback-primitive-guide/","h":"#sender-claws-back-coin-to-a-new-wallet","p":1619},{"i":1645,"t":"The Recipient also has the option of spending a clawback coin to a new address. Let's say the Sender creates the following clawback coin: clawback create -t txch1czxl4c42kwem8jllm4xp78jt7t0j0pu9uh9xw5jddegcu703xnpsqaaxxx -a 0.1 -l 60 -m 0.000275 Result: Created Coin with ID: fddcfe2a4fcb7705646c809993a762664c1b0442b74d14d1298d91a3a198975b Coin { parent_coin_info: 478f112fe50a5680ccd4617ff9ba00edffb0aa59e72cf77742af4037f17ee38f, puzzle_hash: bbaa15db9dd52f8c5f27ce4bbb26776b11690cd1f0bc3cebd5d77ab118c680b2, amount: 100000000000 } After the timelock expires, the Recipient verifies that the coin can be claimed: clawback show -c fddcfe2a4fcb7705646c809993a762664c1b0442b74d14d1298d91a3a198975b Result: Updating coin records... Coin ID: fddcfe2a4fcb7705646c809993a762664c1b0442b74d14d1298d91a3a198975b Amount: 0.1 XCH (100000000000 mojos) Timelock: 60 seconds Time left: 0 seconds The Recipient can pass in a new address when claiming the coin: clawback claim -c fddcfe2a4fcb7705646c809993a762664c1b0442b74d14d1298d91a3a198975b -m 0.000275 -t txch12adzcdatddls80qnpnlnp3mn3tu0rvjwgs9yeyfg8vr2agremjpsp74p0c Result: Submitted spend to claim coin: fddcfe2a4fcb7705646c809993a762664c1b0442b74d14d1298d91a3a198975b Note that the wallet address does not need to belong to the Recipient's wallet. In this case, the address belongs to a totally separate wallet. After the claim transaction has completed, the clawback coin will show up as a standard Chia coin in the alternative wallet: chia wallet show -f 4215889205 Result: Wallet height: 2405955 Sync status: Synced Balances, fingerprint: 4215889205 Chia Wallet: -Total Balance: 0.1 txch (100000000000 mojo) -Pending Total Balance: 0.1 txch (100000000000 mojo) -Spendable: 0.1 txch (100000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1","s":"Recipient claims a clawback coin in a new wallet address","u":"/guides/clawback-primitive-guide/","h":"#recipient-claims-a-clawback-coin-in-a-new-wallet-address","p":1619},{"i":1647,"t":"Two important rules to keep in mind: A clawback coin's creation requires an on-chain transaction On Chia's blockchain, the average time between transaction blocks is 52 seconds Whenever a Sender creates a clawback coin, there is a period where the transaction is pending. During this period, it is not possible to view the exact details of the clawback coin. If the Sender attempts to view the coin: clawback show The Time left: value will be listed as pending: Updating coin records... Coin ID: 4fc6be4bd086e2b0600aab0075b67a6dada1a0bb8041d7206e9744c1d3810ec8 Amount: 0.1 XCH (100000000000 mojos) Timelock: 600 seconds Time left: pending If someone other than the Sender wants to view the coin, they will need to pass in the Coin ID (the Sender could also do this and get the same result): clawback show -c 4fc6be4bd086e2b0600aab0075b67a6dada1a0bb8041d7206e9744c1d3810ec8 In this case, an error will be thrown: Updating coin records... Traceback (most recent call last): File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 87, in _run_code exec(code, run_globals) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\Scripts\\clawback.exe\\__main__.py\", line 7, in File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 444, in main asyncio.run(cli()) # pylint: disable=no-value-for-parameter File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1130, in __call__ return self.main(*args, **kwargs) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1055, in main rv = self.invoke(ctx) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\click\\core.py\", line 760, in invoke return __callback(*args, **kwargs) File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 254, in show_cmd asyncio.get_event_loop().run_until_complete(do_command(coin_id, fingerprint)) File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\base_events.py\", line 642, in run_until_complete return future.result() File \"C:\\Users\\User\\Chia\\clawback\\chia-clawback-primitive\\venv\\lib\\site-packages\\src\\cli\\main.py\", line 230, in do_command block = await node_client.get_block_record_by_height(record.confirmed_block_height) AttributeError: 'NoneType' object has no attribute 'confirmed_block_height'","s":"Sender or Recipient attempts to show a clawback coin before it has been created","u":"/guides/clawback-primitive-guide/","h":"#sender-or-recipient-attempts-to-show-a-clawback-coin-before-it-has-been-created","p":1619},{"i":1650,"t":"Credential Restricted Chia Asset Tokens (CR-CATs) are CATs whose ownership is restricted to people or other entities who possess a required set of Verifiable Credentials (VCs). This guide will show you how to mint CR-CATs, as well as how to distribute them accordingly. For additional resources, see the following: CHIP-19 -- Restricted CAT Standard CAT admin -- CLI documentation for the CAT admin tool VC guide -- VCs are required in order to use CR-CATs CAT standard -- Good to read if you are unfamiliar with Chia Asset Tokens warning The commands in this guide are only examples. Be sure to replace the listed values with values from your local system. This guide was creating using testnet11. The example commands use a fee of 100 million mojos, which will be rather high for mainnet usage. If running on mainnet, be sure to adjust your fees accordingly.","s":"Intro","u":"/guides/cr-CAT-tutorial/","h":"#intro","p":1648},{"i":1652,"t":"Decentralized Identifier (DID) -- An identifier that enables verifiable, decentralized digital identity Verifiable Credential (VC) -- Allows someone or something to prove that a subject belongs to a certain category or categories, such as being a US citizen. One type of VC is issued by a Know Your Customer (KYC) provider, who must perform this verification. Chia Asset Tokens (CATs) -- Fungible tokens on the Chia blockchain","s":"Definitions","u":"/guides/cr-CAT-tutorial/","h":"#definitions","p":1648},{"i":1655,"t":"In order to mint CR-CATs, you will need to have: A synced Chia wallet, running version 2.0 or later (a full node is not required) At least one DID to be used as a trusted provider A sufficient amount of XCH or TXCH for the minting. As a reminder, each CAT consists of 1000 mojos. If you want to mint 1 billion CATs, you will need 1 trillion mojos (1 XCH) for the minting. Sufficient funds to cover blockchain fees, the amount of which depends on how busy the blockchain is at any moment We have faucets available if you don't have sufficient funds to get started: testnet mainnet important It is possible to brick* funds by sending them to an address without the appropriate credentials, as will be demonstrated later in this guide. You are therefore recommended to test minting CR-CATs on the testnet or on a simulator prior to minting them on mainnet. If you are unsure of how to configure your wallet to use the testnet, see our guide. * Technically, the funds will remain recoverable, but this process will not be easy.","s":"Prerequisites","u":"/guides/cr-CAT-tutorial/","h":"#prerequisites","p":1648},{"i":1657,"t":"CR-CATs require at least one authorized provider that can issue VCs that are allowed to trade the CATs. This tutorial will use a DID as the authorized provider. info DIDs are currently the only type of authorized provider, though others might be added in the future. Please see our Verifiable Credentials Guide for help on setting up a DID, as well as a VC with appropriate proofs. For this tutorial, we will use the same proof structure that was used in the Verifiable Credentials Guide, so if you have followed it, you will be mostly ready to follow this tutorial as well. We will use three separate Chia wallets, which have been created beforehand using the Verifiable Credentials Guide: Authorized Provider Wallet​ Owns one DID -- did:chia:1w4gf5eyensd37xa0x7aj27fe4cr9tqmf46m272suve5n4q2draesd0t54c Used this DID to mint a VC with launcher ID 9b6c65bd82ebe139ad5785ffdf99f6fe8ccbedb62a7ba2560989ef4e8a00ec86 Added two proofs: test_proof1 and test_proof2 \"Transferred\" this VC to the same wallet Minted another VC with the same proofs and transferred it to the VC Holder Wallet (see next section) This wallet will issue the CR-CATs and send some of them to the VC Holder The CLI view of the Authorized Provider's wallet is as follows: Balances, fingerprint: 3152280463 Chia Wallet: -Total Balance: 0.999499999997 txch (999499999997 mojo) -Pending Total Balance: 0.999499999997 txch (999499999997 mojo) -Spendable: 0.999499999997 txch (999499999997 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1w4gf5eyensd37xa0x7aj27fe4cr9tqmf46m272suve5n4q2draesd0t54c -Wallet ID: 2 NFT Wallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -DID ID: did:chia:1w4gf5eyensd37xa0x7aj27fe4cr9tqmf46m272suve5n4q2draesd0t54c -Wallet ID: 3 VCWallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: VC -Wallet ID: 4 The CLI view of the Authorized Provider's VC is as follows: Proofs: - f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 - test_proof1 - test_proof2 Launcher ID: 9b6c65bd82ebe139ad5785ffdf99f6fe8ccbedb62a7ba2560989ef4e8a00ec86 Coin ID: 1d24b1eb6909fcded260c7a6da092fc3d95156c217e6f7944ee3a75473730737 Inner Address: txch1jl9wvatyyy6lwt7eswa9ax7sydzr80tww6npfupd5jj95le3p4ssvcped6 Proof Hash: f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 The VC is also viewable from the GUI: VC Holder Wallet​ Holds a VC with launcher ID 5b5389e77b7ec8e9ebd7d92136254418ca674e382031d29aaa6ab75b7822792b and two proofs: test_proof1 and test_proof2. This VC was provided by the Authorized Provider wallet. Does not own a DID This wallet will receive some CR-CATs from the Authorized Provider The CLI view of the VC Holder's wallet is as follows: Balances, fingerprint: 455644407 Chia Wallet: -Total Balance: 0.5 txch (500000000000 mojo) -Pending Total Balance: 0.5 txch (500000000000 mojo) -Spendable: 0.5 txch (500000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 VCWallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: VC -Wallet ID: 2 The CLI view of the VC Holder's VC is as follows: Proofs: - f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 - test_proof1 - test_proof2 Launcher ID: 5b5389e77b7ec8e9ebd7d92136254418ca674e382031d29aaa6ab75b7822792b Coin ID: 87781377b81b54c56df4e1fc3558757065409fe65ecab16de89f8d07f7a7cecb Inner Address: txch1hsyj53wz3wzznxdd0kupk075yj2muew8q49yj83yh5tde92x0uxst6ztpg Proof Hash: f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 The VC is also viewable from the GUI: XCH Wallet​ Does not hold any DIDs or VCs This wallet will demonstrate that CR-CATs can only be held by wallets that hold a required set of VCs The CLI view of the XCH wallet is as follows: Balances, fingerprint: 2811450244 Chia Wallet: -Total Balance: 0.5 txch (500000000000 mojo) -Pending Total Balance: 0.5 txch (500000000000 mojo) -Spendable: 0.5 txch (500000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1","s":"DID and VC Setup","u":"/guides/cr-CAT-tutorial/","h":"#did-and-vc-setup","p":1648},{"i":1659,"t":"CR-CATS are issued from the CAT-admin-tool repository. Follow the instructions below to install it for your specific OS: Linux/macOS Windows Clone the repository: git clone https://github.com/Chia-Network/CAT-admin-tool.git -b main --recurse-submodules Change to the CAT-admin-tool directory: cd CAT-admin-tool Create a virtual environment: python3 -m venv venv Activate the virtual environment: . ./venv/bin/activate Install all prerequisites: python3 -m pip install --upgrade pip setuptools wheel Install the CAT admin tool: pip install . Clone the repository: git clone https://github.com/Chia-Network/CAT-admin-tool.git -b main --recurse-submodules Change to the CAT-admin-tool directory: cd CAT-admin-tool Create a virtual environment: python -m venv venv Activate the virtual environment: .\\venv\\Scripts\\Activate.ps1 Install all prerequisites: python -m pip install --upgrade pip setuptools wheel Install the CAT admin tool: pip install . Your environment should be all set, but let's make sure: Run cats --help. You should get a usage statement. Run cdv --help. You should get another usage statement. The CAT admin tool also comes bundled with a version of Chia. If your wallet is not currently running, be sure to start it now: chia start wallet Note that while a full node is not required, it is recommended, as it will make the the process of minting CR-CATs faster and more efficient. chia start node If you are running a full node, verify that it is synced by running this command: chia show -s For a comprehensive list of all options available with the CAT admin tool, as well as examples of how to use them, see the CLI reference.","s":"CAT Admin Tool","u":"/guides/cr-CAT-tutorial/","h":"#cat-admin-tool","p":1648},{"i":1661,"t":"Before continuing, it is a good idea to verify that new CATs will automatically be added to your wallet. The setting for this is located in ~/.chia/mainnet/config/config.yaml. (Note that this file is in a mainnet folder regardless of whether you are running on a testnet or mainnet.) Edit this file and search for automatically_add_unknown_cats. You are recommended to set this option's value to true. Be sure to restart your wallet if you modify this option, so your new CR-CATs will automatically be added to your wallet. If you prefer not to use this option, you can also manually add new CATs with the add_token command.","s":"Automatic CATs","u":"/guides/cr-CAT-tutorial/","h":"#automatic-cats","p":1648},{"i":1663,"t":"At this point, in order to follow this tutorial you should have: An instance of the cat-admin-tool repository installed locally Verifiable by running cats --help and cdv --help (you should see a usage statement) An Authorized Provider's wallet, which holds: A DID A VC Some XCH or TXCH A VC Holder's wallet, which holds: A VC Some XCH or TXCH (If you want to test a failure case) A wallet that only holds some XCH or TXCH (recommended) A synced full node (recommended) Set automatically_add_unknown_cats: true in config.yaml With all of these setup steps complete, you are ready to mint CR-CATs!","s":"Setup summary","u":"/guides/cr-CAT-tutorial/","h":"#setup-summary","p":1648},{"i":1665,"t":"The process for minting Restricted CATs is nearly identical to the process for minting standard CATs. In both cases, any TAIL may be used. This tutorial will only demonstrate how to use a single-issuance TAIL. If you are interested in using other TAILs, or if you would like a more comprehensive list of instructions, see the CAT creation tutorial. For starters, you will need to obtain an address to send the CR-CATs to after they have been minted. From the Authorized Provider's wallet run the following command: chia wallet get_address --new-address The response will be an address, for example: txch1yx4tdtqksjh7mk84deglwyq4j8td8jchyc8sdgem2hnuulmhzdhqct9wpr Next, obtain the Authorized Provider's DID ID by showing the wallet: chia wallet show Response (truncated): ... Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1w4gf5eyensd37xa0x7aj27fe4cr9tqmf46m272suve5n4q2draesd0t54c -Wallet ID: 2 ... In this example, we will create one thousand CR-CATs. Each CR-CAT will consist of 1000 mojos (same as standard CATs), so this example will require one million mojos, plus a transaction fee, for the issuance. When minting CR-CATs, you have two options for applying restrictions: -r/--proofs-checker -- Use this option to supply a custom program for checking proofs (not yet supported in the reference wallet). -v/--cr-flag -- Use this option to specify which proof(s) a VC must have in order to approve a transaction from this CR-CAT. For this example, we will use the -v option. We also need to add the -sc flag to select a valid coin to spend. Here is a summary of the options that will be used in this example: -l -- the TAIL to use -t -- the address to send the CR-CATs to upon being minted -a -- the amount, in mojos, to use for the minting -m -- an optional blockchain fee, in mojos -d -- the authorized provider (DID) for issuing VCs for these CR-CATs -v -- the string required in a VC proof for trading these CR-CATs -sc -- return a valid coin to spend for the minting And here is the example command: cats -l ./reference_tails/genesis_by_coin_id.clsp.hex -t txch1yx4tdtqksjh7mk84deglwyq4j8td8jchyc8sdgem2hnuulmhzdhqct9wpr -a 1000000 -m 100000000 -d did:chia:1w4gf5eyensd37xa0x7aj27fe4cr9tqmf46m272suve5n4q2draesd0t54c -v \"test_proof1\" -sc The response will list the details of a coin from your wallet. For example: { \"amount\": 999499999997, \"parent_coin_info\": \"0xd0e21a74601b8bafb6e1c90c61ff74bad40820e3003d25230fc127ce3efc5a48\", \"puzzle_hash\": \"0x29b1afc3a6caa21a4aaba3a928df4dbbc3e3b9b2b15f89529311ae12d6cec82b\" } Name: 1d9cb45618bdd9d70a0959ab8d91cafcbc1acbf7bd31a9e5286fd30622796783 The value of Name: will be used next. If you received an error containing Can't spend more than wallet balance:, then you do not have sufficient funds to cover the amount specified in the -a and -m options. Next, run the same command again, but replace -sc with -c 0x, or -c 0x1d9cb45618bdd9d70a0959ab8d91cafcbc1acbf7bd31a9e5286fd30622796783 in this example. important When minting CR-CATs with the commands from this tutorial, you must prepend 0x to the coin ID in the following command. If you fail to do this, the command will appear to succeed, but it will actually fail. The reasons for not showing an error are twofold: You are technically allowed to curry anything with this command's underlying CLVM puzzle, so omitting the 0x is valid syntax, even though it won't work in this case. The wallet client asynchronously sends the command to the node, so the wallet client does not know when the command fails. For example, this command will mint the CR-CATs using the -c option: cats -l ./reference_tails/genesis_by_coin_id.clsp.hex -t txch1yx4tdtqksjh7mk84deglwyq4j8td8jchyc8sdgem2hnuulmhzdhqct9wpr -a 1000000 -m 100000000 -d did:chia:1w4gf5eyensd37xa0x7aj27fe4cr9tqmf46m272suve5n4q2draesd0t54c -v \"test_proof1\" -c 0x1d9cb45618bdd9d70a0959ab8d91cafcbc1acbf7bd31a9e5286fd30622796783 As a result, a new spend bundle will be created for the minting. You will be prompted whether to submit it to the network: The transaction has been created, would you like to push it to the network? (Y/N) Respond with Y and you should be shown the Asset ID and Eve Coin ID for this CR-CAT. For example: Successfully pushed the transaction to the network Asset ID: 3ba9e16dca39f3fb3b75e51535487fcd114abeeb0cf30e8975b9567ce5516fb5 Eve Coin ID: 7afe650fd4dd663d0be027c07228d02546fcc7b91b7819d18d5e1d4055292bf1 After the transaction has been confirmed on blockchain (typically within 1-3 minutes), you can view the new CAT with the chia wallet show command: chia wallet show Response (truncated): ... CAT 3ba9e16dca39f3fb...: -Total Balance: 1000.0 (1000000 mojo) -Balance Pending VC Approval: 0.0 (0 mojo) -Pending Total Balance: 1000.0 (1000000 mojo) -Spendable: 1000.0 (1000000 mojo) -Type: CRCAT -Asset ID: 3ba9e16dca39f3fb3b75e51535487fcd114abeeb0cf30e8975b9567ce5516fb5 -Wallet ID: 5 ... Note that Balance Pending VC Approval is currently 0.0. This is because the CR-CATs have been minted to the wallet that contains the issuing DID. Thus, they do not require approval. When these funds are transferred, they will show up as \"Pending\" in the new wallet. This information is also viewable in the GUI: The Authorized Provider now has control of all 1000 of the issued CR-CATs. This type of CAT is distinguished in the GUI by a padlock icon and Restricted CAT. The Authorized Provider also possesses a VC with the required proof (test_proof1), so a green icon appears when viewing the CAT.","s":"Mint CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#mint-cr-cats","p":1648},{"i":1667,"t":"Now that you have minted the CR-CATs, you can send them elsewhere. First, we'll send some to the VC Holder's wallet, which already has a VC that contains the required proof.","s":"Send CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#send-cr-cats","p":1648},{"i":1669,"t":"You can send CR-CATs just as you would with regular CATs: You should see a \"success\" message: In this example, the recipient is the VC Holder's wallet. This wallet holds the credential with the required proof (test_proof1) for holding this CR-CAT. Because the proof exists, a green APPROVE button will appear. From the VC Holder's wallet, click this button to finalize the transaction: An on-chain transaction is required for the approval to be processed. This is necessary to guard against unauthorized wallets holding CR-CATs, as will be demonstrated later in this tutorial. Enter a transaction fee and click APPROVE PENDING TRANSACTIONS: After the transaction has been processed, the CR-CATs will become available to the VC Holder, who can now send or trade them just like normal CATs.","s":"Sending from the GUI","u":"/guides/cr-CAT-tutorial/","h":"#sending-from-the-gui","p":1648},{"i":1671,"t":"As a reminder, in the Authorized Provider's wallet, the Wallet ID of the CR-CAT is 5: CAT 3ba9e16dca39f3fb...: -Total Balance: 950.0 (950000 mojo) -Balance Pending VC Approval: 0.0 (0 mojo) -Pending Total Balance: 950.0 (950000 mojo) -Spendable: 950.0 (950000 mojo) -Type: CRCAT -Asset ID: 3ba9e16dca39f3fb3b75e51535487fcd114abeeb0cf30e8975b9567ce5516fb5 -Wallet ID: 5 From the CLI, run a standard send command. In this example, we will use the following flags: -i -- The Wallet ID of the CR-CAT -a -- The number of CR-CATs to send -m -- An optional transaction free, in XCH/TXCH -t -- The address to send the CR-CATs to (the VC Holder's wallet address) chia wallet send -i 5 -a 100 -m 0.0001 -t txch1hsyj53wz3wzznxdd0kupk075yj2muew8q49yj83yh5tde92x0uxst6ztpg Response: Submitting transaction... Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 3152280463 -tx 0xab577bdce7fdd1be8b4e0634ad69aa5cff66f6d9dc7d26e0119d1a3a740f91e8' to get status After a few minutes, run the command from the previous command's output to view the transaction. For example: chia wallet get_transaction -f 3152280463 -tx 0xab577bdce7fdd1be8b4e0634ad69aa5cff66f6d9dc7d26e0119d1a3a740f91e8 The response should show that this transaction has been confirmed: Transaction ab577bdce7fdd1be8b4e0634ad69aa5cff66f6d9dc7d26e0119d1a3a740f91e8 Status: Confirmed Amount sent: 100 CAT 3ba9e16dca39f3fb... To address: txch1yzjq802ym3lv9aupl6nyvv6s24fdm9wpnte2rvhk04arr3jyt4js2287gz Created at: 2023-09-22 09:21:25 After switching to the VC Holder's wallet, you should see the CR-CATs that are pending approval (in this case 100.0 (100000 mojo)): chia wallet show Response: Balances, fingerprint: 455644407 Chia Wallet: -Total Balance: 0.499993999384 txch (499993999384 mojo) -Pending Total Balance: 0.499993999384 txch (499993999384 mojo) -Spendable: 0.499993999384 txch (499993999384 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 VCWallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: VC -Wallet ID: 2 CAT 3ba9e16dca39f3fb...: -Total Balance: 50.0 (50000 mojo) -Balance Pending VC Approval: 100.0 (100000 mojo) -Pending Total Balance: 50.0 (50000 mojo) -Spendable: 50.0 (50000 mojo) -Type: CRCAT -Asset ID: 3ba9e16dca39f3fb3b75e51535487fcd114abeeb0cf30e8975b9567ce5516fb5 -Wallet ID: 3 The VC Holder still needs to approve the new CR-CATs in order to add them to the wallet balance. This is accomplished with the approve_r_cats command. In this example, we will use the following flags: -i -- The Wallet ID of the CR-CAT -a -- The amount to approve -m -- An optional transaction free, in XCH/TXCH chia wallet vcs approve_r_cats -i 3 -a 100 -m 0.0001 Response: VC successfully approved R-CATs! Relevant TX records: Transaction 07ce240c734515fa6609121ac1c52c571a8b191715d26620a2242b124767c95d Status: Pending Amount received: 100 CAT 3ba9e16dca39f3fb... To address: txch16yqa7dsmax5g258yc2qh57xcs0kxxa53fyc4v8jadl8h6jwf7frsx0s7k4 Created at: 2023-09-22 09:30:56 Transaction df859cf5cd348c9531885de978eb083072eff4447748a86463a2d51e3a324298 Status: Pending Amount sent: 1E-12 TXCH To address: txch1hsyj53wz3wzznxdd0kupk075yj2muew8q49yj83yh5tde92x0uxst6ztpg Created at: 2023-09-22 09:30:56 Transaction 41c06dfb0b4e6bd0ed32c8d4942f10e251a0fd9d7b435c6d5672d8571e3bcab7 Status: Pending Amount sent: 0 TXCH To address: txch1prssxq8x0s45gzszxpnpwlwpz6p06j5tequtq6ne4fphj7x5yv9qgx493k Created at: 2023-09-22 09:30:56 After this transaction has completed, the new CR-CATs will be available to be spend just like normal CATs: CAT 3ba9e16dca39f3fb...: -Total Balance: 150.0 (150000 mojo) -Balance Pending VC Approval: 0.0 (0 mojo) -Pending Total Balance: 150.0 (150000 mojo) -Spendable: 150.0 (150000 mojo) -Type: CRCAT -Asset ID: 3ba9e16dca39f3fb3b75e51535487fcd114abeeb0cf30e8975b9567ce5516fb5 -Wallet ID: 3","s":"Sending from the CLI","u":"/guides/cr-CAT-tutorial/","h":"#sending-from-the-cli","p":1648},{"i":1673,"t":"CR-CATs also work with Chia Offers, using either the GUI or the CLI.","s":"Offer CR-CATs","u":"/guides/cr-CAT-tutorial/","h":"#offer-cr-cats","p":1648},{"i":1675,"t":"In this example, as the Authorized Provider, click CREATE AN OFFER from the Offers panel: Next, fill out the Offer Builder. For this example, we will offer to trade 99 CR-CATs for 0.1 TXCH: After creating the Offer, Authorized Provider can save it as a local file or post it to a marketplace. For this example, we will change to the VC Holder wallet and load the Offer file. This wallet contains a VC with the required proof to hold this CR-CAT (test_proof1). Enter an optional blockchain fee and click ACCEPT OFFER: While the on-chain transaction to accept the Offer is pending, the 99 CR-CATs will be displayed in the VC Holder's Pending Balance. Note that the Pending Balance for Approval is 0 in this case: After the transaction has been confirmed, the balance is updated. When receiving CR-CATs via an Offer, there is no need to perform another transaction to approve of the incoming tokens. This is because the proof requirement is already baked into the Offer file. At this point, the VC Holder wallet has full possession of the CR-CATs.","s":"GUI Offers","u":"/guides/cr-CAT-tutorial/","h":"#gui-offers","p":1648},{"i":1677,"t":"Offers for CR-CATs can also be created and accepted via the CLI. For this example, the Authorized Provider will create an Offer using the following flags: -o -- The Offer amount, using the syntax : -r -- The requested amount, using the syntax : --amount -m --as-bytes --select-coin For the fee we recommend 100 million Mojo (-m 100000000). note You can retrieve one of your wallet addresses with: chia wallet get_address The final line of the output will be Name: . You'll use the coin ID value in the next step. Run the same command again, this time removing the --select-coin flag and adding a new flag, --curry . It's very important to preface the coin ID with 0x here to make CLVM interpret the value as bytes and not a string. Here's the full command to run: cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to --amount -m --as-bytes --curry 0x This command will give the following output: The transaction has been created, would you like to push it to the network? (Y/N) Enter Y. The output will be Asset ID: . Copy the asset ID to import the CAT in to the client. This token can be displayed in your wallet using the GUI or with the CLI: chia wallet add_token -id -n -f Creating a CAT on mainnet works the exact same way, you'll just be spending real XCH instead of TXCH! Details Example Here are the exact commands I issued to create a custom CAT. cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to txch14t42glxxe93hy29nevq56j4mdupfgazkmkgxzt38p5achh3vmu0qwsqdnt --amount 100000000000 -m 100000000 --as-bytes --select-coin Response: { \"amount\": 999889999998, \"parent_coin_info\": \"0x4d847cddc91a294b82f01c17e09bfdffb1ddadf0e41b6765a127ef1312b6ebf1\", \"puzzle_hash\": \"0xaaeaa47cc6c9637228b3cb014d4abb6f02947456dd90612e270d3b8bde2cdf1e\" } Name: fa514c961ad13b154708da36750f28f905b45e0e5dd53e856b49e55886a18a20 cats --tail ./reference_tails/genesis_by_coin_id.clsp.hex --send-to txch14t42glxxe93hy29nevq56j4mdupfgazkmkgxzt38p5achh3vmu0qwsqdnt --amount 100000000000 -m 100000000 --as-bytes --curry 0xfa514c961ad13b154708da36750f28f905b45e0e5dd53e856b49e55886a18a20 Response: The transaction has been created, would you like to push it to the network? (Y/N) Successfully pushed the transaction to the network Asset ID: 2b29eb7875ac24f4da73e55ea45c5f94471ab677de608bce6a5ddd1817724844 Eve Coin ID: a16bcc6fbc1a21c6855f3e6f24bb9e16959932e79bd29662ab08690f50e723bf I then added this token to the wallet: chia wallet add_token -id 2b29eb7875ac24f4da73e55ea45c5f94471ab677de608bce6a5ddd1817724844 -n ccoin Response: Successfully added ccoin with wallet id 2 on key 1660000549 I could then check my balance: chia wallet show Response: ... ccoin: -Total Balance: 100000000.0 (100000000000 mojo) -Pending Total Balance: 100000000.0 (100000000000 mojo) -Spendable: 100000000.0 (100000000000 mojo) -Type: CAT -Asset ID: 2b29eb7875ac24f4da73e55ea45c5f94471ab677de608bce6a5ddd1817724844 -Wallet ID: 2 ... Exercise Use the above examples to create your very first CAT, we will use this CAT in the next section to trade for other assets. If you are looking for more practice, you can create a multiple-issuance CAT.","s":"Creating a Single-Issuance CAT","u":"/guides/crash-course/cats-offers-nfts/","h":"#creating-a-single-issuance-cat","p":1684},{"i":1693,"t":"With an offer you can trade assets with others directly in a decentralized manner. For example, we can put an offer up for someone to trade their Chia for your new token. Anyone could then accept this offer. For this command you will need your wallet IDs, which you can get from chia wallet show. To create an offer to sell 1,000 of your new CAT for some Chia, issue the make_offer command: chia wallet make_offer -o -r Where wallet_id:amount could look like 1:1000. Example This is the command I issued to create an offer to trade 1,000 of my custom CAT for .01 Chia. chia wallet make_offer -o 2:1000 -r 1:.01 -p ~/Desktop/offer1 Response: Creating Offer -------------- OFFERING: - 1000 ccoin (1000000 mojos) REQUESTING: - .01 XCH (10000000000 mojos) Confirm (y/n): y Created offer with ID b6e2bf3162837a17a40369cb98bd3b8bfbc68fd58c922b3bfedd593f29f260dd Use chia wallet get_offers --id b6e2bf3162837a17a40369cb98bd3b8bfbc68fd58c922b3bfedd593f29f260dd -f 1660000549 to view status chia wallet get_offers --id b6e2bf3162837a17a40369cb98bd3b8bfbc68fd58c922b3bfedd593f29f260dd -f 1660000549 Response: Record with id: b6e2bf3162837a17a40369cb98bd3b8bfbc68fd58c922b3bfedd593f29f260dd --------------- Created at: 2022-09-01 11:30:49 Confirmed at: Not confirmed Accepted at: N/A Status: PENDING_ACCEPT --------------- This creates a file on your computer and nothing is sent to the blockchain. Because of this, it is not a transaction and no fees are required. This file can be shared or uploaded to the web and anyone can use it to finalize the trade. What is in an Offer File? It'll look something like: offer1qqz83wcsltt6wcmqvpsxygqqwc7hynr6hum6e0mnf72sn7uvvkpt68eyumkhelprk0adeg42nlelk2mpafs8tkhg2qa9qmzp08ydjpg006k9ju0r3x57a2gt5x9u7j0fn7gllxjau2udha0mvnqkm6uqf23vazn6cua3vt4mzmhwjahp50v807ma2fxwhd2kn2njcmytt2emzsln0u44xz8hzvrtqd2t9vz0alaa9m992xy5k9fhkjepaur0hlm088p2vandlnm747hmyl9dxafx44c83lfa0llef54rulm04tg0t7lmxth646y0289h36rexueuq4lq8c68mj37cpfujfr9k8ar4k8ar4k8dr4k8d84sx0fu3jmra6xkl2qptmstehm8cnmc6mdxn0rvdejdfpway2ccm6srenn6urvdmgvand96gat25z4tf4dlxa2yayde2t4h320uwtvf3z0wxta54n797slkhzka3wsnufzputks4vptnqsme69v3sgxdevw7mv507rlpluh89uy54njg6kfl8slkr383kw49j5ka73rre7dnut0v9v6xn9366zu7uaq0fz3yng7rsfcgrzqsgxx3qf5e0lzugx4c0adln8wuhcfavpmjzs5pcm0ya8xkzpcthp90t0n5fgtan0x4hjl28ecrh035ju0h90mp5xctxklh0j4m53hm6qq593ehls26aklf0mn7lvehj5xm26nywsvn389h87h2n2t36dhu68drpg0fp8e4z5q40klut3cvdu7a2vug0mnvwdh5g78wfu2kck6n8hq5vk08llzck4t46e0mtks2gtflmlc8pwcvle0wjpfra4cmd7t2lvncnnvadx68ean9axykk7dj8ypau2a08ll7p9ttuk6swrhx2u5jcljd9r4lt7ul9x9yjkzae8yn42nu66wl0a8wf0qaepevya6nc8ls0rmwhedawwerv0ja00un2md43mfs39dfqx4ucpfrn0p288p0eytsa3x6qa59tdnlc9sndx2u8t3qcjeh8vw6sv88hf7l8m0peahx24h5944y3dk247utstljgvf0lw67mslv0dcvzsdqk95vv02yetz7h06dmnj3ehayrtekh4kwnla285hg9avj0xq70lfndalp345pmt0wd446wtu7j3klxlzhhxgu8xuhc07tykcsjmlunqvt9jejg4903wwa9v39fxpkp0za4hg48t7jg7pjv8t0lhlkxr26hx4a5mk8hjqqr8hvtgyf3fnt4 If this is your first transaction using your new CAT, it'll lock up the entire coin. This is how the UTXO model works. Everything is defined as a coin, so coins can be combined and split in to new coins to reach exact values. For example, when sending someone 1.5XCH, you may actually send 2.0XCH, which will send a new coin worth 1.5XCH to the destination and a new coin of 0.5XCH back to an address you own as change. When you create your CAT, it exists as a single coin for the entire CAT balance. By creating an offer you lock up that coin resulting in a reduced spendable balance. You can see this with chia wallet show. ccoin: -Total Balance: 100000000.0 (100000000000 mojo) -Pending Total Balance: 100000000.0 (100000000000 mojo) -Spendable: 0.0 (0 mojo) -Type: CAT -Asset ID: 2b29eb7875ac24f4da73e55ea45c5f94471ab677de608bce6a5ddd1817724844 -Wallet ID: 2 If someone accepts the offer and the transaction is completed, you will receive the difference as change.","s":"Offers","u":"/guides/crash-course/cats-offers-nfts/","h":"#offers","p":1684},{"i":1695,"t":"The first step to getting your offer accepted is to broadcast it in some way. This file can be uploaded anywhere, but there are many websites out there dedicated to Chia offers. Offer sites include Offerbin and offerpool. You can accept an offer that has been downloaded to your personal machine with the take_offer command. chia wallet take_offer path Alternatively, you can accept an offer without any download by copying and pasting the contents of the file. chia wallet take_offer blob Example You can accept an offer by using the content of the offer file. chia wallet take_offer offer1qqz83wcsltt6wcmqvpsxygqqwc7hynr6hum6e0mnf72sn7uvvkpt68eyumkhelprk0adeg42nlelk2mpafs8tkhg2qa9qmzp08ydjpg006k9ju0r3x57a2gt5x9u7j0fn7gllxjau2udha0mvnqkm6uqf23vazn6cua3vt4mzmhwjahp50v807ma2fxwhd2kn2njcmytt2emzsln0u44xz8hzvrtqd2t9vz0alaa9m992xy5k9fhkjepaur0hlm088p2vandlnm747hmyl9dxafx44c83lfa0llef54rulm04tg0t7lmxth646y0289h36rexueuq4lq8c68mj37cpfujfr9k8ar4k8ar4k8dr4k8d84sx0fu3jmra6xkl2qptmstehm8cnmc6mdxn0rvdejdfpway2ccm6srenn6urvdmgvand96gat25z4tf4dlxa2yayde2t4h320uwtvf3z0wxta54n797slkhzka3wsnufzputks4vptnqsme69v3sgxdevw7mv507rlpluh89uy54njg6kfl8slkr383kw49j5ka73rre7dnut0v9v6xn9366zu7uaq0fz3yng7rsfcgrzqsgxx3qf5e0lzugx4c0adln8wuhcfavpmjzs5pcm0ya8xkzpcthp90t0n5fgtan0x4hjl28ecrh035ju0h90mp5xctxklh0j4m53hm6qq593ehls26aklf0mn7lvehj5xm26nywsvn389h87h2n2t36dhu68drpg0fp8e4z5q40klut3cvdu7a2vug0mnvwdh5g78wfu2kck6n8hq5vk08llzck4t46e0mtks2gtflmlc8pwcvle0wjpfra4cmd7t2lvncnnvadx68ean9axykk7dj8ypau2a08ll7p9ttuk6swrhx2u5jcljd9r4lt7ul9x9yjkzae8yn42nu66wl0a8wf0qaepevya6nc8ls0rmwhedawwerv0ja00un2md43mfs39dfqx4ucpfrn0p288p0eytsa3x6qa59tdnlc9sndx2u8t3qcjeh8vw6sv88hf7l8m0peahx24h5944y3dk247utstljgvf0lw67mslv0dcvzsdqk95vv02yetz7h06dmnj3ehayrtekh4kwnla285hg9avj0xq70lfndalp345pmt0wd446wtu7j3klxlzhhxgu8xuhc07tykcsjmlunqvt9jejg4903wwa9v39fxpkp0za4hg48t7jg7pjv8t0lhlkxr26hx4a5mk8hjqqr8hvtgyf3fnt4 Response: Summary: OFFERED: - ccoin (Wallet ID: 2): 1000.0 (1000000 mojos) REQUESTED: - XCH (Wallet ID: 1): 0.01 (10000000000 mojos) Included Fees: 0 Would you like to take this offer? (y/n): y Accepted offer with ID 41f5bfab75ff5f35489b0954597aa76c56ed7098aa9ad137f0132b584541119f Use chia wallet get_offers --id 41f5bfab75ff5f35489b0954597aa76c56ed7098aa9ad137f0132b584541119f -f 1660000549 to view its status You'll notice there is a line for Included Fees, which is currently 0. As the blockchain becomes more saturated, a fee may need to be applied by either the maker or taker with an additional CLI flag. Let's continue by getting the offer's information. chia wallet get_offers --id 41f5bfab75ff5f35489b0954597aa76c56ed7098aa9ad137f0132b584541119f -f 1660000549 Response: Record with id: 41f5bfab75ff5f35489b0954597aa76c56ed7098aa9ad137f0132b584541119f --------------- Created at: 2022-09-01 13:40:07 Confirmed at: 1466993 Accepted at: 2022-09-01 13:40:07 Status: CONFIRMED --------------- Details Exercise To get some practice, create an offer to trade your CAT for some Chia or another CAT. You can share this file with others, or you can accept it yourself to see how the process works. If you are looking for more practice, you can work with offers on mainnet to trade real assets.","s":"Completing Offers","u":"/guides/crash-course/cats-offers-nfts/","h":"#completing-offers","p":1684},{"i":1697,"t":"NFTs can be defined individually or within a collection. For simplicity, we will create an individual NFT that is not part of a collection. Once you know how to do this, creating a collection will be a lot easier. The main goal of this lesson is to help you become familiar with the basics. Then, you can continue to study on your own. chia wallet nft create This will give a response like: Successfully created an NFT wallet with id 3 on key 1660000549 This will create your NFT wallet. You can see this with: chia wallet show NFT Wallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -Wallet ID: 3 Take a note of the Wallet ID, which will be used in the next section.","s":"Getting Started with NFTs","u":"/guides/crash-course/cats-offers-nfts/","h":"#getting-started-with-nfts","p":1684},{"i":1699,"t":"To practice, start with royalty free images found online at places like pexels.com. Once you find your image of choice, you'll need to get the hash of this image. There are many ways to do this. One way is through the CLI: curl -s | shasum -a 256 This will return something like 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0. You can check the hash also by uploading the image to an online sha256 tool.","s":"Getting an Image and Hash","u":"/guides/crash-course/cats-offers-nfts/","h":"#getting-an-image-and-hash","p":1684},{"i":1701,"t":"Once you have the image URL and the hash, we can create the NFT with a command like this: chia wallet nft mint -i -u -nh -m This will include the wallet ID, URL, data hash, and a fee. If this command is issued successfully, you will have created an NFT on Chia! You can get the details of your new NFT with: chia wallet nft list -i Concrete Example First, we will find an image. We can grab the URL and check the hash: curl -s https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg | shasum -a 256 Response: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 - Feeding the URL and hash in to the following command, we end up with: chia wallet nft mint -i 3 -u https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg -nh 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 -m 0.000265 This gives us back the spend bundle with any new coin info: Response: NFT minted Successfully with spend bundle: { 'aggregated_signature': '0x8673a394dca82d91cd1ddeff0b518cb02056fa24ce45b8cda4e7819258c9cc13a68ed71d4d25ef7254358af2f033d99b180b2b0255a8f113d699517e7019b825b09f68eb126da228f82b474f316bc8a657310a527ff54a4668971e9486c39c89', 'coin_solutions': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0x75690e6a336be6223d3282d71085af366a1c94e9418c25ca9f5fba9d29e09a8d', 'puzzle_hash': '0xd41dce69252d14db9a19eb0fcbd0e014d416245460b76a9fe4e7a8030e1bb4c6' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa075690e6a336be6223d3282d71085af366a1c94e9418c25ca9f5fba9d29e09a8da0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff04ff2cff8080808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a0a04d9f57764f54a43e4030befb4d80026e870519aaa66334aef8304f5d0393c2ffff04ffff01ffff75ffc04468747470733a2f2f696d616765732e706578656c732e636f6d2f70686f746f732f31313035333037322f706578656c732d70686f746f2d31313035333037322e6a70656780ffff68a014836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0ffff826d7580ffff826c7580ffff82736e01ffff8273740180ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff17ffff04ff0bffff04ffff02ff2fff5f80ff80808080808080ffff04ffff01ffffff82ad4cff0233ffff3e04ff81f601ffffff0102ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff32ffff0bff3cff3480ffff0bff32ffff0bff32ffff0bff3cff2280ff0980ffff0bff32ff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ff04ffff04ff38ffff04ffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ffff02ff2effff04ff02ffff04ffff02ffff03ff81afffff0181afffff010b80ff0180ff80808080ffff04ffff0bff3cff4f80ffff04ffff0bff3cff0580ff8080808080808080ff378080ff82016f80ffffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff2fffff01ff80ff808080808080808080ff0bff32ffff0bff3cff2880ffff0bff32ffff0bff32ffff0bff3cff2280ff0580ffff0bff32ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff5fffff01ff02ffff03ffff09ff82011fff3880ffff01ff02ffff03ffff09ffff18ff82059f80ff3c80ffff01ff02ffff03ffff20ff81bf80ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff82019fffff04ff82017fff80808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff0180ffff01ff02ffff03ffff09ff82011fff2c80ffff01ff02ffff03ffff20ff82017f80ffff01ff04ffff04ff24ffff04ffff0eff10ffff02ff2effff04ff02ffff04ff82019fff8080808080ff808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ffff02ff0bffff04ff17ffff04ff2fffff04ff82019fff8080808080ff8080808080808080808080ffff01ff088080ff0180ffff01ff02ffff03ffff09ff82011fff2480ffff01ff02ffff03ffff20ffff02ffff03ffff09ffff0122ffff0dff82029f8080ffff01ff02ffff03ffff09ffff0cff82029fff80ffff010280ff1080ffff01ff0101ff8080ff0180ff8080ff018080ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff8080808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff018080ff018080ff0180ffff01ff02ff3affff04ff02ffff04ff05ffff04ff0bffff04ff81bfffff04ffff02ffff03ff82017fffff0182017fffff01ff02ff0bffff04ff17ffff04ff2fffff01ff808080808080ff0180ff8080808080808080ff0180ff018080ffff04ffff01a0c5abea79afaa001b5427dfa0c8cf42ca6f38f5841b78f9b3c252733eb2de2726ffff04ffff0180ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff04ff82013fffff04ff80ffff04ffff02ffff03ffff22ff82013fffff20ffff09ff82013fff2f808080ffff01ff04ffff04ff10ffff04ffff0bffff02ff2effff04ff02ffff04ff09ffff04ff8205bfffff04ffff02ff3effff04ff02ffff04ffff04ff09ffff04ff82013fff1d8080ff80808080ff808080808080ff1580ff808080ffff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ffff01ff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ff0180ff80808080ffff01ff04ff2fffff01ff80ff80808080ff0180ffff04ffff01ffffff3f02ff04ff0101ffff822710ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff2cff1480ffff0bff2affff0bff2affff0bff2cff3c80ff0980ffff0bff2aff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ff17ffff01ff04ffff04ff10ffff04ffff0bff81a7ffff02ff3effff04ff02ffff04ffff04ff2fffff04ffff04ff05ffff04ffff05ffff14ffff12ff47ff0b80ff128080ffff04ffff04ff05ff8080ff80808080ff808080ff8080808080ff808080ffff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fff8080808080808080ff8080ff0180ffff0bff2affff0bff2cff1880ffff0bff2affff0bff2affff0bff2cff3c80ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa075690e6a336be6223d3282d71085af366a1c94e9418c25ca9f5fba9d29e09a8da0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a0c05f74b4f7e8b79dbb23118d7bcdebcadbaddac46824acebe455481c3ec850daffff04ffff0180ff0180808080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0815cec38feefbc2669d2eab272deb4badc17bc42a0f1cecbf1f5cf8c0219d9b7cdad195b9588291642db49da17b99b6eff018080ff018080808080ff018080808080ff01808080', 'solution': '0xffffa02f1c4f4568c420033fb690c134ed3ed3d8d9fa3bdb75f1044d51789b59ea3a1dff0180ff01ffffffff80ffff01ffff81f6ff80ff80ff8080ffff33ffa0e68767ba2b431eb8efd9b8dd0db668d5c0c00c7a04e83f6bc6504c0f2626fdf6ff01ffffa0e68767ba2b431eb8efd9b8dd0db668d5c0c00c7a04e83f6bc6504c0f2626fdf6ffa0e68767ba2b431eb8efd9b8dd0db668d5c0c00c7a04e83f6bc6504c0f2626fdf6808080ff8080808080' }, { 'coin': { 'amount': 9734999999, 'parent_coin_info': '0x265cee97bfc72cc1c41692c9462d098009f5bcade81202cfbacf717a988b8667', 'puzzle_hash': '0x7b0628c573b77df18bf858b6111be39e25e040f4fdb74c74702dfd94b1bd7fbb' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0aa1fdb303fb4e59c8082380e3462a0a4ff3f66ccfb5c40b33b6a13706206b1796f2a32c035a452a26d9926fccb0e3246ff018080', 'solution': '0xff80ffff01ffff33ffa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff0180ffff33ffa0e520db6f3cab1c1a26f84f6bb19f44c103a3609a2b552ed1e2647dbf600fd160ff85023474bb7e80ffff34ff840fcb944080ffff3cffa0a8520fb03d767496573596438ba3e9414cc845b1d2ab26c159ab64be397dd7ba80ffff3dffa05751070a5bfeabb3f71640bacfa81ea2275c36a25a60bb4381ef598cb56bca578080ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0x2f1c4f4568c420033fb690c134ed3ed3d8d9fa3bdb75f1044d51789b59ea3a1d', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, 'puzzle_reveal': '0xff02ffff01ff04ffff04ff04ffff04ff05ffff04ff0bff80808080ffff04ffff04ff0affff04ffff02ff0effff04ff02ffff04ffff04ff05ffff04ff0bffff04ff17ff80808080ff80808080ff808080ff808080ffff04ffff01ff33ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080', 'solution': '0xffa0d41dce69252d14db9a19eb0fcbd0e014d416245460b76a9fe4e7a8030e1bb4c6ff01ff8080' }] } We can now see information about this new NFT by checking against our wallet: chia wallet nft list -i 3 Response: NFT identifier: nft1w45su63nd0nzy0fjstt3ppd0xe4pe98fgxxztj5lt7af620qn2xss66c5t Launcher coin ID: 75690e6a336be6223d3282d71085af366a1c94e9418c25ca9f5fba9d29e09a8d Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: f8c136c24c380e401c445ae05528927f9540a4961bf8b2bf50cc1c9852ab5c08 On-chain data/info: ((117 \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\") (104 . 0x14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0) (28021) (27765) (29550 . 1) (29556 . 1)) Owner DID: None Royalty percentage: 0 Royalty puzhash: c05f74b4f7e8b79dbb23118d7bcdebcadbaddac46824acebe455481c3ec850da NFT content hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata hash: License hash: NFT edition total: 1 Current NFT number in the edition: 1 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1487957 Inner puzzle supports DID: True NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Metadata URIs: License URIs: After issuing the chia wallet nft list command, you'll notice many properties that are blank. For example, there is a section for Owner DID, Metadata URIs, Metadata hash, License URIs, Royalty percentage, among others. This shows some of the other possible values provided when minting an NFT or an NFT collection. More NFT Practice DIDs are decentralized identifiers that can own any NFT. Read more about DIDs in CHIP-0004. If you want more practice, learn to create a DID and transfer your NFT to it. Additionally, you can study more on decentralized file storage for NFT image hosting.","s":"Mint an NFT","u":"/guides/crash-course/cats-offers-nfts/","h":"#mint-an-nft","p":1684},{"i":1703,"t":"Now that you have a top tier NFT, you can create an offer file including this asset. First, we will find the ID for the NFT we want to include in an offer. chia wallet nft list -i As a reminder, you can figure out the wallet ID with chia wallet show. The NFT identifier will look something like nft1w45su63nd0nzy0fjstt3ppd0xe4pe98fgxxztj5lt7af620qn2xss66c5t. When formatting your chia offer, you will use this for the -o option. chia wallet make_offer -o :1 -r : -p Example We can offer an NFT for .01 Chia with a command like this: chia wallet make_offer -o nft1w45su63nd0nzy0fjstt3ppd0xe4pe98fgxxztj5lt7af620qn2xss66c5t:1 -r 1:.01 -p ~/Desktop/offer2 Response: Creating Offer -------------- OFFERING: - 1 nft1w45su63nd0nzy0fjstt3ppd0xe4pe98fgxxztj5lt7af620qn2xss66c5t (1 mojos) REQUESTING: - .01 XCH (10000000000 mojos) Offers for NFTs will have royalties automatically added. Are you sure you would like to continue? (y/n): y Confirm (y/n): y Created offer with ID a5d3039b3ff2d91cfecd858708f53abdfddab4560b79422a1681c6ae11408d87 Use chia wallet get_offers --id a5d3039b3ff2d91cfecd858708f53abdfddab4560b79422a1681c6ae11408d87 -f 1660000549 to view status chia wallet get_offers --id a5d3039b3ff2d91cfecd858708f53abdfddab4560b79422a1681c6ae11408d87 -f 1660000549 Response: Record with id: a5d3039b3ff2d91cfecd858708f53abdfddab4560b79422a1681c6ae11408d87 --------------- Created at: 2022-09-07 10:07:08 Confirmed at: Not confirmed Accepted at: N/A Status: PENDING_ACCEPT ---------------","s":"Offers with NFTs","u":"/guides/crash-course/cats-offers-nfts/","h":"#offers-with-nfts","p":1684},{"i":1705,"t":"Let's practice by accepting our own offer. Accepting an NFT offer works the same as any other offer. You can open the file to get the hex content. chia wallet take_offer info If you are working with others, you can exchange these offer files (or the hex blob) with each other to buy/sell NFTs. Example chia wallet take_offer offer1qqph3wlykhv8jcmqvpsxygqqwc7hynr6hum6e0mnf72sn7uvvkpt68eyumkhelprk0adeg42nlelk2mpafsyjlm5pqpj3dhq5d7ewswwa68td36nxv6jvvm8n7vrk4d6dm2ewleh56kn54h7m05p9v9eh9sw6twfnhnawlzjnyevlmwphk0yjy2vn5fh9tscd40ryttnels5735nn8lmwv59wqlkzgzzyhypmk6vj49tut4m7w5w5jmswkv7jwgen0dhlwgla2yaclpguauj4et8gg6a0csz4mksdmqj9xe6mhfr2a75nkshm3favu4lx2ed4emhvujkh3zxdqkr9sjtkrgnzx8yzf4hgrrxwsxxd6ydc9qd9a5zlf25ds0maa08cu80xsnahf3mf8hthruufl5g7vyfzkmm480uvf9uml8lpd9r87dj3jee72werg6469mgt4hevffnukjk8rl248ulrwlxdglf34dmur7cw539e7qggqmfmlegm4sutf0xwe2ht366577aj29uhlykns7k3wcjdg2h9cf38tey8xcyxqa0yvmugalvqzt7cypdl70pvhlzzjlvrsx0dl0kd4sv56m8j4wt2txevnws7qlltrnvnpmqlx30flcpj7xf9y5zvg4hmlwvmnz0f4rzhkpdfzk5n33tme8utn7c9r8ujt7xyl2rgvp4xccrwv3hmzy59ev9s9ex42t4tyy6p66rwcupfpehdkuj8e57mwxkytslt5urm4vaegmag3356d5adelwkhdnfdas8vqaplh2ysf6vaxu27dqje7hzzdvqewlpt7tmd8hm5drtxl0d370e5x64wnaatx2umttza8mqwt0h4e8ne49a0w4sj5g6yqja9yyxqavqdf6cpzuq00lgurm3zydylaqcuzpe2l2826l2kh9l3fqrk38ul7p38e5aflj9kltvjzhlnw8c29gmphdx0t4xkyrykpesmtvxxsa9qdp62q6asp5t59c5f057ckps8ufytwltakflw6mtxct07hvadfm047782f2rvhx7kf4qrcehvfsrdmqtx9prcnydsvkhkpwmszph0rpc728nfame5t9uwlnu8tjnt2ahffe97a8pfwfn0fpev6yeke36mr8l9jj36xm45qnlxfw8y7hdal8nm7a8fvfnkyqft7jw8r8lutaclrutum0m3lv04avl4j7t95dzw0dvfvxpytcm6su797h26205e0fe5pmkrp53qp8vv9swyrx9sqxkqtpqxjzs3jqgcrhsjsy4y8pcsv00hl7l7p2jsw6089mw0d4x56x4wh9kkj2dshtn45nfh7km0wzv9k88tljgdpncrewhwhmkxlh2rf5ynjqfxrleadkxdtp7xevmlmh4n285c05yysw6mh7tjt5f8ga3ah3m7llcmmnsl74humt2993zpq7t740kyjeltt6xdfewd2gx08muauteyl4xv8x7hwsegat7xl3atr84afn57wn0n8fgua64lhvv3gzqr72c7kg2k9k8m","s":"Accepting NFT Offers","u":"/guides/crash-course/cats-offers-nfts/","h":"#accepting-nft-offers","p":1684},{"i":1707,"t":"Most of what happened in this lesson is possible thanks to foundational pieces (we call them primitives) built on the Chia blockchain. If you want to build something completely custom, you can do that with the Chialisp language. With Chialisp, you can define rules for locking up and spending coins. This is what we will be talking about next!","s":"Conclusion","u":"/guides/crash-course/cats-offers-nfts/","h":"#conclusion","p":1684},{"i":1709,"t":"For this section of the course, you will learn how to set up your development environment, write Chialisp code, and execute it on the command-line.","s":"Chialisp","u":"/guides/crash-course/chialisp/","h":"","p":1708},{"i":1711,"t":"To get started with Chialisp, you will first want to install Chia Dev Tools. Here is a summary of the instructions: Windows Linux/MacOS mkdir learning cd learning py -m venv venv ./venv/Scripts/activate pip install chia-dev-tools cdv --version mkdir learning cd learning python3 -m venv venv . ./venv/bin/activate pip install chia-dev-tools cdv --version This will install the Chia Dev Tools within your activated virtual environment. You'll want to make sure this virtual environment is activated before working on Chialisp. You'll see a (venv) on the left of your terminal prompt. info Virtual environments allow you to install specific Python packages that will only be usable with the environment that is currently active. This allows you to switch between different environments for different projects, or if you just want to use different software versions.","s":"Dev Tools","u":"/guides/crash-course/chialisp/","h":"#dev-tools","p":1708},{"i":1713,"t":"The cdv command provides a set of useful commands for building and running Chialisp programs, as well as some utilities for deploying smart coins on the Chia blockchain, which we will cover later on. Run the following to see what commands it provides: cdv For example, a Chialisp file can be built like so: cdv clsp build something.clsp","s":"Chia Dev Tools","u":"/guides/crash-course/chialisp/","h":"#chia-dev-tools","p":1708},{"i":1715,"t":"You also have access to the run command that can be used to compile Chialisp code directly. note If Chialisp code doesn't depend on any external parameters, the compiler will simplify it to the smallest form it can, which often means that this command will return the final output of the program. If this is the case, you can skip the brun command. Run the following command: run '(+ 2 3)' Which should return the following result: 5 info The syntax (+ 2 3) may look confusing. In Chialisp, we place the operator first, followed by the operands. This is known as prefix notation. Think of this as the equivalent to 2 + 3 in math and most other programming languages. It is set up this way because every program in Chialisp is written as a list, where the first item is the operator. (+ 2 3) is a list of three elements with the first being the + operator, and thus it's a valid Chialisp program.","s":"Run","u":"/guides/crash-course/chialisp/","h":"#run","p":1708},{"i":1717,"t":"The brun command is different from the run command in that it doesn't compile code. Instead, it takes the result of the run command and executes it on the Chialisp Virtual Machine (CLVM) directly. If you need to pass external parameters into the program, you will need to first compile it with run, then use the brun command with the parameters. For example, let's say that the run command produced the following CLVM bytecode output: 2 You could run it like so: brun '2' '(42)' Which should produce the following output: 42 So Chialisp can calculate the meaning of life!","s":"Brun","u":"/guides/crash-course/chialisp/","h":"#brun","p":1708},{"i":1719,"t":"Let's start off with some terminology. Firstly, coins on the Chia blockchain use Chialisp programs named puzzles to secure the value stored within. The parameters to a puzzle are called its solution. To create puzzles that require a solution, we will use the mod operator. It allows us to take arguments passed in to customize the functionality and result of the puzzle. A very basic example would be: run '(mod (arg1 arg2) (+ arg1 arg2))' Which should return the following result: (+ 2 5) info What in the world is (+ 2 5) that run returned? This is an example of Chialisp bytecode that is later executed by the Chialisp Virtual Machine (CLVM). It is not very human-readable, but don't worry about that, as you are not required to understand CLVM bytecode in order to use it. Our first command, run, will take Chialisp code and compile it to bytecode. Next, brun will take that bytecode and execute it. We will then run this puzzle with the brun command, followed by a solution of your choice: brun '(+ 2 5)' '(10 5)' Which should return the following result: 15 reminder We are now using mod to demand a solution for our puzzle. Whenever this is the case, you will be required to use the brun command after run. Pay close attention to the location of quotes and parenthesis. It's easy to get lost! With brun, the solution is passed in as a distinct value surrounded by quotes. (10, 5) is the solution in this example and translates to arg1 = 10 and arg2 = 5. You can run it again with a different solution: brun '(+ 2 5)' '(20 7)' Which should return the following result: 27 At this point you have a working Chialisp puzzle that will take inputs and give back an output. Congrats on making it this far!","s":"Writing a Chialisp Puzzle","u":"/guides/crash-course/chialisp/","h":"#writing-puzzle","p":1708},{"i":1721,"t":"Going with a contrived example, let's say we wanted to add two numbers and return large if they were > 100, or small if they were <= 100. You can compare two values like so: (> apples oranges) If apples is larger than oranges, this returns 1. Otherwise, the output is (), which is equivalent to 0. You can then use an if statement to return one of two different things depending on the result. (if ) A concrete example of an if would be: run '(if 1 \"true\" \"false\")' Which should return the following result: \"true\" Now, we will add arg1 and arg2 with the code (+ arg1 arg2) and compare it to the literal value 100. This comparison will determine whether the if is true or false. We end up with: run '(mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\"))' Which should return the following result: (a (i (> (+ 2 5) (q . 100)) (q 1 . \"large\") (q 1 . \"small\")) 1) Next, let's put this bytecode through brun, giving it a solution: brun '(a (i (> (+ 2 5) (q . 100)) (q 1 . \"large\") (q 1 . \"small\")) 1)' '(10 90)' Which should return the following result: small Now, again with a different solution: brun '(a (i (> (+ 2 5) (q . 100)) (q 1 . \"large\") (q 1 . \"small\")) 1)' '(10 91)' Which should return the following result: large The difference here being the new solution of (10 91). When added together, 10 and 91 are greater than 100.","s":"Comparisons and If","u":"/guides/crash-course/chialisp/","h":"#comparisons-and-if","p":1708},{"i":1723,"t":"Up to this point, we've been using the command line to write and run Chialisp programs. While this is efficient for quickly prototyping and testing small programs, it doesn't scale very well. When writing larger programs in Chialisp, it'll be much easier to use a text editor of your choice and save them to a file. Both Atom and Visual Studio Code have extensions to improve the quality of life of writing Chialisp code. However, any LISP-based syntax highlighting will help as well. info If you decide to use Visual Studio Code, we have begun development on a Chialisp language server extension. You may need to click the dropdown in the editor to install the prerelease version.","s":"Text Editor","u":"/guides/crash-course/chialisp/","h":"#text-editor","p":1708},{"i":1725,"t":"We will be storing Chialisp code in files, then building and running the files on the command line using Chia Dev Tools. There are a few commands that we can use more effectively after setting up a project in this way.","s":"Chialisp Files","u":"/guides/crash-course/chialisp/","h":"#chialisp-files","p":1708},{"i":1727,"t":"The following file extensions are used for Chialisp: Extension Description .clsp Chialisp source code .clvm Deserialized CLVM bytecode .clvm.hex Serialized CLVM bytecode .clsp.hex Generated CLVM bytecode .sym Generated Chialisp symbol table","s":"Convention","u":"/guides/crash-course/chialisp/","h":"#convention","p":1708},{"i":1729,"t":"For this section of the course, you will learn how to set up your development environment, write Chialisp code, and execute it on the command-line. note If you are using PowerShell, make sure to install the PowerShell 7.3 preview version: winget install --id Microsoft.Powershell.Preview --source winget This version fixes nested quoting, which is required for many of the commands on this page.","s":"Chialisp","u":"/guides/crash-course/intro-to-chialisp/","h":"","p":1728},{"i":1731,"t":"To get started with Chialisp, you will first want to install Chia Dev Tools. Here is a summary of the instructions: Windows Linux/MacOS mkdir learning cd learning py -m venv venv ./venv/Scripts/activate pip install chia-dev-tools cdv --version mkdir learning cd learning python3 -m venv venv . ./venv/bin/activate pip install chia-dev-tools cdv --version This will install the Chia Dev Tools within your activated virtual environment. You'll want to make sure this virtual environment is activated before working on Chialisp. You'll see a (venv) on the left of your terminal prompt. info Virtual environments allow you to install specific Python packages that will only be usable with the environment that is currently active. This allows you to switch between different environments for different projects, or if you just want to use different software versions.","s":"Dev Tools","u":"/guides/crash-course/intro-to-chialisp/","h":"#dev-tools","p":1728},{"i":1733,"t":"The cdv command provides a set of useful commands for building and running Chialisp programs, as well as some utilities for deploying smart coins on the Chia blockchain, which we will cover later on. Run the following to see what commands it provides: cdv For example, a Chialisp file can be built like so: cdv clsp build something.clsp","s":"Chia Dev Tools","u":"/guides/crash-course/intro-to-chialisp/","h":"#chia-dev-tools","p":1728},{"i":1735,"t":"You also have access to the run command that can be used to compile Chialisp code directly. note If Chialisp code doesn't depend on any external parameters, the compiler will simplify it to the smallest form it can, which often means that this command will return the final output of the program. If this is the case, you can skip the brun command. Run the following command: run '(+ 2 3)' Which should return the following result: 5 info The syntax (+ 2 3) may look confusing. In Chialisp, we place the operator first, followed by the operands. This is known as prefix notation. Think of this as the equivalent to 2 + 3 in math and most other programming languages. It is set up this way because every program in Chialisp is written as a list, where the first item is the operator. (+ 2 3) is a list of three elements with the first being the + operator, and thus it's a valid Chialisp program.","s":"Run","u":"/guides/crash-course/intro-to-chialisp/","h":"#run","p":1728},{"i":1737,"t":"The brun command is different from the run command in that it doesn't compile code. Instead, it takes the result of the run command and executes it on the Chialisp Virtual Machine (CLVM) directly. If you need to pass external parameters into the program, you will need to first compile it with run, then use the brun command with the parameters. For example, let's say that the run command produced the following CLVM bytecode output: 2 You could run it like so: brun '2' '(42)' Which should produce the following output: 42 So Chialisp can calculate the meaning of life!","s":"Brun","u":"/guides/crash-course/intro-to-chialisp/","h":"#brun","p":1728},{"i":1739,"t":"Let's start off with some terminology. Firstly, coins on the Chia blockchain use Chialisp programs named puzzles to secure the value stored within. The parameters to a puzzle are called its solution. To create puzzles that require a solution, we will use the mod operator. It allows us to take arguments passed in to customize the functionality and result of the puzzle. A very basic example would be: run '(mod (arg1 arg2) (+ arg1 arg2))' Which should return the following result: (+ 2 5) info What in the world is (+ 2 5) that run returned? This is an example of Chialisp bytecode that is later executed by the Chialisp Virtual Machine (CLVM). It is not very human-readable, but don't worry about that, as you are not required to understand CLVM bytecode in order to use it. Our first command, run, will take Chialisp code and compile it to bytecode. Next, brun will take that bytecode and execute it. We will then run this puzzle with the brun command, followed by a solution of your choice: brun '(+ 2 5)' '(10 5)' Which should return the following result: 15 reminder We are now using mod to demand a solution for our puzzle. Whenever this is the case, you will be required to use the brun command after run. Pay close attention to the location of quotes and parenthesis. It's easy to get lost! With brun, the solution is passed in as a distinct value surrounded by quotes. (10, 5) is the solution in this example and translates to arg1 = 10 and arg2 = 5. You can run it again with a different solution: brun '(+ 2 5)' '(20 7)' Which should return the following result: 27 At this point you have a working Chialisp puzzle that will take inputs and give back an output. Congrats on making it this far!","s":"Writing a Chialisp Puzzle","u":"/guides/crash-course/intro-to-chialisp/","h":"#writing-puzzle","p":1728},{"i":1741,"t":"Going with a contrived example, let's say we wanted to add two numbers and return large if they were > 100, or small if they were <= 100. You can compare two values like so: (> apples oranges) If apples is larger than oranges, this returns 1. Otherwise, the output is (), which is equivalent to 0. You can then use an if statement to return one of two different things depending on the result. (if ) A concrete example of an if would be: run '(if 1 \"true\" \"false\")' Which should return the following result: \"true\" Now, we will add arg1 and arg2 with the code (+ arg1 arg2) and compare it to the literal value 100. This comparison will determine whether the if is true or false. We end up with: run '(mod (arg1 arg2) (if (> (+ arg1 arg2) 100) \"large\" \"small\"))' Which should return the following result: (a (i (> (+ 2 5) (q . 100)) (q 1 . \"large\") (q 1 . \"small\")) 1) Next, let's put this bytecode through brun, giving it a solution: brun '(a (i (> (+ 2 5) (q . 100)) (q 1 . \"large\") (q 1 . \"small\")) 1)' '(10 90)' Which should return the following result: small Now, again with a different solution: brun '(a (i (> (+ 2 5) (q . 100)) (q 1 . \"large\") (q 1 . \"small\")) 1)' '(10 91)' Which should return the following result: large The difference here being the new solution of (10 91). When added together, 10 and 91 are greater than 100.","s":"Comparisons and If","u":"/guides/crash-course/intro-to-chialisp/","h":"#comparisons-and-if","p":1728},{"i":1743,"t":"Up to this point, we've been using the command line to write and run Chialisp programs. While this is efficient for quickly prototyping and testing small programs, it doesn't scale very well. When writing larger programs in Chialisp, it'll be much easier to use a text editor of your choice and save them to a file. Both Atom and Visual Studio Code have extensions to improve the quality of life of writing Chialisp code. However, any LISP-based syntax highlighting will help as well. info If you decide to use Visual Studio Code, we have begun development on a Chialisp language server extension. You may need to click the dropdown in the editor to install the prerelease version.","s":"Text Editor","u":"/guides/crash-course/intro-to-chialisp/","h":"#text-editor","p":1728},{"i":1745,"t":"We will be storing Chialisp code in files, then building and running the files on the command line using Chia Dev Tools. There are a few commands that we can use more effectively after setting up a project in this way.","s":"Chialisp Files","u":"/guides/crash-course/intro-to-chialisp/","h":"#chialisp-files","p":1728},{"i":1747,"t":"The following file extensions are used for Chialisp: Extension Description .clsp Chialisp source code .clvm Deserialized CLVM bytecode .clvm.hex Serialized CLVM bytecode .clsp.hex Generated CLVM bytecode .sym Generated Chialisp symbol table You will be writing code in .clsp files.","s":"Conventions","u":"/guides/crash-course/intro-to-chialisp/","h":"#conventions","p":1728},{"i":1749,"t":"Using a text editor and files allows us to format our code nicely. Put the following in a file named first.clsp: first.clsp (mod (arg1 arg2) (if (> (+ arg1 arg2) 100) 'large' 'small') ) Now, we can execute the file by name: run first.clsp This output will be exactly the same as before, but our code is a bit easier to manage. We will still execute the output like so: brun '(a (i (> (+ 2 5) (q . 100)) (q 1 . \"large\") (q 1 . \"small\")) 1)' '(50 51)' And, using nesting, $() will execute anything within () first. We can simplify further with: brun \"$(run first.clsp)\" \"(50 51)\"","s":"Putting it Together","u":"/guides/crash-course/intro-to-chialisp/","h":"#putting-it-together","p":1728},{"i":1751,"t":"A function will give a name to some lines of code, often taking an input and returning a result. Let's create a new file to practice functions inside of Chialisp. Create a file named sum.clsp: sum.clsp (mod (arg1 arg2) (defun sum (s1 s2) (+ s1 s2) ) (sum arg1 arg2) ) This example is silly because we are just adding two numbers, but it shows that we can define a function with parameters. Now, while our solution parameters are still arg1 and arg2, we've introduced s1 and s2. We define the function following this structure: (defun function_name (parameters) function body) ) We can then refer to this function by name later on in our code body: (function_name arguments)","s":"Defining Functions","u":"/guides/crash-course/intro-to-chialisp/","h":"#defining-functions","p":1728},{"i":1753,"t":"Now that we have a basic function, we can build on this to create a sum function to add all values from a list. (mod (items) (defun sum (items) (if items (+ (f items) (sum (r items))) 0 ) ) (sum items) ) Chialisp will use a lot of recursion. In this example, we will use (f items) to refer to the first element in the list, and (r items) to refer to the rest of the items in the list. By saying + (f items) (sum (r items))), we are adding the first element with a recursive call to the sum of the rest of the elements. This will repeat until items is empty, returning 0. Imagine passing in a list (10 5 3 7), we would have a call stack like this: (+ 10 (sum (list 5 3 7))) ↪ (+ 5 (sum (list 3 7))) ↪ (+ 3 (sum (list 7))) ↪ (+ 7 (sum (list))) ↪ 0 We make our way through these calls until we return (0). We then work our way back up adding 0 with 7, 7 with 3, 10 with 5, and finally 15 with 10. Because we need to stop the recursive calls when the list is empty, we check if the items has a value. This can be done with if items.","s":"More Complicated Function","u":"/guides/crash-course/intro-to-chialisp/","h":"#more-complicated-function","p":1728},{"i":1755,"t":"We now have just a single parameter called items. This is expected to be a list, so we will pass a solution that is a list. We would normally pass a solution in () and a list is surrounded with (), so it may look like \"((10 5 3 7))\": brun \"$(run sum.clsp)\" \"((10 5 3 7))\" Response: 25","s":"Invoking our Code","u":"/guides/crash-course/intro-to-chialisp/","h":"#invoking-our-code","p":1728},{"i":1757,"t":"Puzzles all have something in common, they output a list of conditions. This tells the blockchain what you want to do with the coin. We did this exact thing in an earlier lesson: (mod (PUBLIC_KEY conditions) (include condition_codes.clib) (include sha256tree.clib) (c (list AGG_SIG_ME PUBLIC_KEY (sha256tree conditions)) conditions ) ) Here, we are outputting a custom conditions which is passed in as a solution.","s":"Inner Puzzles","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1758,"t":"We can create a coin within a coin where the inner coin returns a list of conditions to the outer coin. To do this, we will use (a INNER_PUZZLE inner_solution). The operator a means apply and is how you execute some code. The inner puzzle will be executed with the inner solution. What the inner puzzle and inner solution is exactly is up to the coin creator. Here is a more complex example for an outer coin: outer-puzzle.clsp (mod (PUBLIC_KEY INNER_PUZZLE inner_solution) (include condition_codes.clib) (include sha256tree.clib) ; Assert the signature matches and append the conditions. (defun calculate_output (PUBLIC_KEY inner_solution conditions) (c (list AGG_SIG_ME PUBLIC_KEY (sha256tree inner_solution)) conditions ) ) ; Pass the output of the inner puzzle to `calculate_output`. (calculate_output PUBLIC_KEY inner_solution (a INNER_PUZZLE inner_solution)) ) This will first run (a INNER_PUZZLE inner_solution), passing the result to our custom function calculate_output. This function will require a signature of the outputted conditions from the inner coin. You can think of the outer coin as additional layer to control the inner coin. Almost like a template for your coins.","s":"Inner Puzzles","u":"/guides/crash-course/inner-puzzles/","h":"#inner-puzzles","p":1756},{"i":1760,"t":"Let's create an inner puzzle. This will use a new condition code ASSERT_HEIGHT_RELATIVE, which will make sure a certain number of blocks have passed since coin creation before the coin can be spent. inner-puzzle.clsp (mod (REQUIRED_BLOCKS conditions) (include condition_codes.clib) (c (list ASSERT_HEIGHT_RELATIVE REQUIRED_BLOCKS) conditions ) ) We will also need to get the appropriate include files: cdv clsp retrieve sha256tree condition_codes","s":"Inner Puzzle Creation","u":"/guides/crash-course/inner-puzzles/","h":"#inner-puzzle-creation","p":1756},{"i":1762,"t":"warning Many of these values used (such as my public key) are specific to me. I left them in to clearly see command usage, but you'll want to substitute where appropriate. First, let's get our master public key. chia keys show Response: Fingerprint: 1660000549 Master public key (m): b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Farmer public key (m/12381/8444/0/0): b4ef65cc62af8cd6d25e72444e1886938cfec436933cfc5e32c14367f846f6728f74a133c30bbab84fd4d0afec0966a0 Pool public key (m/12381/8444/1/0): b6cb156bad3580795ae9377e717a43925ed7622f18ff6ab8c3471f1fdd18ad9906b8e19c22f25fa29fccbf4af3f4acab First wallet address: txch1kwa0ach5f3djns83cpvsywnwlx4mjqnzyja3vg0jwlsp3cfwes2qlfdf7c You will specifically want the master public key prefixed with 0x. For me, this value is: 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Now, let's curry the inner puzzle with some value (in # of blocks) cdv clsp curry inner-puzzle.clsp -a 20 Response: (a (q 2 (q 4 (c 2 (c 5 ())) 11) (c (q . 82) 1)) (c (q . 20) 1)) Once we've created the bytecode for the inner puzzle, we will curry that result in to the outer puzzle, after our public key. cdv clsp curry outer-puzzle.clsp -a 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d -a '(a (q 2 (q 4 (c 2 (c 5 ())) 11) (c (q . 82) 1)) (c (q . 20) 1))' Response: (a (q 2 (q 2 10 (c 2 (c 5 (c 23 (c (a 11 23) ()))))) (c (q 50 (c (c 4 (c 5 (c (a 14 (c 2 (c 11 ()))) ()))) 23) 2 (i (l 5) (q 11 (q . 2) (a 14 (c 2 (c 9 ()))) (a 14 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d) (c (q 2 (q 2 (q 4 (c 2 (c 5 ())) 11) (c (q . 82) 1)) (c (q . 20) 1)) 1))) info Now that we curried in our public key, the bytecode will be different from key to key. Make sure you use your own key and prefix with 0x!","s":"The Steps","u":"/guides/crash-course/inner-puzzles/","h":"#the-steps","p":1756},{"i":1764,"t":"Now that we have curried the inner puzzle in to the outer puzzle, we will create a coin for our final outer puzzle bytecode.","s":"Create the Coin","u":"/guides/crash-course/inner-puzzles/","h":"#create-the-coin","p":1756},{"i":1766,"t":"opc -H \"\" opc -H \"(a (q 2 (q 2 10 (c 2 (c 5 (c 23 (c (a 11 23) ()))))) (c (q 50 (c (c 4 (c 5 (c (a 14 (c 2 (c 11 ()))) ()))) 23) 2 (i (l 5) (q 11 (q . 2) (a 14 (c 2 (c 9 ()))) (a 14 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d) (c (q 2 (q 2 (q 4 (c 2 (c 5 ())) 11) (c (q . 82) 1)) (c (q . 20) 1)) 1)))\" Response: e4fd576c99d4cb789a21b3173d18e916c37634720c9ecd9d25f615d24bd1e3c5","s":"Get Puzzle Hash","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1768,"t":"While we are at it, let's also get our serialized puzzle for the puzzle_reveal. opc \"\" opc \"(a (q 2 (q 2 10 (c 2 (c 5 (c 23 (c (a 11 23) ()))))) (c (q 50 (c (c 4 (c 5 (c (a 14 (c 2 (c 11 ()))) ()))) 23) 2 (i (l 5) (q 11 (q . 2) (a 14 (c 2 (c 9 ()))) (a 14 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d) (c (q 2 (q 2 (q 4 (c 2 (c 5 ())) 11) (c (q . 82) 1)) (c (q . 20) 1)) 1)))\" Response: ff02ffff01ff02ffff01ff02ff0affff04ff02ffff04ff05ffff04ff17ffff04ffff02ff0bff1780ff808080808080ffff04ffff01ff32ffff04ffff04ff04ffff04ff05ffff04ffff02ff0effff04ff02ffff04ff0bff80808080ff80808080ff1780ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954dffff04ffff01ff02ffff01ff02ffff01ff04ffff04ff02ffff04ff05ff808080ff0b80ffff04ffff0152ff018080ffff04ffff0114ff018080ff01808080","s":"Get Puzzle Reveal","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1770,"t":"Now that we have our puzzle hash, we can encode this as an address. cdv encode -p txch e4fd576c99d4cb789a21b3173d18e916c37634720c9ecd9d25f615d24bd1e3c5 Response: txch1un74wmye6n9h3x3pkvtn6x8fzmphvdrjpj0vm8f97c2ayj73u0zsjqanlc We will use this address as the receive address for our new coin.","s":"Get Address","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1772,"t":"chia wallet send --amount 0.01 --fee 0.00005 --address txch1un74wmye6n9h3x3pkvtn6x8fzmphvdrjpj0vm8f97c2ayj73u0zsjqanlc Response: Submitting transaction... Transaction submitted to nodes: [{'peer_id': '67095d445d879556da95feeee70174c66b131d4f29bd447df5fbc56789a01f24', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 1660000549 -tx 0xcfc2382e19b8c02a251cc4092951aeda45d643d32fe9bbe675761a228a393b1a' to get status Let's get the status. chia wallet get_transaction -f 1660000549 -tx 0xcfc2382e19b8c02a251cc4092951aeda45d643d32fe9bbe675761a228a393b1a Eventually, this will say confirmed: Transaction cfc2382e19b8c02a251cc4092951aeda45d643d32fe9bbe675761a228a393b1a Status: Confirmed Amount sent: 0.01 TXCH To address: txch1un74wmye6n9h3x3pkvtn6x8fzmphvdrjpj0vm8f97c2ayj73u0zsjqanlc Created at: 2022-11-01 22:34:50 In the meantime, we can start crafting our spendbundle.json: { \"coin_spends\": [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"\", \"puzzle_hash\": \"\" }, \"puzzle_reveal\": \"\", \"solution\": \"\" } ], \"aggregated_signature\": \"\" } Next up, let's get the coin record and coin ID.","s":"Create Coin","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1774,"t":"First, you can grab the coin by puzzlehash. If anyone has ever used the same CLVM for a coin, there will be multiple coins returned (this is unlikely since our puzzle included our own public key): cdv rpc coinrecords --by puzzle_hash e4fd576c99d4cb789a21b3173d18e916c37634720c9ecd9d25f615d24bd1e3c5 Response: [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"0xdb8e67eb6c0d91206329eb4fe53c403b3b0be29fdd99baa67e574c2318ade1f7\", \"puzzle_hash\": \"0xe4fd576c99d4cb789a21b3173d18e916c37634720c9ecd9d25f615d24bd1e3c5\" }, \"coinbase\": false, \"confirmed_block_index\": 333655, \"spent_block_index\": 0, \"timestamp\": 1667356550 } ] This does not give the coin ID, but does give everything needed to calculate the coin ID. info A coin ID is the hash of the parent coin ID, puzzle hash of the coin, and the amount. We can retrieve the coin ID with this template: cdv inspect -id coins --parent-id \"\" --puzzle-hash \"\" --amount \"\" Example: cdv inspect -id coins --parent-id 0x2ae27f44c228eeb9b16eb3f878c51e5bc468009eea79fce976e9d0a25b0e2b85 --puzzle-hash 0xaa0dc6276e519a604dd0a750b8efb53c5d65b55f189cc0ca29d498d45b69a216 --amount 10000000000 Response: ['43ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5']","s":"Retreive Coin Info","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1776,"t":"The solution we will use is the same 51 CREATE_COIN condition we've been using throughout this series. To do this, we will need our wallet puzzle hash. chia wallet get_address Response: txch12zntse5ac4fl5nr83c43rcunjn9zr39r3a6z7zyu9c68ve949kpqkk5w9n cdv decode txch12zntse5ac4fl5nr83c43rcunjn9zr39r3a6z7zyu9c68ve949kpqkk5w9n Response: 50a6b8669dc553fa4c678e2b11e39394ca21c4a38f742f089c2e347664b52d82 Now, let's get the encoded solution: warning Remember 0x for your puzzle hash opc \"((((51 0x50a6b8669dc553fa4c678e2b11e39394ca21c4a38f742f089c2e347664b52d82 9950000000))))\" Response: ffffffff33ffa050a6b8669dc553fa4c678e2b11e39394ca21c4a38f742f089c2e347664b52d82ff85025110f38080808080 This is 4 parenthesis deep because the outer-puzzle params list will be passed in surrounded by (), and one of those params is the inner solution, which is surrounded by (). Inside of the inner solution we have another set of () for the list of conditions where each condition is also surrounded by (). We will now calculate the hash for the inner solution, which is part of AGG_SIG_ME and will be neede for chia keys sign: opc -H \"(((51 0x50a6b8669dc553fa4c678e2b11e39394ca21c4a38f742f089c2e347664b52d82 9950000000)))\" Response: e611d1b5035b2c77eb5a343d47d6c0f5345ae212539b666136ae86ccb95ee47a This will need signed with chia keys sign, but AGG_SIG_ME introduces some other inputs for a more unique signature. These are the coin ID and the genesis challenge. We've already calculated the coin ID with cdv inspect -id coins, now we just need the genesis challenge. The easiest way to retrieve this is with: chia show -s Now that we have all the pieces, we will concatenate them together for the final message to be signed.","s":"Crafting a solution","u":"/guides/crash-course/inner-puzzles/","h":"#crafting-a-solution","p":1756},{"i":1778,"t":"The order for theses is solution hash, coin ID, genesis challenge. run '(concat 0xe611d1b5035b2c77eb5a343d47d6c0f5345ae212539b666136ae86ccb95ee47a 0x43ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5 0xd25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15)' Response: 0xe611d1b5035b2c77eb5a343d47d6c0f5345ae212539b666136ae86ccb95ee47a43ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5d25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15","s":"Concatenate Message","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1780,"t":"info remove 0x from the message chia keys sign --as-bytes --message e611d1b5035b2c77eb5a343d47d6c0f5345ae212539b666136ae86ccb95ee47a43ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5d25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15 --hd_path m Response: Public key: b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Signature: 8c6154292b5215f96bbb664f6883bd4bd02db2f844ca99a9a82385ef1e1c983bbb3cf5e8191dc2627e4fd01236ef86c3158d6738f23875080d2bf3eec8caf316735e3851add2eb068dbfbc9c27327072ffbeb77ba26d371e3d6533b2033bc1bc Now, let's formulate the spendbundle.json. { \"coin_spends\": [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"0xdb8e67eb6c0d91206329eb4fe53c403b3b0be29fdd99baa67e574c2318ade1f7\", \"puzzle_hash\": \"0xe4fd576c99d4cb789a21b3173d18e916c37634720c9ecd9d25f615d24bd1e3c5\" }, \"puzzle_reveal\": \"ff02ffff01ff02ffff01ff02ff0affff04ff02ffff04ff05ffff04ff17ffff04ffff02ff0bff1780ff808080808080ffff04ffff01ff32ffff04ffff04ff04ffff04ff05ffff04ffff02ff0effff04ff02ffff04ff0bff80808080ff80808080ff1780ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954dffff04ffff01ff02ffff01ff02ffff01ff04ffff04ff02ffff04ff05ff808080ff0b80ffff04ffff0152ff018080ffff04ffff0114ff018080ff01808080\", \"solution\": \"ffffffff33ffa050a6b8669dc553fa4c678e2b11e39394ca21c4a38f742f089c2e347664b52d82ff85025110f38080808080\" } ], \"aggregated_signature\": \"0x8c6154292b5215f96bbb664f6883bd4bd02db2f844ca99a9a82385ef1e1c983bbb3cf5e8191dc2627e4fd01236ef86c3158d6738f23875080d2bf3eec8caf316735e3851add2eb068dbfbc9c27327072ffbeb77ba26d371e3d6533b2033bc1bc\" } Now, push the transaction: cdv rpc pushtx spendbundle.json If enough blocks have not gone through, it will say \"status\": \"PENDING\". { \"status\": \"SUCCESS\", \"success\": true } You can now see the spent block with the same command used earlier: cdv rpc coinrecords --by puzzlehash 0xe4fd576c99d4cb789a21b3173d18e916c37634720c9ecd9d25f615d24bd1e3c5 Response: [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"0xb74b97e934fdf0daa1ebc3aca5dd033f9b1ca9eb761140e108a8d113a420c6fe\", \"puzzle_hash\": \"0xe4fd576c99d4cb789a21b3173d18e916c37634720c9ecd9d25f615d24bd1e3c5\" }, \"coinbase\": false, \"confirmed_block_index\": 336196, \"spent_block_index\": 336230, \"timestamp\": 1667404639 } ] As you can see, 34 blocks have passed in this example from coin creation to coin spend.","s":"Sign Message","u":"/guides/crash-course/inner-puzzles/","h":"","p":1756},{"i":1782,"t":"The Chia\\textsf{Chia}Chia network (chia.net) is a permissionless blockchain that was launched on March 19, 2021. Chia\\textsf{Chia}Chia is a \"longest-chain\" blockchain like Bitcoin, but uses disk-space instead of computation as the main resource to achieve consensus. This holds the promise of being much more ecologically and economically sustainable and more decentralized than a proofs of work (PoW) based blockchain like Bitcoin could be. Figure 1 illustrates one slot of the Chia\\textsf{Chia}Chia blockchain. The main aim of this document is to explain the rationale for this rather complicated design. Figure 1: Illustration of one slot (taking around 10 minutes) of the Chia blockchain. For illustration the slot has just 16 (instead 64) signage points and only 4 blocks (the actual chain has a target of 32). As mentioned, Chia\\textsf{Chia}Chia is basically what's called a longest-chain protocol in the literature [BNPW19; BDK+19]. This notion captures blockchain protocols that borrow the main ideas from the Bitcoin blockchain: the parties (called miners in Bitcoin and farmers in Chia) that dedicate resources (hashing power in Bitcoin, disk space in Chia) towards securing the blockchain just need to listen to the (P2P) network to learn about progress of the chain and to collect transactions. locally use the resource (via proofs of work in Bitcoin or proofs of space in Chia) trying to create a block which extends the current chain. if a winning block is found, gossip the new block to the network. No other coordination or communication amongst the parties is required. In particular, as the miners in Bitcoin, the farmers in Chia\\textsf{Chia}Chia only need to speak up once they find a block and want it to be included in the chain. Constructing a secure permissionless blockchain using proofs of space is much more challenging than using proofs of work. In particular, a secure (under dynamic availability) longest-chain protocol based on proofs of space alone does not exist [BP22], so Chia's proofs of space and time (PoST) consensus protocol, apart from farmers providing disk space, additionally relies on so called timelords who evaluate verifiable delay functions (VDFs). Figure 2 gives an overview of the formal security proofs and more informal arguments outlined in this document. Figure 2: An illustration of the main security proofs and arguments for the Chia consensus layer.","s":"1 - Introduction","u":"/green-paper-introduction/","h":"","p":1781},{"i":1784,"t":"The Bitcoin blockchain is secure [GKL15] as long as the hashing power hashhhash_hhashh​ (measured in hashes per second) contributed by honest parties is larger than the hashing power hashahash_ahasha​ available to an adversary, i.e., hashh>hashahash_h > hash_ahashh​>hasha​ eq.(1) Similarly, the security of Chia\\textsf{Chia}Chia depends on the amount of space spacehspace_hspaceh​ and spaceaspace_aspacea​ controlled by the honest parties and the adversary, respectively. Additionally, the speed vdfhvdf_hvdfh​ and vdfavdf_avdfa​ (measured in steps per second) of the VDFs run by the fastest honest timelord and the adversary are relevant. With these definitions, Chia is provably secure if : spaceh⋅vdfh>spacea⋅vdfa⋅1.47\\textrm{{\\sf Chia}\\ is provably secure if : } space_h\\cdot vdf_h > space_a \\cdot vdf_a \\cdot 1.47Chia is provably secure if : spaceh​⋅vdfh​>spacea​⋅vdfa​⋅1.47 eq.(2) Let us stress that Chia\\textsf{Chia}Chia only requires a single timelord (which runs 3 VDFs) to be active at any time, in particular, vdfhvdf_hvdfh​ in eq.(2) refers to the speed of the fastest VDFs controlled by an active and honest timelord, it doesn't matter if one or a billion timelords are active. In practice we'd still expect a small number – not just one – timelords to be available to have a backup should the currently fastest timelord become unavailable. On the other hand, we make no assumptions about the number of VDFs controlled by the adversary. Security as in eq.(2) holds even when assuming the adversary controls an unbounded number of VDFs of speed vdfavdf_avdfa​. This assumption comes at a prize: there's a 1.471.471.47 factor by which the adversarial resources are multiplied in eq.(2). This factor is there due to an attack we call \"double dipping\". This and other attacks will be discussed in §2. For now let us just mention that there's nothing special about the constant 1.471.471.47, it can be lowered to 1+ϵ1+\\epsilon1+ϵ for any ϵ>0\\epsilon>0ϵ>0 by increasing the number of blocks that depend on the same challenge (in Chia\\textsf{Chia}Chia this is set to at least 16). The bound in eq.(1) is not tight in the sense that we don't have an attack that works if we replace \">>>\" with \"<<<\". We have an attack assuming giving the adversary a slightly lower boosting factor of 1.341.341.34 double spending in Chia possible if : spaceh⋅vdfhhashahash_h \\cdot \\left(1-\\frac{network\\ delay}{block\\ arrival\\ time}\\right)> hash_ahashh​⋅(1−block arrival timenetwork delay​)>hasha​ eq.(4) Even with its very slow 10 minutes block arrival time, Bitcoin's orphan rate was measured to be around 1.6%1.6\\%1.6% [DW13]. As the Chia\\textsf{Chia}Chia chain is not a typical hash chain, but an ongoing VDF computation where blocks are infused, there's an elegant way to avoid orphans: the \"infusion point\" of a block is around 303030 seconds (more precisely, between 28.12528.12528.125 and 37.537.537.5 seconds) worth of VDF computations after the \"signage point\" it must refer to, and as long as the network delay is small enough so the block creating/gossiping process takes less than 30 seconds no orphans will occur. In particular, the bound from eq.(2) holds under this very weak network assumption independent of the block arrival time. The target block arrival time in Chia\\textsf{Chia}Chia is set to 18.7518.7518.75 seconds (32 blocks per 10 Minutes slot), and while each of those blocks contributes to security, only a subset of these blocks actually carry transactions (roughly 36%36\\%36%, that's a block every 51.251.251.2 seconds) in order to ensure that transaction blocks sequentially refer to each other. This prevents issues with inconsistent transactions, as each block producer knows the entire history.","s":"1.2 Network Delays","u":"/green-paper-introduction/","h":"#12-network-delays","p":1781},{"i":1788,"t":"Apart from proving security assuming the honest parties control a sufficient majority of the resources, to argue that a longest-chain protocol will be secure in the real world we need to justify why rational parties would behave honestly in the first place. In particular, it should not be possible to get more rewards by deviating from the honest mining/farming behavior. While Bitcoin is not fair in this sense due to selfish mining attacks [ES18], these attacks are not really practical and have not been observed in the wild for reasons we'll sketch below and discuss in more detail in §3. Fairness in Chia\\textsf{Chia}Chia​ Achieving fairness that is comparable to what Bitcoin achieves is a main design goal of Chia\\textsf{Chia}Chia. While arguing about fairness directly is rather subtle, we identify two clean properties called \"no slowdown\" and \"delayed gratification\" a longest-chain can satisfy. Delayed gratification by itself already is a deterrent against selfish farming, and we show (Proposition 1 in §3) that these two properties jointly imply a chain-quality (i.e., fraction of honest blocks in the longest chain) no worse that what Bitcoin achieves. No-Slowdown​ The no-slowdown property was identified as a desirable property for longest-chain blockchains in [CP19]. It holds if (even an unbounded) adversary cannot slow down the growth of the chain by participating. We discuss the no-slowdown in Chia\\textsf{Chia}Chia and various other chains in §3.5. Delayed Gratification​ The Chia\\textsf{Chia}Chia design ensures that proof of space challenges are only revealed once they are needed, and once they're revealed they cannot be influenced any more. This then implies that it's impossible for a selfish farmer to create more blocks by deviating from honest farming, and thus – like in Bitcoin – the only thing a selfish farmer can do is prevent other farmers from adding their fair share of blocks in the current epoch (potentially even losing out on blocks themself). The reason a selfish farmer would do this is in order to enforce a lower difficulty, and thus more rewards for themselves, in the future [ES18]. We denote chains with this property as having \"delayed gratification\".1 While delayed gratification doesn't prevent selfish mining, it severely limits the type of selfish mining possible, and we don't expect to observe selfish farming in Chia\\textsf{Chia}Chia for the same reasons we don't observe selfish mining in Bitcoin. As mentioned above, in combination with the no-slowdown property it even implies a chain-quality as in Bitcoin.","s":"1.3 Game Theoretic Aspects","u":"/green-paper-introduction/","h":"#13-game-theoretic-aspects","p":1781},{"i":1790,"t":"Constructing a secure blockchain based on proofs of space is significantly more challenging than with proof of work. So the Chia\\textsf{Chia}Chia design, as illustrated in Figure 1 is (arguably necessarily) more sophisticated than Bitcoin or other PoW based blockchains, which are basically just hash chains. Apart from proofs of space and standard cryptographic building blocks like hash functions and signature schemes, the security of Chia\\textsf{Chia}Chia crucially relies on verifiable delay functions (VDFs) [BBBF18; Pie19b; Wes20]. Informally, VDFs are functions whose computation is inherently sequential and verifiable and thus serve as a \"proof of time\". We will now shortly sketch how the Chia\\textsf{Chia}Chia blockchain is maintained by farmers and timelords. Farmers​ Farmers are the analog of miners in Bitcoin, but instead of hashing power, farmers contribute disk-space towards securing the Chia\\textsf{Chia}Chia blockchain. As in Bitcoin, they are incentivized by block-rewards and transaction fees. As in Bitcoin, the block-rewards (i.e., some freshly minted coins that go to the block creator) decrease over time, but unlike in Bitcoin they will never go to zero for reasons outlined in [CKWN16]. To participate in farming a farmer must first initalize its disk-space, this process is called plotting and the files created and stored during this process are called plots. The smallest allowed plot in Chia\\textsf{Chia}Chia is slightly larger than 100GB, though for plotting one temporarily needs more than this. Once the plot(s) are in place, a farmer just listens to the network for proof of space challenges. There's a new challenge roughly every 9.3759.3759.375 seconds and they are computed by a timelord as discussed below. For efficiency reasons there's a \"plot filter\" which for each plot dismisses all but (in expectation) one in 512 challenges immediately, so a plot is only accessed once every 80 minutes. The reason to not increase this time even further are so called replotting attacks which we'll discuss in §1.8.3. In Chia\\textsf{Chia}Chia only roughly 36%36\\%36% of the blocks will carry transactions, but as a farmer doesn't know whether their block will be a transaction block when creating the block, farmers must always include transactions to the blocks they create. Timelords​ A timelord runs three VDFs, once every 9.3759.3759.375 seconds they gossip a \"signage point\" that serves as a PoSpace challenge for the farmers. They also listen to the network for blocks created by farmers. If a valid block is received in time it gets \"infused\" into the chain (the infusion is always somewhere from 28.12528.12528.125 to 37.537.537.5 seconds after the signage point). The above only holds for the the timelord which runs the fastest VDFs. Timelords with slower VDFs can basically just recompute values that were already gossiped, so there's seemingly no point for them to participate. We still want a small number of timelords to participate (or at least be ready to take over) should the fastest timelord fail or misbehave. Unlike farmers, timelords do not receive any rewards in form of block-rewards or transaction fees. One reason is technical, unlike for farmers whose PoSpace contained in the blocks are linked to a signature public-key to which a reward can be given, the computation of the timelords is (and to prevent grinding attacks must be) canonical, they cannot attach a public-key to the values they computed. A second reason is the fact that it's not clear at all how such a reward would be distributed. If the fastest timelord gets the entire reward only they would be incentivized, but not the slower ones we'd like to have as back-ups. If also the slower ones get something then we'd get a PoW type lottery which we want to avoid in the first place. Chia\\textsf{Chia}Chia thus relies on a small number of timelords to run fast VDFs without being incentivised by on-chain rewards.","s":"1.4 Farmers and Timelords","u":"/green-paper-introduction/","h":"#14-farmers-and-timelords","p":1781},{"i":1792,"t":"Difficulty​ In Bitcoin a difficulty parameter DDD controls how many hashes are required in expectation to find a block. This parameter is re-calibrated every 2016 blocks (called an epoch and taking roughly 2 weeks) so blocks arrive roughly every 10 Minutes. Chia\\textsf{Chia}Chia has two parameters, a difficulty parameter DDD and a time parameter TTT, these are re-calibrated once every 460846084608 blocks (this epoch takes around 1 day). The time parameter TTT is reset to fit the target time of 10 minutes per slot, while the difficulty is reset to target an average of 32 blocks per slot. For example if in an epoch the amount of space is 10%10\\%10% higher than anticipated the difficulty for the next epoch would get up Dnew:=Dold⋅1.1D_{new}:=D_{old}\\cdot 1.1Dnew​:=Dold​⋅1.1 while the time parameter remains unchanged Tnew:=ToldT_{new}:=T_{old}Tnew​:=Told​. If the VDF speed in the epoch is 10%10\\%10% higher than anticipated (i.e., the epoch only takes 24/1.124/1.124/1.1 instead of 242424 hours) the time parameter goes up Tnew:=Told⋅1.1T_{new}:=T_{old}\\cdot 1.1Tnew​:=Told​⋅1.1, and even though the space didn't change, the difficulty needs also to go up Dnew:=Dold⋅1.1D_{new}:=D_{old}\\cdot 1.1Dnew​:=Dold​⋅1.1 account for the fact that now an epoch has more VDF steps. Chain Selection Rule​ Bitcoin has a very simple chain selection rule (aka. fork choice rule) which specifies which fork a miner should work on: a miner should always try to extend the \"heaviest\" chain they are aware of. The weight of a chain is the sum of the blocks, each multiplied by the difficulty parameter used while it was mined. Unless we consider forks which pass an epoch boundary, the heaviest chain is also the chain with the larger number of blocks, hence the name \"longest chain\" protocol. We can define the weight of a chain in Chia\\textsf{Chia}Chia analogously to Bitcoin, and currently the default Chia\\textsf{Chia}Chia farmer code follows basically the same \"follow the heaviest chain\" rule as Bitcoin miners. But let us stress that it's not clear whether for Chia\\textsf{Chia}Chia this simple rule is the best choice. For example, one could consider a rule for farmers where in case of a fork where both chains have the same weight they would work on both chains (note that in a PoW based chain this is not possible). While such a rule can slow down consensus, the observed fork could be due to an attack (double spending or selfish mining) trying to \"split\" the contribution of the honest space in two different chains, letting the farmers work on both forks would thwart this. In Chia\\textsf{Chia}Chia we also must specify a chain selection rule for the timelords. A timelord who does not control the fastest VDF will constantly fall behind and thus intuitively should just constantly adapt the chain with the most VDF steps in them. But if all timelords naïvely do this a malicious timelord controlling the fastest VDF could simply skip infusing any blocks they want, allowing for all kinds of attacks. Thus the rule for timelords has to be more nuanced, taking into account the chains they observe, and also blocks that were created by farmers but not infused in any of the chains. Determining the best rules for Chia\\textsf{Chia}Chia farmers and timelords is ongoing research. Fortunately, the rules for farmers and timelords are more of a social convention rather than a specification of the chain. As our understanding improves, new rules can be implemented in the code base and there's no need for a (soft) fork.","s":"1.5 Difficulty and Chain Selection Rule","u":"/green-paper-introduction/","h":"#15-difficulty-and-chain-selection-rule","p":1781},{"i":1794,"t":"The Chia\\textsf{Chia}Chia blockchain uses standard cryptographic building blocks, in particular hash functions and signature schemes. More interestingly, it relies on two (non-interactive) proof systems which were especially developed for constructing sustainable blockchains: proofs of space and verifiable delay functions. We shortly discuss the requirements Chia\\textsf{Chia}Chia has to these building blocks. Hash Functions.​ Chia\\textsf{Chia}Chia uses SHA256 for hashing, but any collision resistant hash function would do. For efficiency reasons, we also use the round function of CHACHA8 and BLAKE3 within the proof of space construction where we just need some scrambling but no cryptographic hardness (not even one-wayness). Signatures.​ Chia\\textsf{Chia}Chia uses deterministic BLS signatures for signing. In principle any signature scheme could be used as long as the signatures are unique, i.e., it's impossible (or at least computationally hard) to create two different valid signatures for the same message. Uniqueness will be crucial to prevent so called grinding attacks. Verifiable Delay Functions.​ A VDF is specified by some inherently sequential function, and a proof system for showing the output of the function is correct. The sequential function used in the VDF deployed in Chia\\textsf{Chia}Chia is repeated squaring in class groups of unknown order. The group is not fixed, but a fresh group is sampled every time a value is infused. The proof system is Wesolowski's [Wes20] proof of exponentiation which has proof of size only one group element. Only the VDF output, but not the proofs, are committed on-chain. This has the advantage that one can replace the proofs. In the current implementation one first computes a much larger but faster to compute proof of 64 group elements, which later is replaced by a normal (one element) Wesolowski proof. It also means one can easily replace Wesolowski's proof with another proof system should a weakness with this proof system (which relies on new number theoretic assumptions) be discovered. We discuss VDFs in detail in §A.3. Proofs of Space.​ The notion of proofs of space was introduced, and a first construction proposed, in [DFKP15] (a security proof for their construction in the random oracle model was given in [Pie19a]). This construction, which is combinatorial and based on pebbling lower bounds for particular graphs, has the major drawback that the initialization phase is interactive. A consequence of this is that if one wants to use this PoSpace in a blockchain, the farmers must first commit to their plots before they can be used for farming (say by recording this commitment on-chain via a special transaction as suggested in Spacemint [PKF+18]). A new PoSpace with a non-interactive initialization had to be developed for Chia\\textsf{Chia}Chia [AAC+17]. This construction basically just specifies some function fff, and then stores its function table (x,f(x))(x,f(x))(x,f(x)) sorted by the outputs f(x)f(x)f(x). On challenge some value yyy, the prover looks up the entry (x,y)(x,y)(x,y) (which is efficient as the list is sorted) and replies with the proof xxx, which can be easily verified checking that y=?f(x)y\\stackrel{\\tiny ?}{=}f(x)y=?f(x). Unfortunately this simple construction miserably fails to be secure: the prover can store much less than the full function table, while still being able to efficiently find proofs. The reason are Hellman's time-memory trade-offs, a technique proposed in 1980 to break symmetric cryptographic schemes [Hel80]. In [AAC+17] it is shown how this simple construction can be \"salvaged\" to overcome any time-memory trade-offs.2 We'll discuss definition of a PoSpace, and the construction used in Chia\\textsf{Chia}Chia in particular, in §A.2.","s":"1.6 Cryptographic Building Blocks","u":"/green-paper-introduction/","h":"#16-cryptographic-building-blocks","p":1781},{"i":1796,"t":"The design and rationale of the Chia\\textsf{Chia}Chia blockchain is explained in the following sections, here we'll just give a very high level view of the chain as illustrated in Figure 1. The chain itself consists of four chains, one hash chain and three VDF chains. Hash and VDF chains​ While hash chains are a classical cryptographic construction, VDF chains were first used in Chia\\textsf{Chia}Chia. A VDF chain alternates VDF computations with infused values. It provides the security properties present in hash-chains, that is, the head of a chain commits its entire past (technically, given the head of a hash or VDF chain, it's computationally infeasible to come up with two different chains that end in that value). In addition, VDF chains come with a sequentiality property: the number of sequential steps to compute the VDF chain is the sum of the steps required for all the VDFs in that chain, i.e., the VDFs must be computed sequentially. Hash and VDF chains are discussed in more detail in §4. The four chains which constitute the Chia\\textsf{Chia}Chia blockchain are the (1) foliage chain FC{\\cal FC}FC, which is a normal hash-chain and contains the transactions (2) the reward chain RC{\\cal RC}RC which records all blocks (3) the challenge chain CC{\\cal CC}CC used to create PoSpace challenges and (4) the infused challenge chain iCC{\\sf i}{\\cal CC}iCC for some extra security properties. While RC{\\cal RC}RC and CC{\\cal CC}CC are normal VDF chains, iCC{\\sf i}{\\cal CC}iCC is more of a sequence of forks from CC{\\cal CC}CC. Blocks​ A block β={βF,βT}\\beta=\\{\\beta_F,\\beta_T\\}β={βF​,βT​} is made of two parts, the foliage block βF\\beta_FβF​, which contains the payload (transactions and a time-stamp) and the trunk block βT={σ,μrc_sp}\\beta_T=\\{\\sigma,\\mu_{{\\sf rc\\_sp}}\\}βT​={σ,μrc_sp​} which contains a PoSpace σ\\sigmaσ and a signature μrc_sp\\mu_{{\\sf rc\\_sp}}μrc_sp​. Building the Chains​ A timelord computes the RC,CC,iCC,FC{\\cal RC},{\\cal CC},{\\sf i}{\\cal CC},{\\cal FC}RC,CC,iCC,FC chains and broadcasts relevant values to the network. This includes signage points rc_sp{\\sf rc\\_sp}rc_sp and cc_sp{\\sf cc\\_sp}cc_sp which are the values of the RC{\\cal RC}RC and CC{\\cal CC}CC chains (together with a proof that these values are on the VDF chains) once every 9.3759.3759.375 seconds. A farmer who receives these signage points rc_sp{\\sf rc\\_sp}rc_sp and cc_sp{\\sf cc\\_sp}cc_sp checks whether these points are of interest (i.e., on the heaviest known chain) and all the VDF proofs verify. Next, for each of their plots, they use cc_sp{\\sf cc\\_sp}cc_sp as a challenge to compute a PoSpace σ\\sigmaσ. Then they check whether σ\\sigmaσ satisfies a winning condition that allows to produce a block. If a winning PoSpace σ\\sigmaσ is found, the farmer creates a signature μrc_sp\\mu_{\\sf rc\\_sp}μrc_sp​ of rc_sp{\\sf rc\\_sp}rc_sp (that verifies under the pkpkpk associated with σ\\sigmaσ) and a foliage block βF\\beta_FβF​ and then gossips the block β={βF,βT={σ,μrc_sp}}\\beta=\\{\\beta_F,\\beta_T=\\{\\sigma,\\mu_{\\sf rc\\_sp}\\}\\}β={βF​,βT​={σ,μrc_sp​}}. When a timelord receives this block, they check whether the block satisfies all conditions to be infused into the chain. (RC{\\cal RC}RC) If yes, the trunk block βT\\beta_TβT​ is infused into RC{\\cal RC}RC once its infusion point is reached, which is somewhere between 3 and 4 signage points (28.125 to 37.5 seconds worth of VDF computations) past the signage point of that block. (CC{\\cal CC}CC) If this happens to be the first block whose signage points are in the current slot, then μrc_sp\\mu_{\\sf rc\\_sp}μrc_sp​ (but not σ\\sigmaσ) is infused into the challenge chain CC{\\cal CC}CC at the end of the current slot. This way the challenge chain depends only on one block per slot. (iCC{\\sf i}{\\cal CC}iCC) For some extra security, the timelord doesn't simply wait till the end of the slot to infuse the signature, but a third VDF is used to fork from CC{\\cal CC}CC at the infusion point by infusing μrc_sp\\mu_{\\sf rc\\_sp}μrc_sp​ into CC{\\cal CC}CC, and this fork, called the infused challenge chain iCC{\\sf i}{\\cal CC}iCC, is then infused back to CC{\\cal CC}CC at the end of the slot. (FC{\\cal FC}FC) Iff the signage point of this block is later than the infusion point of the last transaction block, then this block is also a transaction block. Only in this case its foliage βF\\beta_FβF​ is appended to the foliage (hash) chain FC{\\cal FC}FC, and this block becomes a \"transaction block\".","s":"1.7 A High Level View of the Protocol","u":"/green-paper-introduction/","h":"#17-a-high-level-view-of-the-protocol","p":1781},{"i":1798,"t":"When constructing a proof of stake or proof or a space based longest-chain protocol one faces similar challenges due to \"nothing at stake\" (aka. costless simulation) issues, we'll discuss these in §2. But there also aspects in which Space and Stake differ, and we'll shortly discuss three of them below. The first difference is the fact that space, unlike stake, is an unsized resource, which for example means that we can't have \"certificates\" [LR21]. The second difference is the fact that stake is an internal resource, while space is an external resource, one of the consequences of this is that a space based protocol can recover from malicious majority, while a stake based cannot. The third are replotting attacks against space which have no analogue in the stake setting.","s":"1.8 Space Oddities","u":"/green-paper-introduction/","h":"#18-space-oddities","p":1781},{"i":1800,"t":"A key difference between stake and work is the fact that in a stake based chain we know the amount of the resource available for mining, while for an external resource like work or space this is no longer the case. Lewis-Pye and Roughgarden [Lew21; LR21] formalize this as the sized vs. unsized setting and prove some fundamental differences between them. The main result in [LR21] shows that certificates which \"provide incontrovertible proof of block confirmation\", only exist in the sized setting, i.e., for PoStake but not PoWork blockchains. In their framework space and also space and time (i.e., the available space multiplied with the speed of the available VDFs) as used in Chia\\textsf{Chia}Chia are an unsized resource, so we can't hope to get certificates.","s":"1.8.1 Sized vs. Unsized","u":"/green-paper-introduction/","h":"#181-sized-vs-unsized","p":1781},{"i":1802,"t":"Work or space are actual resources and we can unambiguous talk about some party holding some amount of the resource at some given point in time. Stake on the other hand is an internal resource defined relative to some chain on which it is recorded and \"holding some stake\" usually refers to the stake a party controls on the chain that currently is considered the valid one by honest parties. The main advantage on using stake to secure a longest-chain protocol is the fact that it's extremely sustainable as no external resource is required to secure the chain. But this comes at a prize, one common argument against stake is that the chain is not really permissionless as participating in mining requires acquiring stake from the parties currently controlling it. Also from a security perspective an internal resource is delicate as keys controlling stake not on the current chain can be used to attack the chain. A simple example would be an attack by which a party acquires keys that were valid at some block BiB_iBi​ in the past, but which are no longer valid at the current block and thus are \"cheap\" (e.g., the party can lend a large amount of stake for a short time, or offer to buy outdated keys), and then uses these keys to fork at block BiB_iBi​ and bootstrap a chain to the present. To prevent such attacks some chain require parties to delete old keys, but it's irrational for a party to delete old keys if they can be valuable in the future, say because one can sell them to an attacker (and this is rational if one holds just little stake, so not selling is unlikely to prevent the attack) or because there's a deep reorg and the old keys suddenly become valuable again. Combining stake with VDFs would make such attacks harder, but not prevent them as we'll discuss in §6","s":"1.8.2 Internal vs. External","u":"/green-paper-introduction/","h":"#182-internal-vs-external","p":1781},{"i":1804,"t":"A subtle but important difference between stake and space is the fact that space allows for replotting which has no analogue in the stake setting: Given a challenge ccc, a space farmer controlling a plot SSS of size NNN can efficiently compute one proof σ←PoSpace.prove(S,c)\\sigma \\gets {\\sf PoSpace.prove}(S,c)σ←PoSpace.prove(S,c). This is analogous to the stake based setting, but unlike in the stake setting, the farmer can inefficiently compute multiple proofs for challenge ccc by repeatedly creating fresh plots and computing one proof with each of them. We refer to attacks exploiting this fact as replotting attacks. The most basic design choice to harden a chain against replotting attacks is to make sure that challenges arrive at a sufficiently high rate so that substantial replotting in-between two challenges is not feasible. Moreover the plot filter (which dictates what fraction of plots must be accessed with every challenge) cannot be chosen too aggressively as more aggressive filters makes potential replotting attacks easier. A fundamental fact about PoSpace that crucially relies on replotting is that no PoSpace based longest-chain protocol secure under dynamic availability exists [BP22], we'll discuss their result in more detail in §6.2.3. Chia\\textsf{Chia}Chia overcomes this no-go theorem by using VDFs, we discuss security under dynamic availability and healing from malicious majority in the work, stake and space setting in §6. Footnotes​ According to Wikipedia, delayed gratification is the resistance to the temptation of an immediate pleasure in the hope of obtaining a valuable and long-lasting reward in the long-term. ↩ The crucial observation that makes this possible is the fact that Hellman's attack assumes that f(.)f(.)f(.) can be efficiently computed in forward direction, while for a PoSpace we just require that the entire function table of f(.)f(.)f(.) can be computed in time linear in the size of the table. ↩","s":"1.8.3 Replotting","u":"/green-paper-introduction/","h":"#183-replotting","p":1781},{"i":1806,"t":"According to Wikipedia, delayed gratification is the resistance to the temptation of an immediate pleasure in the hope of obtaining a valuable and long-lasting reward in the long-term. ↩ The crucial observation that makes this possible is the fact that Hellman's attack assumes that f(.)f(.)f(.) can be efficiently computed in forward direction, while for a PoSpace we just require that the entire function table of f(.)f(.)f(.) can be computed in time linear in the size of the table. ↩","s":"Footnotes","u":"/green-paper-introduction/","h":"#footnote-label","p":1781},{"i":1808,"t":"This course is designed to give you an end-to-end introduction to Chia. We'll start off with a foundational understanding of the Chia blockchain. This includes what blockchains are for and what makes Chia different from other options. Once you understand the basics, we'll learn about plotting and farming. Finally, we'll cover many of the DeFi possibilities including fungible tokens (CATs), non-fungible tokens (NFTs), and writing custom coins in Chialisp. info Chialisp is Chia's on-chain programming language for writing custom coins. If you want to skip ahead to development, see the Intro to Chialisp section of this course.","s":"Introduction","u":"/guides/crash-course/introduction/","h":"","p":1807},{"i":1810,"t":"The goal of cryptocurrency is to transfer monetary value on a peer-to-peer decentralized network. This means that there is no centralized intermediary to facilitate the transaction. Instead, blockchain relies on a network of nodes to confirm transactions according to some rules. Additionally, cryptocurrency makes the exchange of value extremely fast and easy, even for cross-border payments. However, cryptocurrencies can be used for more than just facilitating digital payments. We are seeing many projects pop up that are designed as decentralized applications, or dApps. The value of a cryptocurrency is not only in its ability to be used for buying and selling goods, but also that it is designed to host applications without a centralized authority. Each person who runs a Chia blockchain node runs a full copy of the software and is required to adhere to the consensus algorithm. This allows for peer-to-peer transactions confirmed against an entire network of nodes as opposed to a single entity.","s":"Intro to Chia","u":"/guides/crash-course/introduction/","h":"#intro-to-chia","p":1807},{"i":1812,"t":"As new transactions are added to the network, full nodes must confirm these transactions. For a decentralized network to work, every node must be in agreement with every other node. This means they must follow the same rules. The rules are known as the consensus and are rules defined in the software every node must adhere to. Chia follows a consensus algorithm known as Proof of Space and Time (PoST). The way it works is by utilizing hard drive space and elapsed time as your contribution to the network. This is required to prevent what's known as a Sybil attack. Chia is intentionally different than networks that use Proof of Stake (PoS). Many argue that staking has a centralizing effect on proof of stake networks as there are much fewer decision-making nodes, and they continue to gain power. Chia, on the other hand, has over 100K full nodes all following the PoST consensus mechanism, a protocol that is similar to that of Bitcoin (but with less electricity usage required).","s":"Consensus","u":"/guides/crash-course/introduction/","h":"#consensus","p":1807},{"i":1814,"t":"For a network to be decentralized, we want the creation of a full node to be possible for many. Ideally, running a full node would be as permissionless as possible. Anyone can become a full node in Chia. The majority of computers can handle the technical requirements with many people even running off of a Raspberry Pi. A full node can be ran with less storage requirements and computing power. These smaller requirements for a full node allow for stronger decentralization. Farmers in the network are those who designate hard drive storage to support the network. The more space you reserve, the higher chances you have of confirming a block and getting rewarded Chia (XCH). As you'll learn, the network has grown so much that solo farming can be quite unrewarding with massive times to win. Pooling was introduced as a solution to more evenly distribute farming rewards based on your space contribution. Pooling is possible with other major cryptocurrencies, but a major difference is that the Chia network designed an official protocol where the individual farmers confirm their blocks rather than the pool. This completely removes the problem of centralization introduced by current Proof of Work (PoW) mining. Centralized mining power puts the integrity of the network in question as large pools are capable of easily performing 51% attacks. This specific centralization problem is not a problem with the pooling protocol, even if a single farming pool maintained a majority of the network. Essentially: Chia is a blockchain that is decentralized. It uses significantly less electricity. It offers dApp capabilities with the Chialisp programming language.","s":"Decentralization","u":"/guides/crash-course/introduction/","h":"#decentralization","p":1807},{"i":1816,"t":"You can refer to the Installation page to download and install the Chia client. The installer is usually the simplest and we will go through how to set up the chia command for CLI use. To make the commands as close as possible across operating systems I recommend Windows users download Git, which comes with Git bash. You can of course use Windows Command Prompt or PowerShell, but commands may be slightly different. Before we get started using the CLI, we need to be able to issue the chia command. Use this line in Git Bash / terminal: Windows (Git Bash) Linux/MacOS ~/AppData/Local/chia-blockchain/app-1.5.1/resources/app.asar.unpacked/daemon/chia.exe /Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia Response: Usage: chia.exe [OPTIONS] COMMAND [ARGS]... Manage chia blockchain infrastructure (1.5.1) Options: --root-path PATH Config file root [default: C:\\Users\\calebcurry\\.chia\\mainnet] --keys-root-path PATH Keyring file root [default: C:\\Users\\calebcurry\\.chia_keys] --passphrase-file FILENAME File or descriptor to read the keyring passphrase from --force-legacy-keyring-migration / --no-force-legacy-keyring-migration Force legacy keyring migration. Legacy keyring support will be removed in an upcoming version! -h, --help Show this message and exit. Commands: configure Modify configuration db Manage the blockchain database farm Manage your farm init Create or migrate the configuration keys Manage your keys netspace Estimate total farmed space on the network passphrase Manage your keyring passphrase plotnft Manage your plot NFTs plots Manage your plots plotters Advanced plotting options rpc RPC Client run_daemon Runs chia daemon show Show node information start Start service groups stop Stop services version Show chia version wallet Manage your wallet Try 'chia start node', 'chia netspace -d 192', or 'chia show -s' Using this path each time can get old, so you have the option of creating an alias or environment variable. Windows (Git Bash) Linux/MacOS alias chia=~/AppData/Local/Programs/Chia/resources/app.asar.unpacked/daemon/chia.exe alias chia=/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia Now, you can just say: chia","s":"Getting Started","u":"/guides/crash-course/introduction/","h":"#getting-started","p":1807},{"i":1818,"t":"Once you can issue the chia command, the differences between operating systems are minimal. To gain more experience in Chia and to be more comfortable with troubleshooting you should become comfortable with the command line interface (this will allow you to interact with Chia through the terminal). A lot of other tools like madMAx plotter also are commonly used through the terminal. info madMAx is a software created as an alternative way of creating plots for Chia. The software performed great and was ultimately brought in to the official software. This is the easiest way to get started created plots with Chia. The instructions to use the CLI depends on the operating system, you can get the exact instructions in this document. So the goal is to be able to use the chia command from the terminal. On mac, you can issue /Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia. Add this to your path with PATH=/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon:$PATH. This will allow you to just type chia in the terminal without everything else. Now that you have the CLI running you can initialize Chia. chia init chia keys generate Fingerprints It's possible to manage multiple keys from a single Chia client. These will be identified by a fingerprint. In chia wallet show you'll see a message like fingerprint: 1660000549. Working with only a single fingerprint in your client is easier as if you have multiple you'll often need to specify which fingerprint you want to use. For example. here is the usuage for chia wallet send: chia wallet send [OPTIONS] Options: ... -f, --fingerprint INTEGER Set the fingerprint to specify which wallet to use ... By managing just a single wallet, all of your chia commands can be simplified by leaving off the -f option.","s":"Getting Started with the CLI","u":"/guides/crash-course/introduction/","h":"#getting-started-with-the-cli","p":1807},{"i":1820,"t":"If you are already on a testnet, skip to instructions for the CLI. For most dev work on Chia, you'll want to be on the testnet. That way, you're learning with fake Chia and don't put any funds at risk. info If you were previously running on mainnet, you will have a list of mainnet peers stored in the following file: ~/.chia/mainnet/db/peers.dat Be sure to rename or delete this file when you convert your system to running on testnet. If you do not do this, your system will eventually drop its mainnet peers and add new testnet peers, but this could take a long time. One way to speed up the peer discovery process even more is to run the add-nodes bash script. Note that this script won't work on Windows. Your mileage also may vary on Linux and MacOS. Run the following commands to instruct your node to connect to the testnet: chia stop all -d chia configure --testnet true chia start farmer Response: chia_harvester: started chia_farmer: started chia_full_node: started chia_wallet: started","s":"Getting on Testnet","u":"/guides/crash-course/introduction/","h":"#getting-on-testnet","p":1807},{"i":1822,"t":"At this point you should be able to use the CLI to get information about your farm and confirm you are on testnet. chia show --state Response: Network: testnet11 Port: 58444 RPC Port: 8555 Node ID: 67095d445d879556da95feeee70174c66b131d4f29bd447df5fbc56789a01f24 Genesis Challenge: 37a90eb5185a9c4439a91ddc98bbadce7b4feba060d50116a067de66bf236615 Current Blockchain Status: Not Synced. Peak height: 355514 Time: Wed Feb 14 2024 13:49:51 EDT Height: 355514 Estimated network space: 1.181 TiB Current difficulty: 708 Current VDF sub_slot_iters: 70778880 Total iterations since the start of the blockchain: 3364480016373 Height: | Hash: 1462514 | d799fedae1ef226669f61ad843c5ae7947b42e596664f39fd68fcd299e076916 1462513 | 0764f546d9186da788485ce69ebe91969e8cf9495722d9567d67e54e3e3e6ed3 1462512 | d6132b015365b7609d0b5179b9daf9e4fd2ad7a9040ec1d13e15df65660cf69e 1462511 | 8ae2273b4a86fd9af85837c538faa75b572014ac281c6c51ad1eb4ce2a7f8072 1462510 | fb392a40b7e3bf38c8628311224b5aaa4a32ecdea403c16ae5d3c48d16b57f47 1462509 | 012b1f9213bf823e6b73408019f18ff8330e46b911ba78c1d64fd5019d6cc6d9 1462508 | e0f66ca2e00566eee9a3ce4028b6aa11771aa42c9bce34f296d89f42d1a909ce 1462507 | c900e2fb449db0def030a3c0e6a8bff5d23f6470730236120bcac442b2f1ab0f 1462506 | 39db9fe7658b545dcf45e8e99797c937b7b93a041485ef28bf9cda2b3529ac0a 1462505 | ca343b0e985fe9dafb7cba7cee0c1515c6bddd732e2542b8fbd49ac8d90c13f3 Ideally, you'll see within this response a value like Current Blockchain Status: Syncing 1462514/1462514 (0 behind) showing that you are syncing. Testnet Database For many things you will need a synced full node. Fortunately, an official testnet database download is available, which can be a much faster option than syncing from scratch. Once this file is downloaded, stop your node: chia stop all -d Now, unzip the file and replace the blockchain_v2_mainnet.sqlite database file in /Users//.chia/mainnet/db directory. Once this is complete, you can restart chia. chia start farmer Now, you can confirm your sync height. It should be much closer to the peak height of the blockchain. chia show --state","s":"CLI","u":"/guides/crash-course/introduction/","h":"#cli","p":1807},{"i":1824,"t":"For the rest of this workshop you will need some TXCH (Testnet Chia). You can get some for free from the official Chia faucet. For this you will need a receive address. chia wallet get_address Example response: txch14hdpnww04nezf9y7gmsdaryjtqpgnyrv6set8fykdx7v8u3jjvps5xjxre Once this transaction has been added to the blockchain and your wallet sees it, you will have a TXCH balance. chia wallet show Example response: Chia Wallet: -Total Balance: 0.899259999996 txch (899259999996 mojo) -Pending Total Balance: 0.899259999996 txch (899259999996 mojo) -Spendable: 0.899259999996 txch (899259999996 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Details Sending Chia You can send Chia through the CLI as well. This requires a little more information, but isn't too bad. The command looks like this: chia wallet send -i 1 -a -m -t The -i 1 is the wallet ID. Later on we will have multiple wallet IDs to store different types of assets (tokens). For now, -i 1 refers to the default Chia wallet as seen in the -Wallet ID response from the chia wallet show command. Any Chia keys will have multiple receive addresses. You can test sending Chia by sending some to yourself (or a friend). Take a note of the response from chia wallet get_address command. chia wallet send -i 1 -a .01 -m 0 -t txch14hdpnww04nezf9y7gmsdaryjtqpgnyrv6set8fykdx7v8u3jjvps5xjxre Response: Submitting transaction... Transaction submitted to nodes: ... Run 'chia wallet get_transaction -f 1660000549 -tx 0x468399be58604e7199f6899d838d3206fada9c12b29f545410616856413457c7' to get status chia wallet get_transaction -f 1660000549 -tx 0x468399be58604e7199f6899d838d3206fada9c12b29f545410616856413457c7 Response: Transaction 468399be58604e7199f6899d838d3206fada9c12b29f545410616856413457c7 Status: In mempool Amount sent: 0.01 TXCH To address: txch14hdpnww04nezf9y7gmsdaryjtqpgnyrv6set8fykdx7v8u3jjvps5xjxre Created at: 2022-09-08 10:52:15 You can see Status: In mempool, which means a full node has not yet confirmed the transaction. This can take some time if the network is busy or if you did not include a fee. Ultimately we want this command to return Status: Confirmed. You can see all your transactions as well: chia wallet get_transactions Response: ... Transaction 2aa603c52e4b56b8af41a489081056de40421a6398caf4fbdc8be861eb210b2e Status: Confirmed Amount received in trade: 0.01 TXCH To address: txch1ttx32j6lg9c6d4jhf9rdpugk7ulmuxsz4u42jdmy5xr94t933q5skfv0av Created at: 2022-09-01 13:40:07 Transaction 29dd86e548957ff90bebd83aaa11f5e5f0fa4978f9c207252137dcbed40b2222 Status: Confirmed Amount sent in trade: 0.01 TXCH To address: txch1qyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszf0rpn Created at: 2022-09-01 13:40:07 ... At this point you have a Chia wallet and a basic understanding of the CLI. You should now be able to move on to the next section which will introduce many of the Chia primitives including CATs, offers, and NFTs.","s":"Getting TXCH","u":"/guides/crash-course/introduction/","h":"#getting-txch","p":1807},{"i":1826,"t":"The majority of Chia Network Inc's prefarm is being held in a cold wallet, secured by a complex set of custodial rules. This document will describe the details of the custodial arrangement. A moderate level of technical proficiency is probably needed to understand the details. For a high-level overview of the custody wallet, see our blog post. Other relevant documents: Flow chart to visualize how the custody tool works User guide to help you get up and running CLI reference for all custody commands used in this tutorial","s":"Custody Tool Description","u":"/guides/custody-tool-description/","h":"","p":1825},{"i":1828,"t":"The prefarm uses a singleton with the following features: Multisig -- required to perform actions on the singleton, where: The total number of keys in the multisig is initially set to 5, which will be referred to as n for the rest of this document. n can be changed with a rekey (explained later) Initially, 3 keys will be required to perform withdrawals and standard rekeys. This number will be referred to as m for the rest of this document. m can be thought of as the security level for the wallet. This variable can be modified to be as large as n. For the prefarm, it can be as small as 1, though other custodial wallets could set the minimum to a larger number Merkle root -- Chialisp puzzles representing the n keys are stored in a Merkle tree, where: Puzzles representing every combination of keys, from 1 to m, are stored. If the keys are A, B, C, D and E, and m is 3, then the combinations to be stored are ABC, ABD, ABE, ACD, ACE, ADE, BCD, BCE, BDE, CDE, AB, AC, AD, AE, BC, BD, BE, CD, CE, DE, A, B, C, D and E The Merkle root of this tree is curried (pre-committed) into the singleton The Merkle root of a tree containing puzzles of all possible combinations for m + 1 is also curried into the singleton. This is required in case of a lock level increase (explained later). This root is recursive, in that it contains puzzles that have combinations for m + 2 committed to them, leading up to the level where m = n. In order to spend a coin from this wallet, a node in the Merkle tree, along with a Proof of Inclusion, are required to be passed into the singleton's solution. The Proof of Inclusion must prove the node's existence in the current Merkle root in order for the spend to succeed The Merkle tree is stored in multiple private locations. However, even if a copy is stolen, the thief will not gain access to the wallet because m digital signatures are still required (see below for a more detailed analysis) The Merkle tree is generated deterministically, based on the n pubkeys. Therefore, if the Merkle tree is lost, it can be regenerated by using the n pubkeys Withdrawal Timelock -- This is a timelock on initiating a withdrawal, referred to as wt for the rest of this document. The value of wt is set upon the wallet's creation and can never be changed. It will be explained in detail below. Rekey Timelock -- This is a timelock on initiating a rekey, referred to as rt for the rest of this document. The value of rt is set upon the wallet's creation and can never be changed. It will be explained in detail below.","s":"Singleton Structure","u":"/guides/custody-tool-description/","h":"#singleton-structure","p":1825},{"i":1830,"t":"The singleton comes in two layers -- one permanent and one non-permanent.","s":"Singleton Settings","u":"/guides/custody-tool-description/","h":"#singleton-settings","p":1825},{"i":1832,"t":"Setting Prefarm Value Description wt 30 days Withdrawal Timelock -- When attempting to begin a withdrawal, this is the minimum number of seconds that must have elapsed since the last withdrawal, rekey or clawback. pc 90 days Payment Clawback -- The minimum number of seconds that must elapse after initiating a withdrawal before the withdrawal can be completed. Clawbacks are possible during this window. rt 15 days Rekey Timelock -- When attempting to begin a standard rekey, this is the minimum number of seconds that must have elapsed since the last withdrawal, rekey or clawback. For a slow rekey, this amount gets added for each key less than m (in addition to the amount of time that would have been required in a standard rekey). rc 30 days Rekey Clawback -- The minimum number of seconds that must elapse after initiating a rekey before the rekey can be completed. Clawbacks are possible during this window. sp 45 days Slow rekey Penalty -- This amount gets added to the Rekey Timelock when a slow rekey is being performed.","s":"Permanent layer","u":"/guides/custody-tool-description/","h":"#permanent-layer","p":1825},{"i":1834,"t":"Setting Initial Value Description m 3 The initial number of pubkeys required to do a withdrawal or standard rekey n 5 The maximum number of pubkeys required to do a withdrawal or standard rekey pks A comma separated list of pubkey files that will control this money","s":"Non-permanent layer","u":"/guides/custody-tool-description/","h":"#non-permanent-layer","p":1825},{"i":1836,"t":"Three separate actions are allowed on the wallet's singleton: withdrawals, rekeys (normal and slow) and lock level increases. Each of these actions will be discussed in detail in this section.","s":"Allowed Actions","u":"/guides/custody-tool-description/","h":"#allowed-actions","p":1825},{"i":1838,"t":"This action removes money from the wallet. In order for a withdrawal to be initiated, exactly m of n signatures are required. Two phases must be completed to perform a withdrawal: a withdrawal timelock and a drop coin. Withdrawal Timelock​ Even though this is called a timelock, it acts more like a gateway, which either allows or disallows the singleton to begin the withdrawal process. It has the following rules: wt seconds must have elapsed since any actions (other than a lock level increase) have been performed on the singleton The wt condition either has, or has not, been met wt is part of the singleton's permanent layer, so it can never be modified If the withdrawal timelock condition has not been met, then a withdrawal may not be initiated. If it has been met, then a withdrawal may be initiated. The next phase is the drop coin. Drop Coin​ Upon entering this phase, the singleton creates a drop coin of the amount of XCH to be withdrawn. A drop coin has several rules: It has a curried XCH payout address, to where the money is flagged to be withdrawn It has a payment clawback timelock, referred to as pc for the rest of this document Because the drop coin cannot be spent for pc seconds, it functions as a permissionless escrow The drop coin contains the same Merkle root that was used in the singleton At any point before the drop coin has been spent, clawback is allowed. Clawback has the following features: It cancels the withdrawal and returns the money to the custodial wallet's singleton. It uses p2_singleton to accomplish this, so there is further action needed for the funds to be absorbed into the singleton It requires m of n signatures The m signatures don't have to be the same as the ones that initiated the withdrawal. In other words, different people could claw back the withdrawal than those who initiated it After pc seconds, if a clawback has not been performed, completion becomes possible. Completion has the following features: It completes the withdrawal to a pre-specified XCH address Anyone is allowed to perform a completion Even though a completion can be performed by anyone, it is secure because the withdrawal address is not changeable","s":"Withdrawal","u":"/guides/custody-tool-description/","h":"#withdrawal","p":1825},{"i":1840,"t":"This action changes the keys associated with the wallet's singleton. k keys are required for a rekey, where: For a standard rekey, k = m For a slow rekey, 1 <= k < m. (By default, a slow rekey could be performed with just one key.) Either type of rekey can also modify m and/or n if desired. We'll discuss the circumstances where each type of rekey will be performed later in this section. Two phases must be completed to perform a rekey, an initiation timelock and a drop coin. Initiation​ Before a rekey can begin, a certain amount of time must have elapsed since the last action (other than a lock level increase) was performed on the singleton. This is a de facto gateway; the time condition either has, or has not been met. The amount of time before the rekey can begin depends on the number of keys used. In order to calculate this time, several factors must be considered: Start by calculating x, where x = m - k + 1 If x is 1, then it's a standard rekey (k = m) If x > 1, then it's a slow rekey. x represents the gap between the k keys being used with this rekey and m + 1 (the number of keys required for a lock level increase, as explained below) For a standard rekey, the initiation timelock duration is rt. As discussed above, rt is stored in the singleton and can never be changed For a slow rekey, a time penalty sp seconds is automatically applied. The value of sp also can never be changed The duration of the initiation timelock of a slow rekey is sp + rt*x seconds. In other words, a penalty of rt seconds gets added for each key less than m The following table illustrates a few examples of initiation timelock lengths, for various values of m and k. For this table, rt is set to 15 days and sp is set to 45 days (these are both denominated in seconds). The table assumes that n (5) and the minimum k (1) have not been modified from their default values: m k Days Comment 3 3 15 Standard rekey, no penalty 3 2 75 Slow rekey, sp day penalty + 2 * standard rt days 3 1 90 Slow rekey, sp day penalty + 3 * rt days 1 1 15 This is a case where, after a prior rekey, m was reduced to 1. There is no penalty, even with a single key 5 3 90 In this case, a lock level increase has been performed, so 5 of 5 keys are required to avoid a penalty 5 1 120 This is the longest possible initiation timelock duration when n is 5 and the minimum k is 1. In this case, m has been increased to 5, and 1 key is being used for the rekey ... ... ... Other combinations for m and k are possible, but not shown here If the singleton has been modified within the timelock's required number of seconds, then the initiation timelock condition has not been met, and a rekey may not be initiated. If the initiation timelock condition has been met, then a withdrawal may be initiated. The next phase is the drop coin. k is carried over to this phase. Drop Coin​ Upon entering this phase, the singleton creates a drop coin with 0 value. This drop coin has several rules: It has a hard-coded timelock, hereafter referred to as rc The same Merkle root that was used in the singleton is curried into the drop coin A new Merkle root is also curried into the drop coin. After the rekey has completed, this will become the Merkle root of the puzzles representing the new keys. Therefore, the new keys, along with the new Merkle tree, must have been generated before the drop coin was created At any point before the drop coin has been spent, clawback is allowed. Clawback has the following features: It cancels the rekey; the custodial wallet's singleton is left unmodified It requires k signatures (the number of keys that initiated the rekey) The k signatures don't have to be the same as the ones that initiated the rekey. In other words, different people could claw back the rekey than those who initiated it After rc seconds, if a clawback has not been performed, completion becomes possible. Completion has the following features: It spends the drop coin, which creates a puzzle announcement for the singleton to use It also spends the singleton, which asserts the puzzle announcement from the drop coin, and recreates itself with the new Merkle root curried in m and/or n could be set to different numbers in the new singleton Anyone is allowed to perform the completion Even though the completion can be performed by anyone, it is secure because the new Merkle root has already been committed to Note that because rc is hard-coded, a second rekey can't overtake a rekey that has already been initiated. If rekey A is in progress and someone attempts rekey B, then A will succeed and B will fail.","s":"Rekey","u":"/guides/custody-tool-description/","h":"#rekey","p":1825},{"i":1842,"t":"This action increases the wallet's security (m) by 1. It has the following features: m + 1 keys are required to perform a lock level increase The effect is immediate -- there is no timelock The keys themselves don't change This action is secure because the new Merkle root has been pre-committed In running this action, the singleton is spent and a new copy is created, with a new Merkle root curried in. This new root is taken from a Merkle tree containing every possible combination of keys from the new m down to 1 This action automatically invalidates all outstanding rekey attempts because the Merkle root has changed in the new copy of the singleton This action does not invalidate outstanding withdrawal attempts","s":"Lock Level Increase","u":"/guides/custody-tool-description/","h":"#lock-level-increase","p":1825},{"i":1844,"t":"Normally, each of the keys will be in a Secure state. This means that the original owner still possesses the key, and no adversaries have gained access to it. Keys have three other possible states: Sniffed -- An adversary has gained access to the key. The owner still has a copy Stolen -- An adversary has gained access to the key. The owner no longer has a copy Lost -- The owner has lost the key. Nobody else has gained access to it If a sufficient number of keys are sniffed, stolen or lost, there are three potential catastrophic consequences: Deadlocked -- The owner and adversary each attempt to rekey and claw back those attempts. Neither side obtains the funds until the other side gives up Drained -- An adversary is able to steal the funds Bricked -- Nobody is able to access the funds Any time one or more keys have been sniffed, stolen or lost, a rekey will be performed if possible. The Merkle tree is needed to perform withdrawals, rekeys and lock level increases. Multiple copies of the tree will be kept in private locations. The assumption is that if any of the keys are sniffed, stolen or lost, the Merkle tree has been sniffed. The following table lists the action/consequence, given the current value of m and the state of the keys: m Keys Sniffed Keys Stolen Keys Lost 3 0-2: normal rekey 3: lock level increase to 4, normal rekey 4: lock level increase to 5, normal rekey 5: deadlocked 0-2: normal rekey 3-5: drained 0-2: normal rekey 3-4: slow rekey 5: bricked 4 0-3: normal rekey 4: lock level increase to 5, normal rekey 5: deadlocked 0-1: normal rekey 2: slow rekey 3-5: drained 0-1: normal rekey 2-4: slow rekey 5: bricked 5 0-4: normal rekey 5: deadlocked 0: normal rekey 1-2: slow rekey 3-5: drained 0: normal rekey 1-4: slow rekey 5: bricked","s":"When are Normal Rekey, Slow Rekey and Lock Level Increase needed?","u":"/guides/custody-tool-description/","h":"#when-are-normal-rekey-slow-rekey-and-lock-level-increase-needed","p":1825},{"i":1846,"t":"The source code for the custody solution is in the internal-custody GitHub repository. There are two configuration files, one public (for observers) and one private.","s":"Source Code","u":"/guides/custody-tool-description/","h":"#source-code","p":1825},{"i":1848,"t":"An observer can track the prefarm's configuration information from prefarm_info.py, which contains the following variables: launcher_id: bytes32 -- This is pre-set; the user cannot change it puzzle_root: bytes32 -- This is pre-set; the user cannot change it withdrawal_timelock: uint64 -- For how long must the singleton remain unspent in order to initiate a withdrawal? payment_clawback_period: uint64 -- How much time do signers have to claw back a payment? rekey_clawback_period: uint64 -- How much time do signers have to claw back a rekey? slow_rekey_timelock: uint64 -- What is the penalty P that is applied to the singleton timelock when initiating a slow rekey? rekey_increments: uint64 -- What is the timelock increment for using fewer keys?","s":"Public Configuration","u":"/guides/custody-tool-description/","h":"#public-configuration","p":1825},{"i":1850,"t":"The necessary information to spend the prefarm is located in puzzle_root_construction.py. This information is considered private. However, if an attacker obtained this information, it would still be insufficient to spend the prefarm because valid signatures would be required. However, the Merkle tree would be considered sniffed, so a rekey would be required. This code contains the following variables: prefarm_info: PrefarmInfo -- The info from the public file pubkey_list: List[G1Element] -- What are the set of pubkeys? required_pubkeys: uint32 -- How many keys are required for payments and standard rekeys (m initially is 3 for the prefarm)? maximum_pubkeys: uint32 -- What is the maximum lock level (n is 5 for the prefarm)? minimum_pubkeys: uint32 -- What is the minimum number of keys required for a slow rekey (1 for the prefarm, but could be higher if so desired). next_root: Optional[bytes32] -- What will the root key be in the event of a rekey? filter_proofs: ProofType leaf_proofs: ProofType","s":"Private Configuration","u":"/guides/custody-tool-description/","h":"#private-configuration","p":1825},{"i":1852,"t":"Everything on the Chia blockchain is a coin. They are often referred to as smart coins because every coin has a Chialisp program associated with it. That program, known as a puzzle, decides how and when the coin can be spent, and what happens when it is. NFTs, CATs, and standard transactions are all defined using puzzles. Another example of something you can do with Chialisp is lock up funds until a certain amount of time has elapsed. Now that you have learned how to write basic Chialisp programs, you can apply that to more complex puzzles. There's a bit more involved in creating a puzzle and using it for a coin, but we'll get into that more later. In this lesson, we will be writing a puzzle that requires a simple password to unlock coins that use it. note If you are using PowerShell, make sure to install the PowerShell 7.3 preview version: winget install --id Microsoft.Powershell.Preview --source winget This version fixes nested quoting, which is required for many of the commands on this page. danger While this is great for learning the fundamentals, it is an insecure way to protect funds on a blockchain. We will explore the reason and better methods later on.","s":"Smart Coins","u":"/guides/crash-course/smart-coins/","h":"","p":1851},{"i":1854,"t":"Let's create a little program to have the user guess a password. We are going to build up to a more advanced password-protected coin, but let's start with the basics. We will hardcode the correct password to be hello. If the user provides hello as the solution, they got the correct password. Write the following in a file named password.clsp: password.clsp (mod (password) (if (= password \"hello\") \"Correct!\" \"Incorrect :(\" ) ) Run the following command to check the password against it: brun \"$(run password.clsp)\" \"(hello)\" Which should produce the following output: Correct! However, if you provide a different solution, you'll get a different result: brun \"$(run password.clsp)\" \"(goodbye)\" Which should produce the following output: Incorrect :( This is cool, but we want to avoid hardcoded values when possible. This introduces our next concept called currying. Currying allows us to write a generalized program that can be used for many different password options. This way, we're not stuck with just a single password of hello. Let's see how this works in the next section.","s":"Basic Example","u":"/guides/crash-course/smart-coins/","h":"#basic-example","p":1851},{"i":1856,"t":"Our goal is to allow more than just the hardcoded password of hello. In addition to this, we want to hide the password to the best of our ability with hashing (which we will explore in more detail later). Replace the contents of passwords.clsp with the following: password.clsp (mod (CORRECT_PASSWORD provided_password) (if (= CORRECT_PASSWORD provided_password) \"Correct!\" \"Incorrect :(\" ) ) tip Values that are expected to be curried in are often written in ALL_CAPS. While we explain currying here, you can also check out the Currying Guide to learn more about what currying is and how it works. Run the following command to curry in the password: cdv clsp curry password.clsp -a \"hello\" Which should produce the following result: (a (q 2 (i (= 2 5) (q 1 . \"Correct!\") (q 1 . \"Incorrect :(\")) 1) (c (q . \"hello\") 1)) Which we can now execute with a provided solution: brun '(a (q 2 (i (= 2 5) (q 1 . \"Correct!\") (q 1 . \"Incorrect :(\")) 1) (c (q . \"hello\") 1))' \"(hello)\" Now that we've introduced currying, we can create a different program using a different CORRECT_PASSWORD without modifying any of the source code. note Now, let's nest a command. Because currying outputs CLVM, we can nest it as input to the compiler to make the process of testing this out easier. An important thing to note here is that the nesting will not work properly if surrounded with single quotes, thus, we would use \"$()\" and not '$()'. This requires us to flip all nested quotes so that we have single quotes inside of the double quote (in this upcoming example take a look at 'goodbye'. ). You can try it with a new password: brun \"$(cdv clsp curry password.clsp -a 'goodbye')\" \"(goodbye)\" Which should output the following result: Correct! This time, try using the wrong password: brun \"$(cdv clsp curry password.clsp -a 'goodbye')\" \"(hello)\" Which should output the following result: Incorrect :( We're making progress, but there's still some issues with this program. The password is directly visible in the Chialisp bytecode. When we get to spending coins this information will be revealed to the world, allowing anyone to know the password. Let's see what we can do about this.","s":"Currying Example","u":"/guides/crash-course/smart-coins/","h":"#currying-example","p":1851},{"i":1858,"t":"Although this won't make the password more secure, it's important to understand hashing and how it can be used to keep values hidden until it is necessary to reveal them. A hash function will take an input and return a hash value. One of the most popular hashing algorithms is sha256 which is directly supported within Chialisp. A few important notes about hash functions: Given a value, calculating the hash is extremely easy, Given a hash, calculating the original input is extremely difficult or impossible, Passing the same value through a hashing function multiple times will always result in the same output. We can use these principles to our advantage by currying a hash of the expected password instead of the password value itself. This prevents us from revealing the expected password while still allowing us to check if the provided password is correct. This is done by hashing the provided password. You can think of this operation as: (if (= (sha256 password) PASSWORD_HASH) tip This is the exact process websites use to check if your login credentials are correct without storing your actual password in a database. Now replace the contents of password.clsp with this: password.clsp (mod (PASSWORD_HASH password) (if (= (sha256 password) PASSWORD_HASH) \"Correct!\" \"Incorrect :(\" ) )","s":"Hashing Example","u":"/guides/crash-course/smart-coins/","h":"#hashing-example","p":1851},{"i":1860,"t":"The first step to using this program is to find the hash of our desired password. note Pick a password that you would never use for anything real. It is for the purposes of this lesson only. For simplicity, you can use the password hello. If you don't, replace any instance of hello throughout this lesson with the one you chose. Run the following command to calculate the value for PASSWORD_HASH: cdv hash \"hello\" Which, with this password, outputs the following hash: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 Write this value down somewhere you can refer to later.","s":"Hash the Password","u":"/guides/crash-course/smart-coins/","h":"#hash-the-password","p":1851},{"i":1862,"t":"We now need to curry the value for PASSWORD_HASH into this program. This will produce a new program unique to this password. caution If you decided to use a different password, you will need to issue these commands with a different hash. Replace the hash in this command with the one you calculated. It is important to not forget the 0x prefix in front of the hash, since you are representing it as a Chialisp value. Run the following command: cdv clsp curry password.clsp -a \"0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824\" Which, with this hash, outputs the following compiled CLVM program: (a (q 2 (i (= (sha256 5) 2) (q 1 . \"Correct!\") (q 1 . \"Incorrect :(\")) 1) (c (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824) 1)) note Friendly reminder, the output here is specific to the hash you used. We now have the same functioning password check, but the expected password is not revealed until spent with the correct password. We can try it out with: brun '(a (q 2 (i (= (sha256 5) 2) (q 1 . \"Correct!\") (q 1 . \"Incorrect :(\")) 1) (c (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824) 1))' \"(hello)\" warning This is not a suitable security check for anything more than good fun! While great as an exercise and a good building block for what is to come, there are some serious problems with this approach. When we create our coin in the next section, we will be submitting our code to the blockchain for the world to see. And to spend this coin, you must provide a solution. The provided solution is also visible, so when we provide a solution, we are revealing our password. You may get lucky and have your coin go through as you'd expect (assuming no tampering from a full node who sees your solution), but you will now never be able to use the same password again safely. And any other coins using this hash are now also tainted. Once the association is made between an input and a hash value, all security is lost. This is exactly how hash lookup tables work. They are a giant record of common inputs and their associated sha256 hashes. The solution to this problem is to instead use signatures, which we will get to in the future.","s":"Curry the Hash","u":"/guides/crash-course/smart-coins/","h":"#curry-the-hash","p":1851},{"i":1864,"t":"While we know the use of hashes is not perfect, we will still use them to get some practice creating coins. This will allow us to see the security problems as well. This is a slightly more complicated Chialisp program than what we've explored before. Write the following in password.clsp: password.clsp (mod (PASSWORD_HASH password conditions) (if (= (sha256 password) PASSWORD_HASH) conditions (x) ) ) The key differences are the introduction of conditions in the parameter list and (x) at the bottom of the code. Let's explain both of these. First off, the (x) operator raises an error. If the password is invalid, the if evaluates to false and the program terminates (the coin remains unspent). Conditions is a list that will be provided by the spender to control what happens with the coin. Instead of only being able to output a value like Correct!, the user can customize the functionality by providing specific requests in their provided solution. We'll see this in action and learn how to write the conditions later. note The blockchain doesn't understand anything other than a list of conditions as an output. Anything else will be ignored and cause the spend to be thrown out. Everything up to this point has just been a readable example that can be run on the CLI.","s":"Final Puzzle","u":"/guides/crash-course/smart-coins/","h":"#final-puzzle","p":1851},{"i":1866,"t":"We need to curry the value for PASSWORD_HASH into the new password puzzle. This will produce a new puzzle unique to this password. caution If you decided to use a different password, you will need to issue these commands with a different hash. Replace the hash in this command with the one you calculated. It is important to not forget the 0x prefix in front of the hash, since you are representing it as a Chialisp value. Run the following command: cdv clsp curry password.clsp -a \"0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824\" warning Remember the 0x before the hash. Which, with this hash, outputs the following compiled CLVM program: (a (q 2 (i (= (sha256 5) 2) (q . 11) (q 8)) 1) (c (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824) 1)) note Friendly reminder, the output here is specific to the hash you used.","s":"Curry the Hash","u":"/guides/crash-course/smart-coins/","h":"#curry-the-hash-1","p":1851},{"i":1868,"t":"We need to calculate the puzzle hash before we can create the coin. This is because a coin id consists of the following things hashed together: The id of its parent (parent_coin_id) The hash of its puzzle (puzzle_hash) The amount of mojos locked with it (amount) In other words, you can calculate the coin id in Chialisp like this: (sha256 parent_coin_id puzzle_hash amount) Paste the compiled CLVM into this command to calculate the hash: opc -H \"\" note If this command outputs two values, copy the first one. Write this value down somewhere you can refer to later.","s":"Puzzle Hash","u":"/guides/crash-course/smart-coins/","h":"#puzzle-hash","p":1851},{"i":1870,"t":"The puzzle reveal is just a serialized form of the puzzle, written in hex. It is what you must reveal on-chain when spending a coin. Paste the compiled CLVM into this command to calculate the puzzle: opc \"\" Write this value down somewhere you can refer to later.","s":"Puzzle Reveal","u":"/guides/crash-course/smart-coins/","h":"#puzzle-reveal","p":1851},{"i":1872,"t":"Now that you have the puzzle hash and puzzle reveal, you can easily create the coin using the Chia wallet. tip A wallet address is just an encoded form of a puzzle hash. You can calculate the address used for your password puzzle with this command: cdv encode -p txch \"\" Which should produce an output similar to this: txch1sazy7z6gj2wq7yw4ztj7p3meffcun23qu8psx92vekngulqurfzsn9uyqv note Remember that this address will change based on which password you used. Next, you can either create a coin with that address by using the Chia wallet GUI or on the command-line. If you choose to do it via the command-line, run the following command with the address you just calculated: chia wallet send --amount 0.01 --fee 0.00005 --address \"txch1sazy7z6gj2wq7yw4ztj7p3meffcun23qu8psx92vekngulqurfzsn9uyqv\"","s":"Creating the Coin","u":"/guides/crash-course/smart-coins/","h":"#creating-the-coin","p":1851},{"i":1874,"t":"We will now spend the coin to release the value back to our wallet (minus fees). note There are many conditions that can enable advanced functionality, but one of the most important ones is CREATE_COIN. It is identified by the opcode 51 and is used to create a new coin if the spend is successful. Each condition is defined as a list (beginning with the opcode, followed by each parameter). In the case of CREATE_COIN, we will give it a puzzle_hash (an alternative, unencoded format for an address) and an amount. We will be using the CREATE_COIN condition to create a new coin in our wallet with the value locked in the password coin. Run the following command to get your address: chia wallet get_address Which should produce an output similar to this: txch1u6rk0w3tgv0t3m7ehrwsmdng6hqvqrr6qn5r767x2pxq7f3xlhmq2gva00 Now that you have one of your addresses, you can convert it to a puzzle hash with this command: cdv decode \"\" Which should produce an output similar to this: e68767ba2b431eb8efd9b8dd0db668d5c0c00c7a04e83f6bc6504c0f2626fdf6 important For the CREATE_COIN condition, we will use this puzzle hash prefixed with 0x. Use the puzzle hash to build the condition, which will end up looking something like this: (51 0xe68767ba2b431eb8efd9b8dd0db668d5c0c00c7a04e83f6bc6504c0f2626fdf6 9950000000) caution It is especially important that you use your wallet address here, not the example. The solution is a list of arguments, consisting of a list of conditions containing the one above: opc \"('hello' ((51 0xe68767ba2b431eb8efd9b8dd0db668d5c0c00c7a04e83f6bc6504c0f2626fdf6 9950000000)))\" warning Remember the 0x before your puzzle hash. Which should produce an output similar to this: ffffff33ffa0e68767ba2b431eb8efd9b8dd0db668d5c0c00c7a04e83f6bc6504c0f2626fdf6ff85025110f380808080 Run the following command to get the coin record by the puzzle hash you used earlier: cdv rpc coinrecords --by puzzlehash \"\" This should produce an output similar to this: [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"0x88dae7d74a7b5edc8b4d46124e221a00d7b9f59042cd98be76472b663b2ce813\", \"puzzle_hash\": \"0x87444f0b48929c0f11d512e5e0c7794a71c9aa20e1c303154ccda68e7c1c1a45\" }, \"coinbase\": false, \"confirmed_block_index\": 1681937, \"spent\": false, \"spent_block_index\": 0, \"timestamp\": 1666117720 } ] note If multiple coins exist with this same puzzle_hash, you will see a list of coins. Most likely you can grab the one with the highest block index (the most recent). Now, using that as a reference, write the following in a file named spendbundle.json: { \"coin_spends\": [ { \"coin\": ..., \"puzzle_reveal\": \"\", \"solution\": \"\" } ], \"aggregated_signature\": \"0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\" } Example Spend Bundle { \"coin_spends\": [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"0x138d7e723b9f06ff3f4af8fba066cebb7ecb5b6c7f3353ae1b6a89309314c42d\", \"puzzle_hash\": \"0x87444f0b48929c0f11d512e5e0c7794a71c9aa20e1c303154ccda68e7c1c1a45\" }, \"puzzle_reveal\": \"ff02ffff01ff02ffff03ffff09ffff0bff0580ff0280ffff010bffff01ff088080ff0180ffff04ffff01a02cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824ff018080\", \"solution\": \"ff8568656c6c6fffffff33ffa0697f2559a54b0963c8fbd33f34888f2cd94eafa80eb880e2a3a01021fc88fbfdff85025110f380808080\" } ], \"aggregated_signature\": \"0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\" } info The puzzle reveal will be confirmed against the puzzle hash of the coin. If you used the same exact puzzle you will have the same value here. The solution will vary depending on what puzzle hash you used for 51 CREATE_COIN. The aggregated_signature requires no custom value, but you will be required to use the default value here. Copy and Paste this. We will talk about this more note For the coin field, copy and paste the coin found using the coinrecords command. This is the coin that you created before, and are now spending. Finally, submit the transaction to the mempool by running this final command: cdv rpc pushtx spendbundle.json If everything was successful, this transaction should be successful, and you should see your wallet balance increase after some time passes. It won't be identical to when you started because of the total of 0.0001 network fees added throughout the process.","s":"Spending the Coin","u":"/guides/crash-course/smart-coins/","h":"#spending-the-coin","p":1851},{"i":1876,"t":"A few mistakes you may run in to is forgetting the 0x for both the curried in password and the receive puzzle hash in the provided solution. These both require 0x! You will also want to have 0x for the coin object. The safest way to make sure your coin record is correct is to copy it exactly from the RPC, just make sure you grab the right coin (remember, multiple coins can have the same puzzle hash value).","s":"Common Mistakes","u":"/guides/crash-course/smart-coins/","h":"#common-mistakes","p":1851},{"i":1878,"t":"Using a password to lock coins is good to teach various concepts, but it is insecure in practice. There are a couple of reasons for this: The password is publicly revealed to all nodes when the coin is spent The transaction can be intercepted and modified freely by malicious farmers Let's explore these in more detail.","s":"Security Concerns","u":"/guides/crash-course/smart-coins/","h":"#security-concerns","p":1851},{"i":1880,"t":"When you spend a coin, you reveal the its puzzle and the solution you are using to spend it. The password is contained in plain text in the solution, for anyone with a node to read. This means that any use of the same password is compromised, including any other coins locked with the same puzzle. If this were the only problem, it wouldn't be that big of a deal, since you could simply use the password only once, make it very secure to prevent brute force attacks, and not use it anywhere external to the blockchain. However, this is not the only problem with using a password rather than traditional methods.","s":"Password is Revealed","u":"/guides/crash-course/smart-coins/","h":"#password-is-revealed","p":1851},{"i":1882,"t":"When you spend a coin, you create a transaction which is then added to the mempool. Everyone's transactions get collected together. Then, whichever farmer happens to farm the block has full control on which transactions to include in that block (typically based on the fees if there are more transactions than available block space). However, a farmer which happens to also be a malicious attacker could also change anything about the transaction, not only whether or not it's included. The way to prevent this is to make the spend not valid if anything is tampered with (mainly by signing the solution and requiring the signature in the puzzle). But because this puzzle has no way to prevent tampering in this way, it would be possible to replace the puzzle hash in the CREATE_COIN condition. In other words, the attacker could steal your funds by sending it to their wallet rather than yours.So even if you use the most secure password possible, it is simply not sufficient.","s":"Spend Interception","u":"/guides/crash-course/smart-coins/","h":"#spend-interception","p":1851},{"i":1884,"t":"This tutorial teaches you how to lock a coin with a custom-made puzzle.","s":"Custom Puzzle Lock","u":"/guides/custom-puzzle-lock-tutorial/","h":"","p":1883},{"i":1886,"t":"Create whatever puzzle you want for your coin. We'll use a password-locked coin as an example for this tutorial. (mod (password new_puzhash amount) (defconstant CREATE_COIN 51) (if (= (sha256 password) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (list (list CREATE_COIN new_puzhash amount)) (x) ) ) 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 is the sha256 hash of the word hello. Example valid solution: (hello 0x5f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675 2). If password is correct, the puzzle will create a new coin with 2 mojos and lock it using a new puzzle hash 0x5f5767744f91c1c326d927a63d9b34fa7035c10e3eb838c44e3afe127c1b7675. Any remaining change goes to a farmer as a fee.","s":"Create a puzzle","u":"/guides/custom-puzzle-lock-tutorial/","h":"#create-a-puzzle","p":1883},{"i":1888,"t":"There are multiple ways how you can get compiled version of your custom puzzle.","s":"Get compiled version of the custom puzzle","u":"/guides/custom-puzzle-lock-tutorial/","h":"#get-compiled-version-of-the-custom-puzzle","p":1883},{"i":1890,"t":"You can compile your custom puzzle from the terminal using the clvm_tools repository (included in the official Chia repository). All you need to do is to use the run command with your puzzle provided as an argument. run '(mod (password new_puzhash amount) (defconstant CREATE_COIN 51) (if (= (sha256 password) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (list (list CREATE_COIN new_puzhash amount)) (x) ) )' results in (a (q 2 (i (= (sha256 5) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (q 4 (c 2 (c 11 (c 23 ()))) ()) (q 8)) 1) (c (q . 51) 1)).","s":"Using clvm_tools (official)","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-clvm_tools-official","p":1883},{"i":1892,"t":"Paste your custom puzzle into the text area and hit Compile. The compiled version will appear in the Run Output section.","s":"Using Chialisp web tool (unofficial)","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-chialisp-web-tool-unofficial","p":1883},{"i":1895,"t":"You can get the hash of your Chialisp puzzle with the opc -H command included in the official clvm_tools repository. opc -H '(a (q 2 (i (= (sha256 5) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (q 4 (c 2 (c 11 (c 23 ()))) ()) (q 8)) 1) (c (q . 51) 1))' The response of this command will be a puzzle hash on the first line and a serialized version of your puzzle on the second line. Example response: 4843c869bba5f65aa1e806cd372dae5668ca3b69640d067e86837ca96b324e71 ff02ffff01ff02ffff03ffff09ffff0bff0580ffff01a02cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b982480ffff01ff04ffff04ff02ffff04ff0bffff04ff17ff80808080ff8080ffff01ff088080ff0180ffff04ffff0133ff018080 As you can see from the first line of this response, puzzle hash for our custom puzzle is 0x4843c869bba5f65aa1e806cd372dae5668ca3b69640d067e86837ca96b324e71","s":"Using clvm_tools","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-clvm_tools","p":1883},{"i":1897,"t":"You can also use Chialisp itself to get the hash of the Chialisp puzzle. The puzzle to get a puzzle hash is following: (mod (puzzle) (defconstant TREE 1) (defun sha256tree1 (TREE) (if (l TREE) (sha256 2 (sha256tree1 (f TREE)) (sha256tree1 (r TREE))) (sha256 1 TREE) ) ) (sha256tree1 puzzle) ) A solution to this puzzle then needs to contain the compiled puzzle we want to hash in the first position (wrap the compiled puzzle with parentheses and provide it as a solution). Example solution for the password-locked coin: ((a (q 2 (i (= (sha256 5) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (q 4 (c 2 (c 11 (c 23 ()))) ()) (q 8)) 1) (c (q . 51) 1))) The resulting hash for this example puzzle is again 0x4843c869bba5f65aa1e806cd372dae5668ca3b69640d067e86837ca96b324e71.","s":"Using Chialisp","u":"/guides/custom-puzzle-lock-tutorial/","h":"#using-chialisp","p":1883},{"i":1899,"t":"You can convert a puzzle hash to a receive address and vice-versa. An address is just an encoded puzzle hash. And since a puzzle hash matches specific puzzle, it also means that a receive address matches a specific puzzle. You can use an online tool from spacescan.io for converting between puzzle hash to receive address. The puzzle hash is encoded to bech32m format with xch prefix to form a receive address. The receive address for the puzzle hash 0x4843c869bba5f65aa1e806cd372dae5668ca3b69640d067e86837ca96b324e71 is xch1fppus6dm5hm94g0gqmxnwtdw2e5v5wmfvsxsvl5xsd72j6ejfecsdnkf2e.","s":"Convert puzzle hash to a receive address","u":"/guides/custom-puzzle-lock-tutorial/","h":"#convert-puzzle-hash-to-a-receive-address","p":1883},{"i":1901,"t":"Use the Chia GUI or CLI to send a transaction as you would typically do with the amount you want. As a receive address, set the address from the previous step (password-locked coin example: xch1fppus6dm5hm94g0gqmxnwtdw2e5v5wmfvsxsvl5xsd72j6ejfecsdnkf2e). That will lock your coin with a new puzzle. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Send Chia to the receive address","u":"/guides/custom-puzzle-lock-tutorial/","h":"#send-chia-to-the-receive-address","p":1883},{"i":1903,"t":"So far we've been working with the Chia blockchain directly through the terminal using Chia Dev Tools the Chia command line interface. This is handy but sometimes you may want to write code around Chia to work with the Chia blockchain. You may hear this referred to as driver code.","s":"Chialisp and TypeScript","u":"/guides/crash-course/chialisp-and-typescript/","h":"","p":1902},{"i":1905,"t":"You can interact with the Chia blockchain through the RPC, which is documented with sections on the full node, NFTs and more. Because the RPC is accessible through web requests to localhost, you can build software using the Chia blockchain node. You can create all this code yourself or you can used wrappers that others have created.","s":"RPC Explained","u":"/guides/crash-course/chialisp-and-typescript/","h":"#rpc-explained","p":1902},{"i":1907,"t":"You can do RPC calls with pretty much any language, but to create larger applications you will need packages for BLS signatures and CLVM. Currently, this is possible in JavaScript/TypeScript, Python, C++, Rust, and Dart.","s":"Language Choice","u":"/guides/crash-course/chialisp-and-typescript/","h":"#language-choice","p":1902},{"i":1909,"t":"This guide is meant to be an example that will give you some basic experience. We will be using Node.js with TypeScript to create a signature enforced coin. We'll use multiple TypeScript libraries for this project, which are open source if you want to see the details on how they work. BLS Signatures CLVM RPCs Wallet Helper DotEnv BIP39","s":"Quick Start","u":"/guides/crash-course/chialisp-and-typescript/","h":"#quick-start","p":1902},{"i":1911,"t":"You can interact with the Chia blockchain through the RPC, which is documented with sections on the full node, NFTs and more. Because the RPC is accessible through web requests to localhost, you can build software using the Chia blockchain node. You can create all this code yourself or you can used wrappers that others have created. The full node RPC allows us to fetch coin records, push transactions to the mempool, and many other important things when building applications on Chia.","s":"Full Node RPC","u":"/guides/crash-course/chialisp-and-typescript/","h":"#full-node-rpc","p":1902},{"i":1913,"t":"We've been using chia keys to get our keys and sign the messages needed to spend coins on the Chia blockchain so far. We will now use the actual library used to implement this command directly, since we will be calculating it from code. Here is some terminology that will be helpful in understanding the related code. Mnemonic - The 12 or 24 word phrase found with chia keys show --show-mnemonic-seed. Seed - An array of bytes used as entropy, derived from the mnemonic. Private Key - A private key (or secret key) is used for signing messages and should not be shared publicly. Public Key - A public key is used for verifying the authenticity of signatures and can be shared publicly. Signature - A value that corresponds to a given message proving that it has been signed by a specific key. Aggregated Signature - One or more signatures aggregated together. This can be used to verify multiple signatures simultaneously. Jacobian Point - A point on the BLS 12-381 elliptic curve used to represent a public key or signature. G1Element - A public key represented as a Jacobian point. G2Element - A signature represented as a Jacobian point. AugScemeMPL - The signing scheme used by the Chia blockchain for aggregated signatures.","s":"BLS Signatures","u":"/guides/crash-course/chialisp-and-typescript/","h":"#bls-signatures","p":1902},{"i":1915,"t":"You will first need npm, which you can get by downloading Node.js. Once you have that installed, enter this in the terminal inside of a folder for your project: npm init Go through the prompts, making sure to change the entry point as described below. This will initialize a package.json where you can define your dependencies and scripts for the project. note Set the entry point to dist/index.js rather than index.js since we will be compiling the code. If you forget to do this, you can set it later in package.json in the main field. We will be using TypeScript, so issue this command: npm install --save-dev typescript ts-node Now, add a tsconfig.json file with this content: { \"compilerOptions\": { \"moduleResolution\": \"node\", \"target\": \"ESNext\", \"downlevelIteration\": true, \"esModuleInterop\": true, \"inlineSourceMap\": true, \"declaration\": true, \"noImplicitAny\": true, \"noImplicitThis\": true, \"noImplicitOverride\": true, \"strict\": true }, \"include\": [\"src\"] } We will put all of our code inside of a src folder, so add that folder now with an index.ts file: src/index.ts console.log(\"Hello, Chia!\"); To run this, we can add a start script of ts-node src/index.ts to our package.json. Our file will look something like this: package.json { \"name\": \"tschia\", \"version\": \"1.0.0\", \"description\": \"\", \"main\": \"dist/index.js\", \"scripts\": { \"start\": \"ts-node src/index.ts\", \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"author\": \"\", \"license\": \"ISC\", \"dependencies\": { \"ts-node\": \"^10.9.1\", \"typescript\": \"^4.9.3\" } } Now, you should be able to run the project from the terminal: npm run start","s":"Initializing a Project","u":"/guides/crash-course/chialisp-and-typescript/","h":"#initializing-a-project","p":1902},{"i":1917,"t":"For this project we are going to need add a few more dependencies. You can install these all at once with: npm install chia-bls clvm-lib chia-rpc chia-wallet-lib bip39 dotenv","s":"Other Dependencies","u":"/guides/crash-course/chialisp-and-typescript/","h":"#other-dependencies","p":1902},{"i":1919,"t":"As this code uses a custom wallet implementation instead of the Chia wallet RPC, we will need to keep track of the mnemonic ourselves. Here is an example mnemonic phrase: const mnemonic = \"nasty sunny kingdom popular turn core rifle river twenty edit sort pill rice claw hollow please wash inform cannon empower emotion caught salt close\";","s":"Mnemonic Phrase","u":"/guides/crash-course/chialisp-and-typescript/","h":"#mnemonic-phrase","p":1902},{"i":1921,"t":"warning This wallet is used as an example. You'll never want to share your wallet mnemonic with anyone! You can securely save the mnemonic phrase in a .env file and load it in your program: .env MNEMONIC=nasty sunny kingdom popular turn core rifle river twenty edit sort pill rice claw hollow please wash inform cannon empower emotion caught salt close This value can be retrieved with: chia keys show --show-mnemonic-seed This is how you load the file for later: index.ts import dotenv from \"dotenv\"; dotenv.config(); If you use Git, you'll want to make sure the .env file is added to the .gitignore so this is not checked in to a shared repository.","s":"Dot Env","u":"/guides/crash-course/chialisp-and-typescript/","h":"#dot-env","p":1902},{"i":1923,"t":"To not have to mention imports throughout the doc, Our imports will ultimately look like: import { PrivateKey, fromHex, AugSchemeMPL, concatBytes } from \"chia-bls\"; import { mnemonicToSeedSync } from \"bip39\"; import dotenv from \"dotenv\"; import { Program } from \"clvm-lib\"; import fs from \"fs\"; import path from \"path\"; import { FullNode, formatHex, SpendBundle, toCoinId } from \"chia-rpc\"; import { KeyStore, StandardWallet } from \"chia-wallet-lib\"; import os from \"os\";","s":"Imports","u":"/guides/crash-course/chialisp-and-typescript/","h":"#imports","p":1902},{"i":1925,"t":"Now that we have the mnemonic phrase, we will create a Chialisp file named signature.clsp to be used for this example: signature.clsp (mod (PUBLIC_KEY conditions) (include condition_codes.clib) (include sha256tree.clib) (c (list AGG_SIG_ME PUBLIC_KEY (sha256tree conditions)) conditions ) ) This is a refresher of the content on signatures. This will require a signature from the spender with a message that includes the tree hash of the condition to be used. Here is how we can read chialisp. First, we get some dependencies and build the chialisp code: cdv clsp retrieve condition_codes sha256tree cdv clsp build signature.clsp This will create a signature.clsp.hex file that can be read in our code. const program = Program.deserializeHex( fs.readFileSync(path.join(__dirname, \"..\", \"signature.clsp.hex\"), \"utf-8\"), ); console.log(program.toString()); Run this command: npm run start Which should produce the following result: (a (q 4 (c 4 (c 5 (c (a 6 (c 2 (c 11 ()))) ()))) 11) (c (q 50 2 (i (l 5) (q 11 (q . 2) (a 6 (c 2 (c 9 ()))) (a 6 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) To be sure, we can check this with Chia Dev Tools: run signature.clsp -i include This is not complete as this is the puzzle with no curried values. We will want to curry the public key expected so not anyone can sign for this coin to be spent.","s":"Loading Chialisp Files","u":"/guides/crash-course/chialisp-and-typescript/","h":"#loading-chialisp-files","p":1902},{"i":1927,"t":"Now that we have the program loaded, we can use the mnemonic we loaded to derive the keypair and curry the public key into the signature puzzle. const mnemonic = process.env.MNEMONIC!; const privateKey = PrivateKey.fromSeed(mnemonicToSeedSync(mnemonic)); const publicKey = privateKey.getG1(); const curried = program.curry([Program.fromJacobianPoint(publicKey)]); console.log(curried.toString()); tip privateKey.getG1() is the equivalent of getting your master public key with chia keys show. Run this command: npm run start To get the final curried puzzle: (a (q 2 (q 4 (c 4 (c 5 (c (a 6 (c 2 (c 11 ()))) ()))) 11) (c (q 50 2 (i (l 5) (q 11 (q . 2) (a 6 (c 2 (c 9 ()))) (a 6 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xa9d31f69a4337bd10aa8179cbede90af1cdfdfbd804c8f1bc7b69ced9f769ee4f9938a40dbed4242baafabf641adea2b) 1))","s":"Currying the Key","u":"/guides/crash-course/chialisp-and-typescript/","h":"#currying-the-key","p":1902},{"i":1929,"t":"We will need the network's genesis challenge, which we can add to .env on a new line: .env MNEMONIC=... GENESIS=d25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15 You can retrieve your network's Genesis challenge in the terminal with: chia show -s Testnet11 has the genesis 37a90eb5185a9c4439a91ddc98bbadce7b4feba060d50116a067de66bf236615. You can see this in ~/.chia/mainnet/config/config.yaml as well with: less ~/.chia/mainnet/config/config.yaml Now you can start the full node RPC client and wallet like this: const node = new FullNode(os.homedir() + \"/.chia/mainnet\"); const keyStore = new KeyStore(privateKey); const wallet = new StandardWallet(node, keyStore); const genesis = fromHex(process.env.GENESIS!);","s":"Setting up the Wallet","u":"/guides/crash-course/chialisp-and-typescript/","h":"#setting-up-the-wallet","p":1902},{"i":1931,"t":"For creating a coin we will use async and await, so we define an async function create (call it whatever you want). async function create() { await wallet.sync({ unusedAddressCount: 10 }); const spend = wallet.createSpend(); spend.coin_spends = await wallet.send(curried.hash(), 0.01e12, 0.00005e12); wallet.signSpend(spend, genesis); console.log(await node.pushTx(spend)); } create(); note The wallet.sync method generates new child keys and corresponding addresses until there are a certain number of unused addresses available. This ensures that we have loaded all unspent coins that are available to us, which will be needed to create spends later on. This is what the Chia wallet does on startup, but since we are loading a wallet in this code, we need it to be synced every time we start the program. We first create a new spend to create a coin with the puzzle hash of the curried in signature puzzle we created earlier. The amount is 0.01 XCH and the fee is 0.00005 XCH. Then, we can push the spend bundle into the mempool and the transaction should be successful. Run this command: npm run start Which should produce the following result: { status: 'SUCCESS', success: true } note Each time you run this code you will be spending more Chia. You should be using testnet and sending small amounts as you learn. When expecting a value in mojos, you can convert from Chia to mojos with e12. So, 0.01e12 Mojo is the same as 0.01 XCH. This is because there are a trillion mojos in an XCH. This code is roughly equivalent to: cdv encode --prefix txch 0x9de4380ab079ec73720d75916990be23de3bfaa727ff52d6bc09d93d66be79da chia wallet send --amount 0.01 --fee 0.00005 --address txch14gxuvfmw2xdxqnws5agt3ma483wktd2lrzwvpj3f6jvdgkmf5gtq8g3aw3","s":"Creating the Coin","u":"/guides/crash-course/chialisp-and-typescript/","h":"#creating-the-coin","p":1902},{"i":1933,"t":"We will need to give adequate time for the coin go successfully go to the mempool and then for it to be included by a full node. Because of this, we will issue the creation code separate from the retrieval code. async function spend() { await wallet.sync({ unusedAddressCount: 10 }); const coinRecords = await node.getCoinRecordsByPuzzleHash(curried.hashHex()); if (!coinRecords.success) throw new Error(coinRecords.error); const record = coinRecords.coin_records[0]; console.log(record); } spend(); This will fetch the first coin record that matches our curried puzzle hash with the full node RPC. We will use this in the next step to spend the coin. Run this command to ensure that the coin record is there: npm run start","s":"Retrieve the Coin Record","u":"/guides/crash-course/chialisp-and-typescript/","h":"#retrieve-the-coin-record","p":1902},{"i":1935,"t":"The solution for this puzzle consists of a list of conditions. To write Chialisp within JavaScript we can use the Program.fromSource() method. We will use a 51 (CREATE_COIN) condition delivering the value to our wallet puzzle hash. // Calculate an unused address we can send the value to. const [targetIndex] = await wallet.findUnusedIndices(1, []); const target = wallet.puzzleCache[targetIndex]; // A fee of 0.00005 XCH. const fee = 0.00005e12; // Create a coin on the target, leaving a fee to be sent to the farmer. const conditions = Program.fromSource( `((51 ${formatHex(target.hashHex())} ${record.coin.amount - fee}))`, ); // Create a solution from the conditions. const solution = Program.fromSource(`(${conditions})`).serializeHex(); note The Program.fromSource method takes a string and converts it into a CLVM object, which allows it to be hashed or serialized as such. The reason we call it again on the conditions to make the solution is that we need to wrap it in a set of parenthesis to form a list. Remember that the solution is a list of arguments, of which the first one is the list of conditions.","s":"Crafting a Solution","u":"/guides/crash-course/chialisp-and-typescript/","h":"#crafting-a-solution","p":1902},{"i":1937,"t":"Reminder that the signature required for AGG_SIG_ME is the message + coin ID + Genesis challenge. const signature = AugSchemeMPL.sign( privateKey, concatBytes(conditions.hash(), toCoinId(record.coin), genesis), ).toHex();","s":"Calculate the Signature","u":"/guides/crash-course/chialisp-and-typescript/","h":"#calculate-the-signature","p":1902},{"i":1939,"t":"Finally, we can put everything together in a spend bundle and push the transaction to the mempool. const spendBundle: SpendBundle = { coin_spends: [ { coin: record.coin, puzzle_reveal: curried.serializeHex(), solution: solution, }, ], aggregated_signature: signature, }; console.log(await node.pushTx(spendBundle)); Run this command: npm run start Which should produce the following result: { status: 'SUCCESS', success: true } Complete Code import { PrivateKey, fromHex, AugSchemeMPL, concatBytes } from \"chia-bls\"; import { mnemonicToSeedSync } from \"bip39\"; import dotenv from \"dotenv\"; import { Program } from \"clvm-lib\"; import fs from \"fs\"; import path from \"path\"; import { FullNode, formatHex, SpendBundle, toCoinId } from \"chia-rpc\"; import { KeyStore, StandardWallet } from \"chia-wallet-lib\"; import os from \"os\"; dotenv.config(); const program = Program.deserializeHex( fs.readFileSync(path.join(__dirname, \"..\", \"signature.clsp.hex\"), \"utf-8\"), ); console.log(program.toString()); const mnemonic = process.env.MNEMONIC!; const privateKey = PrivateKey.fromSeed(mnemonicToSeedSync(mnemonic)); const publicKey = privateKey.getG1(); const curried = program.curry([Program.fromJacobianPoint(publicKey)]); console.log(curried.toString()); const node = new FullNode(os.homedir() + \"/.chia/mainnet\"); const keyStore = new KeyStore(privateKey); const wallet = new StandardWallet(node, keyStore); const genesis = fromHex(process.env.GENESIS!); async function create() { await wallet.sync({ unusedAddressCount: 10 }); const spend = wallet.createSpend(); spend.coin_spends = await wallet.send(curried.hash(), 0.01e12, 0.00005e12); wallet.signSpend(spend, genesis); console.log(await node.pushTx(spend)); } async function spend() { await wallet.sync({ unusedAddressCount: 10 }); const coinRecords = await node.getCoinRecordsByPuzzleHash(curried.hashHex()); if (!coinRecords.success) throw new Error(coinRecords.error); const record = coinRecords.coin_records[0]; console.log(record); const fee = 0.00005e12; const [targetIndex] = await wallet.findUnusedIndices(1, []); const target = wallet.puzzleCache[targetIndex]; const conditions = Program.fromSource( `((51 ${formatHex(target.hashHex())} ${record.coin.amount - fee}))`, ); const solution = Program.fromSource(`(${conditions})`).serializeHex(); const signature = AugSchemeMPL.sign( privateKey, concatBytes(conditions.hash(), toCoinId(record.coin), genesis), ).toHex(); const spendBundle: SpendBundle = { coin_spends: [ { coin: record.coin, puzzle_reveal: curried.serializeHex(), solution: solution, }, ], aggregated_signature: signature, }; console.log(await node.pushTx(spendBundle)); } spend();","s":"Spend the Coin","u":"/guides/crash-course/chialisp-and-typescript/","h":"#spend-the-coin","p":1902},{"i":1941,"t":"You have now put together what you have learned to build an actual program that can create and spend coins on the Chia blockchain using the puzzle written in an earlier lesson. This set of tools, in any language that supports them, is a powerful way to build decentralized applications. Here are a few examples of how you can expand on this: Modify the puzzle and code to require two sets of signatures (either two mnemonics or by using two child keys from the key store). Modify the puzzle to add an additional condition requiring the spend to happen at least 10 blocks after the coin is created. Modify the puzzle and code to require at least 2 of 3 signatures from the corresponding keys curried in (referred to as an M of N).","s":"What Next","u":"/guides/crash-course/chialisp-and-typescript/","h":"#what-next","p":1902},{"i":1944,"t":"Chia DataLayer™ is a decentralized database that enables the redundant storage of off-chain data, auditable on the Chia blockchain. DataLayer uses an open and permissionless publish/subscribe model, which makes it possible for anyone to view and audit the data. Many users -- especially those in the enterprise space -- would like to keep their data private. DataLayer Permissions give owners of data stores a method to gate participation, thus keeping their data private. This is accomplished by using customizable plugins. This guide will show you how to get started with DataLayer Permissions. Additional resources include: DataLayer user guide -- You should already be familiar with using DataLayer before working with permissions. This guide will help you to get started S3 plugin -- This is the reference plugin for Amazon S3 integration. It is discussed later in this guide Source API calls -- In case you want to dig into the source code CLI documentation for DataLayer RPC documentation for DataLayer","s":"Intro","u":"/guides/datalayer-permissions/","h":"#intro","p":1942},{"i":1946,"t":"Support for permissions were added to DataLayer in version 1.8.0 of the Chia reference wallet. The permissioning system requires uploader (publisher) and downloader (subscriber) plugins, which function as follows: When you push any changes to your DataLayer singleton, the uploader plugin is called When one of your subscribed singletons makes any on-chain changes, the downloader plugin is called The uploader and downloader plugins take the form of a service that exposes a specific RESTful API that DataLayer will call. This service can be configured in multiple different ways: Uploader only Downloader only Both uploader and downloader Multiple instances of the same service are also possible. The service can be configured to require credentials, thereby gating access to data.","s":"About DataLayer permissions","u":"/guides/datalayer-permissions/","h":"#about-datalayer-permissions","p":1942},{"i":1948,"t":"To configure Chia to use DataLayer permissions, you need to add a list of URLs to config.yaml which allows access to the uploaders and downloaders. The settings to configure are new as of 1.8.0. To add them, you have two options: Start from scratch Delete or rename ~/.chia/mainnet/config/config.yaml Run chia init; a new copy of config.yaml that contains the new settings will be generated Add the settings manually Edit ~/.chia/mainnet/config/config.yaml Under the data_layer: settings, add the following new lines: downloaders: [] uploaders: [] At this point, you can edit config.yaml and add the URL path(s) to either or both of the plugins. Be sure to remove the square brackets [] if you add any URLs. For example, a snippet of config.yaml with the uploaders and downloaders configured might look like this: data_layer: client_timeout: 15 database_path: data_layer/db/data_layer_CHALLENGE.sqlite downloaders: - http://localhost:9456 - http://localhost:3145 --- uploaders: - http://localhost:9456 - http://localhost:9384 Finally, restart Chia, ensuring that DataLayer and the propagation server are both configured to run. This is the only configuration that is required in Chia itself. The rest of the configuration is left up to the plugin service.","s":"Chia configuration","u":"/guides/datalayer-permissions/","h":"#chia-configuration","p":1942},{"i":1950,"t":"The expected REST API for the plugins is as follows - all requests are POST requests. note TLS connections are not yet supported. They may work as long as the proper root certificates are in the Chia certificate bundle, but this is untested.","s":"REST API","u":"/guides/datalayer-permissions/","h":"#rest-api","p":1942},{"i":1952,"t":"Functionality: Configure a store for uploading Request Parameters: Parameter Type Required Description store_id STRING True The store ID, in hex format Response: {\"handle_upload\": [true|false]}","s":"handle_upload","u":"/guides/datalayer-permissions/","h":"#handle_upload","p":1942},{"i":1954,"t":"Functionality: Configure a store for downloading from a mirror Request Parameters: Parameter Type Required Description store_id STRING True The store ID, in hex format url STRING True The URL of the mirror to download from Response: Response: {\"handle_download\": [true|false]} note Technically the mirror URL is just a string. It's not required to be formatted as a URI, but it's expected it will normally be such (eg, http://, s3://, file://, ftp://, etc)","s":"handle_download","u":"/guides/datalayer-permissions/","h":"#handle_download","p":1942},{"i":1956,"t":"Functionality: Upload data to a store Request Parameters: Parameter Type Required Description store_id STRING True The store ID, in hex format full_tree_filename STRING True Name of full tree dat file diff_filename STRING True Name of delta dat file Response: {\"uploaded\": [true|false]} note The filenames are just - names - and the plugin is expected to be configured such that it can locate these files. We do not send the entire file contents. This does mean that the plugin needs access to a shared file system. Therefore, although the plugin service could technically run on a separate machine, we expect most plugin services to be run on the localhost.","s":"upload","u":"/guides/datalayer-permissions/","h":"#upload","p":1942},{"i":1958,"t":"Functionality: Download a data file from a URI Request Parameters: Parameter Type Required Description url STRING True The URI for the download, eg \"server_info.url\" filename STRING True The name of the file to download, eg \"file1.dat\" Response: {\"downloaded\": [true|false]} note The downloader plugin must place the files into the same directory that Chia DataLayer expects files - which is configured in the chia config.yaml configuration as service_files_location","s":"download","u":"/guides/datalayer-permissions/","h":"#download","p":1942},{"i":1960,"t":"Functionality: Add missing files to a store Request Parameters: Parameter Type Required Description store_id STRING True The store ID, in hex format files LIST True The list of files to be added, for example: [\"file1.dat\", \"file2.dat\"] Response: {\"uploaded\": [true|false]} note Chia DataLayer will provide a complete list of DAT files for all generations from the beginning to the end that are needed to reconstruct the entire data. The plugin is expected to check its internal list of files and then upload whatever files might be missing. This is useful when adding a new uploader plugin to an existing deployment, or for troubleshooting. This is triggered automatically when add_missing_files is run on the CLI.","s":"add_missing_files","u":"/guides/datalayer-permissions/","h":"#add_missing_files","p":1942},{"i":1962,"t":"Functionality: Show info about the plugin Request Parameters: None Response: The plugin may return any information it considers useful for this call. The output will be displayed when the chia data plugins check CLI command is run. As a minimum, the plugin should response with an HTTP 200 response code , but typically some amount of text information is also expected (name, version, etc) in JSON format.","s":"plugin_info","u":"/guides/datalayer-permissions/","h":"#plugin_info","p":1942},{"i":1964,"t":"Chia Network has released a reference S3 uploader/downloader plugin, which demonstrates how to use the plugin system, and also offers support for Amazon S3. This plugin implements the REST API from the previous section. It uses the native AWS python library (boto3) to upload and download from S3. Along with this, it uses the typical credentials expected by an AWS resource. By providing credentials configured correctly, the plugin can do downloads with a read-only credential and uploads with a write-credential. Without access to the credentials, the data in S3 is unavailable at large to the public - hence \"permissioned\". A few notes about the S3 plugin: It expects the mirror URL to use the s3:// scheme for downloads; it requires a bucket name for uploads. It expects to be configured with a list of store_ids it is responsible for, along with an upload_bucket and/or a list of s3 download_urls. Either upload_bucket, or download_urls, or both must be configured. Example configuration: Test-Instance: # just a name for the instance log_filename: \"s3_plugin.log\" log_level: INFO server_files_location: # generally this only works if set to the same location as the Chia DataLayer `server_files_location` port: 8998 aws_credentials: access_key_id: \"xxx\" secret_access_key: \"xxx\" region: \"xxx\" stores: - store_id: \"7acfcbd1ed73bfe2b698508f4ea5ed353c60ace154360272ce91f9ab0c8423c3\" upload_bucket: \"chia-datalayer-test-bucket-2\" download_urls: [\"s3://hello\", \"s3://goodbye\"] - store_id: \"a14daf55d41ced6419bcd011fbc1f74ab9567fe55340d88435aa6493d628fa47\" upload_bucket: download_urls: [\"s3://hello\", \"s3://goodbye\"] The S3 plugin also supports the following optional endpoints. These are not called directly by the chia datalayer service, but are useful for further configuration of the plugin:","s":"The Chia S3 plugin","u":"/guides/datalayer-permissions/","h":"#the-chia-s3-plugin","p":1942},{"i":1966,"t":"Functionality: Verifies that the RPC service is running Request Parameters: None Response: {\"success\": true}","s":"healthz","u":"/guides/datalayer-permissions/","h":"#healthz","p":1942},{"i":1968,"t":"Functionality: Add a new store Request Parameters: Parameter Type Required Description store_id STRING True The store ID, in hex format bucket STRING True* The name of the S3 bucket [* Either bucket or urls or both is required] urls LIST True* A list of s3 URLs, for example [\"s3://one\", \"s3://two\"] [* Either bucket or urls or both is required] Success Response: {\"success\": true, \"id\": store id} Failure Response: {\"success\": false, \"reason\": \"reason for failure\"} note Calling add_store_id for a store_id already in the config returns an error - there is no update option, only add and delete.","s":"add_store_id","u":"/guides/datalayer-permissions/","h":"#add_store_id","p":1942},{"i":1970,"t":"Functionality: Remove a store Request Parameters: Parameter Type Required Description store_id STRING True The store ID, in hex format Response: {\"success\": [true|false], \"store_id\":store id in hex if successful} note Removing a store ID that is not present in the config returns a True success code, but is otherwise ignored","s":"remove_store_id","u":"/guides/datalayer-permissions/","h":"#remove_store_id","p":1942},{"i":1972,"t":"In the previous lesson we created our first coin and spent it. This was fun and a good exercise, but had some security problems. Specifically, we used a hashed password. This is very limited because once you spend that coin, your provided solution is revealed and your password can no longer be used securely for anything in the future. Additionally, when you submit your spend to the network, a full node can view the solution (including the password), allowing a bad player to spend the coin themselves. The solution to this is to use signatures. But, before we introduce signatures, let's go over a quick introduction of public and private keys.","s":"Signatures","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1974,"t":"When you create a Chia wallet you are given 24 words that you should keep secure and private. These words are used to generate a master private key. A master private key can be used to derive multiple child keys, all accessed and controlled from your 24 words (in other words, 24 words = full access to your wallet). With each private key there is an associated public key, which can be shared without revealing your private key. You can retrieve your key info using: chia keys show This will give you your master public key, while keeping your seed phrase and private key hidden. Although rarely needed or recommended, you can see this info with the --show-mnemonic-seed flag after chia keys show. Having a public key that derives from a private key allows us to do interesting things. Specifically, we can sign a message using our private key which can be verified as authentic. Let's read about that more.","s":"Intro to Keys","u":"/guides/crash-course/signatures/","h":"#intro-to-keys","p":1971},{"i":1976,"t":"If you wanted to send a message to someone but they wish to have the ability to verify the sender, you can use signatures. A digital signature allows you to use a private key to sign a message. This message can be verified by a recipient using your public key to verify the message comes from you. To see this in action, let's sign a message with the master public key. Each key is labeled with a keypath from chia keys sign, it resembles m/12381/8444/0/0, or just m for your master public key. chia keys sign --message \"hello\" --hd_path m This will then allow you to choose your wallet by fingerprint: Choose key: 1) 1660000549 Or, you can pass that in as an additional flag to chia keys sign: chia keys sign --message \"hello\" --hd_path m --fingerprint 1660000549 Response: Public key: b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Signature: 91c3d0504c2c5e02091f92cf0c3f79f2d7350656b0dc554dfc94f7e256b53d415e1a15108e329004ff1c5e91e24b445d18e52b2777e9a01a7a12d7f69a9df30c6fe3c196bdc5aa8072ea23d0edb6422253bb02d560bce721a459e6cf9e847aed The Public key in this response should match the key shown in chia keys show. The second part of this response is the signature. This signature will be passed along with the message hello to whoever we want to see it. The signature can be used to verify the message against your public key without exposing your private key. To verify a message we need: The signature, the sender's public key, the message chia keys verify --message hello --signature 91c3d0504c2c5e02091f92cf0c3f79f2d7350656b0dc554dfc94f7e256b53d415e1a15108e329004ff1c5e91e24b445d18e52b2777e9a01a7a12d7f69a9df30c6fe3c196bdc5aa8072ea23d0edb6422253bb02d560bce721a459e6cf9e847aed --public_key b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Response: True In order for this concept to work, the public key must be known to be the public key of the original sender. When this is the case we can verify that the message came from the original source and that the message has not been altered. If we change either of these two pieces of information, the signature is no longer valid. The signature only works with the message hello and that specific public key. Now, let's learn about the use of signatures in Chialisp.","s":"Intro to Signatures","u":"/guides/crash-course/signatures/","h":"#intro-to-signatures","p":1971},{"i":1978,"t":"One of the available conditions is AGG_SIG_ME, which takes a public key and a message to sign. The general syntax for this is (50 public_key message) Take a look at this example: signature.clsp (mod (PUBLIC_KEY conditions) (include condition_codes.clib) (include sha256tree.clib) (c (list AGG_SIG_ME PUBLIC_KEY (sha256tree conditions)) conditions ) ) We will be introducing a few new things here. The first new thing introduced is c, which will combine the new AGG_SIG_ME condition with the conditions passed in as a solution. The other new idea is an include, which allows us to use the names of conditions instead of the numbers. To get these include files, issue the command: cdv clsp retrieve sha256tree condition_codes Let's now understand the basic signature requirement. This code expects the public key to be curried, with our AGG_SIG_ME condition being set up like so: (list AGG_SIG_ME PUBLIC_KEY (sha256tree conditions)) The message in this case is Sha256tree conditions which takes the tree hash of our passed in conditions. We put anything in the message we do not want changed by the farmer. We will be using sha256tree on the value because you cannot use a list. sha256tree gets the tree hash of the conditions. By having this as the message of AGG_SIG_ME we will be able to prove that the conditions have not been modified (as we are verifying against the public key, similar to chia keys verify).","s":"Verifying signatures in Chialisp","u":"/guides/crash-course/signatures/","h":"#verifying-signatures-in-chialisp","p":1971},{"i":1980,"t":"Let's go through creating this coin and spending it. As we go through this we will need to keep track of a lot of information. It may be helpful to open a text file to keep track. First, let's get our public key: chia keys show The public key response may look like this: Master public key (m): b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Now, curry in your public key prefixed with 0x (important). I'll use mine in this example, so be sure to update with the appropriate value! cdv clsp curry signature.clsp -a 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Response (reminder, yours will be different): (a (q 2 (q 4 (c 4 (c 5 (c (a 6 (c 2 (c 11 ()))) ()))) 11) (c (q 50 2 (i (l 5) (q 11 (q . 2) (a 6 (c 2 (c 9 ()))) (a 6 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d) 1)) Now, use your compiled code to get the serialized version of the code (the puzzle reveal) and the puzzle hash: opc \"(a (q 2 (q 4 (c 4 (c 5 (c (a 6 (c 2 (c 11 ()))) ()))) 11) (c (q 50 2 (i (l 5) (q 11 (q . 2) (a 6 (c 2 (c 9 ()))) (a 6 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d) 1))\" Response: ff02ffff01ff02ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff0bff80808080ff80808080ff0b80ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954dff018080 That is the puzzle reveal, now for the puzzle hash: opc -H \"(a (q 2 (q 4 (c 4 (c 5 (c (a 6 (c 2 (c 11 ()))) ()))) 11) (c (q 50 2 (i (l 5) (q 11 (q . 2) (a 6 (c 2 (c 9 ()))) (a 6 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d) 1))\" Response: aa0dc6276e519a604dd0a750b8efb53c5d65b55f189cc0ca29d498d45b69a216 Now, using this puzzle hash we can encode an address: cdv encode --prefix txch aa0dc6276e519a604dd0a750b8efb53c5d65b55f189cc0ca29d498d45b69a216 Response: txch14gxuvfmw2xdxqnws5agt3ma483wktd2lrzwvpj3f6jvdgkmf5gtq8g3aw3 Great! Now you have all of the information to create your coin!","s":"Practice","u":"/guides/crash-course/signatures/","h":"#practice","p":1971},{"i":1982,"t":"To create a coin we send a certain amount of chia to the address for this Chialisp. The amount is up to you, the value used determines the value of this locked-up coin. chia wallet send --amount 0.01 --fee 0.00005 --address txch14gxuvfmw2xdxqnws5agt3ma483wktd2lrzwvpj3f6jvdgkmf5gtq8g3aw3 Response: Transaction submitted to nodes: [{'peer_id': '67095d445d879556da95feeee70174c66b131d4f29bd447df5fbc56789a01f24', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 1660000549 -tx 0x2bf4497e18147f2f857321829c557dfa4e92b7e1dd1a183e423fa1d6697c0a49' to get status Let's get that status: chia wallet get_transaction -f 1660000549 -tx 0x2bf4497e18147f2f857321829c557dfa4e92b7e1dd1a183e423fa1d6697c0a49 Response: Transaction 2bf4497e18147f2f857321829c557dfa4e92b7e1dd1a183e423fa1d6697c0a49 Status: In mempool Amount sent: 0.01 TXCH To address: txch14gxuvfmw2xdxqnws5agt3ma483wktd2lrzwvpj3f6jvdgkmf5gtq8g3aw3 Created at: 2022-10-30 03:19:22 Eventually, Status: in mempool will change to Status: Confirmed.","s":"Create a Coin","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1984,"t":"Now that we created the coin we can start to craft a spend bundle. Build this outline in a spendbundle.json file: { \"coin_spends\": [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"\", \"puzzle_hash\": \"\" }, \"puzzle_reveal\": \"\", \"solution\": \"\" } ], \"aggregated_signature\": \"\" } Now, let's figure out the coin, puzzle_reveal (calculated earlier), solution, and aggregated_signature. Once this transaction is confirmed, we can retrieve the coin info needed to craft a spend bundle. To do this, we will need to use the puzzle hash we calculated earlier. cdv rpc coinrecords --by puzzlehash aa0dc6276e519a604dd0a750b8efb53c5d65b55f189cc0ca29d498d45b69a216 Response: [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"0x2ae27f44c228eeb9b16eb3f878c51e5bc468009eea79fce976e9d0a25b0e2b85\", \"puzzle_hash\": \"0xaa0dc6276e519a604dd0a750b8efb53c5d65b55f189cc0ca29d498d45b69a216\" }, \"coinbase\": false, \"confirmed_block_index\": 321848, \"spent_block_index\": 0, \"timestamp\": 1667114401 } ] You will only need the coin object from this response. Again, you can calculate the puzzle reveal with opc: opc \"(a (q 2 (q 4 (c 4 (c 5 (c (a 6 (c 2 (c 11 ()))) ()))) 11) (c (q 50 2 (i (l 5) (q 11 (q . 2) (a 6 (c 2 (c 9 ()))) (a 6 (c 2 (c 13 ())))) (q 11 (q . 1) 5)) 1) 1)) (c (q . 0xb8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d) 1))\" Response: ff02ffff01ff02ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff0bff80808080ff80808080ff0b80ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954dff018080 Now, let's take a moment to craft a solution.","s":"Spending the coin","u":"/guides/crash-course/signatures/","h":"#spending-the-coin","p":1971},{"i":1986,"t":"The solution for this puzzle requires us to provide a list of conditions. This is how we control what happens with the coin. We will continue to use 51 (CREATE_COIN) which requires a puzzle hash for where to send the coin. chia wallet get_address Response: txch1nmntlv7nwvkx37llrlxwjmazd2url7x9wdhw6fww4lj8edr4pafsh0y5l5 cdv decode txch1nmntlv7nwvkx37llrlxwjmazd2url7x9wdhw6fww4lj8edr4pafsh0y5l5 Response: 9ee6bfb3d3732c68fbff1fcce96fa26ab83ff8c5736eed25ceafe47cb4750f53 Now, craft the complete solution, make sure to prefix with 0x for your puzzle hash (important)","s":"Build a Solution","u":"/guides/crash-course/signatures/","h":"#build-a-solution","p":1971},{"i":1988,"t":"opc \"(((51 0x9ee6bfb3d3732c68fbff1fcce96fa26ab83ff8c5736eed25ceafe47cb4750f53 9950000000)))\" Response: ffffff33ffa09ee6bfb3d3732c68fbff1fcce96fa26ab83ff8c5736eed25ceafe47cb4750f53ff85025110f380808080 Now, the difference between the coin value and the value used in CREATE_COIN goes to the farmer as a fee.","s":"Solution","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1990,"t":"The expected message for our signature is the tree hash of our conditions (from our chialisp code (list AGG_SIG_ME PUBLIC_KEY (sha256tree conditions))). For this to work, we must first get the conditions tree hash. warning We are not calculating the tree hash for the entire solution, just the CREATE_COIN, so make sure you get the parenthesis right. opc -H \"((51 0x9ee6bfb3d3732c68fbff1fcce96fa26ab83ff8c5736eed25ceafe47cb4750f53 9950000000))\" Response: d96954e94653367e85bee3195b8a8f4a6470626e51ba10a96fc24d0e8bcdd7c1 To sign the message we will actually need the coin_id and the genesis challenge. Genesis Challenge? AGG_SIG_ME requires multiple pieces of information as to prevent reusable signatures. One of these things is the genesis challenge, which is a different value for every network. You will find this information from chia show -s or in the config.yaml file of your chia configuration. less ~/.chia/mainnet/config/config.yaml and then search for genesis_challenge, picking the one for the appropriate network (such as testnet11). The value will be a hex string such as 37a90eb5185a9c4439a91ddc98bbadce7b4feba060d50116a067de66bf236615 (that is the value for testnet11).","s":"Signing a Message","u":"/guides/crash-course/signatures/","h":"#signing-a-message","p":1971},{"i":1992,"t":"The coin ID is actually the hash of the parent coin info, the coin puzzle hash, and the amount. One way to get the coin ID is to retrieve a coin through cdv inspect. This will take the parent ID, your coin's puzzle hash, and the amount. cdv inspect -id coins --parent-id 0x2ae27f44c228eeb9b16eb3f878c51e5bc468009eea79fce976e9d0a25b0e2b85 --puzzle-hash 0xaa0dc6276e519a604dd0a750b8efb53c5d65b55f189cc0ca29d498d45b69a216 --amount 10000000000 Response: ['43ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5'] Now, we can use our coin ID to craft a message.","s":"Get Coin Id","u":"/guides/crash-course/signatures/","h":"#get-coin-id","p":1971},{"i":1994,"t":"AGG_SIG_ME expects the concatenation of the conditions tree hash, coin ID, and the genesis challenge. run \"(concat 0xd96954e94653367e85bee3195b8a8f4a6470626e51ba10a96fc24d0e8bcdd7c1 0x43ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5 0xd25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15)\" Response: 0xd96954e94653367e85bee3195b8a8f4a6470626e51ba10a96fc24d0e8bcdd7c143ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5d25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15","s":"Concatenate Message","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1996,"t":"chia keys sign --as-bytes --message d96954e94653367e85bee3195b8a8f4a6470626e51ba10a96fc24d0e8bcdd7c143ab980558015de0d255b7eadf763feb9de22233bcdfde22b1c2823dfa2a53b5d25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15 --hd_path m info You will actually want to take the 0x off this time. Response: Public key: b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954d Signature: a3994dc9c0ef41a903d3335f0afe42ba16c88e7881706798492da4a1653cd10c69c841eeb56f44ae005e2bad27fb7ebb16ce8bbfbd708ea91dd4ff24f030497b50e694a8270eccd07dbc206b8ffe0c34a9ea81291785299fae8206a1e1bbc1d1","s":"Sign Message","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":1998,"t":"Using the gathered info thus far, we can craft our spend bundle: { \"coin_spends\": [ { \"coin\": { \"amount\": 10000000000, \"parent_coin_info\": \"0x2ae27f44c228eeb9b16eb3f878c51e5bc468009eea79fce976e9d0a25b0e2b85\", \"puzzle_hash\": \"0xaa0dc6276e519a604dd0a750b8efb53c5d65b55f189cc0ca29d498d45b69a216\" }, \"puzzle_reveal\": \"ff02ffff01ff02ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff0bff80808080ff80808080ff0b80ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b8f7dd239557ff8c49d338f89ac1a258a863fa52cd0a502e3aaae4b6738ba39ac8d982215aa3fa16bc5f8cb7e44b954dff018080\", \"solution\": \"ffffff33ffa09ee6bfb3d3732c68fbff1fcce96fa26ab83ff8c5736eed25ceafe47cb4750f53ff85025110f380808080\" } ], \"aggregated_signature\": \"a3994dc9c0ef41a903d3335f0afe42ba16c88e7881706798492da4a1653cd10c69c841eeb56f44ae005e2bad27fb7ebb16ce8bbfbd708ea91dd4ff24f030497b50e694a8270eccd07dbc206b8ffe0c34a9ea81291785299fae8206a1e1bbc1d1\" } cdv rpc pushtx spendbundle.json Response: { \"status\": \"SUCCESS\", \"success\": true } If you have an incorrect signature, you'll get a message like this: (\"{'error': 'Failed to include transaction \" '93247303fe92bf8c25459b912e5ea01bc13c5a59f876ad673e8455487a1056eb, error ' \"BAD_AGGREGATE_SIGNATURE', 'success': False}\") If this is the case, you'll want to double check your signing message. You can also try the debug command: cdv inspect spendbundles spendbundle.json --debug Congratulations, you now have a working understanding of signatures!","s":"The Spend Bundle","u":"/guides/crash-course/signatures/","h":"","p":1971},{"i":2000,"t":"Chia developer Matthew Howard gives a high level overview of the concepts involved in developing applications on Chia. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Developing Applications","u":"/guides/developing-applications-video-series/","h":"","p":1999},{"i":2002,"t":"In this video, Matt Hauff (aka @quexington), walks you through creating a multiple issuance Chia Asset Token (CAT). Watch the Single Issuance CAT video first before watching this one. CAT Admin Tool Github Repo If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Multiple Issuance CAT","u":"/guides/multiple-issuance-cat-video-series/","h":"","p":2001},{"i":2004,"t":"This document will guide you through the process of setting up Chia's DataLayer™ and running a few basic functions.","s":"DataLayer User Guide","u":"/guides/datalayer-user-guide/","h":"","p":2003},{"i":2006,"t":"As a decentralized database, the Chia DataLayer allows users to store the original data locally. The hash of that data is then saved in a singleton (a coin with a unique ID that can be spent and recreated many times) with updated properties each time it is recreated. The on-chain component of Chia DataLayer is also a singleton. If the original data’s hash matches the hash stored on-chain, then the original data is guaranteed to be accurate. At the basic level, the Chia DataLayer provides a shared data network with no central authority. Nodes in this network can subscribe to data from other nodes and receive updates whenever the data changes. The real magic of DataLayer is the ability to use the data in smart contract transactions. Specifically, Chialisp code can directly process records stored in Chia DataLayer, opening up a new world of functionality for Chialisp programmers not available on any other blockchain. It starts with the concept of a \"proof of inclusion.\" Proof of inclusion​ A proof of inclusion is a way to prove that a key/value pair is being stored, without needing to provide the entire Merkle tree from the store. This is accomplished by creating a spend of the DataLayer singleton that accepts two things in its solution: The hash of a key/value pair from the Merkle tree Proof that the same key/value pair actually exists in the Merkle tree. This proof is obtained by providing the minimum peer hashes necessary to recalculate the Merkle root that is currently stored on-chain, starting from the leaf obtained from the key/value pair. When this proof is obtained, the singleton announces the hash that exists in that DataLayer table. Proofs of inclusion are the basis for accessing DataLayer data from Chialisp because once the data is proven, it can be used to drive other functionality, starting with the two-party commit, and moving beyond to include oracles and off-chain contracts. Example 1: Two-party commit​ \"Two-party commit\" is the simplest example of a proof of inclusion. It is an Offer where the owner of one DataLayer table offers to make an update if and only if the owner of another DataLayer table makes a specified update. A two-party commit uses an Offer that includes six asserts and spends. In the original Offer, the maker includes: A spend of the maker's DataLayer singleton to make the update to the maker's table A spend of the maker's DataLayer singleton to announce a proof of inclusion of the updates made An assert of an announcement from the taker of a proof of inclusion of a required update To accept the offer, the taker adds: A spend of the taker DataLayer singleton to make the update A spend of the taker DataLayer singleton to announce the proof of inclusion of the updated data An assert of the proof of inclusion from the maker The offer spendbundle only goes through when all of the necessary assertions are satisfied. Where it gets interesting is what other coins might do with that announcement. Another coin can accept the key and value in its solution, hash them, and assert an announcement from the DataLayer coin of a proof of inclusion of that hash. If the assert succeeds, then the coin can confidently use that data in the key and value as a validated input to whatever it may want to do. Example 2: NFT ratings​ A hypothetical example of a proof of inclusion could be NFT ratings. Here's how it would work: A critic provides ratings for various NFTs in a DataLayer table, such that people could create offers based on that rating. A prospective buyer might offer 5 XCH for any NFT with a \"blue ribbon\" rating from RatingWiz. To accept the offer, an NFT owner would have to include a proof of inclusion from the rating table that their NFT had that rating. This example would require anyone-can-spend DataLayer proofs of inclusion (these doesn't exist yet, but would be straightforward to build). The anyone-can-spend proof of inclusion could also generate a payment to the DataLayer table owner to pay RatingWiz for their services. Resources and notes​ For additional technical resources, see the following: DataLayer RPC API DataLayer CLI Reference DataLayer Permission Guide -- a new feature as of Chia 1.8.0 DataLayer blog post note Commands that modify the blockchain include an optional fee. This fee can be specified in two ways: The -m / --fee parameter can be specified explicitly in the command, as several of the examples in this document show If the fee option is not explicitly specified, then the data_layer:fee setting in ~/.chia/mainnet/config/config.yaml will be used. By default, this is set to 1 billion mojos (0.001 XCH) If neither of these options is set, then no fee will be used info If you have already installed Chia version 1.6 or greater and started the reference client, you may skip to the next section: Configure Chia to run DataLayer.","s":"About DataLayer","u":"/guides/datalayer-user-guide/","h":"#about-datalayer","p":2003},{"i":2009,"t":"DataLayer can be activated or deactivated from Chia's reference wallet GUI. However, the commands to use it are only available from the CLI or RPC. You can choose whether to install Chia from source or run the packaged installer. If you installed from source, be sure you have activated a virtual environment (you should see (venv) on the left side of your Powershell/terminal window). Run chia version. You should be shown the correct version. For example: chia version 1.8.0 (optional) Run chia configure --set-log-level INFO. This will instruct your Chia installation to log more info than it would have with the default level of WARNING: chia configure --set-log-level INFO Result: Logging level updated. Check ~/.chia/mainnet/log/debug.log Restart any running chia services for changes to take effect (You will restart Chia later in this guide.) Acquire some XCH. 0.01 XCH is a sufficient amount to get started. tip If you ever need to display your address, run chia keys show. This command will only output your public keys and address; your private keys and seed phrase will not be shown.","s":"Install and Run Chia","u":"/guides/datalayer-user-guide/","h":"#install-and-run-chia","p":2003},{"i":2011,"t":"At this point, you should have installed and started Chia. You should also have a synced wallet with some XCH (0.01 XCH is sufficient to get started). You do not need a synced full node. info You are recommended to complete steps 1 and 2 (port forwarding and firewall configuration) in order to run DataLayer. If you skip these steps, DataLayer might not run properly. Configure your router to forward port 8575 (data propagation server) to your local machine. To configure your router's settings, typically you will need enter http://192.168.1.1 in a web browser, though this address varies for different routers. From your router's settings, locate the Port Forwarding section and add a rule to forward port 8575 to your local IP address. You will also need to configure your computer's firewall to allow connections on port 8575. This process is different for each OS: Firewall setup Windows Linux MacOS From a PowerShell prompt, run: start-Process powershell -Verb runAs This will open a new PowerShell window as an Administrator. From this new window, you will need to run four commands, two for incoming connections and two for outgoing connections. netsh advfirewall firewall add rule name=\"allowDataServerIn\" dir=in action=allow protocol=TCP localport=8575 netsh advfirewall firewall add rule name=\"allowDataServerOut\" dir=out action=allow protocol=TCP localport=8575 Each of these commands should give a response of Ok. Once you have successfully run the commands, exit the Administrator PowerShell window. Assuming you use iptables, which is installed on most distributions by default, run: sudo iptables -I INPUT -p tcp -m tcp --dport 8575 -j ACCEPT sudo iptables -I OUTPUT -p tcp -m tcp --dport 8575 -j ACCEPT Next, save the settings. For Ubuntu and Debian, run: sudo /sbin/iptables-save For CentOS, Red Hat, and Fedora, run: /sbin/service iptables save Open /etc/pf.conf in a text editor. You will need administrative privileges. For example: sudo vi /etc/pf.conf Add the following lines to the end of the file: # Open port 8575 for Chia Data Propagation Server pass in proto tcp from any to any port 8575 Save and close the file. To load the changes, run: sudo pfctl -f /etc/pf.conf To verify that the changes are active, run: sudo pfctl -sr | grep 8575 (optional) If you are going to use a DataLayer as a Service (DLaaS) plugin, you can add custom headers to ~/.chia/mainnet/config/config.yaml. For example, you might update the config as follows: data_layer: client_timeout: 15 database_path: data_layer/db/data_layer_CHALLENGE.sqlite downloaders: - url: http://localhost:9456 headers: x-api-key: your-api-key-here - url: http://localhost:3145 headers: x-api-key: your-api-key-here --- uploaders: - url: https://plugin.datalayer.storage headers: x-api-key: your-api-key-here For more information on this feature, see the description in the relevant GitHub issue. Start the DataLayer services from the GUI: (For CLI instructions, skip ahead to step 5.) Enable DataLayer services. As shown in the above image: Click Settings on the lower left side of your wallet Click the DATA LAYER menu Click the slider to Enable Data Layer A slider titled Enable File Propagation Server will appear. Click this to enable it as well Finally, you need to restart Chia. Close the GUI and run steps 3 and 6 above. When Chia starts, it will automatically enable both of the DataLayer services. If the dot to the left of WALLET is green (indicating that your wallet is synced), then you may proceed. If it is still orange, then you need to wait for it turn green before continuing. info Regardless of the status of FULL NODE, you may safely proceed with this tutorial: Orange dot = full node is syncing Green dot = full node is synced FULL NODE is missing = you are running in Wallet Mode Start the DataLayer services from the CLI (You can safely skip this step if you already started the DataLayer services from the GUI.) First, start the DataLayer service: chia start data Result: chia_data_layer: started Next, start the File Propagation Server: chia start data_layer_http chia_data_layer_http: started Chia and the DataLayer are now installed and configured properly.","s":"Configure Chia to run DataLayer","u":"/guides/datalayer-user-guide/","h":"#configure-chia-to-run-datalayer","p":2003},{"i":2013,"t":"You may be wondering how much data DataLayer can handle. When testing locally, there are a few important points to consider: There is no enforced limit on the length of DataLayer keys or values However, your computer must have enough memory (and other resources) to store the keys and values it downloads. A Raspberry Pi with 4 GB of memory will not be able to support the same size data sets as a server with 512 GB of memory Additionally, when adding a single key/value pair, the total size of the pair must fit into memory (the individual sizes of the key and value don't matter) When running update_data_store to add multiple keys, the important metric is the total size of all keys and values in the whole store. Individual keys and values within the same command are unimportant in this context When discussing the lengths of keys and values, we always refer to the hex values after conversion from their original format The amount of data in your request must be smaller than the value of rpc_server_max_request_body_size, a parameter located in ~/.chia/mainnet/config/config.yaml. If you modify this setting, you must restart Chia in order for the change to take effect Keeping all of this in mind, it is typically safe to insert data sets of up to 50 MiB (no guarantees, though). We expect to support larger sizes in future versions. For now, however, we have only done minimal testing on larger data sets. For example, using curl to add keys and values to an empty tree required the following lengths of time: 100 MiB -- 2 to 4 seconds 1 GiB -- 45 to 60 seconds 2 GiB -- failed to insert","s":"Note on Maximum Key and Value Lengths","u":"/guides/datalayer-user-guide/","h":"#note-on-maximum-key-and-value-lengths","p":2003},{"i":2015,"t":"Chia DataLayer doesn't have a GUI. The commands in this tutorial will use the command line interface (CLI). As a reminder, here is the complete reference for the CLI, as well as all available Remote Procedure Calls (RPCs): DataLayer RPC API DataLayer CLI Reference","s":"Using DataLayer","u":"/guides/datalayer-user-guide/","h":"#using-datalayer","p":2003},{"i":2017,"t":"This requires an on-chain transaction. The command to create a new store is: chia data create_data_store -m Note that is a standard transaction fee to use Chia's network. This fee is in XCH. create_data_store example chia data create_data_store -m 0.00001 Response: { 'id': '1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f', 'success': True, 'txs': [ { 'additions': [ { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, { 'amount': 14999989999999, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0x478255c372cec71557c20459f4b690fb1b7c57da3fcfc4b6396d78d9a396e384' }, { 'amount': 1, 'parent_coin_info': '0x1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f', 'puzzle_hash': '0xd650e81d45c7381183c14c3363a81aa78cb3acfe213e46da26df75cd431557f9' } ], 'amount': 1, 'confirmed': False, 'confirmed_at_height': 0, 'created_at_time': 1661141324, 'fee_amount': 10000000, 'memos': [], 'name': '0xaee362ae9d0ce3992b3bfb7cc48bde17f3d794cc383ff1d5e49a4d75dbf004d6', 'removals': [ { 'amount': 15000000000000, 'parent_coin_info': '0x81fc1729bad3f19699461b1ee455a92493ef4c1d60ba37d22ac187a18367e08e', 'puzzle_hash': '0x221c0e9cd9b7f536e9a204ef93519e6c9d4b4c9a049bde8d66fa1816c23120d2' }, { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' } ], 'sent': 10, 'sent_to': [], 'spend_bundle': { 'aggregated_signature': '0x8c431f07698ad69fd14ab04d77683801e6b908e441074f5ef5268350483d194a09a8b3cde681cb5c5fcf6444e0c9d4bf00999e8e6ad1522891baa590f82d92e2876b08e34b1f3156d0fe88ce206e5ed1567863e10a0397fd0a8a66bcbd5007b0', 'coin_spends': [ { 'coin': { 'amount': 15000000000000, 'parent_coin_info': '0x81fc1729bad3f19699461b1ee455a92493ef4c1d60ba37d22ac187a18367e08e', 'puzzle_hash': '0x221c0e9cd9b7f536e9a204ef93519e6c9d4b4c9a049bde8d66fa1816c23120d2' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b3deeeb00319624e26767c5cf777cf9a02d046510181ed29f233e2847fa8ef28ede05d2770bb1b8f101ea8ae20527d61ff018080', 'solution': '0xff80ffff01ffff33ffa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff0180ffff33ffa0478255c372cec71557c20459f4b690fb1b7c57da3fcfc4b6396d78d9a396e384ff860da47513597f80ffff34ff840098968080ffff3cffa084f72a9a3ce5152e1d627a259a0c1c90e6af389cb26af48173d84e374ecc518080ffff3dffa03a0ed375dff192685d1ef9a74424788b04655700bee898f0ea8445f8b55d38338080ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, 'puzzle_reveal': '0xff02ffff01ff04ffff04ff04ffff04ff05ffff04ff0bff80808080ffff04ffff04ff0affff04ffff02ff0effff04ff02ffff04ffff04ff05ffff04ff0bffff04ff17ff80808080ff80808080ff808080ff808080ffff04ffff01ff33ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080', 'solution': '0xffa0d650e81d45c7381183c14c3363a81aa78cb3acfe213e46da26df75cd431557f9ff01ffffa00000000000000000000000000000000000000000000000000000000000000000ffa0adcbcbaf4594e8d3057ea3a64a40560720ede80e720f867d2631069c27459de58080' } ] }, 'to_puzzle_hash': '0x0202020202020202020202020202020202020202020202020202020202020202', 'trade_id': None, 'type': 0, 'wallet_id': 0 }, { 'additions': [ { 'amount': 1, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, { 'amount': 14999989999999, 'parent_coin_info': '0xb4a1a658aaefd10930ecbccd51ac2c9a4853435b14acdb0de84729bfbefc791c', 'puzzle_hash': '0x478255c372cec71557c20459f4b690fb1b7c57da3fcfc4b6396d78d9a396e384' } ], 'amount': 1, 'confirmed': False, 'confirmed_at_height': 0, 'created_at_time': 1661141324, 'fee_amount': 10000000, 'memos': [], 'name': '0xbb4cb461126d9ea9492e767462b9a4e408e497231c2093474cba2bcfe4397104', 'removals': [ { 'amount': 15000000000000, 'parent_coin_info': '0x81fc1729bad3f19699461b1ee455a92493ef4c1d60ba37d22ac187a18367e08e', 'puzzle_hash': '0x221c0e9cd9b7f536e9a204ef93519e6c9d4b4c9a049bde8d66fa1816c23120d2' } ], 'sent': 0, 'sent_to': [], 'spend_bundle': None, 'to_puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9', 'trade_id': None, 'type': 1, 'wallet_id': 1 } ] } The only value you need from the JSON blob is id, the first value in the output. In the above example, this was 'id': '1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f', You can't do anything with this store until it is confirmed on-chain. To check the status of this confirmation, run the get_root command, passing in the id. get_root example 1 Your data store will be empty when you first create it. In this case, get_root will return an empty hash: chia data get_root --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'confirmed': True, 'hash': '0x0000000000000000000000000000000000000000000000000000000000000000', 'success': True, 'timestamp': 1661148563 } get_root example 2 After you have added at least one key, get_root will return a real hash: chia data get_root --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'confirmed': True, 'hash': '0xd6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8', 'success': True, 'timestamp': 1661148611 }","s":"Create a data store","u":"/guides/datalayer-user-guide/","h":"#create-a-data-store","p":2003},{"i":2019,"t":"This requires an on-chain transaction. Use update_data_store to modify your singleton. Actions include insert and delete. These can also be chained together. For more example of using this command, see the CLI reference. update_data_store -- insert example chia data update_data_store --id=1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f -d '[{\"action\":\"insert\", \"key\":\"0003\", \"value\":\"abc123\"}]' Response: { 'success': True, 'tx_id': '0xed157b50b94a849d3d19a0ef4e1b0e07bda863e4d65bd1527fa6f59062bb5c78' } update_data_store -- delete example chia data update_data_store --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f --changelist '[{\"action\":\"delete\", \"key\":\"0003\"}]' Response: { 'success': True, 'tx_id': '0x2a64ef42baf05c6f4d446ba8638c2f2b2c26e5a91ad62e0c5151df40d0f92ec2' }","s":"Add and Delete Keys","u":"/guides/datalayer-user-guide/","h":"#add-and-delete-keys","p":2003},{"i":2021,"t":"You can view the keys and values with get_keys_values. This command will only return data that has been confirmed on-chain -- if you run it immediately after adding data, it may not return the keys you expect. get_keys_values example For this example, there are two keys in the store: chia data get_keys_values --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'keys_values': [ { 'atom': None, 'hash': '0x7e193b814080e50aa7780bcf71fd0422a0397ad3e57dc1eac71d93183efb39ba', 'key': '0x0004', 'value': '0x123abc' }, { 'atom': None, 'hash': '0xc2dc94c2a85d7db4cfdd1d907bcc441c8fce595db2e2075b973fb8171e2f19a2', 'key': '0x0005', 'value': '0xbeadfeed' } ], 'success': True }","s":"View Keys and Values","u":"/guides/datalayer-user-guide/","h":"#view-keys-and-values","p":2003},{"i":2023,"t":"Use get_root_history to view the on-chain history of the root hash. get_root_history example chia data get_root_history --id 1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f Response: { 'root_history': [ { 'confirmed': True, 'root_hash': '0x0000000000000000000000000000000000000000000000000000000000000000', 'timestamp': 1661141342 }, { 'confirmed': True, 'root_hash': '0xe488fa1bf0f712b224df0daf312b3d479f80e3a330d4bebd8f26a0d52dc0ebbb', 'timestamp': 1661144917 }, { 'confirmed': True, 'root_hash': '0x0000000000000000000000000000000000000000000000000000000000000000', 'timestamp': 1661145223 }, { 'confirmed': True, 'root_hash': '0xb5420e65846ded936d1e4855c066247fc461a3b281cd9e0e69f3cfa4df529ba2', 'timestamp': 1661145404 }, { 'confirmed': True, 'root_hash': '0xd6d6b4d6bbd77aaa5927c8a21a1451b35f4860a7f9a58e51dae04037da9c08e8', 'timestamp': 1661148611 } ], 'success': True }","s":"View on-chain history","u":"/guides/datalayer-user-guide/","h":"#view-on-chain-history","p":2003},{"i":2025,"t":"This requires an on-chain transaction. We include an HTTP server that can be used out of the box. By default it listens to port 8575. To \"advertise\" your mirror on-chain you use the add_mirror command. This command takes three arguments: i -- Your root's ID u -- The URL of your mirror. You can reuse this argument, as shown in the example below a -- The amount (in mojos) that will be locked into the mirror while it exists. In theory, a system could prioritize mirrors according to how much was spent to create them. The amount will be returned to the creator when the mirror is deleted. Minimum amount is 0 add_mirror example chia data add_mirror -i 67b5e98abd5fef1a1c44ee63077bc5ef75c6cc4dadc9fd52d63a343922ce496b -u http://www.example2.com:8575 -u http://10.1.1.32:8575/ -a 1000 Response: None The HTTP server will serve files that are generated by default in the ~/.chia/mainnet/data_layer/db/server_files_location_mainnet directory. Note that you can mirror any Data Store, not just your own.","s":"Create A Mirror to Advertise A Data Store","u":"/guides/datalayer-user-guide/","h":"#create-a-mirror-to-advertise-a-data-store","p":2003},{"i":2027,"t":"You can subscribe to a data store in order to watch for changes and download the data from published mirrors by using the subscribe command: subscribe example chia data subscribe -store 8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d Response: None Use the subscriptions RPC to list all current subscriptions: chia rpc data_layer subscriptions Response: { \"store_ids\": [ \"1a119374fc7d7055d3419fdcd7f93065f28a1e4acacdf9c73b933b27b685550f\", \"8f6ed792bbbf5216f8e55064793f74ce01286b9c1d542cc4a357cf7f8712df1d\" ], \"success\": true } Once subscribed, you will automatically try to download updates from any published mirrors for that singleton. You can use the earlier mentioned commands get_root_history and get_keys_values to look at the history and data of any subscribed data stores. The HTTP server will automatically start to publish data for all subscribed data stores. However, it won't be advertised on-chain unless you specifically use add_mirror.","s":"Subscribe to a Data Store","u":"/guides/datalayer-user-guide/","h":"#subscribe-to-a-data-store","p":2003},{"i":2029,"t":"This document will show you how to use Chia's NFT bulk minting tool. First, some background. Chia uses the coin set model of accounting. This is similar to Bitcoin's UTXO model. Most other blockchains, however, use an account model to track the system's overall state. The coin set model has many advantages over the account model, but there are some tradeoffs. In the case of NFTs, they are implemented as singletons instead of a simple array. Because of this, creating multiple related NFTs in the same block can be a cumbersome process. Enter Chia's bulk minting tool. This tool allows you to mint an arbitrarily large number of NFTs, complete with separate offers for each of them. Want to automate the minting of your 10,000 PFP collection? You've come to the right place! info The number of NFTs per spend bundle is hard-coded at 25 in this tool. It may be possible to mint more than 25 NFTs at a time, but doing so will increase the risk of the spend bundle not getting included onto the blockchain without a large fee. We feel that minting 25 NFTs at a time will strike the right balance between speed and consistency. Modify this value at your own risk. Note about Python RuntimeError on Windows If you are running on Windows, you might occasionally see a Python Runtime Error. This is a known issue in Python and can be safely ignored. For example: chia stop -d all Exception ignored in: function _ProactorBasePipeTransport.__del__ at 0x000001A719716160 Traceback (most recent call last): File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\proactor_events.py\", line 116, in __del__ self.close() File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\proactor_events.py\", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\base_events.py\", line 746, in call_soon self._check_closed() File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\base_events.py\", line 510, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed daemon: {'ack': True, 'command': 'exit', 'data': {'success': True}, 'destination': 'client', 'origin': 'daemon', 'request_id': '0de5449121b6873ce18661b2adc4213d7dc795c2943ff7f4be9502058e8eaba0'}","s":"NFT Bulk Minting Tool","u":"/guides/nft-bulk-mint/","h":"","p":2028},{"i":2031,"t":"We strongly recommend that you test the bulk minting tool either on the testnet or by using the simulator before attempting to use it on mainnet. In addition, you will need to run a fully synced node in order to use this tool (this is true for testnet, mainnet and the simulator). For this guide, we will use the testnet. If you do not already have a synced testnet node, you can safely download a copy of the database. Do not attempt this on mainnet. Click here to begin the download. Save the file to your Downloads folder. note At the time of this writing, the file you will download is around 50 GB, compressed. Uncompressed, it will be around 100 GB. However, this file increases in size every day. You may want to double check that you have plenty of free space before proceeding with the download. You may continue with the next steps while the download is in progress.","s":"Download the testnet database","u":"/guides/nft-bulk-mint/","h":"#download-the-testnet-database","p":2028},{"i":2033,"t":"This section will show you how to download and install the bulk minting tool. If Chia is already installed on your system, make sure it is stopped before continuing: chia stop -d all note If you don't already have the git CLI tool installed, follow these instructions to install it Clone the chia-nft-minting-tool GitHub repository, which contains the bulk minting tool. In order to clone this repository, first open a PowerShell (Windows) or terminal (Linux and MacOS) window. Next, run the git clone command: git clone https://github.com/Chia-Network/chia-nft-minting-tool.git -b main Change to the newly-cloned repository's directory: cd chia-nft-minting-tool Create a new virtual environment and then activate it: Windows Linux macOS python -m venv venv .\\venv\\Scripts\\Activate.ps1 python3 -m venv venv . ./venv/bin/activate python3 -m venv venv . ./venv/bin/activate Install the bulk minting tool. This will install a copy of Chia in your virtual environment, as well as all other dependencies for the tool: pip install --editable '.[dev]'","s":"Install the bulk minting tool","u":"/guides/nft-bulk-mint/","h":"#install-the-bulk-minting-tool","p":2028},{"i":2035,"t":"info The bulk minting tool comes with a packaged version of Chia. In order to use the tool, you must have some TXCH (or XCH), a DID wallet, an NFT wallet, and a synced full node. If you already have all of this set up, then feel free to skip to the next section, which will show you how to use the tool. Run the following command to set up Chia to use the testnet: chia configure --testnet true note If you previously had been running Chia on mainnet, then your peers table will be populated with mainnet peers. When you switch to running on the testnet, the peers listed in this table will time out. Eventually the table will be repopulated with testnet peers, but this can take a long time. In order to expedite this process, We recommend that you delete your peers tables: ~/.chia/mainnet/db/peers.dat ~/.chia/mainnet/wallet/db/wallet_peers.dat We recommend that you use INFO level logging instead of the default WARNING level. To do this, run: chia configure --set-log-level INFO We recommend that you use a public/private key pair for testnet that is separate from your mainnet keys. If you don't have a separate set of testnet keys, generate them by running the following command: chia keys generate This will give an output such as the following: Generating private key Added private key with public key fingerprint 3049838316 (...) tip It is good security practice to use this set of keys for testnet development only. In case of key compromise, your TXCH will be sandboxed from your XCH. If you generated new testnet keys in the last step, we recommend that you write down your seed phrase for later recovery. Run the following: chia keys show --show-mnemonic-seed You will be shown your public and private keys. The last line of the output will be a list of 24 secret words. This is your seed phrase. Carefully copy the words on paper and store them in a secure location. Order is important. Showing all public and private keys Fingerprint: 3049838316 (...) Mnemonic seed (24 secret words): youth stomach social aware clay pottery benefit asthma mail cry rubber panda wife around provide atom cute sand staff exotic pink east gloom minute important Your seed phrase is all that is required to recover your wallet. If you lose your seed phrase, recovery will not be possible. If a bad actor gains access to your seed phrase, they'll be able to steal your Chia assets, including XCH, CATs and NFTs. info If you ever need to display your address, run chia keys show. This command will only output your public keys and address; your private keys and seed phrase will not be shown. In order to continue, you will need to have some TXCH in your wallet. If your total balance is 0, you can obtain 1 TXCH from our faucet. Copy the value of \"First wallet address:\" from the output of the chia keys show command. It will be a long string beginning with \"txch\". Open our testnet faucet page. Paste your address and click \"Submit\". You will receive this message: Accepted. Your request is in the queue and will be processed in the order it was received. At some point you will receive 1 TXCH. Depending on how busy the faucet and the testnet are, this could take several minutes. However, you don't need to wait for your coins to arrive before continuing. Create the folder where your database will reside (if it doesn't already exist): mkdir ~/.chia/mainnet/db If you downloaded a copy of the testnet database, you will need to wait for the download to complete before continuing. After the download has completed, use an archive manager such as 7-Zip to extract the file. You should now have a file in your Downloads folder called blockchain_v2_testnet11.sqlite. Move the database to the folder you just created: mv ~/Downloads/blockchain_v2_testnet11.sqlite ~/.chia/mainnet/db Start the full node, which will begin syncing to the database file: chia start node chia_full_node: started Note that for your first time running Chia after downloading a copy of the database, it could take several minutes to start your full node. Check the sync status: chia show -s Eventually, it will say Full Node Synced: Network: testnet11 Port: 58444 RPC Port: 8555 Node ID: 82a73b06b3a5f9493a3ac4e3d903026b39c85b748158ba41c623d531947f2a2a Genesis Challenge: 37a90eb5185a9c4439a91ddc98bbadce7b4feba060d50116a067de66bf236615 Current Blockchain Status: Full Node Synced Start your wallet by running: chia start wallet Wait for your wallet to sync. You can view the status of your wallet with the following command: chia wallet show If you have more than one wallet key, be sure to select the correct key/fingerprint, which you obtained from the chia keys show command: Wallet keys: 1) 502984008 2) * 3027243821 (Not Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 3027243821): Wallet height: 938814 Sync status: Syncing... Syncing should only require a few minutes, unless your wallet has a large number of previous transactions. Eventually, the chia wallet show command will show that your wallet has been synced. For example: Wallet height: 1373085 Sync status: Synced Balances, fingerprint: 3027243821 Chia Wallet: -Total Balance: 27.308704999834 txch (27308704999834 mojo) -Pending Total Balance: 27.308704999834 txch (27308704999834 mojo) -Spendable: 27.308704999834 txch (27308704999834 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 In order to run the bulk minting tool, you will need to have an NFT wallet that is associated with a DID. You will need to have some TXCH in order to create this wallet. If your requested TXCH has not yet arrived, post your address on the #chia-development channel on Discord. Someone might be able to send some to you. In order to create a DID, run the following command (-n is for the name of the DID, which can be anything): chia wallet did create -n bulk_mint_DID This will output two success messages, such as: Successfully created a DID wallet with name bulk_mint_DID and id 2 on key 502984008 Successfully created a DID did:chia:15m7n008jrpzatcakz55xx9re3zhkt9avxzvqnjgm3084q458t8us7a4cwn in the newly created DID wallet Next, run the command to create an NFT wallet that is associated with the DID. This command has three flags: -f -di -n -o For example: ~\\Downloads\\dos2unix\\bin\\dos2unix.exe -o .\\metadata.csv This message should appear in the output: dos2unix: converting file to Unix format... Create the spend bundles. This command has six inputs: -w: the wallet ID for the NFT wallet (3 in this example) -d: a boolean indicating whether to use a DID (default is False) -a: the royalty address for the NFTs (typically this is the artist's address) -r: the royalty percentage, in basis points (\"300\" means 3%) -t: a boolean indicating whether the target addresses are included in the metadata csv file (default is False) The name of the output file where the spend bundles will be stored (output.pkl in this example) For example: chianft create-mint-spend-bundles -w 3 -a -r 300 metadata.csv output.pkl Result: Successfully created 4 spend bundles The number of spend bundles created will be ceiling(number of NFTs / 25). Note that you may see a warning such as: warnings.warn(\"coin_solutions is now coin_spends in SpendBundle.from_json_dict\") This can be safely ignored. Submit the spend bundles created in the output file (output.pkl in this example). This command has two flags: -m: an optional transaction fee, in mojos. This is a fee to be used for inclusion in the blockchain, completely separate from the royalty percentage. This fee will be applied once per spend bundle of 25 NFTs. The bulk mint tool will not verify that you have enough money to cover this fee beforehand -o: set this to create a separate offer file for each NFT, using the specified price. In this example, the offer price will be 100 mojos chianft submit-spend-bundles -m 10 -o 100 output.pkl Each time a spend bundle is submitted, some status info will appear. For example: SUBMITTED: 1/4 TX: 104.70s FEE: 0.04s OFFER: 6.02s TOTAL: 120.77s Expect the total time for each spend bundle to be around 1-2 minutes. A project with 10 000 NFTs could take anywhere from 7-14 hours to complete. As a result of running this command, an offers folder will be created in your current directory. This new folder will contain the offer files (100 in this example), which you can then post to a marketplace, send to individual users, etc. note If the process fails (eg due to network error, insufficient funds, etc), the next time you run the command, the tool will pick up where it left off.","s":"Example 1","u":"/guides/nft-bulk-mint/","h":"#example-1","p":2028},{"i":2040,"t":"For this example, we'll mint 100 NFTs from a sample data set and air-drop them to target addresses. This is a good use case if you already know the recipient addresses for your NFT collection. Generate the factory data for 100 NFTs. The difference from the previous example is the \"t\" flag, which indicates that we should include a target address in the metadata csv: python factory_metadata.py t 100 The output of this command will be a royalty address and a default royalty percentage (300 basis points). You can adjust the royalty percentage when creating the spend bundles (Step 3). Royalty Address: txch17ka38gg3zvrfundu9c4gqxle92pge39qdnkuwu2jn03cjp8cgfwqf0s9zg Royalty Percent: 300 Additionally, a CSV file called metadata.csv will be created in the local directory. This file will contain the sample data. Fix EOL Characters (Windows only) Linux or macOS users should skip to Step 3. If you are running on Windows, the CSV file will contain an extra CR (carriage return) character at the end of each line. This will cause the bulk minting tool to fail. First, you must convert the CSV file to use UNIX-style end-of-line characters. The easiest way to accomplish this is with dos2unix. This is not included with Windows, so you will need to download it from SourceForge. Steps to convert the CSV file: Visit the SourceForge dos2unix site. Click the green “Download” button. After five seconds, the dos2unix zip file will be downloaded to your Downloads folder. Unzip the dos2unix zip file. From a PowerShell window, run: -o For example: ~\\Downloads\\dos2unix\\bin\\dos2unix.exe -o .\\metadata.csv This message should appear in the output: dos2unix: converting file to Unix format... Create the spend bundles. This command has six inputs: -w: the wallet ID for the NFT wallet (3 in this example) -d: a boolean indicating whether to use a DID (default is False) -a: the royalty address for the NFTs (typically this is the artist's address) -r: the royalty percentage, in basis points (\"300\" means 3%) -t: a boolean indicating whether the target addresses are included in the metadata csv file (default is False; we'll use True for this example) The name of the output file where the spend bundles will be stored (output.pkl in this example) For example: chianft create-mint-spend-bundles -w 3 -a -r 300 -t True metadata.csv output.pkl Result: Successfully created 4 spend bundles You may see a warning such as: warnings.warn(\"`coin_solutions` is now `coin_spends` in `SpendBundle.from_json_dict`\") This can be safely ignored. Submit the spend bundles created in the output file (output.pkl in this example). This command has two flags: -m: an optional transaction fee, in mojos. This is a fee to be used for inclusion in the blockchain, completely separate from the royalty percentage. This fee will be applied once per spend bundle of 25 NFTs. The bulk mint tool will not verify that you have enough money to cover this fee beforehand -o: Not set. In this example, we don't provide this option as we will be air-dropping them to their targeted address in the metadata.csv. We declared these spend bundles to include a targeted address in the previous command. We would not be able to create offers for NFTs where we are offering the NFT if we are not the owner. (The air-drop address is the NFT owner.) chianft submit-spend-bundles -m 10 output.pkl Each time a spend bundle is submitted, some status info will appear. For example: SUBMITTED: 1/4 TX: 104.70s FEE: 0.04s OFFER: 6.02s TOTAL: 120.77s Expect the total time for each spend bundle to be around 1-2 minutes. A project with 10 000 NFTs could take anywhere from 7-14 hours to complete. As a result of running this command the NFTs will be air-dropped to the correct recipient addresses in batches of 25. note If the process fails (eg due to network error, insufficient funds, etc), the next time you run the command, the tool will pick up where it left off.","s":"Example 2","u":"/guides/nft-bulk-mint/","h":"#example-2","p":2028},{"i":2042,"t":"The next section of this tutorial will demonstrate how to create and use DIDs and NFTs on the CLI. If you wish to use RPCs instead, you can skip ahead to the RPC version. note It is very important that you replace any DID, id, name, or other value in the following commands with your own. This is just an example, we do not know the specific values your commands will need in order to work. Also, make sure to use a wallet fingerprint that has enough XCH to pay for transaction fees. info It is important that you format your NFTs' metadata properly, as this cannot be changed after minting. See CHIP-7 for the first (and so far only) standardized JSON metadata schema for Chia NFTs. Usage of this CHIP is recommended in order to give marketplaces the best opportunity to parse your NFTs' metadata properly. Note that additional NFT metadata CHIPs are likely to be released in the future. However, there are no plans to deprecate CHIP-7 when this happens.","s":"Minting NFTs With CLI","u":"/guides/nft-cli/","h":"","p":2041},{"i":2044,"t":"note You are recommended to associate all NFTs with DIDs. This helps to establish the NFT's provenance, among other benefits. This guide will only discuss how to create NFTs in the recommended way, with DIDs. In this section, we'll create a new DID. Later we'll create an NFT wallet that is associated with the new DID. To create a new DID using Chia's CLI: Run these commands to create a DID wallet with a custom name and 1 mojo: chia wallet did create -n \"Test DID\" -a 1 -m 0.00001 That should produce an output similar to this: Successfully created a DID wallet with name Test DID and id 2 on key 2527948602 Successfully created a DID did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 in the newly created DID wallet It will take a few minutes for your new wallet to be confirmed on the blockchain. Once the new wallet shows up, take note of the Wallet ID, which is 2 in this example. Run the following command to see if it's there yet: chia wallet show That should produce an output similar to this: Wallet height: 1141612 Sync status: Synced Balances, fingerprint: 2527948602 Chia Wallet: -Total Balance: 1.00005999999 txch (1000059999990 mojo) -Pending Total Balance: 1.00005999999 txch (1000059999990 mojo) -Spendable: 1.00005999999 txch (1000059999990 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Test DID: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 -Wallet ID: 2","s":"Create a DID Wallet","u":"/guides/nft-cli/","h":"#create-a-did-wallet","p":2041},{"i":2046,"t":"info Each NFT wallet can be anchored to a DID. Likewise, each DID can contain a single NFT wallet. Create an NFT wallet that is associated with the DID you already created: chia wallet nft create -di did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 -n \"DID-Linked NFT Wallet\" That should produce an output similar to this: Successfully created an NFT wallet with id 4 on key 2527948602 It will take a few minutes for your new wallet to be confirmed on the blockchain. Once the new wallet shows up, take note of the Wallet ID (4 in this example). Run the following command to see if the wallet is there yet: chia wallet show That should produce an output similar to this: Wallet height: 1141703 Sync status: Synced Balances, fingerprint: 2527948602 Chia Wallet: -Total Balance: 1.00005999999 txch (1000059999990 mojo) -Pending Total Balance: 1.00005999999 txch (1000059999990 mojo) -Spendable: 1.00005999999 txch (1000059999990 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Test DID: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 -Wallet ID: 2 DID-Linked NFT Wallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -DID ID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 -Wallet ID: 4","s":"Create an NFT Wallet","u":"/guides/nft-cli/","h":"#create-an-nft-wallet","p":2041},{"i":2048,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. Next we'll mint an NFT that is associated with a DID. For this example, we'll use most of the available options: chia wallet nft mint -f 2086972020 -i 4 -ra txch10e2hg2xkd7n2rfyh0frg6ls3q9v27ty0rfawxuvergrfyl0502vsx5se2t -ta txch1rhrkwf9a53v89r5ghn2du4e5vadt68crdfjuxcuq8zpykejw7vzq2t85nx -u https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg -nh 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 -mu \"https://pastebin.com/raw/PnaQGQiH, https://pastebin.com/raw/KTwUQ8hM\" -mh e9e9366f050e90ceb04a4778f2adfa02dfb565327d225eb35101f0de553ac20b -lu https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE -lh 30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6 -en 1 -et 5 -rp 300 -m 0.000615 That should produce an output similar to this: NFT minted Successfully with spend bundle: { 'aggregated_signature': '0x88123f66d0f6265e5bb96e668bfcc68c360566c98985b54aa4cff81627899941c4e14d7da96fda92af4b61ce110f6c221775dadb07c18a816d5e5d8d05987a854d8d5c42d2ab5802abd0f01d8da6b9fe28870a4c424cb7b46f55e8894d484ed1', 'coin_solutions': [{ 'coin': { 'amount': 69999995, 'parent_coin_info': '0x7df44ef7a08a497b6bc31fc090fa3e57f6630142f8f123951e2d3b18685e9bd0', 'puzzle_hash': '0x827d2f77303929db5f3c26fd21b65901a342e36b9d912ac4440d6185f80d17a8' }, 'puzzle_reveal': ..., 'solution': ... }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xb4ddbcd646ed8e1ed9472898436ddab442f4640dc88199efa8db6ba22bb5dc31', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, 'puzzle_reveal': ..., 'solution': ... }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xa3133d216499f2ff85bbd1928352a04b5612c8325eeaa0daa6cd964b9ba0e8a0', 'puzzle_hash': '0xa6d7c1fe01ed965d3f4fc08a89d9187831fceba98abf191dd6f388ba753ec9b3' }, 'puzzle_reveal': ..., 'solution': ... }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xcf052aa79755eba9b68d0ef4cbab1b05993ba84e7044d2fdfd71aa5d0877cbc3', 'puzzle_hash': '0xcb3cdbfcefdef0bd98bc8bc52cf46f49fd40a577713e86173e5cdf9585e299c9' }, 'puzzle_reveal': ..., 'solution': ... } ]} Here is a description of the options used: Option Description -i The id of your NFT wallet. -u A comma-separated list of URIs where this image may be found. -nh The NFT's data hash. Must match to be viewable in the wallet. -f The fingerprint of the wallet. -ra The wallet or smart coin address that will receive royalties. -ta The wallet or smart coin address where the NFT will be sent. -mu A comma-separated list of URIs where the image's metadata may be found. -mh The hash of the NFT's metadata. -lu A comma-separated list of URIs where the image's license may be found. -lh The hash of the NFT's license. -en The edition number. Specify if this NFT has multiple editions (multiple identical copies of an NFT). -et The edition total number. Specify if this NFT has multiple editions. -rp The royalty percentage expressed as tens of thousandths of a percent. --no-did-ownership Disables DID ownership. -m The fee for this transaction in XCH. If successful, you will receive a JSON output, including the coin additions and removals involved in minting the NFT, as well as the spend bundle that was used. Wait a few minutes for your NFT to be confirmed on the blockchain. Eventually, the NFT will show up.","s":"Mint an NFT (With DID)","u":"/guides/nft-cli/","h":"#mint-an-nft-with-did","p":2041},{"i":2050,"t":"We'll list the NFTs from the wallet that was created with the CLI. Run the following command to show the list of wallets: chia wallet show That should produce an output similar to this: Wallet height: 1145640 Sync status: Synced Balances, fingerprint: 2527948602 Chia Wallet: -Total Balance: 1.000049999988 txch (1000049999988 mojo) -Pending Total Balance: 1.000049999988 txch (1000049999988 mojo) -Spendable: 1.000049999988 txch (1000049999988 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Test DID: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DISTRIBUTED_ID -DID ID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 -Wallet ID: 2 DID-Linked NFT Wallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -DID ID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 -Wallet ID: 4 Show the NFT from this tutorial: chia wallet nft list -i 4 That should produce an output similar to this: NFT identifier: nft1euzj4fuh2h46nd5dpm6vh2cmqkvnh2zwwpzd9l0awx496zrhe0psfmklxm Launcher coin ID: cf052aa79755eba9b68d0ef4cbab1b05993ba84e7044d2fdfd71aa5d0877cbc3 Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: 5cdfe3eb4429ad5cb12ab549b6d2f0f7d919fa9f4389d187ad7414f747a86bd4 On-chain data/info: ((117 \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\") (104 . 0x14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0) (28021 \"https://metadata_example.com\") (27765 \"https://license_example.com\") (29550 . 1) (29556 . 5) (28008 . 0x868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e) (27752 . 0x358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82)) Owner DID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 Royalty percentage: 300 Royalty puzhash: 827d2f77303929db5f3c26fd21b65901a342e36b9d912ac4440d6185f80d17a8 NFT content hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata hash: 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e License hash: 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 NFT series total: 5 Current NFT number in the series: 1 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1145481 Inner puzzle supports DID: True NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Metadata URIs: https://metadata_example.com License URIs: https://license_example.com Note that you can obtain the same info with the get_info command. You'll need to pass in the identifier of the NFT you want to list: chia wallet nft get_info -ni nft1euzj4fuh2h46nd5dpm6vh2cmqkvnh2zwwpzd9l0awx496zrhe0psfmklxm That should produce an output similar to this: NFT identifier: nft1euzj4fuh2h46nd5dpm6vh2cmqkvnh2zwwpzd9l0awx496zrhe0psfmklxm Launcher coin ID: cf052aa79755eba9b68d0ef4cbab1b05993ba84e7044d2fdfd71aa5d0877cbc3 Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: 5cdfe3eb4429ad5cb12ab549b6d2f0f7d919fa9f4389d187ad7414f747a86bd4 On-chain data/info: ((117 \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\") (104 . 0x14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0) (28021 \"https://metadata_example.com\") (27765 \"https://license_example.com\") (29550 . 1) (29556 . 5) (28008 . 0x868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e) (27752 . 0x358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82)) Owner DID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 Royalty percentage: 300 Royalty puzhash: 827d2f77303929db5f3c26fd21b65901a342e36b9d912ac4440d6185f80d17a8 NFT content hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata hash: 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e License hash: 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 NFT series total: 5 Current NFT number in the series: 1 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1145481 Inner puzzle supports DID: True NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Metadata URIs: https://metadata_example.com License URIs: https://license_example.com","s":"List Your NFTs","u":"/guides/nft-cli/","h":"#list-your-nfts","p":2041},{"i":2052,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. Each NFT has three URI lists: Data URIs (also simply called \"URIs\") Metadata URIs License URIs It is not possible to delete these lists or to remove any of their items. However, it is possible to prepend new items to any of these lists. One reason to do this is if a link is broken. But keep in mind that if an invalid item is added, wallets and block explorers may read the invalid new item and not examine subsequent, valid items. It is only possible to add one URI per spend. Exactly one of -u -mu, and -lu is required. For this example, we'll add one of each of these items, which requires three separate spends. For simplicity, we'll just duplicate the URIs that already existed. The current NFT coin id (-ni) will change with each spend. We'll add them to the DID-linked NFT: chia wallet nft add_uri -i 4 -ni 5cdfe3eb4429ad5cb12ab549b6d2f0f7d919fa9f4389d187ad7414f747a86bd4 -u https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg -m 0.00001 chia wallet nft add_uri -i 4 -ni 4e1e452bf3612ddd654fe1e3684a635c1d2495cbfde338ef875c8f292e21adb8 -mu https://metadata_example.com -m 0.00001 chia wallet nft add_uri -i 4 -ni 33ae5afc65ec4404aba16bd9a0b17cfa23ddca9ac9bb49a03548167e286762ba -lu https://license_example.com -m 0.00001 Now that the URIs have been added successfully, rerun the same get_info command to see the updates. Each URI list now has two copies of the URI: chia wallet nft get_info -ni nft1euzj4fuh2h46nd5dpm6vh2cmqkvnh2zwwpzd9l0awx496zrhe0psfmklxm That should produce an output similar to this: NFT identifier: nft1euzj4fuh2h46nd5dpm6vh2cmqkvnh2zwwpzd9l0awx496zrhe0psfmklxm Launcher coin ID: cf052aa79755eba9b68d0ef4cbab1b05993ba84e7044d2fdfd71aa5d0877cbc3 Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: d7eed252af2055353a0ecbf734094345b3ffd793631a36b79ac80638a579b873 On-chain data/info: ((117 \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\" \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\") (104 . 0x14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0) (28021 \"https://license_example.com\" \"https://metadata_example.com\" \"https://metadata_example.com\") (27765 \"https://license_example.com\") (29550 . 1) (29556 . 5) (28008 . 0x868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e) (27752 . 0x358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82)) Owner DID: did:chia:13p5fdxgm8e2pngdwp8m088t0etp7rgzx9ye2ju8v5ackcyg7t9nqx2um83 Royalty percentage: 300 Royalty puzhash: 827d2f77303929db5f3c26fd21b65901a342e36b9d912ac4440d6185f80d17a8 NFT content hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata hash: 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e License hash: 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 NFT series total: 5 Current NFT number in the series: 1 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1145481 Inner puzzle supports DID: True NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Metadata URIs: https://metadata_example.com https://metadata_example.com License URIs: https://license_example.com https://license_example.com","s":"Add a URI to Your NFTs","u":"/guides/nft-cli/","h":"#add-a-uri-to-your-nfts","p":2041},{"i":2054,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. Next we'll set the DID for an existing NFT. But first we'll need to create the new DID. Run the following command: chia wallet did create -n New_DID That should produce an output similar to this: Successfully created a DID wallet with name New_DID and id 5 on key 2527948602 Successfully created a DID did:chia:1yxezm4nl4lhr4f7yr7yw0w4t9v6p32n2zt0skk0gumn4krfy8uxq8hhg9w in the newly created DID wallet Next, update the DID from previous example: chia wallet nft set_did -i 4 -di did:chia:1yxezm4nl4lhr4f7yr7yw0w4t9v6p32n2zt0skk0gumn4krfy8uxq8hhg9w -ni d7eed252af2055353a0ecbf734094345b3ffd793631a36b79ac80638a579b873 That should produce an output similar to this: Transaction to set DID on NFT has been initiated with: { 'aggregated_signature': '0xb0721860a9aba71a6e5bd2b55ea71c9019bf6e2e5018a34fef85df9b57b31abd8ea17b9604181050af8567ad54786a910bd83081075e7cef40b2f9826086730aa65a7dac8b27e76ec90ddfd865a9e3ec15847567d0f15b7a87c0c0a7e92464ea', 'coin_solutions': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0x33ae5afc65ec4404aba16bd9a0b17cfa23ddca9ac9bb49a03548167e286762ba', 'puzzle_hash': '0x8dd052a6c2af1d209d1217a33a8ed89fc41b95e2d1682fe914a36a7ef41dc94c' }, 'puzzle_reveal': ..., 'solution': ... }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xc8315a120525dd5cd658b9635cd0a5ab4bc2e878deaa57f6d295eb2dd7ed8ece', 'puzzle_hash': '0x20fa98c4a333ac84429cfe29b05d75782eb96e4dcd28e9ffb276309a2a8481d8' }, 'puzzle_reveal': ..., 'solution': ... } ]} This command will create a new NFT wallet (6 in this case), which is associated with the new DID. It will also set the NFT's DID to the newly created DID. To verify this, run the list command to show that the new DID has been applied: chia wallet nft list -i 6 That should produce an output similar to this: Wallet keys: 1. 455254876 2. - 2527948602 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 2527948602): NFT identifier: nft1euzj4fuh2h46nd5dpm6vh2cmqkvnh2zwwpzd9l0awx496zrhe0psfmklxm Launcher coin ID: cf052aa79755eba9b68d0ef4cbab1b05993ba84e7044d2fdfd71aa5d0877cbc3 Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: 3d77d58164db748ff874551af7ee7e5930b53ae63453efd451213e8bac1acb35 On-chain data/info: ((117 \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\" \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\") (104 . 0x14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0) (28021 \"https://license_example.com\" \"https://metadata_example.com\" \"https://metadata_example.com\") (27765 \"https://license_example.com\" \"https://license_example.com\") (29550 . 1) (29556 . 5) (28008 . 0x868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e) (27752 . 0x358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82)) Owner DID: did:chia:1yxezm4nl4lhr4f7yr7yw0w4t9v6p32n2zt0skk0gumn4krfy8uxq8hhg9w Royalty percentage: 300 Royalty puzhash: 827d2f77303929db5f3c26fd21b65901a342e36b9d912ac4440d6185f80d17a8 NFT content hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata hash: 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e License hash: 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 NFT series total: 5 Current NFT number in the series: 1 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1145481 Inner puzzle supports DID: True NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Metadata URIs: https://metadata_example.com https://metadata_example.com License URIs: https://license_example.com https://license_example.com","s":"Set the DID for an NFT","u":"/guides/nft-cli/","h":"#set-the-did-for-an-nft","p":2041},{"i":2056,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. The final step for the CLI portion of this tutorial is to transfer your NFTs to another address. This can be any XCH or TXCH address. If the recipient does not have an NFT wallet, then one will be created automatically. For this tutorial, we'll send the NFTs to a commonly-used burn address. The original puzzle hash of the burn address is 0x000000000000000000000000000000000000000000000000000000000000dead For testnet, the corresponding address is txch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ksh7qddh For mainnet, the corresponding address is xch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ks6e8mvy The reason these work as a burn address is that there is no known puzzle that matches this puzzle hash. Even if there were, it would have to be spendable. That is an extremely unlikely set of conditions to ever occur. chia wallet nft transfer -i 6 -ni 3d77d58164db748ff874551af7ee7e5930b53ae63453efd451213e8bac1acb35 -ta txch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ksh7qddh Which should also produce an output similar to this: NFT transferred successfully with spend bundle: { 'aggregated_signature': '0x83439590ef82effdfcb3eeafdb9ec0c0266b36d14dd21ad09a24d534d27cfb8f273c15e850cb332688b65b584197c39213cd05abe4616fb1df7525fff228d45d919d34a7a6ed70758003e086c3cf92800ec70ab60f9fd86b1537e9383790db54', 'coin_solutions': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0xd7eed252af2055353a0ecbf734094345b3ffd793631a36b79ac80638a579b873', 'puzzle_hash': '0x98c029490670291a1fbdbfc09bc4942a36a633f0b14e00e7670ee6413b5ddc4e' }, 'puzzle_reveal': ..., 'solution': ... }] }","s":"Transfer Your NFTs","u":"/guides/nft-cli/","h":"#transfer-your-nfts","p":2041},{"i":2058,"t":"After you are comfortable with creating and using DIDs and NFTs on the testnet, you may wish to move to mainnet. Please keep in mind that there are extra risks inherent to publishing code on a public blockchain. For example, an NFT's data, metadata and license hashes are not allowed to change after minting. Proceed with caution. That said, the process is the same for both testnet and mainnet usage. When you are ready to move to mainnet, the first step is to run chia configure -t false, which will instruct Chia to switch your configuration to mainnet. You should also generate a new set of keys and be extra careful to protect your seed phrase. Happy minting!","s":"Mainnet Usage","u":"/guides/nft-cli/","h":"#mainnet-usage","p":2041},{"i":2061,"t":"Rather than simply copy what other blockchains had already done, we modeled our NFT standard after the traditional art world. Art is far from the only use case for Chia NFTs, but it was our starting point nonetheless. This document will guide you through the process of creating DIDs that conform to Chia's DID standard, as well as minting NFTs that adhere to Chia's NFT standard. It will demonstrate this functionality using both the command-line and RPCs on Windows, MacOS and Linux. It will also show you how to verify that your NFTs are working as designed in Chia's reference wallet. We'll use the testnet for most of this guide, but we'll also give you some tips on deploying NFTs on Chia's mainnet. For detailed instructions on running each of the commands from this tutorial, see: DID CLI reference NFT CLI reference DID RPC reference NFT RPC reference For more documentation about Chia NFTs and DIDs, see: Off-chain metadata format for NFT1 Explanation of NFT puzzles Explanation of DID puzzles","s":"About This Document","u":"/guides/nft-intro/","h":"#about-this-document","p":2059},{"i":2063,"t":"Chia NFTs focus on three key features: Marketplace Independence -- you never are required to transfer your NFT to a marketplace in order to sell it. While marketplace custody is allowed, self custody has been standard with Chia NFTs from Day 1. Consistent Provenance -- DIDs enable the tracking of an NFT's complete history. You are highly encouraged to attach your DID to all of the NFTs you create. The DID will later be used to verify the NFTs' authenticity. Digital Permanence -- You can add a list of links to your NFTs' data, metadata, and license. Each link is verified with a hash, which is permanently embedded in the NFT itself. If one link changes or disappears, you can rely on another existing link, or create a new one. Even if all of the links disappear, as long as someone maintains a copy of the original file, the owner can always prepend a new link to the list.","s":"Key features","u":"/guides/nft-intro/","h":"#key-features","p":2059},{"i":2065,"t":"While some creators may wish to release their NFTs as individual pieces (so-called \"1-of-1s\"), most will want to create a collection. This is a generic term for a set of NFTs that are intentionally grouped together. For example, an artist could release several paintings of fruit as a collection called \"Fruits of the World\". Series​ \"Series\" describes a set of distinct NFTs that belong together in a collection. Chia NFTs use two parameters in their off-chain metadata related to series: series_number is the sequence number of this NFT in the collection. Following the Fruits of the World example, if the collection consists of ten images of distinct types of fruit, these could be labeled \"Fruits of the World #1\", \"Fruits of the World #2\", etc. Typically, NFT collections will list the series number in each NFT's title. However, this is not mandatory. It is also possible to include the series number in the off-chain metadata. series_total is the total number of NFTs in the series. Creators have the option to either specify the series_total upon the collection's initial minting, or to leave this parameter unspecified. In the latter case, potential buyers won't know the total number that will be minted, which could have a negative impact on the price of individual NFTs. Edition​ \"Edition\" means multiple NFTs with identical data and metadata. In the NFT1 standard, the NFT's edition is part of the on-chain metadata. This means that it is built into the NFT itself. There are two parameters related to edition: edition_number is the sequence number of this NFT's edition. For example, if the collection contains ten identical images of an apple, the NFTs could be labeled Apple #1 of 10, Apple #2 of 10, etc. The edition_number would then be 1, 2, etc. If each NFT in a collection is distinct, then the edition_number for each NFT is 1. In this case, most NFT creators will choose not to specify this redundant edition_number. edition_total is the total number of identical NFTs that are part of this edition. If edition_number is specified for an NFT, then edition_total is also recommended to be specified. In the above example, each NFT that contains an identical apple image would have an edition_total of 10.","s":"Collections","u":"/guides/nft-intro/","h":"#collections","p":2059},{"i":2067,"t":"info As detailed in our CLVM reference, the CLVM cost for an XCH transaction with two inputs and two outputs is around 17 million. The cost for minting and modifying NFTs is significantly higher. The following chart shows the approximate CLVM cost (rounded up to the nearest million), as well as the recommended minimum fee (at 5 mojos per cost), and the approximate cost in USD. Note that the minimum fees listed here will only apply when the mempool is full. If the mempool is not full, then a 1-mojo fee will be sufficient for any of these spends to be included in the next transaction block. To view the current status of the mempool, see the Mempool Cost table on our dashboard site. (If the green line representing the current mempool cost is close to the red line representing the maximum cost, then the mempool is full, and the following table should be used.) Operation Cost (approx) Min fee (mojos) Cost in USD at $30/XCH Minting NFT without DID 53 million 265 million $0.00795 Minting NFT with DID 123 million 615 million $0.01845 Adding a URI to NFT without DID 41 million 205 million $0.00615 Transfer NFT with DID 67 million 335 million $0.01005 Assign DID to NFT 107 million 535 million $0.01605 Adding URI to NFT with DID 71 million 355 million $0.01065 Note about Python RuntimeError on Windows If you are running on Windows, you might occasionally see a Python Runtime Error. This is a known issue in Python and can be safely ignored. For example: chia stop -d all Exception ignored in: function _ProactorBasePipeTransport.__del__ at 0x000001A719716160 Traceback (most recent call last): File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\proactor_events.py\", line 116, in __del__ self.close() File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\proactor_events.py\", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\base_events.py\", line 746, in call_soon self._check_closed() File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\base_events.py\", line 510, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed daemon: {'ack': True, 'command': 'exit', 'data': {'success': True}, 'destination': 'client', 'origin': 'daemon', 'request_id': '0de5449121b6873ce18661b2adc4213d7dc795c2943ff7f4be9502058e8eaba0'}","s":"CLVM Cost","u":"/guides/nft-intro/","h":"#clvm-cost","p":2059},{"i":2069,"t":"This section will show you how to install the latest version of Chia, configure your installation to run on the testnet, sync your node, and obtain some TXCH. If you have already done all of these things, you can skip to the next section, Obtain images with corresponding hashes. tip Your firewall might give warnings when installing Chia. This is normal. Allow the installations to continue. You can either run on a full node or use the light wallet. You also have the option of installing from source or using a binary installer.","s":"Install Testnet","u":"/guides/nft-intro/","h":"#install-testnet","p":2059},{"i":2071,"t":"If you choose to run a binary installer, download the latest version of Chia from the Chia download page. After the installer has downloaded, execute it and Chia will install automatically. info If the chia command isn't already in your system's path, you can create an alias: Windows Linux/MacOS Be sure to replace and with the actual folder names. Set-Alias -Name chia \"C:\\Users\\\\AppData\\Local\\chia-blockchain\\app-\\resources\\app.asar.unpacked\\daemon\\chia.exe\" alias chia=\"/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia\"","s":"Binary installer","u":"/guides/nft-intro/","h":"#binary-installer","p":2059},{"i":2073,"t":"To install Chia from source, follow our installation guide, which includes instructions for installing on all supported operating systems.","s":"Installing from source","u":"/guides/nft-intro/","h":"#installing-from-source","p":2059},{"i":2075,"t":"By default, Chia will run on mainnet. To switch to the testnet (recommended) for this guide, see our testnet instructions.","s":"Switching to testnet","u":"/guides/nft-intro/","h":"#switching-to-testnet","p":2059},{"i":2077,"t":"We recommend that you use INFO level logging instead of the default WARNING level. To do this, run: chia configure --set-log-level INFO We recommend that you use a key pair for testnet that is separate from your mainnet keys. If you don't have a separate set of testnet keys, generate them: chia keys generate This will give an output such as the following: Generating private key Added private key with public key fingerprint 3049838316 (...) tip It is good security practice to use this set of keys for testnet development only. In case of key compromise, your TXCH and NFTs will be sandboxed from your XCH. If you generated new testnet keys in the last step, we recommend that you write down your seed phrase for later recovery. Run the following: chia keys show --show-mnemonic-seed You'll be shown your public and private keys. The last line of the output will be a list of 24 secret words. This is your seed phrase. Carefully copy the words on paper and store them in a secure location. Order is important. Showing all public and private keys Fingerprint: 3049838316 (...) Mnemonic seed (24 secret words): youth stomach social aware clay pottery benefit asthma mail cry rubber panda wife around provide atom cute sand staff exotic pink east gloom minute important Your seed phrase is all that is required to recover your wallet. If you lose your seed phrase, recovery will not be possible. If a bad actor gains access to your seed phrase, they'll be able to steal your Chia assets, including XCH, CATs and NFTs. info If you ever need to display your address, run chia keys show. This command will only output your public keys and address; your private keys and seed phrase will not be shown. Note: At this point we'll start the Chia light wallet, but not the full node. As noted above, the full node is not required for minting NFTs, but it will generally be faster than the light wallet. Start your wallet by running: chia start wallet Wait for your wallet to sync. You can view the status of your wallet with the following command: chia wallet show Be sure to select the correct key/fingerprint, which you obtained from the chia keys show command: Wallet keys: 1) 285637561 2) * 3049838316 (Not Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 3049838316): Wallet height: 938814 Sync status: Syncing... Syncing should only require a few minutes, unless your wallet has a large number of previous transactions. Eventually, the chia wallet show command will show that your wallet has been synced. For example: Wallet height: 938990 Sync status: Synced Balances, fingerprint: 3049838316 Chia Wallet: -Total Balance: 14.5 txch (14500000000000 mojo) -Pending Total Balance: 14.5 txch (14500000000000 mojo) -Spendable: 14.5 txch (14500000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 In order to continue, you'll need to have some TXCH in your wallet. If your total balance is 0, you can obtain 1 TXCH from our faucet. Copy the value of \"First wallet address:\" from the output of the chia keys show command. It will be a long string beginning with \"txch\". Open our testnet faucet page. Paste your address and click \"Submit\". You'll receive this message: Accepted. Your request is in the queue and will be processed in the order it was received. At some point you'll receive 1 TXCH. Depending on how busy the faucet and the testnet are, this could take several minutes. However, you don't need to wait for your coins to arrive before continuing. (Optional) Start the full node: chia start node chia_full_node: started Check the sync status: chia show -s Eventually, it will say Full Node Synced: Network: testnet11 Port: 58444 RPC Port: 8555 Node ID: 82a73b06b3a5f9493a3ac4e3d903026b39c85b748158ba41c623d531947f2a2a Genesis Challenge: 37a90eb5185a9c4439a91ddc98bbadce7b4feba060d50116a067de66bf236615 Current Blockchain Status: Full Node Synced Once you have a synced wallet and some TXCH, you may proceed to the next section. If your requested TXCH has not yet arrived, post your address on the #dev channel on Discord. Someone might be able to send some to you. Note about Chia wallets In Chia, each public/private key pair can hold multiple wallets of various types. A \"fingerprint\" is a 4-byte hash of a public key. The computer running the examples we'll use in the next sections had two public/private key pairs, and thus two fingerprints, labeled 1) and 2). Note that simultaneous syncing of multiple fingerprints is not currently possible. Whether you're using the CLI or the GUI (in general, not just for NFTs) you have to select one of the fingerprints to sync, while the other will be temporarily ignored and not synced. Within each of the fingerprints, you can store multiple wallets of various types. The default wallet is a Chia Wallet, aka a STANDARD_WALLET. This label is part of an enum with a value of 0. The other wallet types are as follows: STANDARD_WALLET = 0 RATE_LIMITED = 1 ATOMIC_SWAP = 2 AUTHORIZED_PAYEE = 3 MULTI_SIG = 4 CUSTODY = 5 CAT = 6 RECOVERABLE = 7 DECENTRALIZED_ID = 8 POOLING_WALLET = 9 NFT = 10 A few notes about this enum: The only types that are supported as of June 2022 are STANDARD_WALLET, DECENTRALIZED_ID, CAT, and NFT Each fingerprint/Wallet Key can support each of the following: One STANDARD_WALLET An unbounded number of CATs An unbounded number of DECENTRALIZED_IDs One NFT wallet per DECENTRALIZED_ID (where each NFT wallet is associated with exactly one DECENTRALIZED_ID) One additional NFT wallet that is not associated a DECENTRALIZED_ID If an existing NFT wallet is already associated with a DECENTRALIZED_ID, then an attempt to create a new NFT wallet associated with the same DECENTRALIZED_ID will pass, but it will not actually create the NFT wallet because it already exists If an existing NFT wallet is not associated with a DECENTRALIZED_ID, then an attempt to create a new NFT wallet that is not associated with a DECENTRALIZED_ID will pass, but it will not actually create the NFT wallet because it already exists In addition to a type, each wallet also has a Wallet ID. This is simply an integer that increments for each new wallet. For example, the following setup would be possible to run on a single computer: Wallet Key 1 (not synced) Chia Wallet (Type = STANDARD_WALLET, Wallet ID = 1) Marmot (Type = CAT, Wallet ID = 2) Wallet Key 2 (synced) Chia Wallet (Type = STANDARD_WALLET, Wallet ID = 1) NFT Wallet (Type = NFT, Wallet ID = 2) Marmot (Type = CAT, Wallet ID = 3) Spacebucks (Type = CAT, Wallet ID = 4) Wallet Key 3 (synced) Chia Wallet (Type = STANDARD_WALLET, Wallet ID = 1) NFT Wallet (Type = NFT, Wallet ID = 2, not associated with a DID) DID Wallet (Type = DECENTRALIZED_ID, Wallet ID = 3) DID Wallet (Type = DECENTRALIZED_ID, Wallet ID = 4) NFT Wallet (Type = NFT, Wallet ID = 5, associated with DID from Wallet ID 3) Under Wallet Key 3 of this setup, it would not be possible to create another NFT wallet that is not associated with a DID, or another DID wallet that is associated with the DID from Wallet ID 3. However, it would be possible to create an NFT wallet that is associated with the DID from WALLET ID 4. It would also be possible to create a new DID within Wallet Key 3.","s":"Configuration","u":"/guides/nft-intro/","h":"#configuration","p":2059},{"i":2079,"t":"For this guide, we'll obtain two images and hashes to be used for creating NFTs with the following use cases: CLI, with DID RPC, with DID Here's the general technique to obtain images and hashes: First, find an image to mint as an NFT. For this example, we'll use an image that is licensed in the public domain: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Then, calculate the image's hash. Here are three (of many) options: cURL with sha256sum. If you're on Windows, you'll need to run this command from Git Bash. curl -s https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg | sha256sum 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 *- cURL with shasum. If you're on Windows, you'll need to run this command from Git Bash. curl -s https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg | shasum -a 256 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 *- Save the image locally. Visit https://emn178.github.io/online-tools/sha256_checksum.html. Upload the image and click the Hash button. In all three cases, the hash for this sample image is 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0. The following is a list of the sample images and hashes this guide will use, along with the metadata and license information. Additionally, we'll use multiple copies of the Metadata URI with these NFTs.","s":"Obtain images with corresponding hashes","u":"/guides/nft-intro/","h":"#obtain-images-with-corresponding-hashes","p":2059},{"i":2081,"t":"URI: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata URI 1: https://pastebin.com/raw/PnaQGQiH Metadata URI 2: https://pastebin.com/raw/KTwUQ8hM Metadata Hash: e9e9366f050e90ceb04a4778f2adfa02dfb565327d225eb35101f0de553ac20b License URI: https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE License Hash: 30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6","s":"CLI, with DID","u":"/guides/nft-intro/","h":"#cli-with-did","p":2059},{"i":2083,"t":"URI: https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg Hash: 0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4 Metadata URI 1: https://pastebin.com/raw/BHZc1suk Metadata URI 2: https://pastebin.com/raw/bnzGwjmB Metadata Hash: 07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51 License URI: https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE License Hash: 30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6","s":"RPC, with DID","u":"/guides/nft-intro/","h":"#rpc-with-did","p":2059},{"i":2085,"t":"In theory you can use any hosting site to host your NFT images. However, do make sure that the service doesn't modify the image at all. Doing so will also change the hash and make it more likely to be lost long-term. The best way to verify this is to use each of the above techniques to generate the image hash, and make sure they all match. Certain decentralized services such as IPFS can be slow. The first time a user attempts to view an NFT in their wallet (before caching), it might take a long time to load. Chia NFTs use a list to store image URIs, so it is possible to add multiple locations to increase permanence. However, do make sure each image's hash is the same as the data hash.","s":"Where to store images for NFTs","u":"/guides/nft-intro/","h":"#where-to-store-images-for-nfts","p":2059},{"i":2087,"t":"Since the original release of this guide, a CHia Improvement Proposal (CHIP) that standardizes the JSON metadata schema for Chia NFTs has been finalized. See CHIP-7 for the correct formatting. Usage of this CHIP is recommended in order to give marketplaces the best opportunity to parse your NFTs' metadata properly. Note that additional NFT metadata CHIPs are likely to be released in the future. However, there are no plans to deprecate CHIP-7 when this happens.","s":"NFT Metadata Standards","u":"/guides/nft-intro/","h":"#nft-metadata-standards","p":2059},{"i":2090,"t":"In 2022, Chia built an internal solution for long-term storage of its prefarm. This tool has since been made public -- you can now lock your coins using the same solution as Chia used to lock its prefarm! This guide will show you how to get started. warning This tool was not originally developed with the broader ecosystem in mind. For this reason, the tool is provided as-is, with no guarantees of functionality, and with no support provided. Proceed with caution. Before continuing, you might want to familiarize yourself with the following documents: Basic description of how the custody tool works Flow chart to visualize how the custody tool works CLI reference for all custody commands used in this tutorial info The custody tool uses many parameters, each of which is important. You are highly recommended to test the tool thoroughly on the testnet before deploying it on mainnet.","s":"Intro","u":"/guides/custody-tool-user-guide/","h":"#intro","p":2088},{"i":2093,"t":"A synced full node (mainnet, testnet, or simulator) A synced Chia wallet Python 3.9 or greater (will not work with 3.8.x) Git command line tool Powershell 6 or greater (Windows only) Visual C++ Redistributable (Windows only)","s":"Requirements","u":"/guides/custody-tool-user-guide/","h":"#requirements","p":2088},{"i":2095,"t":"Clone the internal custody repository: git clone https://github.com/Chia-Network/internal-custody.git Change to the new directory: cd internal-custody Create a new virtual environment and then activate it: Windows Linux macOS python -m venv venv .\\venv\\Scripts\\Activate.ps1 python3 -m venv venv . ./venv/bin/activate python3 -m venv venv . ./venv/bin/activate Install the custody tool: pip install --extra-index-url https://pypi.chia.net/simple/ chia-internal-custody Note about pip warnings/errors You may receive pip warning and/or dependency errors for blspy and/or clvm-tools-rs (see example below). These can be safely ignored. ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. chia-blockchain 1.3.6.dev212 requires blspy==1.0.13, but you have blspy 1.0.9 which is incompatible. chia-blockchain 1.3.6.dev212 requires clvm-tools-rs==0.1.9, but you have clvm-tools-rs 0.1.7 which is incompatible. Successfully installed blspy-1.0.9 clvm-tools-rs-0.1.7 hsms-0.1.dev79 Test your installation: cic --help If you get a usage statement, then cic (Chia Internal Custody) has been installed properly.","s":"Steps to install","u":"/guides/custody-tool-user-guide/","h":"#steps-to-install","p":2088},{"i":2097,"t":"A few notes about the commands in this guide The cic commands for generating and signing keys are meant to be run from inside a Hardware Security Module (HSM). These commands are labeled as such. An HSM is a physical/offline security solution for creating and using cryptographic signatures. While testing the custody tool, it is OK to run these commands from a normal computer. However, for maximum security while running the custody tool on Chia's mainnet, you are recommended to use an HSM (or a similar solution). Most of the commands from this tutorial will not alter the blockchain. This includes all of the commands to be run from an HSM. Commands that will alter the blockchain are labeled as such. warning for windows users Windows uses different line endings than Linux and MacOS. If you only plan to use Windows for both generating and signing spend bundles, this won't be a problem. However, if you plan to generate your spend bundles on Windows and sign them using a Linux HSM, then you will need to modify the line endings before signing. The easiest way to accomplish this is with dos2unix. This is not included with Windows, so you will need to download it from SourceForge. The command to convert your spend bundles is then: -o In general, any time you encounter signing errors, be sure the correct line endings are being used for the OS you are using to sign.","s":"Command Notes","u":"/guides/custody-tool-user-guide/","h":"#command-notes","p":2088},{"i":2099,"t":"note These commands will not modify the blockchain. They will only create local files These commands should be run from an HSM Before the custody singleton can be created, you must first create the public/private key pairs to be associated with it. For this guide: m will initially be set to 2. This is security level, or \"lock level\" of the singleton. In other words, it's the number of keys required to sign for withdrawals and standard rekeys. n will initially be set to 3. This is the maximum lock level of the singleton. In other words, it's the total number of keys that will be associated with the singleton. Because n will initially be 3, we will create 3 keys now. m and n will be used later when setting up the singleton. When creating and using these keys on mainnet, you should only store one key on each computer. Signing therefore requires copying an unsigned spend bundle to each individual computer that holds a key. This process is explained in detail later in the guide. However, for this guide, we'll assume you're running an initial test using TXCH (and not actual XCH). In this case, it's OK to store multiple keys on the same computer while you get a feel for how the tool works. The command used to generate \"secret exponents\" (private keys) is hsmgen. This command is included with the cic installation. It doesn't take any arguments; it merely generates a secret exponent and outputs it to the command line. However, we want to save the secret exponents to files, so we will use the > key to redirect the output. We will create three separate keys. These can be named anything. For this guide we'll simply use numbers. Create a directory to hold your keys and spend bundles: mkdir keys_and_sb Change to the new directory: cd keys_and_sb Create and redirect the secret exponents: hsmgen > 1.se hsmgen > 2.se hsmgen > 3.se Use the hsmpk command to derive a public key from each secret exponent: hsmpk $(cat 1.se) > 1.pk hsmpk $(cat 2.se) > 2.pk hsmpk $(cat 3.se) > 3.pk As a result of running the hsmpk command, a public key will be added to a new text file for each key (1.pk, 2.pk, and 3.pk). If you are generating only one key per computer, you will need to copy the .pk (public key) files to the non-HSM machine, which will run a Chia node and be used for setting up the singleton in the next steps.","s":"Generate keys","u":"/guides/custody-tool-user-guide/","h":"#generate-keys","p":2088},{"i":2101,"t":"The custody tool uses the Chialisp singleton primitive. This section will show you how to set up a custody singleton for testing.","s":"Initialize the singleton","u":"/guides/custody-tool-user-guide/","h":"#initialize-the-singleton","p":2088},{"i":2103,"t":"note This command will not modify the blockchain. It will only create a local file This command should be run from outside an HSM important The cic init command will initialize the permanent layer of the singleton. None of this command's arguments may be changed later. For this guide, we'll create an example singleton that uses the values listed in the table below. As a reminder, these settings correspond to those used in the flow chart. Flag Example Value Description -d keys_and_sb The directory where the keys and spend bundles will be stored. -wt 600 seconds Withdrawal Timelock -- the minimum number of seconds that must have elapsed since the last withdrawal, rekey or clawback before a withdrawal can be initiated. -pc 1200 seconds Payment Claw back -- the minimum number of seconds that must elapse after initiating a withdrawal before the withdrawal can be completed. Clawbacks are possible during this window. -rt 300 seconds Rekey Timelock -- when attempting to begin a standard rekey, this is the minimum number of seconds that must have elapsed since the last withdrawal, rekey or claw back. For a slow rekey, this amount gets added for each key less than m. -rc 600 seconds Rekey Claw back -- the minimum number of seconds that must elapse after initiating a rekey before the rekey can be completed. Claw backs are possible during this window. -sp 900 seconds Slow rekey Penalty -- this amount gets added to the Rekey Timelock when a slow rekey is being performed. notes regarding the above table The singleton's time values are relative to when they're confirmed on chain The specific time values for this example were chosen for testing purposes only. In a mainnet custody solution, the values are typically measured in days (though still expressed in seconds) Begin by initializing the singleton (run from the keys_and_sb folder in this example): cic init -d . -wt 600 -pc 1200 -rt 300 -rc 600 -sp 900 As a result of running the cic init command, a binary file called Configuration (needs derivation).txt will be created in the -d location. This file will be used later to derive the root. Nothing has been added to the blockchain yet.","s":"Create the permanent layer","u":"/guides/custody-tool-user-guide/","h":"#create-the-permanent-layer","p":2088},{"i":2105,"t":"note This command will not modify the blockchain. It will only create a local file This command should be run from outside an HSM Now that you have keys and an underived configuration, you can run the derive_root command, which will set up the singleton's non-permanent layer, with the following settings: m (current lock level) n (maximum lock level) The public keys that comprise n, expressed as a comma-separated list This command includes an optional --configuration flag to specify the name and location of the configuration file. By default, the command will look in ./Configuration (needs derivation).txt. If the --configuration flag is not used, the .pk (public key) files that you previously created also need to be in the current directory. cic derive_root -pks \"1.pk,2.pk,3.pk\" -m 2 -n 3 You should receive the following response: Custody rules successfully added to configuration As a result of running this command, Configuration (awaiting launch).txt will be created. The configuration now includes both the permanent and non-permanent layers.","s":"Create the non-permanent layer","u":"/guides/custody-tool-user-guide/","h":"#create-the-non-permanent-layer","p":2088},{"i":2107,"t":"note This command will modify the blockchain This command should be run from outside an HSM In this step, you will run cic launch_singleton, which will create the singleton on the blockchain. In order to run this command, you will need to have at least 1 mojo in your wallet to create the singleton. The launch_singleton command also includes a recommended --fee flag to specify a blockchain fee in mojos. This fee is completely separate from the actual financing of the singleton, which will occur in a later step. It is also possible to launch the singleton using one wallet and fund it with another -- think of the singleton as a brand new wallet. Aside from the fees, the launch_singleton command includes an optional --configuration flag to specify the name and location of the configuration file. By default, the command will look in ./Configuration (awaiting launch).txt. Because this command modifies the blockchain, a synced wallet is required. To be sure your wallet is synced, run: chia wallet show If you have multiple fingerprints, select the one you want to use when launching the singleton. This wallet must contain at least 1 mojo, as well as sufficient funds to pay the fee if you are going to specify one. The output of chia wallet show must include Sync status: Synced. If this wallet is not yet synced, then you will need to wait for it to finish syncing before continuing. Once you have a synced wallet with sufficient funds, you can launch the singleton: cic launch_singleton --fee 10000000 The output of this command should be: Singleton successfully launched note The singleton will not be funded after running this command. It will have zero value until another command is run. In addition, your wallet's transaction history will not show the fee being deducted, nor will it show the single mojo being deducted to create the singleton. This is because creating the singleton is not a standard transaction that your wallet will recognize. However, your wallet's Total Balance will show the correct amount after the transaction has been processed. Congratulations, you have successfully launched the singleton! (You will need to wait for the next transaction block before it's added to the blockchain.) As a result of running this command, the configuration file's name has changed to Configuration (xxxxxx).txt, where xxxxxx is a hexadecimal value. For example: (venv) ~/internal-custody/keys_and_sb$ ls 1.pk 1.se 2.pk 2.se 3.pk 3.se 'Configuration (74905b).txt'","s":"Launch the singleton","u":"/guides/custody-tool-user-guide/","h":"#launch-the-singleton","p":2088},{"i":2109,"t":"note This command will not modify the blockchain This command should be run from outside an HSM At this point, the singleton should exist on the blockchain. However, it has not yet been funded. For now, let's view it. Currently your local custody database does not know about the singleton. Therefore, in order to view the singleton, you must first synchronize the localhost with the blockchain by running the sync command. The first time you run the sync command, you need to specify the configuration file, which will then be copied into your config database. For example: cic sync -c \"Configuration ().txt\" Be sure to replace with the actual value from your configuration file, and make sure to put quotes around the file name because it contains a space. This command does not produce any output. From now on, you don't need to specify the config file to synchronize your host with the blockchain. Instead, just run cic sync. To show the singleton's status without syncing, you can run cic show. However, you will typically want to sync before showing the status. To do this, run cic sync -s. For example: cic sync -s Current time: 1665072029 (10/07/2022, 00:00:29) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 0 - amount to claim: 0 Outstanding events: PAYMENTS: REKEYS: To view the configuration, run cic show and add the -c flag. To view the derivation info, run cic show and add the -d flag. You can also add both flags. For example: ~/internal-custody/keys_and_sb$ cic show -c -d Current time: 1665072285 (10/07/2022, 00:04:45) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 0 - amount to claim: 0 Outstanding events: PAYMENTS: REKEYS: Config: - current root: 74905b06591f9d2e615d313d18cfbcbeffcaabe2e70ccdeafda783bacaae52ef - withdrawal timelock: 600 seconds - payment clawback period: 1200 seconds - rekey cancellation period: 600 seconds Derivation Info: - lock level: 2 - max lock level: 3 - min keys to rekey: 1 - standard rekey timelock: 300 seconds - slow rekey penalty: 900 seconds - pubkeys: - bls123813p8yljrhgskmgqeukg3x6mszh3xtqwwx35t4g6dt0mk2xecyj7elr0fhhrm8t3w7q5zhdelgjlgdspjqxvs - bls123813uhsu0juw06z8vmtt5ncj6zcexmhtsfemvtj3jhv0vuxh9nqjdar59yh555muzrdpz2uflgzey3sgdnm8y9 - bls1238152jm50wh89tf70mwj4ncuukqcq6jqmf7pjgznm55c5qaggrvswzccwvsjgwmy9f4cvlx2j97kmh5uc2es6h Here's how to interpret this output: Singleton launcher ID: This shows the on-chain ID of your singleton amount left: This is the current value of the singleton. For now it is zero because it has not yet been funded amount to claim: This is the number of mojos currently in the process of being withdrawn. The money is effectively sitting in escrow, and will be able to be withdrawn after the withdrawal timelock has been fulfilled Outstanding events PAYMENTS: If there were a payment in progress, it would be shown here REKEYS: If there were a rekey in progress, it would be shown here Config current root: Puzzlehash of the singleton as it is currently configured withdrawal timelock: Number of seconds to wait before a withdrawal may be initiated payment clawback period: Number of seconds to wait before a withdrawal may be completed. During this period, clawback is possible rekey cancellation period: Number of seconds to wait before a rekey may be completed. During this period, cancellation is possible Derivation Info lock level: The number of keys required to sign for withdrawals and standard rekeys max lock level: The total number of keys min keys to rekey: The minimum number of keys that must sign for a slow rekey standard rekey timelock: The number of seconds since the last action before a standard rekey can be initiated slow rekey penalty: The number of seconds added as a penalty for all slow rekeys. This is in addition to the standard rekey timelocks that will vary depending on the number of keys signing pubkeys: The keys themselves","s":"Show the singleton","u":"/guides/custody-tool-user-guide/","h":"#show-the-singleton","p":2088},{"i":2111,"t":"note This command will not modify the blockchain This command should be run from outside an HSM In order to fund the singleton, we first need to obtain its address by running the p2_address command. This command contains an optional --prefix flag with a default value of xch. For this guide, we will need to set this flag to txch because we are running on a testnet: cic p2_address --prefix txch The response will be a Chia address, prefixed with txch in this example. tip If, at any point in your testing, you receive this error: ValueError: No configuration present You are likely in the wrong directory. By default, the commands in this tutorial assume you are currently in the directory containing Configuration (xxxxxx).txt. If not, change to that directory and try again. Note that even though this is the address of the singleton, which has a complex set of rules governing how it may be spent, it can still receive payments, just like coins that use the standard puzzle. We'll send money to it in the next step.","s":"Obtain the receive address","u":"/guides/custody-tool-user-guide/","h":"#obtain-the-receive-address","p":2088},{"i":2113,"t":"note This command will modify the blockchain This command should be run from outside an HSM Now that the singleton has been created and you have its address, you can fund it by sending it XCH or TXCH. A few things to keep in mind: The -a flag is the amount (in XCH/TXCH) to send to the singleton. For this guide, we'll send 1 TXCH The -t flag needs to specify the p2_address you calculated in the last step. Be sure to replace
in the example with the actual address You can optionally add a transaction fee (in XCH/TXCH) by using the -m flag. For this guide, we'll send 10 million mojos If your fee is greater than your singleton's value (as it might be if you're running on a testnet), you'll need to add the --override flag chia wallet send -a 1 -m 0.00001 -t
You should see 'inclusion_status': 'SUCCESS' in the output. To get the status of the transaction, run the command indicated at the end out the output. If you included a fee, it should be added to the blockchain within a few minutes. The output of this command should show Status: Confirmed. For example: chia wallet get_transaction -f 394934909 -tx 0x2728390c1b88a1f1b4db8afd314b099182f9fc78d6046877531d72d401d8aaf2 Response: Transaction 2728390c1b88a1f1b4db8afd314b099182f9fc78d6046877531d72d401d8aaf2 Status: Confirmed Amount sent: 1 TXCH To address: txch12cr83zr7vax0a7684uxjk7wdearypuk540alx90cy7efkq5448uqu6dd5t Created at: 2022-10-07 01:20:55","s":"Fund the singleton","u":"/guides/custody-tool-user-guide/","h":"#fund-the-singleton","p":2088},{"i":2115,"t":"note This command will not modify the blockchain This command should be run from outside an HSM Even though the blockchain is aware that the singleton has been funded, the cic tool won't yet know about said funding until a new sync is performed. Just like before, we'll sync and show the config in one command: cic sync -s Response: Current time: 1665085495 (10/07/2022, 03:44:55) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 0 - amount to claim: 1000000000000 Outstanding events: PAYMENTS: REKEYS: The amount to claim now shows the amount with which it was funded. The singleton is now set up. Observers can also use this command to verify that no payments or rekeys are currently being performed.","s":"Verify the singleton's status","u":"/guides/custody-tool-user-guide/","h":"#verify-the-singletons-status","p":2088},{"i":2117,"t":"If, at any point, you want to export your config's public, immutable information to be used by observer nodes, run cic export_config -p -f . For more info, see the CLI reference. The singleton has now been deployed, configured, and funded. In a real-life scenario, the private keys should be stored on geographically disperse HSMs. If any of those machines are compromised, there are several available mitigation options. These, along with standard withdrawals, will be discussed in the rest of this guide.","s":"(Optional) Export config","u":"/guides/custody-tool-user-guide/","h":"#optional-export-config","p":2088},{"i":2119,"t":"This section will give you a few basic use cases for running the custody tool. If you are going to use this tool with XCH, you should familiarize yourself with its functionality on a testnet. info If you are using an HSM, then it likely comes with a QR scanner, which can scan unsigned spend bundles. This is possible with the custody tool, but usage of QR scanners is beyond the scope of this guide.","s":"Custody tool usage","u":"/guides/custody-tool-user-guide/","h":"#custody-tool-usage","p":2088},{"i":2121,"t":"This test will run through the complete sequence of withdrawing money from the singleton. Be sure to have a singleton already set up and funded before attempting this. We'll use the same configuration here that was set up earlier in this guide. Initiate a payment​ note This command will not modify the blockchain This command should be run from outside an HSM This command generates an unsigned spend bundle which requires specific keys. Signers can take this spend bundle to an HSM for signing. To begin the payment process, use the cic payment command. For this example, we'll use the following arguments (see the CLI reference for all options): -f : The name of the file in which to save the unsigned spend bundle -pks: The public keys that will be used to sign the withdrawal. Exactly m keys must be included. The only keys allowed to sign are those that were originally used in the derive_root command -a: The number of mojos to withdraw -t: The recipient address (where to send the money to) -ap: Absorb all available payments (could add to transaction costs if more than one payment exists) We'll sign with keys 1 and 2, and we'll withdraw 1 billion mojos: cic payment -f withdrawal.unsigned -pks \"1.pk,2.pk\" -a 1000000000 -t -ap Response: Successfully wrote spend to withdrawal.unsigned In this example, the command set up the spend bundle to require keys 1 and 2 to sign. The spend bundle was saved to a file called withdrawal.unsigned in the local directory. Sign the payment​ note These commands will not modify the blockchain These commands should be run from inside an HSM Note that an HSM can show pubkeys, so you can double-check the keys to sign to make sure they match. To obtain a signature, you can show the unsigned spend bundle and sign it using each secret exponent. This can all be done in one step per key. The -y flag will skip confirmations; the --nochunks flag will read the whole spend bundle at once: Key 1 sign: cat ./withdrawal.unsigned | hsms -y --nochunks ./1.se Response: waiting for qrint-encoded signing requests > 5547654523626261714173624112533133683715952925226504045164577632098258283574049187046232825601458621027122981750092774640100661034682177649762432133608580806862808660897344776713144593910217683389248184948244557142841050155734002508539602944 Key 2 sign: cat ./withdrawal.unsigned | hsms -y --nochunks ./2.se Response: waiting for qrint-encoded signing requests > 5455332514029001283045217337060795248565102176100994026976453525467902615588200815715854582664277247425467234004349390984834806712914358095770913212413836197307868631626262017707255283205002485029295977250812644025408923358550690247700742144 This command outputs a signature encoded in base-10. Now you can put the signatures into files. Do this by echoing the output of the previous commands and redirecting them with the > character (be sure to use the actual signatures you just obtained; don't copy these lines verbatim): Key 1: echo 5547654523626261714173624112533133683715952925226504045164577632098258283574049187046232825601458621027122981750092774640100661034682177649762432133608580806862808660897344776713144593910217683389248184948244557142841050155734002508539602944 > ./withdrawal_1.sig Key 2: echo 5455332514029001283045217337060795248565102176100994026976453525467902615588200815715854582664277247425467234004349390984834806712914358095770913212413836197307868631626262017707255283205002485029295977250812644025408923358550690247700742144 > ./withdrawal_2.sig This command should have no output. The signatures are now stored in text files. Merge the payment​ note This command will not modify the blockchain This command should be run from inside an HSM This command will create the signed spend bundle, given the unsigned spend bundle and the individual signature(s). It will then redirect the signed spend bundle into its own text file. Note that the merging of signatures is possible because Chia uses BLS signatures. For this command, an arbitrary number of signatures can be merged. We'll use two signatures for this example. hsmmerge ./withdrawal.unsigned ./withdrawal_1.sig ./withdrawal_2.sig > withdrawal.signed The signed spend bundle is now loaded in a file called withdrawal.signed. This file can then be taken out of the HSM to be pushed to the blockchain. Push the transaction to the network​ note This command will modify the blockchain This command should be run from outside an HSM A few things to note: Even though this command will withdraw from the singleton, it still needs a local wallet if you want to include a blockchain fee The key to be used in this command is a local key, and not a signer's key from the singleton The fee will be added when the push_tx command is run; it's not built into the spend bundle This command will fail if -wt seconds (from the singleton's permanent layer) have not yet elapsed A synced full node is required to run this command Once you have the signed spend bundle on a synced node with some XCH/TXCH for a blockchain fee, you can complete the payment. We'll add a fee of 10 million mojos: cic push_tx -b ./withdrawal.signed -m 10000000 The withdrawal has now been added to the blockchain. However, the money has not yet reached its final destination. Instead, it will now sit in a \"drop coin\" (aka escrow) and cannot be withdrawn for at least (-pc) seconds, which is built into the singleton and cannot be changed. For this example, we used 1200 seconds for this value. View the payment's status​ note This command will not modify the blockchain This command should be run from outside an HSM This will show the new status now that the spend bundle has been pushed successfully: cic sync --show Response: Current time: 1665430954 (10/11/2022, 03:42:34) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 999000000000 - amount to claim: 0 Outstanding events: PAYMENTS: - PAYMENT to xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j of amount 1000000000 (Ready at: 10/11/2022, 03:53:09) REKEYS: As the output of this command shows, there is a new payment outstanding (PAYMENT to xch...). A few things to note: For this example, we explicitly specified a txch address as the recipient. However, the xch address is actually correct -- the tool is simply assuming that the recipient's puzzle hash must correspond to an xch address. If you check the puzzle hashes that correspond to both the address you specified previously and the address you see here, you'll see that they are the same. If (-pc) seconds have not elapsed since the drop coin's creation, the output will display (Ready at: ) If (-pc) seconds have elapsed, then the output will say (Ready) In either case, claw backs are allowed until the payment has been completed. (Even if the withdrawal is in \"Ready\" state, it can still be clawed back. However, because anyone can complete the withdrawal, claw backs should no longer be assumed to be available once the \"Ready\" state has been reached.) Note that even when the state is \"Ready\", the next transaction block will still need to be created before the withdrawal is actually ready. Transaction blocks happen every 52 seconds on average. Create a signed spend bundle for the completion​ note This command will not modify the blockchain This command should be run from outside an HSM info The cic complete command is valid for both payments and rekeys. Completion of both payments and rekeys require the same steps. Anyone can run the cic complete command, therefore there is no need to use an HSM for signing. The only argument necessary is the file in which to dump the completion. The completion step may only be performed after the timelock has expired. You have to enter the correct payment number, which should be 1 (the only option). There is no default, so pressing enter will cause an exception. cic complete -f complete.signed Which actions would you like to complete?: 1) PAYMENT to xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j of amount 1000000000 (Enter index of action to complete): 1 Successfully wrote spend to complete.signed Push the completion to the blockchain​ note This command will modify the blockchain This command should be run from outside an HSM The last step is to push the completion spend bundle to the blockchain. Just like before, it is possible to add a fee (from a regular wallet) by using the -m flag. cic push_tx -b ./complete.signed -m 10000000 Wallet keys: 1) 2104826454 2) * 394934909 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 394934909): {'status': 'SUCCESS', 'success': True} View the completion's status​ note This command will not modify the blockchain This command should be run from outside an HSM After waiting for the next transaction block, the singleton's status should show that there are no longer any pending payments or rekeys. cic sync --show Response: Current time: 1665444673 (10/11/2022, 07:31:13) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 999000000000 - amount to claim: 0 Outstanding events: PAYMENTS: REKEYS: View the recipient wallet​ note This command will not modify the blockchain This command should be run from outside an HSM Finally, you can run chia wallet show with the wallet that received the payment. The amount you requested to be withdrawn should now be in that wallet: chia wallet show Wallet keys: 1) * 2104826454 (Synced) 2) 394934909 Choose a wallet key [1-2] ('q' to quit, or Enter to use 2104826454): Wallet height: 1645720 Sync status: Synced Balances, fingerprint: 2104826454 Chia Wallet: -Total Balance: 0.001 txch (1000000000 mojo) -Pending Total Balance: 0.001 txch (1000000000 mojo) -Spendable: 0.001 txch (1000000000 mojo) -Type: STANDARD_WALLET -Wallet ID: 1","s":"Withdrawal","u":"/guides/custody-tool-user-guide/","h":"#withdrawal","p":2088},{"i":2123,"t":"Next, we'll set up a payment and claw it back before the timelock expires. This procedure is the same, regardless of whether you're clawing back a payment or cancelling a rekey. Set up the payment​ Before attempting a clawback, you will need to have a pending payment set up. You can do this by using the Withdrawal example. Here are the exact steps you need to follow in the initial setup: Initiate a payment Sign the payment Merge the payment Push the transaction to the network View the payment's status​ note This command will not modify the blockchain This command should be run from outside an HSM Just as with the Withdrawal example, you should now have a payment set up: cic sync --show Response: Current time: 1665449342 (10/11/2022, 08:49:02) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 0 Outstanding events: PAYMENTS: - PAYMENT to xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j of amount 1000000000 (Ready at: 10/11/2022, 09:06:24) REKEYS: Instead of completing the payment, we'll claw it back. If you want to test this feature, be sure to make the value of -pc sufficiently large to give yourself plenty of time to perform the clawback. In this example we still have 17 minutes remaining (Ready at minus Current time from the above output). Create an unsigned spend bundle for the clawback​ note This command will not modify the blockchain This command should be run from outside an HSM First you must create an unsigned spend bundle. You must use the same number of keys as what was originally used to create the withdrawal, though the keys themselves may be different. For example: cic clawback -f clawback.unsigned -pks \"1.pk,2.pk\" The response will list all current actions and ask you to select the relevant one (there is only one in this case): Which actions would you like to cancel?: 1) PAYMENT to xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j of amount 1000000000 (Enter index of action to cancel): 1 Successfully wrote spend to clawback.unsigned The output of this command will be a new unsigned spend bundle called clawback.unsigned in the current directory. Sign the claw back spend bundle​ note This command will not modify the blockchain This command should be run from inside an HSM First, obtain a signature for each secret exponent. Key 1: cat ./clawback.unsigned | hsms -y --nochunks ./1.se Response: waiting for qrint-encoded signing requests > 5617572660431363787553058817392163812258580313793542655056082446740816880100648794665997086438225603633337515952093150407485675122008233788343094621502437911685372306395928118377859520761458720081340782062961822350448155185721641650067108864 Key 2: cat ./clawback.unsigned | hsms -y --nochunks ./2.se Response: waiting for qrint-encoded signing requests > 5496141022527413795140392142791749626543641578544867369452281830415553842059214382267267226052143257511876046736609023208076789214741327005454027973933695181445866976555756190935832218493040438492214564090662465704518993609872998672415919104 Now you can put the signatures into files. Do this by echoing the output of the previous commands and redirecting them with the > character (be sure to use the actual signatures you just obtained; don't copy these lines verbatim): Key 1: echo 5617572660431363787553058817392163812258580313793542655056082446740816880100648794665997086438225603633337515952093150407485675122008233788343094621502437911685372306395928118377859520761458720081340782062961822350448155185721641650067108864 > ./clawback_1.sig Key 2: echo 5496141022527413795140392142791749626543641578544867369452281830415553842059214382267267226052143257511876046736609023208076789214741327005454027973933695181445866976555756190935832218493040438492214564090662465704518993609872998672415919104 > ./clawback_2.sig This command should have no output. The signatures are now stored in text files. Finally, merge the claw back signatures into a signed spend bundle. Note that an arbitrary number of signatures can be passed into this command. We'll use two signatures for this example. hsmmerge ./clawback.unsigned ./clawback_1.sig ./clawback_2.sig > clawback.signed Push the claw back to the network​ note This command will modify the blockchain This command should be run from outside an HSM Now that you have a signed spend bundle, all that remains is pushing it to the blockchain. As usual, you can include a blockchain fee by using the -m flag and selecting a wallet with sufficient funds. cic push_tx -b ./clawback.signed -m 10000000 Wallet keys: 1) 2104826454 2) * 394934909 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 394934909): {'status': 'SUCCESS', 'success': True} View the claw back's status​ note This command will not modify the blockchain This command should be run from outside an HSM If you view the singleton's status right away, you will still see the active PAYMENT. This is because the blockchain has yet to process the clawback: cic sync --show Response: Current time: 1665449644 (10/11/2022, 08:54:04) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 0 Outstanding events: PAYMENTS: - PAYMENT to xch1xdm7s8fq4kdrq28lulnhxcxq8h6gcsf0y5j643vqx4ec3z9dhq7sqxsa9j of amount 1000000000 (Ready at: 10/11/2022, 09:06:24) REKEYS: Wait a few minutes and run the same command again. You'll see that the clawback is now gone and the funds are now in amount to claim: cic sync --show Response: Current time: 1665449964 (10/11/2022, 08:59:24) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: Note that amount to claim: now has a positive value. This will automatically be absorbed into the singleton with the next spend. There is nothing else to do for now. The clawback was successful.","s":"Clawback","u":"/guides/custody-tool-user-guide/","h":"#clawback","p":2088},{"i":2125,"t":"In this section, we'll demonstrate how to perform a standard rekey, using m keys. We'll provide a brand new set of keys, and we'll switch from the existing 2-of-3 multisig to a 3-of-5 configuration. Note that a slow rekey is also possible. In this case, only use 1 of the 3 keys would need to sign, and there would be a timelock penalty. The steps for completing a slow rekey are the same as those for a standard rekey, other than the number of signatures obtained. To perform a rekey, we will need to recreate the non-permanent layer. The permanent layer will remain intact (by definition). As a reminder, here is the status of the configuration before the rekey is initiated: cic show -c -d Current time: 1665969326 (10/17/2022, 09:15:26) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: Config: - current root: 74905b06591f9d2e615d313d18cfbcbeffcaabe2e70ccdeafda783bacaae52ef - withdrawal timelock: 600 seconds - payment clawback period: 1200 seconds - rekey cancellation period: 600 seconds Derivation Info: - lock level: 2 - max lock level: 3 - min keys to rekey: 1 - standard rekey timelock: 300 seconds - slow rekey penalty: 900 seconds - pubkeys: - bls123813p8yljrhgskmgqeukg3x6mszh3xtqwwx35t4g6dt0mk2xecyj7elr0fhhrm8t3w7q5zhdelgjlgdspjqxvs - bls123813uhsu0juw06z8vmtt5ncj6zcexmhtsfemvtj3jhv0vuxh9nqjdar59yh555muzrdpz2uflgzey3sgdnm8y9 - bls1238152jm50wh89tf70mwj4ncuukqcq6jqmf7pjgznm55c5qaggrvswzccwvsjgwmy9f4cvlx2j97kmh5uc2es6h Create new keys​ note This command will not modify the blockchain This command should be run from inside an HSM In this example, we'll create 5 new keys in the folder that contains the configuration. We'll use the same technique as we used earlier in the guide: hsmgen > 1_new.se hsmgen > 2_new.se hsmgen > 3_new.se hsmgen > 4_new.se hsmgen > 5_new.se hsmpk $(cat ./1_new.se) > 1_new.pk hsmpk $(cat ./2_new.se) > 2_new.pk hsmpk $(cat ./3_new.se) > 3_new.pk hsmpk $(cat ./4_new.se) > 4_new.pk hsmpk $(cat ./5_new.se) > 5_new.pk The old keys, new keys, and root configuration are now stored in the current directory: (venv) ~/internal-custody/keys_and_sb$ ls 1_new.pk 1_new.se 1.pk 1.se 2_new.pk 2_new.se 2.pk 2.se 3_new.pk 3_new.se 3.pk 3.se 4_new.pk 4_new.se 5_new.pk 5_new.se 'Configuration (74905b).txt' 'sync (b43314).sqlite' Re-derive the root​ note This command will not modify the blockchain This command should be run from outside an HSM Next we'll run cic derive_root, which will create a new configuration file. A few things to note about this command's arguments: -pks, -m and -n all refer to the values that will be applied to the next root (after the rekey) sync ().sqlite refers to the current database file Configuration (after rekey).txt is a new configuration file that will be created as a result of running this command cic derive_root -db './sync ().sqlite' -c './Configuration (after rekey).txt' -pks \"1_new.pk,2_new.pk,3_new.pk,4_new.pk,5_new.pk\" -m 3 -n 5 Response: Custody rules successfully added to configuration Configuration (after rekey).txt now exists in the current directory. Start the rekey​ note This command will not modify the blockchain This command should be run from outside an HSM Next, run start_rekey, which will create an unsigned spend bundle for the rekey. Note that in this command, -pks refers to the original keys that must sign to allow the rekey to happen. The configuration file from the -new flag contains all of the new info that will be used after the rekey has completed. cic start_rekey -f rekey.unsigned -pks \"1.pk,2.pk\" -new './Configuration (after rekey).txt' Response: Successfully wrote spend to rekey.unsigned The output of this command is the unsigned spend bundle that will be used for the rekey. Sign the rekey spend bundle​ note This command will not modify the blockchain This command should be run from inside an HSM Next we'll sign the spend bundle. This command must be run for each key with which you previously indicated you would sign (keys 1 and 2 in this case): cat ./rekey.unsigned | hsms -y --nochunks ./1.se Response: waiting for qrint-encoded signing requests > 5553916887262475184077140926040792461045541347543213333317025499263094062504028720464429695598620054538757674795116588032781458634437928597593286422775505503911468994161900539301149264496298971717210190554686077072886994338351766552885681152 cat ./rekey.unsigned | hsms -y --nochunks ./2.se Response: waiting for qrint-encoded signing requests > 5561137392380018602752549597282386367838345256392677171809614780347764174154608487537742644428466353746831639451621586320322685820178179047514852085991565214608652175820480007073564769669494661900487484133333312104972188050976529086895435776 Now you can put the signatures into files. Do this by echoing the output of the previous commands and redirecting them with the > character (be sure to use the actual signatures you just obtained; don't copy these lines verbatim): echo 5553916887262475184077140926040792461045541347543213333317025499263094062504028720464429695598620054538757674795116588032781458634437928597593286422775505503911468994161900539301149264496298971717210190554686077072886994338351766552885681152 > rekey_1.sig echo 5561137392380018602752549597282386367838345256392677171809614780347764174154608487537742644428466353746831639451621586320322685820178179047514852085991565214608652175820480007073564769669494661900487484133333312104972188050976529086895435776 > rekey_2.sig Finally, merge the rekey signatures into a signed spend bundle. Note that an arbitrary number of signatures can be passed into this command. For this example, we need to use the two signatures we just calculated: hsmmerge ./rekey.unsigned ./rekey_1.sig ./rekey_2.sig > rekey.signed As a result of running this command, a signed spend bundle will be created for the rekey. Push the rekey to the network​ note This command will modify the blockchain This command should be run from outside an HSM Now that you have a signed spend bundle, all that remains is pushing it to the blockchain. As usual, you can add a blockchain fee by using the -m flag: cic push_tx -b ./rekey.signed -m 1000000 Response: Wallet keys: 1) 2104826454 2) * 394934909 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 394934909): {'status': 'SUCCESS', 'success': True} View the rekey's status​ note This command will not modify the blockchain This command should be run from outside an HSM Wait a few minutes for the transaction to be processed, then update the singleton's status to show that the rekey is in progress. This will show the old and new puzzle roots: cic sync --show Response: Current time: 1665980851 (10/17/2022, 12:27:31) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: - REKEY from 74905b06591f9d2e615d313d18cfbcbeffcaabe2e70ccdeafda783bacaae52ef to 90ba2a1ce4ca7f094aa1d2c64b7281b18a4e211e704b43ed45bf39f61cdd67d2 (Ready at: 10/17/2022, 12:36:19) As the output of this command shows, there is a new rekey outstanding (REKEY from...). If (-rc) seconds have not elapsed since the drop coin's creation, the output will display (Ready at: ) If (-rc) seconds have elapsed, then the output will say (Ready) In either case, cancellation/clawback is allowed until the rekey is completed. (Even if the rekey is in \"Ready\" state, it can still be clawed back. However, because anyone can complete the rekey, claw backs should no longer be assumed to be available once it reaches the \"Ready\" state.) Note that even when the state is \"Ready\", the next transaction block will still need to be created before the rekey is actually ready. Transaction blocks happen every 52 seconds on average. Create a signed spend bundle for the completion​ note This command will not modify the blockchain This command should be run from outside an HSM info The cic complete command is valid for both payments and rekeys. Completion of both payments and rekeys require the same steps. Anyone can run the cic complete command. The only argument necessary is the file in which to dump the completion. After the time lock has expired, run cic complete to sign the rekey spend bundle. You do have to enter the correct rekey number. It should be 1 (the only option). There is no default, so pressing enter will cause an exception. cic complete -f ./rekey.signed Response: Which actions would you like to complete?: 1) REKEY from 74905b06591f9d2e615d313d18cfbcbeffcaabe2e70ccdeafda783bacaae52ef to 90ba2a1ce4ca7f094aa1d2c64b7281b18a4e211e704b43ed45bf39f61cdd67d2 (Enter index of action to complete): 1 Successfully wrote spend to ./rekey.signed Push the completion to the blockchain​ note This command will modify the blockchain This command should be run from outside an HSM Now that you have a signed spend bundle, you can actually push it to the blockchain: cic push_tx -b ./rekey.signed -m 1000000 Response: Wallet keys: 1) 2104826454 2) * 394934909 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 394934909): {'status': 'SUCCESS', 'success': True} You should receive a SUCCESS message, indicating that the transaction has been successfully pushed. View the completion's status​ note This command will not modify the blockchain This command should be run from outside an HSM After waiting for the next transaction block, the singleton's status should show there are no longer any pending payments or rekeys. cic sync --show Response: Configuration is outdated, please update it with command cic update_config Current time: 1665983685 (10/17/2022, 13:14:45) Config up to date: False Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: However, take note of this status message: Config up to date: False. We'll fix this in the next step. Update the local configuration​ At this point, the rekey has completed, but your local config is outdated. Any attempts at creating payments or rekeys will fail while the config is in this state. To demonstrate this, view the details of the config: cic show -d Response: Current time: 1665984049 (10/17/2022, 13:20:49) Config up to date: False Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: Derivation Info: - lock level: 2 - max lock level: 3 - min keys to rekey: 1 - standard rekey timelock: 300 seconds - slow rekey penalty: 900 seconds - pubkeys: - bls123813p8yljrhgskmgqeukg3x6mszh3xtqwwx35t4g6dt0mk2xecyj7elr0fhhrm8t3w7q5zhdelgjlgdspjqxvs - bls123813uhsu0juw06z8vmtt5ncj6zcexmhtsfemvtj3jhv0vuxh9nqjdar59yh555muzrdpz2uflgzey3sgdnm8y9 - bls1238152jm50wh89tf70mwj4ncuukqcq6jqmf7pjgznm55c5qaggrvswzccwvsjgwmy9f4cvlx2j97kmh5uc2es6h The three pubkeys are from the old configuration. Furthermore, the multisig is still a 2-of-3. To fix this, run the update_config command and pass in the new configuration: cic update_config -c './Configuration (after rekey).txt' Response: Configuration update successful Finally, let's look at the configuration details again: cic show -d Response: Current time: 1665984317 (10/17/2022, 13:25:17) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: Derivation Info: - lock level: 3 - max lock level: 5 - min keys to rekey: 1 - standard rekey timelock: 300 seconds - slow rekey penalty: 900 seconds - pubkeys: - bls123813fa002rgts3juyvcx9kfd6027weggz2n9q64uy97j3gvcfmnzwe7lqf28jg8kzslcufjul5zl6g3w6w943u - bls123813hck83sfk4xu7vjt4x30qz4ynyyc8y2mp7wc8xemrk225x2sdx45vpjwvu6gn0n2tf00e3y39y57zhw2e3m - bls12381jxsw44j37vcetuzr4ta7smf33phxj7n4rd9e927vckfx265yma488sfrktnsar7w87t4x6zveulkjshlr7c - bls123815gu3gzkdwyuhd3xyrlwt95ywjgvx7rkwaxqe64pwx2z03njc0s5awk7yqcdafdfdcp2s6lsx89vjkd0wct4 - bls1238156rg50emtnt6v5eua2rstgcd4fep8kch9xmcdhepvdqhlea6s3pulre838xxgme3dzur44jxfpcfsu5sq9t The correct keys are now being used. Note that each of the nodes that are allowed to sign will need to receive a copy of the new configuration.","s":"Rekey","u":"/guides/custody-tool-user-guide/","h":"#rekey","p":2088},{"i":2127,"t":"The final feature of the custody tool is \"lock level increase\". This feature will increase the security of the singleton by requiring an additional signature to sign withdrawals and rekeys. For this test, we'll start with the same configuration that was used after the rekey in the previous section. The current lock level (m) is 3 and the total number of keys (n) are 5: cic show -d Response: Current time: 1665984640 (10/17/2022, 13:30:40) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: Derivation Info: - lock level: 3 - max lock level: 5 - min keys to rekey: 1 - standard rekey timelock: 300 seconds - slow rekey penalty: 900 seconds - pubkeys: - bls123813fa002rgts3juyvcx9kfd6027weggz2n9q64uy97j3gvcfmnzwe7lqf28jg8kzslcufjul5zl6g3w6w943u - bls123813hck83sfk4xu7vjt4x30qz4ynyyc8y2mp7wc8xemrk225x2sdx45vpjwvu6gn0n2tf00e3y39y57zhw2e3m - bls12381jxsw44j37vcetuzr4ta7smf33phxj7n4rd9e927vckfx265yma488sfrktnsar7w87t4x6zveulkjshlr7c - bls123815gu3gzkdwyuhd3xyrlwt95ywjgvx7rkwaxqe64pwx2z03njc0s5awk7yqcdafdfdcp2s6lsx89vjkd0wct4 - bls1238156rg50emtnt6v5eua2rstgcd4fep8kch9xmcdhepvdqhlea6s3pulre838xxgme3dzur44jxfpcfsu5sq9t This section will show you how to increase the lock level from 3 to 4. Note that m + 1 keys are required to perform a lock level increase. The change happens instantly; there are no timelocks. Create an unsigned spend bundle​ note This command will not modify the blockchain This command should be run from outside an HSM We're increasing the lock level to 4, so 4 signatures are required. First, run increase_security_level to create an unsigned spend bundle in the current directory (the -f flag specifies a name of your choosing for the spend bundle's file): cic increase_security_level -db './sync (b43314).sqlite' -pks \"1_new.pk,2_new.pk,3_new.pk,4_new.pk\" -f lock.unsigned Successfully wrote spend to lock.unsigned Obtain the necessary signatures​ note This command will not modify the blockchain This command should be run from inside an HSM To obtain a signature, you can show the unsigned spend bundle and sign it using each secret exponent. This can all be done in one step per key. The -y flag will skip confirmations; the --nochunks flag will read the whole spend bundle at once: Key 1 sign: cat ./lock.unsigned | hsms -y --nochunks ./1_new.se Response: waiting for qrint-encoded signing requests > 5584585057520858257596568434434736468879879030051480798698830066925118374233799120275041845100800744509641108863621118287346338415119167517335089120981537696371131432139277792509432536571981918850999633459839528558573464018115269776291456000 Key 2 sign: cat ./lock.unsigned | hsms -y --nochunks ./2_new.se Response: waiting for qrint-encoded signing requests > 5596611223462712820925493669789023509892077063125281932973497767062668243757232230153671518302675106032197417392577895529625567483229164680652892471328071863919254108314305083687045227755330732629257306047484998281765256667290484092751463424 Key 3 sign: cat ./lock.unsigned | hsms -y --nochunks ./3_new.se Response: waiting for qrint-encoded signing requests > 5507035678252947832755627112345427198885684297293023719787488450243985548287900050057301009712766271669018549703372277803453181282204806972440692140562175749850514957566952251935126028322521661663226647342503359504131029556224237766358564864 Key 4 sign: cat ./lock.unsigned | hsms -y --nochunks ./4_new.se Response: waiting for qrint-encoded signing requests > 5483471380171606797033786582612064653552450181239095297578037519743188523667870753537879814000810537979853272471506390417310881058640555024925581663772094055089211664508376733226945171995301040054217933947567022837307451113580673098002732032 This command outputs a signature encoded in base-10. Now you can put the signatures into files. Do this by echoing the output of the previous commands and redirecting them with the > character (be sure to use the actual signatures you just obtained; don't copy these lines verbatim): Key 1: echo 5584585057520858257596568434434736468879879030051480798698830066925118374233799120275041845100800744509641108863621118287346338415119167517335089120981537696371131432139277792509432536571981918850999633459839528558573464018115269776291456000 > lock_1.sig Key 2: echo 5596611223462712820925493669789023509892077063125281932973497767062668243757232230153671518302675106032197417392577895529625567483229164680652892471328071863919254108314305083687045227755330732629257306047484998281765256667290484092751463424 > lock_2.sig Key 3: echo 5507035678252947832755627112345427198885684297293023719787488450243985548287900050057301009712766271669018549703372277803453181282204806972440692140562175749850514957566952251935126028322521661663226647342503359504131029556224237766358564864 > lock_3.sig Key 4: echo 5483471380171606797033786582612064653552450181239095297578037519743188523667870753537879814000810537979853272471506390417310881058640555024925581663772094055089211664508376733226945171995301040054217933947567022837307451113580673098002732032 > lock_4.sig Merge the spend bundle​ note This command will not modify the blockchain This command should be run from inside an HSM The hsmmerge command will create a signed spend bundle, given an unsigned spend bundle and the individual signature(s). It will then redirect the signed spend bundle into its own text file. Note that the merging of signatures is possible because Chia uses BLS signatures. For this command, an arbitrary number of signatures can be merged. We need to use all four of the obtained signatures in this case: hsmmerge ./lock.unsigned ./lock_1.sig ./lock_2.sig ./lock_3.sig ./lock_4.sig > lock.signed The output of this command is the signed spend bundle, which we've redirected into a text file. This file should be taken out of the HSM to be pushed to the blockchain. Push the lock level increase to the blockchain​ info This command will modify the blockchain This command should be run from outside an HSM Now that we have a signed spend bundle, we can push it to the blockchain. You can add a transaction fee by using the -m flag: cic push_tx -b ./lock.signed -m 1000000 Response: Wallet keys: 1) 2104826454 2) * 394934909 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 394934909): {'status': 'SUCCESS', 'success': True} The lock level increase will be added to the blockchain with the next transaction block. After waiting a few minutes, run cic sync --show to update your configuration: cic sync --show Response: Current time: 1665986785 (10/17/2022, 14:06:25) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: You should see Config up to date: True in the output of the above command. This should indicate that the lock level increase was successful. To verify this, run cic show -d: cic show -d Response: Current time: 1665986943 (10/17/2022, 14:09:03) Config up to date: True Singleton: - launcher ID: b433146cc20ef0e3d962423ddb1c6868cd9691e099ae579ab2518d1cd983885c - amount left: 998000000000 - amount to claim: 1000000000 Outstanding events: PAYMENTS: REKEYS: Derivation Info: - lock level: 4 - max lock level: 5 - min keys to rekey: 1 - standard rekey timelock: 300 seconds - slow rekey penalty: 900 seconds - pubkeys: - bls123813fa002rgts3juyvcx9kfd6027weggz2n9q64uy97j3gvcfmnzwe7lqf28jg8kzslcufjul5zl6g3w6w943u - bls123813hck83sfk4xu7vjt4x30qz4ynyyc8y2mp7wc8xemrk225x2sdx45vpjwvu6gn0n2tf00e3y39y57zhw2e3m - bls12381jxsw44j37vcetuzr4ta7smf33phxj7n4rd9e927vckfx265yma488sfrktnsar7w87t4x6zveulkjshlr7c - bls123815gu3gzkdwyuhd3xyrlwt95ywjgvx7rkwaxqe64pwx2z03njc0s5awk7yqcdafdfdcp2s6lsx89vjkd0wct4 - bls1238156rg50emtnt6v5eua2rstgcd4fep8kch9xmcdhepvdqhlea6s3pulre838xxgme3dzur44jxfpcfsu5sq9t The lock level is now set to 4. Note that the keys themselves haven't changed. However, four of the five will now be required to make any payments. The only way to decrease the lock level is with a rekey. Note that it is possible to run a rekey with identical keys, but at least one parameter must change for a rekey to be possible. In this case, you could run a rekey to decrease the lock level and keep all other values the same.","s":"Lock Level Increase","u":"/guides/custody-tool-user-guide/","h":"#lock-level-increase","p":2088},{"i":2131,"t":"An observer wallet is a wallet that cannot be used for sending transactions. In other words, it is a read-only wallet. This is a powerful concept for HODLers and farmers alike. info Currently, you need to understand how to use a command line interface (CLI) in order to set up an observer wallet. Eventually, we will make this setup easier for GUI users. Until the introduction of observer wallets, the Chia reference wallet always stored each public/private key pair locally. It was possible to maintain an offline key, for example in order to receive farmer rewards, but checking the balance required using a blockchain explorer. However, as a privacy feature, Chia wallets generate a new address each time they receive money. A blockchain explorer is therefore not always able to provide an accurate view of a wallet's history. With an observer wallet, you can view your wallet's history and balance without the risk of funds being stolen by someone who gains access to your computer.","s":"About","u":"/guides/observer-wallet-guide/","h":"#about","p":2128},{"i":2133,"t":"The concept of an observer wallet was first introduced to Chia's reference wallet in version 2.4.0. In this version, it is possible to create an observer wallet from a command line, and use it with the GUI. The user experience will improve as more features get added, but for now the core functionality is in place. Eventually, we will add the ability to sign transactions using an external signer.","s":"Current Status","u":"/guides/observer-wallet-guide/","h":"#current-status","p":2128},{"i":2135,"t":"This guide assumes you have a wallet set up in non-observer mode, and that you want to set up the same wallet in observer mode on a new computer where Chia is also installed. The first step is to obtain the wallet's master public key from the original computer. Open a command prompt or terminal window, and enter the following: chia keys show Locate your wallet's fingerprint. You will see something like the following: Showing all public keys derived from your master key: Label: Testnet11 Small Fingerprint: Master public key (m): Farmer public key (m/12381/8444/0/0): Pool public key (m/12381/8444/1/0): First wallet address:
Save a copy of the key shown with Master public key (m): in a text file. This file must only contain the public key, and it must be on a single line. Copy this file to the computer on which you want to load the wallet in observer mode. From your second computer, run the following command to add your wallet in observer mode: chia keys add -f -l \"\" Be sure to enter the actual file path, as well as whatever name you want to call your observer wallet. The output will look something like the following: Added public key with fingerprint You may also see a warning such as the following, which can be safely ignored: WARNING: using a farmer address which we might not have the private keys for. We searched the first 50 addresses. Consider overriding with WARNING: using a pool address which we might not have the private keys for. We searched the first 50 addresses. Consider overriding with Your observer wallet has been added.","s":"Set up","u":"/guides/observer-wallet-guide/","h":"#set-up","p":2128},{"i":2137,"t":"If your observer wallet is not immediately displayed in the GUI, click View --> Reload, and it should appear: Your observer wallet should now be displayed. It might have a different icon than the original wallet. Click this wallet to view it: You can now send funds to this wallet, and its balance will be updated, just like a non-observer wallet's balance. You can even redirect your farming rewards to this wallet: By definition, observer wallets are read-only. To test this, you can try sending funds to another wallet: This should result in an error:","s":"Usage","u":"/guides/observer-wallet-guide/","h":"#usage","p":2128},{"i":2139,"t":"This tutorial has been migrated to Wallet Guide.","s":"Offers tutorial (GUI)","u":"/guides/offers-gui-tutorial/","h":"","p":2138},{"i":2141,"t":"This video is an exercise in using fundamental Chialisp commands to print out the lyrics to the blockchain version of a classic song. You will learn Chialisp basics, including: print calling functions using modules looping over data cons building lists recursion Test your understanding of the concepts in the video by printing out the full list of the lyrics of the song. Your result should look similar to: (q. \"99 full nodes on the net, 99 full nodes on the net. Go out of town, your server goes down, 98 full nodes on the net.\" \"98 full nodes on the net, 98 full nodes on the net. Go out of town, your server goes down, 97 full nodes on the net.\" \"97 full nodes on the net, 97 full nodes on the net. Go out of town, your server goes down, 96 full nodes on the net.\" [...] \"1 full nodes on the net, 1 full nodes on the net. Go out of town, your server goes down, 0 full nodes on the net.\") If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Programming in Chialisp","u":"/guides/programming-chialisp-video-series/","h":"","p":2140},{"i":2143,"t":"The Chia Seeder & Crawler is a tool to keep track of the most reliable nodes on the Chia network. Each instance of the Chia Seeder maintains its own separate list of IP addresses of these nodes. It does so by crawling through the network, periodically revisiting known nodes from its list. If a node is either no longer available, or has exhibited untoward behavior, the Chia Seeder instance removes that node from its list. The Chia Seeder runs a mini-DNS server. Anyone can obtain an entry point into Chia’s decentralized and permissionless network via a simple DNS request for reliable node IPs. The Chia Seeder has very low memory and CPU requirements. It runs a faux full_node process and does not need its own node. Chia’s core developers have already been running an instance of the Chia Seeder for some time. You can view the current status of this instance by running: # IPv4 dig dns-introducer.chia.net # IPv6 dig -t AAAA dns-introducer.chia.net Chia has now decided to release the Seeder as a tool for anyone to maintain their own list of reliable nodes, which contributes to the further decentralization of Chia’s network by taking this tool off of the core team’s hands. Features: Implements peer statistics and exponentially moving averages over various time-windows, akin to those maintained by its relative, the bitcoin-seeder: https://github.com/sipa/bitcoin-seeder Runs a mini-DNS server on port 53, along with a full node to crawl the network. Stores peer IPs and peer statistics into a database, so that they are persisted across runs.","s":"Seeder User Guide","u":"/guides/seeder-user-guide/","h":"","p":2142},{"i":2145,"t":"The Chia network core developers endeavor to minimize the level of trust in the DNS servers associated with a Chia Seeder. In this regard, it is expected for each Chia Seeder to be run by an individual or organization recognized as well-intentioned within the Chia community. This entails following good host security practices, maintaining control of the underlying infrastructure, and not transferring control of the Chia Seeder they operate. Logging of DNS queries must not be retained longer than necessary (as might be required for the operation of the service), and must not be communicated to any third-party. Each entity maintaining a Chia Seeder DNS server is encouraged to make publicly available the details of their operating practices. In keeping with all the previous recommendations, a reachable email address or Keybase account must be published for inquiries regarding said operating practices. There are additional operation considerations for inclusion in the initial-config.yaml outlined below.","s":"Expectations for Chia Seeder operators","u":"/guides/seeder-user-guide/","h":"#expectations-for-chia-seeder-operators","p":2142},{"i":2147,"t":"$ sh install.sh $ . ./activate $ chia init You most certainly will want to specify your own configuration of a domain name server. Do so by editing the config file located at ~/.chia/mainnet/config/config.yaml, or by running chia configure. Please refer to the relevant section below for more details, or enter $ chia configure --help.","s":"Installation","u":"/guides/seeder-user-guide/","h":"#installation","p":2142},{"i":2149,"t":"On Ubuntu, it is possible that systemd-resolved already binds port 53. The Chia Seeder's built-in DNS server is run on the same port, and systemd-resolved takes precedence by default. Special instructions to free port 53 are provided here (points #2 and #3): https://github.com/team-exor/generic-seeder#exclamation-special-instructions-for-ubuntu-users-exclamation This amounts to editing /etc/systemd/resolved.conf so as to disable binding of systemd-resolved to port 53 by setting DNSStubListener=no, or, alternatively, entirely disabling the systemd-resolved service. Note that you will likely need to add a nameserver in '/etc/resolv.conf'. # Example resolv.conf nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844 nameserver 8.8.8.8 nameserver 8.8.4.4 Once you have completed freeing up port 53, you will then need to allow the python executable in your venv to have access to port 53. From an activated venv run whereis python and use the result in the command below: sudo setcap CAP_NET_BIND_SERVICE=+eip $(readlink -f /home/{{ user }}/chia-blockchain/.venv/bin/python) Note that anytime you change the python executable by rerunning sh install.sh or when apt upgrades python, you will need to re-run this command. Also, the exact path to python has changed as of version 2.4.3 and that new usual default is what is specified above.","s":"Special instructions on Ubuntu","u":"/guides/seeder-user-guide/","h":"#special-instructions-on-ubuntu","p":2142},{"i":2151,"t":"The config file is .chia/mainnet/config/config.yaml The default values are for running a DNS seeder for mainnet. At the very least, in the seeder: section of config.yaml, the variables domain_name, nameserver and soa need to be changed to reflect the NS entry for your server in a domain record. For a local DNS server setup, you will need control of a top-level domain (TLD) allowing administrator access for the purpose of creating additional DNS entries. Any domain registrar should be fine to use. note Note that while it may be possible to use an existing domain, it is recommended to register a new domain name to specifically run the Chia Seeder address. Proceed by logging into your domain registrar and navigating to the section pertaining to managing DNS records for your domain. Next, click or activate the button or mechanism for creating a new DNS record. Finally, create new type \"A\" and \"AAAA\" DNS record(s) for vps.example.com, which point at the ipv4 and ipv6 address(s) of the server running the seeder along with another new DNS record of type \"NS\" at my-chia-seeder.example.com with the nameserver set to the servers hostname, vps.example.com. note Note that these names are examples, and as long as the \"NS\" record points at the hostname of the server, the seeder will work. You can check that this is the case by running the following command (please ensure that you have dig on your system by installing the dnsutils or bind9-dnsutils package; for instance, on Ubuntu, $ sudo apt install dnsutils or $ sudo apt install bind9-dnsutils): $ dig -t NS my-chia-seeder.example.com whose output should display, among other information, the following: ;; ANSWER SECTION my-chia-seeder.example.com. 86400 IN NS vps.example.com For another example on how to set-up \"A\" and \"NS\" records for your domain using DigitalOcean, please refer to the following video, from 9:40 onward: https://www.youtube.com/watch?v=DsaxbwwVEXk&t=580s For AWS Route 53 - in the hosted zone you want to use e.g. example.com add a \"NS\"/nameserver record with the Record name of my-chia-seeder and a value of vps.example.com. As of January 2023, the Route 53 web user interface requires you first enter text into the Record name field as the Record type of MX will otherwise be greyed out in the pulldown. Then you will create both an A and a AAAA record for vps.example.com that corresponds to your vps's IP addresses. In config.yaml the domain_name is my-chia-seeder.example.com. and the nameserver is vps.example.com.. Note the trailing periods. The main thing to change in soa is adding a correct contact email in rname and optionally changing the serial_number.","s":"Configuration","u":"/guides/seeder-user-guide/","h":"#configuration","p":2142},{"i":2153,"t":"$ . ./activate $ chia start seeder will run both a crawler and a DNS server. Alternatively, $ . ./activate $ chia start crawler gives you the option to merely crawl the network so as to get a list of the connectable nodes, without having to set up a DNS server.","s":"Running","u":"/guides/seeder-user-guide/","h":"#running","p":2142},{"i":2155,"t":"You should test to make sure that the Chia node can connect. On a version of chia-blockchain newer than 1.6.2, stop node then delete peers.dat in ~/.chia/mainnet/db/. Modify your config.yaml to include only your dns seeder. If you tail the logs as you start up the node you should see the node connect and obtain both IPv4 and IPv6 nodes. 2023-01-14T15:19:30.969 full_node chia.full_node.full_node: INFO Received 32 peers from DNS seeder, using rdtype = A. 2023-01-14T15:19:31.010 full_node chia.full_node.full_node: INFO Received 32 peers from DNS seeder, using rdtype = AAAA. Sometimes dns takes a moment so seeing some initial flakiness here is not cause for concern. Just stop again, delete peers.dat and try the test again.","s":"Testing","u":"/guides/seeder-user-guide/","h":"#testing","p":2142},{"i":2157,"t":"$ . ./activate $ chia stop -d all","s":"Stopping","u":"/guides/seeder-user-guide/","h":"#stopping","p":2142},{"i":2159,"t":"There are a couple of criteria we all look for when adding a seeder to the initial config file. You must have an ICANN registered domain name. Your seeder host must support IPv6 and IPv4. We ask that you commit to a monthly uptime of 99.9% which is available enough to be reliable but also leaves flexibility to not need to run a cluster and gives you time for a reboot once in a while to keep up with things like security patches. We will be monitoring all of the seeders listed in the most recent version of initial-config.yaml. We highly recommend that you enable monitoring of your seeder as well. We are heavy users of Uptime Robot but anything similar will do. Being a known community member - the better you're known (pseudonymously is fine) - the more likely you are to be added. You should have an account on Keybase and we will need to know your Keybase handle, as you will be added to a seeder operator's private channel. The final criteria is geographical dispersion. If you are hosting in a region where we don't have a seeder, you are more likely to be added. We will want to know what country (and region if it's a large country e.g. North West US) - generally - your seeder will reside in to facilitate this. The easiest way to propose being added is to open a pull request for initial-config.yaml and include the information required from the four points above.","s":"Being included in config.yaml","u":"/guides/seeder-user-guide/","h":"#being-included-in-configyaml","p":2142},{"i":2161,"t":"In this video, Adam Kelly discusses security and checking arguments and signatures. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Security, Arguments, Signing","u":"/guides/security-arguments-signing-video-series/","h":"","p":2160},{"i":2163,"t":"This tutorial covers Chia offers using the command line interface. See also our GUI tutorial and our reference document. note This tutorial occasionally references a token called \"CAT King Cole\" (CKC). This token is for demonstration purposes only.","s":"Offers tutorial (CLI)","u":"/guides/offers-cli-tutorial/","h":"","p":2162},{"i":2165,"t":"Important -- If you are running on Windows, many of the commands from this tutorial will result in an exception that is outside of Chia's control. You can safely ignore it. Exception ignored in: Traceback (most recent call last): File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38\\lib\\asyncio\\proactor_events.py\", line 116, in __del__ self.close() File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38\\lib\\asyncio\\proactor_events.py\", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38\\lib\\asyncio\\base_events.py\", line 719, in call_soon self._check_closed() File \"C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38\\lib\\asyncio\\base_events.py\", line 508, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed For more info, see this issue on GitHub.","s":"Note about Windows","u":"/guides/offers-cli-tutorial/","h":"#note-about-windows","p":2162},{"i":2167,"t":"Chia's command line interface provides a set of commands to make, take, cancel, and list offers. To use offers on the command line, make sure you are using a virtual environment. For more info, see our comprehensive Offers references: CLI RPC","s":"CLI commands and reference","u":"/guides/offers-cli-tutorial/","h":"#cli-commands-and-reference","p":2162},{"i":2169,"t":"In this example, we'll offer 0.1 XCH in exchange for 10 USDS. A few assumptions: There is only one wallet fingerprint installed locally. (If you have more than one fingerprint, use the -f flag to specify which one to use.) Wallet ID 1 is a standard Chia wallet. Wallet ID 2 is a Stably USD wallet. We won't add a fee to the offer (if you want to add a fee, use the -m flag). Three flags are required to create the offer file: -o: The Wallet ID and amount being offered. -r: The Wallet ID and amount being requested. -p: The name of the offer file to be created. Here's the full command and result: (venv) $ chia wallet make_offer -o 1:0.1 -r 2:10 -p ~/offers/0.1_xch_for_10_usds.offer Creating Offer -------------- OFFERING: - 0.1 XCH (100000000000 mojos) REQUESTING: - 10 Stably USD (10000 mojos) Confirm (y/n): y Created offer with ID 62260d78a563620818a43c2cf837a8fca13a808f20ce62f4e42064f46f4c5a91 Use chia wallet get_offers --id 62260d78a563620818a43c2cf837a8fca13a808f20ce62f4e42064f46f4c5a91 -f 0123456789 to view status After running and confirming this command, the offer file ~/offers/0.1_xch_for_10_usds.offer will be created. To view the status, run chia wallet get_offers, specifying your offer's ID and your wallet's fingerprint: (venv) $ chia wallet get_offers --id 62260d78a563620818a43c2cf837a8fca13a808f20ce62f4e42064f46f4c5a91 -f 123456789 Record with id: 62260d78a563620818a43c2cf837a8fca13a808f20ce62f4e42064f46f4c5a91 --------------- Created at: 2021-12-27 08:05:07 Confirmed at: 0 Accepted at: N/A Status: PENDING_ACCEPT --------------- Congratulations! You have created an offer. A few things to note: Your wallet has reserved the coin(s) necessary to complete the offer. The blockchain has not recorded this offer. You can distribute the offer file wherever you want. Anyone who sees the offer file can attempt to accept it.","s":"Create a single-token offer","u":"/guides/offers-cli-tutorial/","h":"#create-a-single-token-offer","p":2162},{"i":2171,"t":"This example will use a different computer to accept the offer from the previous example. Keep in mind, offers are accepted on a first-come, first-served basis. To display your wallet's balance before accepting the offer, run chia wallet show: (venv) $ chia wallet show Wallet height: 1335630 Sync status: Synced Balances, fingerprint: 9876543210 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.0 xch (0 mojo) -Pending Total Balance: 0.0 xch (0 mojo) -Spendable: 0.0 xch (0 mojo) Wallet ID 2 type COLOURED_COIN Stably USD (Asset ID: 6d95dae356e32a71db5ddcb42224754a02524c615c5fc35f568c2af04774e589) -Total Balance: 10.0 (10000 mojo) -Pending Total Balance: 10.0 (10000 mojo) -Spendable: 10.0 (10000 mojo) To examine the offer, run chia wallet take_offer with the -e flag: (venv) $ chia wallet take_offer -e ~/0.1_xch_for_10_usds.offer Summary: OFFERED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) REQUESTED: - Stably USD (Wallet ID: 2): 10 (10000 mojos) Fees: 0 To accept the offer, remove the -e flag: (venv) $ chia wallet take_offer ~/0.1_xch_for_10_usds.offer Summary: OFFERED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) REQUESTED: - Stably USD (Wallet ID: 2): 10 (10000 mojos) Fees: 0 Would you like to take this offer? (y/n): y Accepted offer with ID d7b91ac37c41edfcf0009075b14d4665bfd1d1d2f1ee4087455147ca5134004c Use chia wallet get_offers --id d7b91ac37c41edfcf0009075b14d4665bfd1d1d2f1ee4087455147ca5134004c -f 9876543210 to view its status The offer has been successfully accepted. To see the offer's status, run the chia wallet get_offers command: (venv) $ chia wallet get_offers --id d7b91ac37c41edfcf0009075b14d4665bfd1d1d2f1ee4087455147ca5134004c -f 9876543210 Record with id: d7b91ac37c41edfcf0009075b14d4665bfd1d1d2f1ee4087455147ca5134004c --------------- Created at: 2021-12-27 08:41:22 Confirmed at: 1335560 Accepted at: 2021-12-27 08:41:22 Status: CONFIRMED --------------- Your wallet will now show your updated balances: (venv) $ chia wallet show Wallet height: 1335630 Sync status: Synced Balances, fingerprint: 9876543210 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.100000000000 xch (100000000000 mojo) -Pending Total Balance: 0.100000000000 xch (100000000000 mojo) -Spendable: 0.100000000000 xch (100000000000 mojo) Wallet ID 2 type COLOURED_COIN Stably USD (Asset ID: 6d95dae356e32a71db5ddcb42224754a02524c615c5fc35f568c2af04774e589) -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo)","s":"Accept a single-token offer","u":"/guides/offers-cli-tutorial/","h":"#accept-a-single-token-offer","p":2162},{"i":2173,"t":"You can cancel any offer you created, as long as it has not been accepted already. Start by listing all of your current offers: (venv) $ chia wallet get_offers Record with id: 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f --------------- Created at: 2021-12-27 09:24:30 Confirmed at: 0 Accepted at: N/A Status: PENDING_ACCEPT --------------- Cancel an offer with a Status of PENDING_ACCEPT: (venv) $ chia wallet cancel_offer -id 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f Record with id: 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f --------------- Created at: 2021-12-27 09:24:30 Confirmed at: 0 Accepted at: N/A Status: PENDING_ACCEPT Summary: OFFERED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) REQUESTED: - Stably USD (Wallet ID: 2): 10 (10000 mojos) Pending Balances: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) Fees: 0 --------------- Are you sure you wish to cancel offer with ID: 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f? (y/n): y Cancelled offer with ID 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f Use chia wallet get_offers --id 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f -f 123456789 to view cancel status To view the status of the cancellation, run chia wallet get_offers, specifying your offer's ID and your wallet's fingerprint: (venv) $ chia wallet get_offers --id 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f -f 123456789 Record with id: 47fa10e11c743b03bb1d182a6f915de1e563f40c5e6adf24698cbeb7732baa5f --------------- Created at: 2021-12-27 09:24:30 Confirmed at: 0 Accepted at: N/A Status: CANCELLED --------------- Note that this command canceled the offer on the blockchain by spending the coins you had offered, and creating new coins of the same type and value. This process did not involve taking the other end of the offer, so you did not receive any funds of the type you had requested. The end result is that your wallet's balance is the same as it was before you made the offer (minus any transaction fees). The advantage of canceling in this manner is that it ensures that nobody can accept your offer in the future. The disadvantages are that you will need to wait a few minutes for your transaction to be processed, and that you may have to pay a transaction fee. This is the default option, and the option that you should use if you have copied your offer file to another computer or website. If you have not sent the offer file elsewhere, you can cancel the offer by running the same command with the --insecure flag, which will un-reserve the coins for your offer. However, nothing will be recorded on the blockchain. If you have copied your offer file elsewhere, someone could still accept it. The advantages of this option are that it will cancel your offer instantly, and there's no need to include a fee.","s":"Cancel an offer","u":"/guides/offers-cli-tutorial/","h":"#cancel-an-offer","p":2162},{"i":2175,"t":"To create an offer with multiple tokens, simply add -o (offer) and -r (request) flags to the make_offer command as needed. For example: (venv) $ chia wallet make_offer -o 2:10 -o 3:10000 -r 1:0.1 -r 4:9000 -p ~/offers/10usds_10kckc_for_100bmojos_9ksbx.offer Creating Offer -------------- OFFERING: - 10 Stably USD (10000 mojos) - 10000 CAT King Cole (10000000 mojos) REQUESTING: - 0.1 XCH (100000000000 mojos) - 9000 Spacebucks (9000000 mojos) Confirm (y/n): y Created offer with ID 9f624c95b81ed3428f74cbe2e400d0d8cccbfe6169fe8e58422af8a86e0a6388 Use chia wallet get_offers --id 9f624c95b81ed3428f74cbe2e400d0d8cccbfe6169fe8e58422af8a86e0a6388 -f 123456789 to view status To view the offer with a summary of the tokens being offered, use the -s flag: (venv) $ chia wallet get_offers --id 9f624c95b81ed3428f74cbe2e400d0d8cccbfe6169fe8e58422af8a86e0a6388 -f 123456789 -s Record with id: 9f624c95b81ed3428f74cbe2e400d0d8cccbfe6169fe8e58422af8a86e0a6388 --------------- Created at: 2021-12-27 10:22:07 Confirmed at: 0 Accepted at: N/A Status: PENDING_ACCEPT Summary: OFFERED: - Stably USD (Wallet ID: 2): 10 (10000 mojos) - CAT King Cole (Wallet ID: 3): 10000 (10000000 mojos) REQUESTED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) - Spacebucks (Wallet ID: 4): 9000 (9000000 mojos) Pending Balances: - Stably USD (Wallet ID: 2): 10 (10000 mojos) - CAT King Cole (Wallet ID: 3): 10000 (10000000 mojos) Fees: 0 ---------------","s":"Create a multiple-token offer","u":"/guides/offers-cli-tutorial/","h":"#create-a-multiple-token-offer","p":2162},{"i":2177,"t":"The process to accept a multiple-token offer is the same as that of a single-token offer: (venv) $ chia wallet take_offer ~/offers/10usds_10kckc_for_100bmojos_9ksbx.offer Summary: OFFERED: - Stably USD (Wallet ID: 3): 10 (10000 mojos) - CAT King Cole (Wallet ID: 4): 10000 (10000000 mojos) REQUESTED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) - Spacebucks (Wallet ID: 2): 9000 (9000000 mojos) Fees: 0 Would you like to take this offer? (y/n): y Accepted offer with ID 5eb909c87df9ddf598906d95183141029c947c045aa369beee9ab699f08a9be1 Use chia wallet get_offers --id 5eb909c87df9ddf598906d95183141029c947c045aa369beee9ab699f08a9be1 -f 9876543210 to view its status The offer has been successfully accepted. To see the offer's status, run the chia wallet get_offers command: (venv) $ chia wallet get_offers --id 5eb909c87df9ddf598906d95183141029c947c045aa369beee9ab699f08a9be1 -f 9876543210 Record with id: 5eb909c87df9ddf598906d95183141029c947c045aa369beee9ab699f08a9be1 --------------- Created at: 2021-12-27 10:35:32 Confirmed at: 1335930 Accepted at: 2021-12-27 10:35:32 Status: CONFIRMED --------------- Your wallet will now show your updated balances: (venv) $ chia wallet show Wallet height: 1335942 Sync status: Synced Balances, fingerprint: 9876543210 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.0 xch (0 mojo) -Pending Total Balance: 0.0 xch (0 mojo) -Spendable: 0.0 xch (0 mojo) Wallet ID 2 type COLOURED_COIN Spacebucks (Asset ID: 78ad32a8c9ea70f27d73e9306fc467bab2a6b15b30289791e37ab6e8612212b1) -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) Wallet ID 3 type COLOURED_COIN Stably USD (Asset ID: 6d95dae356e32a71db5ddcb42224754a02524c615c5fc35f568c2af04774e589) -Total Balance: 10.0 (10000 mojo) -Pending Total Balance: 10.0 (10000 mojo) -Spendable: 10.0 (10000 mojo) Wallet ID 4 type COLOURED_COIN CAT King Cole (Asset ID: 1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a) -Total Balance: 10000.0 (10000 mojo) -Pending Total Balance: 10000.0 (10000 mojo) -Spendable: 10000.0 (10000 mojo)","s":"Accept a multiple-token offer","u":"/guides/offers-cli-tutorial/","h":"#accept-a-multiple-token-offer","p":2162},{"i":2179,"t":"In this example, we will offer 0.1 CATs (TAIL/Asset ID: 91aa...004r) in exchange for 1 TXCH (Wallet ID: 1). In addition, we will add an expiry timestamp so that this Offer will expire on Jan. 1, 2024. This is accomplished with the max_time flag: chia rpc wallet create_offer_for_ids '{\"offer\":{\"1\":1000000000000,\"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\":-100},\"fee\":10000000,\"driver_dict\":{},\"validate_only\":false, \"max_time\": 1704070800}' Response: { \"offer\": \"offer1qqr83wcuu2rykcmqvpsxvgqqemhmlaekcenaz02ma6hs5w600dhjlvfjn477nkwz369h88kll73h37fefnwk3qqnz8s0lle0xp70k7vrwmdq0sfnsf7jns276kh4lah7ark8fkc5kmjeav0nkkmyms8jvjqcrgd9jd46wvwh568qn8qlklu95fmvv060rwr0h4c8r55hwwal5y32l7mnr09ckf2gqqtv3a67c0rra0fyx8y6tlt8e2qk6t0m6s0hl0hd0n9kflhnm2lah9ryzn49yre20axxr3ue2a7neg06mvh7zte0uk9jmzekjndhl5v330qtd2f00q0zeeadv2tcljxmdhjxtdh68tdh68tdk68tp57nmrdkmm5dw7srzlhqhn8h04883476dz7x6mny6jzdcga33n4s8n884cxcekcemz6mk3jk4v925m8z9f8s877t4tn3kdx07q7h6w8t0r0krkc5m8j2m0xu9v3q6es4x0uy92c2us9xuwp0cgp3h0rpwdkcn37486waykwls2k94hn7zlllxl5lkeytd9wv2yxurz5x56r4h9sxq6mac5ea7e5k66wa2xcj0an6kqq4eyqpvpellpl7dayem3phq8yrrl4lspgr8urleflu9zs6ypnxm0e77awkul4mh05cu4qwekejhwru43ztcv7wj4yan0lur7dvkyp4ualchadvjdeluy6kpqevlehlqtxcld0mp2dqctl4l5u065h2utealkaxme27yv5knkhxxgrc7fd57trg0mq0alcz7yu76yexf3mfear3424luwmt87cjqkuw9jmjn26h7xz96yrlyufp6rxfyhl3w8rv2remjywkvwewme3paxt2v8yxhhmd6fdhnuwhnslq7957ye20uafl79echvvpkt2w86e06d985ravvym8huef3hvlkmk0enw4fu44ad3ltshuwqrjlu5cdphlpw3pdpy6led8dt7qwyl90s4ffl0vewuhdjwj70al622xtlc54m4d6n7nsxmpz647l405p2qpq7ec6x9np3m4n8e0h74ua3328nznycrm7j3uu300e0adn8m4hulnuu27jpduqfyctxs2pcyckg307epnev6xa4f7hkx20mlk4ellnlhlqs4kreh2rzju0w6rs5ma60mlxs6v8thtv9tl3lynp7m7nxr0eg5nuhkfaxclysmrf35dmrzgq4stk5nvem5aajer9n07m0rjv3z4l38trd0lgdthakh2setfl3d8kmuw933khanfem0hk66l97a7htg6a9vdegaxjgvl65d8j5es3tq4jtscqkwrgm789ux074amv0r3lqdwcv8t72et85hddwm7mkas2hh6464rx60yk6llk79v6v06rcx9gmljh7zkr335dq89q9flazmz67dwctlv4n8npld5lw3s8wkhj7v57h67rj0nsvw8tn3hesq24vhahlsda2ldk847g8caa0h95wfmtwt4lvm96edwklv0uf9m78svj4dz6mgaqv82a2fl8hn8u7f484yy9uzpe67jnmfea7d6ytj08da0jkkz96t2fv4fdc9ht06ulzf86g43y0pdj7nw3dlcjfwl37550wn5vda70zavknx4h5xxnfhjpy9slrkwcpvxt7704adwslkh8lfp76at40dd0ny6zg4dgjwlkrcphtgy7lsx3jccq\", \"success\": true, \"trade_record\": { \"accepted_at_time\": null, \"coins_of_interest\": [ { \"amount\": 1000000000, \"parent_coin_info\": \"0x3b5d9e333b75c20829f4acf07b122fbbb02df7bbeb033de5dee67df9ac201e24\", \"puzzle_hash\": \"0x7059f91bb16c1f24ee9677e2aa3bf454efc66316e69682db4f00004b707c63be\" }, { \"amount\": 97119866323, \"parent_coin_info\": \"0x0894a86fc98304960b258e2e68e5eebdafe9efff903a13037b5c22e3bb5513b2\", \"puzzle_hash\": \"0xdfcfc555683e8ae18a579fc9e1b62c37b26c73c7790948a9f0815c557e985920\" } ], \"confirmed_at_index\": 0, \"created_at_time\": 1695625850, \"is_my_offer\": true, \"pending\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": 1000000000, \"unknown\": 97119866323 }, \"sent\": 0, \"sent_to\": [], \"status\": \"PENDING_ACCEPT\", \"summary\": { \"fees\": 10000000, \"infos\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": { \"tail\": \"0x91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\", \"type\": \"CAT\" } }, \"offered\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": 100 }, \"requested\": { \"xch\": 1000000000000 } }, \"taken_offer\": null, \"trade_id\": \"0x0561bd8ab330bdc1c12231c6ddd75c4cda2d6e1ae5188274b228a77ff35efb35\", \"valid_times\": { \"max_blocks_after_created\": null, \"max_height\": null, \"max_secs_after_created\": null, \"max_time\": 1704070800, \"min_blocks_since_created\": null, \"min_height\": null, \"min_secs_since_created\": null, \"min_time\": null } } }","s":"Create an expiring Offer (RPC)","u":"/guides/offers-cli-tutorial/","h":"#create-an-expiring-offer-rpc","p":2162},{"i":2181,"t":"This section will detail a non-comprehensive list of issues you might encounter while making or taking offers.","s":"Potential issues","u":"/guides/offers-cli-tutorial/","h":"#potential-issues","p":2162},{"i":2183,"t":"Maker doesn't have enough money Taker doesn't have enough money Taker accepts an unknown CAT offer Taker attempts to accept an invalid offer Maker cancels an offer locally, Taker accepts the offer Whole coins must be reserved Offer involving a CAT1 is invalid","s":"Contents:","u":"/guides/offers-cli-tutorial/","h":"#contents","p":2162},{"i":2185,"t":"Let's say a Maker has wallets for XCH and CKC, with no money in either of them. (venv) $ chia wallet show Wallet height: 1344432 Sync status: Synced Balances, fingerprint: 1234567890 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.0 xch (0 mojo) -Pending Total Balance: 0.0 xch (0 mojo) -Spendable: 0.0 xch (0 mojo) Wallet ID 2 type COLOURED_COIN CAT King Cole (Asset ID: 1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a) -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) The maker attempts to make an ambitious offer: 100 XCH for 1 million CKC. However, the Maker does not have enough money to create this offer. As a result, an Exception is thrown: (venv) $ chia wallet make_offer -o 2:1000000 -r 1:100 -p ~/offers/100xch_for_1mckc.offer Creating Offer -------------- OFFERING: - 1000000 CAT King Cole (1000000000 mojos) REQUESTING: - 100 XCH (100000000000000 mojos) Confirm (y/n): y Exception from 'wallet' {'error': 'Error creating offer: insufficient funds in wallet 2', 'success': False}","s":"Maker doesn't have enough money","u":"/guides/offers-cli-tutorial/","h":"#maker-doesnt-have-enough-money","p":2162},{"i":2187,"t":"Let's say the Taker has a brand new wallet: (venv) $ chia wallet show Wallet height: 1336730 Sync status: Synced Balances, fingerprint: 1234567890 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.0 xch (0 mojo) -Pending Total Balance: 0.0 xch (0 mojo) -Spendable: 0.0 xch (0 mojo) And there's an outstanding offer requesting 0.1 XCH for 10,000 CKC: (venv) $ chia wallet take_offer -e ~/offers/10kckc_for_0.1xch.offer Summary: OFFERED: - CAT King Cole (Wallet ID: None): 10000 (10000000 mojos) REQUESTED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) Fees: 0 If the Taker attempts to accept the offer, an Exception will be thrown: (venv) $ chia wallet take_offer ~/offers/10kckc_for_0.1xch.offer Summary: OFFERED: - CAT King Cole (Wallet ID: None): 10000 (10000000 mojos) REQUESTED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) Fees: 0 Would you like to take this offer? (y/n): y Exception from 'wallet' {'error': 'insufficient funds in wallet 1', 'success': False}","s":"Taker doesn't have enough money","u":"/guides/offers-cli-tutorial/","h":"#taker-doesnt-have-enough-money","p":2162},{"i":2189,"t":"You should be extra careful before accepting offers for unknown CATs. This is because the offer might be a scam where a different -- and worthless -- token is actually being offered. Here's how the scam would work: Let's say a potential Taker has 0.1 XCH in their wallet. (venv) $ chia wallet show Wallet height: 1336860 Sync status: Synced Balances, fingerprint: 1234567890 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.1 xch (100000000000 mojo) -Pending Total Balance: 0.1 xch (100000000000 mojo) -Spendable: 0.1 xch (100000000000 mojo) There is an offer of 0.25 Shibe (an unknown CAT) in exchange for 0.1 XCH. Here's the offer from the Taker's perspective: (venv) $ chia wallet take_offer -e ~/offers/0.25_Shibe_for_0.1_XCH.offer Summary: OFFERED: - a2cadb541cb01c67c3bcddc73ecf33c8ffa37b0d013688904b2747cede020477 (Wallet ID: Unknown): 0.25 (250 mojos) REQUESTED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) The Taker decides to accept the offer and it is confirmed successfully: (venv) $ chia wallet take_offer ~/offers/0.25_Shibe_for_0.1_XCH.offer Summary: OFFERED: - a2cadb541cb01c67c3bcddc73ecf33c8ffa37b0d013688904b2747cede020477 (Wallet ID: Unknown): 0.25 (250 mojos) REQUESTED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) Fees: 0 Would you like to take this offer? (y/n): y Accepted offer with ID 4ac6a35e5fecb50d85604b19250a942afdc81876fe11db1f9d970c95dcf2c43f Use chia wallet get_offers --id 4ac6a35e5fecb50d85604b19250a942afdc81876fe11db1f9d970c95dcf2c43f -f 1234567890 to view its status Notice that the offer file was named 0.25_Shibe_for_0.1_XCH.offer, but the file name itself does not dictate the contents of the offer. The Taker may have inadvertently accepted an offer for a worthless token! Luckily, it is easy to avoid this scam by cross-referencing the unknown CAT's ID before accepting the offer. In this case, the Taker should verify from a trusted source that 4ac6a35e5fecb50d85604b19250a942afdc81876fe11db1f9d970c95dcf2c43f indeed corresponds to Shibe. Chia does install a list of known CATs by default, so this scam should be rare, but you should always be diligent in scrutinizing offers for unknown CATs.","s":"Taker accepts an unknown CAT offer","u":"/guides/offers-cli-tutorial/","h":"#taker-accepts-an-unknown-cat-offer","p":2162},{"i":2191,"t":"If the Maker has canceled the offer on the blockchain, or a Taker has already taken the offer, it is no longer valid. Any potential Takers will receive an Exception upon attempting to take the offer. For example: (venv) $ chia wallet take_offer ~/offers/0.1_xch_for_10_usds.offer Summary: OFFERED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) REQUESTED: - Stably USD (Wallet ID: 2): 10 (10000 mojos) Fees: 0 Would you like to take this offer? (y/n): y Exception from 'wallet' {'error': 'This offer is no longer valid', 'success': False}","s":"Taker attempts to accept an invalid offer","u":"/guides/offers-cli-tutorial/","h":"#taker-attempts-to-accept-an-invalid-offer","p":2162},{"i":2193,"t":"This example will demonstrate that if you need to cancel an offer, you should always do so on-chain unless you are certain the offer file has not left your computer. Let's say a Maker has 0.1 XCH and 1 USDS: (venv) $ chia wallet show Wallet height: 1344792 Sync status: Synced Balances, fingerprint: 9876543210 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.1 xch (100000000000 mojo) -Pending Total Balance: 0.1 xch (100000000000 mojo) -Spendable: 0.1 xch (100000000000 mojo) Wallet ID 2 type COLOURED_COIN Stably USD (Asset ID: 6d95dae356e32a71db5ddcb42224754a02524c615c5fc35f568c2af04774e589) -Total Balance: 1.0 (1000 mojo) -Pending Total Balance: 1.0 (1000 mojo) -Spendable: 1.0 (1000 mojo) The Maker offers 0.1 XCH in exchange for 10 USDS: (venv) $ chia wallet make_offer -o 1:0.1 -r 2:10 -p ~/offers/0.1xch_for_10usds.offer Creating Offer -------------- OFFERING: - 0.1 XCH (100000000000 mojos) REQUESTING: - 10 Stably USD (10000 mojos) Confirm (y/n): y Created offer with ID af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69 Use chia wallet get_offers --id af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69 -f 9876543210 to view status The Maker then decides to cancel the offer, but not on-chain (using the --insecure flag): (venv) $ chia wallet cancel_offer -id af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69 --insecure Record with id: af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69 --------------- Created at: 2021-12-29 10:03:10 Confirmed at: 0 Accepted at: N/A Status: PENDING_ACCEPT Summary: OFFERED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) REQUESTED: - Stably USD (Wallet ID: 2): 10 (10000 mojos) Pending Balances: - XCH (Wallet ID: 1): 0.0 (0 mojos) - Stably USD (Wallet ID: 2): 11 (11000 mojos) Fees: 0 --------------- Are you sure you wish to cancel offer with ID: af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69? (y/n): y Cancelled offer with ID af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69 The Maker verifies that the offer has indeed been canceled: (venv) $ chia wallet get_offers -id af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69 Record with id: af98fd1f63a8351829d2d2fd34c2e880021e154b9a3d23f215385c1b72831b69 --------------- Created at: 2021-12-29 10:03:10 Confirmed at: 0 Accepted at: N/A Status: CANCELLED --------------- After the offer has been canceled, a Taker notices the offer file and decides to accept it: (venv) $ chia wallet take_offer ~/offers/0.1xch_for_10usds.offer Summary: OFFERED: - XCH (Wallet ID: 1): 0.1 (100000000000 mojos) REQUESTED: - Stably USD (Wallet ID: 2): 10 (10000 mojos) Fees: 0 Would you like to take this offer? (y/n): y Accepted offer with ID 8592e2f96b13cf7eee0e1c5bdbf1ef523ee25e6aaf64214c80b9a6ddda17e4da Use chia wallet get_offers --id 8592e2f96b13cf7eee0e1c5bdbf1ef523ee25e6aaf64214c80b9a6ddda17e4da -f 2987410941 to view its status Later, the Maker notices that the offer has gone through, despite having been canceled: (venv) $ chia wallet show Wallet height: 1344854 Sync status: Synced Balances, fingerprint: 9876543210 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 0.0 xch (0 mojo) -Pending Total Balance: 0.0 xch (0 mojo) -Spendable: 0.0 xch (0 mojo) Wallet ID 4 type COLOURED_COIN Stably USD (Asset ID: 6d95dae356e32a71db5ddcb42224754a02524c615c5fc35f568c2af04774e589) -Total Balance: 11.0 (11000 mojo) -Pending Total Balance: 11.0 (11000 mojo) -Spendable: 11.0 (11000 mojo) If the offer had been canceled on-chain, the reserved coins would have been spent. At that point, even if someone else had gotten access to the offer file, the offer itself would've been invalid. The lesson here is do not use the --insecure flag unless you're certain the offer file has never left your computer.","s":"Maker cancels an offer locally, Taker accepts the offer","u":"/guides/offers-cli-tutorial/","h":"#maker-cancels-an-offer-locally-taker-accepts-the-offer","p":2162},{"i":2195,"t":"Under the coin set model, coins can be of any value. When an offer is created, the Maker's wallet must reserve enough coins to meet the requirements of the offer. The coin set model has many advantages over the account model, but it can create some situations that take time to understand. For example, let's say a Maker has 1 XCH and 0 USDS: (venv) $ chia wallet show Wallet height: 1345098 Sync status: Synced Balances, fingerprint: 9876543210 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 1.0 xch (1000000000000 mojo) -Pending Total Balance: 1.0 xch (1000000000000 mojo) -Spendable: 1.0 xch (1000000000000 mojo) Wallet ID 2 type COLOURED_COIN Stably USD (Asset ID: 6d95dae356e32a71db5ddcb42224754a02524c615c5fc35f568c2af04774e589) -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) The Maker received the XCH in one lump sum, so there is a single coin worth 1 XCH in the Maker's wallet. The Maker creates an offer of 0.1 XCH for 10 USDS: (venv) $ chia wallet make_offer -o 1:0.1 -r 2:10 -p ~/offers/0.1xch_for_10usds.offer Creating Offer -------------- OFFERING: - 0.1 XCH (100000000000 mojos) REQUESTING: - 10 Stably USD (10000 mojos) Confirm (y/n): y Created offer with ID 5708209d4502049b556d3e00782e36259651eb4fdc0da94f177916bca8e83c1b Use chia wallet get_offers --id 5708209d4502049b556d3e00782e36259651eb4fdc0da94f177916bca8e83c1b -f 125588179 to view status While the offer is pending, the Maker attempts to send 0.1 XCH to another address: (venv) $ chia wallet send -i 1 -a 0.1 -t Submitting transaction... Exception from 'wallet' {'error': \"Can't send more than 0 in a single transaction\", 'success': False} This should be possible -- the Maker has 0.9 XCH, even after taking the offer into account. The reason for the Exception is because the Maker only has a single coin worth 1 XCH, and that coin has already been reserved for the offer. It's similar to using a 10billtobuysomethingfor10 bill to buy something for 10billtobuysomethingfor1. Before you receive your change, you can't buy anything else. On the other hand, if you had started with two 5billsandboughtthesame5 bills and bought the same 5billsandboughtthesame1 item, you could've purchased something else while waiting for your change. The Maker can work around this issue by breaking the single large coin into multiple small ones. One simple way to do this would be to send money to him/herself: (venv) $ chia wallet send -i 1 -a 0.1 -t The Maker's wallet looks the same as before: (venv) $ chia wallet show Wallet height: 1345200 Sync status: Synced Balances, fingerprint: 9876543210 Wallet ID 1 type STANDARD_WALLET Chia Wallet -Total Balance: 1.0 xch (1000000000000 mojo) -Pending Total Balance: 1.0 xch (1000000000000 mojo) -Spendable: 1.0 xch (1000000000000 mojo) Wallet ID 2 type COLOURED_COIN Stably USD (Asset ID: 6d95dae356e32a71db5ddcb42224754a02524c615c5fc35f568c2af04774e589) -Total Balance: 0.0 (0 mojo) -Pending Total Balance: 0.0 (0 mojo) -Spendable: 0.0 (0 mojo) Even though the Maker's balance hasn't changed, there are now two coins that sum to 1 XCH. The maker can now recreate the old offer: (venv) $ chia wallet make_offer -o 1:0.1 -r 2:10 -p ~/offers/0.1xch_for_10usds.offer Creating Offer -------------- OFFERING: - 0.1 XCH (100000000000 mojos) REQUESTING: - 10 Stably USD (10000 mojos) Confirm (y/n): y Created offer with ID 7344ac4ee584725552d3f5a0c713aba2c4eeb1619525753b835c568e89de1274 Use chia wallet get_offers --id 7344ac4ee584725552d3f5a0c713aba2c4eeb1619525753b835c568e89de1274 -f 125588179 to view status This time if the Maker attempts to send 0.1 XCH to the same wallet as before, the transaction will succeed: (venv) $ chia wallet send -i 1 -a 0.1 -t Submitting transaction... Transaction submitted to nodes: One of the Maker's coins has been reserved for the offer, and the other has been sent to another wallet. The Maker can further break apart the large coin as needed.","s":"Whole coins must be reserved","u":"/guides/offers-cli-tutorial/","h":"#whole-coins-must-be-reserved","p":2162},{"i":2197,"t":"The CAT1 Standard reached its end of life (EOL) with block 2,311,760 in July 2022. Any offers that include a CAT1 on either side of the trade will result in an invalid offer error.","s":"Offer involving a CAT1 is invalid","u":"/guides/offers-cli-tutorial/","h":"#offer-involving-a-cat1-is-invalid","p":2162},{"i":2199,"t":"Offers blog entry Offers reference GUI tutorial Info on the coin set model","s":"Further reading","u":"/guides/offers-cli-tutorial/","h":"#further-reading","p":2162},{"i":2201,"t":"This document will guide you through the process of setting up Chia's Simulator. For additional technical resources, see the following: Simulator RPC API Simulator CLI Reference note It is possible to run the simulator and either Chia's testnet or mainnet simultaneously. This is because the simulator will use its own ports and directories.","s":"Simulator User Guide","u":"/guides/simulator-user-guide/","h":"","p":2200},{"i":2203,"t":"The simulator is included in the chia-blockchain GitHub repository (the same repository that contains Chia's node, and farmer code). To install this repository, see our instructions to install Chia from source. After you have installed from source and have activated your virtual environment (you should see (venv) on the left side of your command prompt), you are all set to install the simulator. warning If you installed Chia from the binary installation file, you cannot use this installation to run the simulator. Instead, follow the instructions linked above to create a new installation from source, then return to this guide.","s":"Prerequisites","u":"/guides/simulator-user-guide/","h":"#prerequisites","p":2200},{"i":2205,"t":"The simulator commands can all be accessed under chia dev sim. For a full list of the simulator commands, see our Simulator CLI Reference.","s":"Setup instructions","u":"/guides/simulator-user-guide/","h":"#setup-instructions","p":2200},{"i":2207,"t":"Run the following command and follow the prompts to create the simulator: chia dev sim create Detailed command instructions If you do not already have any keys in your OS keychain, you will be prompted to create one: No keys in keychain. Press 'q' to quit, or press any other key to generate a new key. After pressing any key (other than q), a new public/private key pair will be generated: Generating private key If you already have one or more keys installed, you will be prompted to select one: Fingerprints: If you already used one of these keys, select that fingerprint to skip the plotting process. Otherwise, select any key below. 1) 3339549250 2) 1239193935 3) 378808701 Choose a simulator key [1-3] ('q' to quit, or 'g' to generate a new key): 2 This command will create several k-19 plots. These plots are significantly smaller than the k-32 plots used on mainnet (8 MiB vs 100 GiB). They will take less than a minute to create on most computers. This command will also install a new version of Chia that contains a config file that is already set up for the simulator to run on its own ports. The last output of this command should look like the following (the path listed will depend on your user ID and OS): Configuration Wizard Complete. Starting Simulator now... Daemon not started yet Starting daemon chia_full_node_simulator: started Please wait, generating genesis block. Farmed 1 Transaction blocks Block Height is now: 1 Genesis block generated, exiting. Make sure your CHIA_ROOT Environment Variable is set to: C:\\Users\\\\.chia\\simulator\\main","s":"Create the simulator","u":"/guides/simulator-user-guide/","h":"#create-the-simulator","p":2200},{"i":2209,"t":"Now that you have created the simulator, you can set the CHIA_ROOT environment variable to point to the simulator's installation directory. This will enable you to run the simulator from outside of chia-blockchain: Windows Linux / MacOS $env:CHIA_ROOT='~/.chia/simulator/main' export CHIA_ROOT='~/.chia/simulator/main' note By setting the CHIA_ROOT path to the simulator in the current shell window (rather than globally), this enables you to run the simulator in tandem with a full node running on either the testnet or on mainnet. This is because the simulator uses different ports than a normal full node.","s":"Configure the environment","u":"/guides/simulator-user-guide/","h":"#configure-the-environment","p":2200},{"i":2211,"t":"This section will cover the basic commands for using the simulator.","s":"Usage instructions","u":"/guides/simulator-user-guide/","h":"#usage-instructions","p":2200},{"i":2213,"t":"Run the following command to start the simulator: chia dev sim start This command is the equivalent of chia start node on testnet and mainnet.","s":"Start the simulator","u":"/guides/simulator-user-guide/","h":"#start-the-simulator","p":2200},{"i":2215,"t":"note You will need to have your CHIA_ROOT set before using this command, otherwise it will try to connect to your mainnet or testnet node. Run the following command to start the wallet: chia start wallet","s":"Start your Chia wallet","u":"/guides/simulator-user-guide/","h":"#start-your-chia-wallet","p":2200},{"i":2217,"t":"Run the following command to verify that the Chia node is running and synced: chia show -s When connected to the simulator, the result will show that the network is simulator0 (and if newly created, the block height is 1). This is an example of what the output should look like: Detailed command output Network: simulator0 Port: 50127 RPC Port: 16872 Node ID: 5e4775f1f7d7db43d9d4b5685a15959b52042e40918112053c5e99f59cb8afb7 Genesis Challenge: eb8c4d20b322be8d9fddbf9412016bdffe9a2901d7edb0e364e94266d0e095f7 Current Blockchain Status: Full Node Synced Peak: Hash: 2d42fe5b2fe275994542a3884e93d0ddd4271f46f61731cc8e523253f3d54474 Time: Fri May 19 2023 17:24:38 China Standard Time Height: 1 Estimated network space: 84.355 MiB Current difficulty: 1024 Current VDF sub_slot_iters: 1024 Height: | Hash: 1 | b60936d7c4c7583ccbb4ddb173cefcb50ca10f8d49cee1c9bfc2f55337449b66","s":"Show node status","u":"/guides/simulator-user-guide/","h":"#show-node-status","p":2200},{"i":2219,"t":"Run the following command to obtain the status of the network, along with your farming address and balance (21 million TXCH from the prefarm): chia dev sim status This is an example of what the output should look like: Detailed command output Network: simulator0 Port: 50127 RPC Port: 16872 Node ID: 5e4775f1f7d7db43d9d4b5685a15959b52042e40918112053c5e99f59cb8afb7 Genesis Challenge: eb8c4d20b322be8d9fddbf9412016bdffe9a2901d7edb0e364e94266d0e095f7 Current Blockchain Status: Full Node Synced Peak: Hash: 2d42fe5b2fe275994542a3884e93d0ddd4271f46f61731cc8e523253f3d54474 Time: Fri May 19 2023 17:24:38 China Standard Time Height: 1 Estimated network space: 84.355 MiB Current difficulty: 1024 Current VDF sub_slot_iters: 1024 Height: | Hash: 1 | b60936d7c4c7583ccbb4ddb173cefcb50ca10f8d49cee1c9bfc2f55337449b66 Current Farming address: txch1wn0jp4q6n3eafeee2qj4khw8svdqnvj4hxvzffl9pjrv5wvzf5gsvyz908, with a balance of: 21000000.0 TXCH.","s":"Show simulator status","u":"/guides/simulator-user-guide/","h":"#show-simulator-status","p":2200},{"i":2221,"t":"You can farm a new block with the following command: chia dev sim farm You can also send the farming reward to a specific address: chia dev sim farm --target-address
And farm multiple blocks at once: chia dev sim farm --blocks 5 For more info on this command, see the CLI documentation.","s":"Farm a new block","u":"/guides/simulator-user-guide/","h":"#farm-a-new-block","p":2200},{"i":2223,"t":"The simulator's config is stored in ~/.chia/simulator/main/config/config.yaml. Just as with mainnet and testnet, if you make changes to this config, you will need to restart the simulator for the changes to take effect. This will not affect your regular Chia node.","s":"Edit the configuration","u":"/guides/simulator-user-guide/","h":"#edit-the-configuration","p":2200},{"i":2225,"t":"By default, as soon as a new spend bundle enters the mempool, a new block will be farmed. In certain cases this may not be the desired behavior. To disable auto farming, run the following command: chia dev sim autofarm off This action will take effect immediately, and there is no need to restart the simulator. Similarly, you can turn auto farming back on: chia dev sim autofarm on","s":"Manage auto farming","u":"/guides/simulator-user-guide/","h":"#manage-auto-farming","p":2200},{"i":2227,"t":"In this video, Matt Hauff (aka @quexington), walks you through the one-time issuance of a Chia Asset Token (CAT). CAT Admin Tool Github Repo If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Single Issuance CAT","u":"/guides/single-issuance-cat-video-series/","h":"","p":2226},{"i":2229,"t":"The next section of this tutorial will demonstrate how to create and use DIDs and NFTs using RPCs. If you wish to use the CLI instead, head to the CLI section. note It is very important that you replace any DID, id, name, or other value in the following commands with your own. This is just an example, we do not know the specific values your commands will need in order to work. Also, make sure to use a wallet fingerprint that has enough XCH to pay for transaction fees. info It is important that you format your NFTs' metadata properly, as this cannot be changed after minting. See CHIP-7 for the first (and so far only) standardized JSON metadata schema for Chia NFTs. Usage of this CHIP is recommended in order to give marketplaces the best opportunity to parse your NFTs' metadata properly. Note that additional NFT metadata CHIPs are likely to be released in the future. However, there are no plans to deprecate CHIP-7 when this happens.","s":"Minting NFTs With RPC","u":"/guides/nft-rpc/","h":"","p":2228},{"i":2231,"t":"important When running RPC commands with JSON inputs on Windows, you will need to escape all quotes with backslashes. Here is an example of the difference between the syntax: Windows Linux/MacOS chia rpc wallet create_new_wallet '{\\\"wallet_type\\\": \\\"nft_wallet\\\"}' chia rpc wallet create_new_wallet '{\"wallet_type\": \"nft_wallet\"}' In this section, we'll start with a brand new wallet fingerprint. However, you'll still need an existing DID to set up a new DID with this RPC. As detailed in the previous guide, you can use this command to do that: chia wallet did create -n \"Backup DID\" Now we will make the new DID containing 1 mojo, with the backup DID for recovery and a transaction fee: chia rpc wallet create_new_wallet '{\"wallet_type\": \"did_wallet\", \"did_type\": \"new\", \"amount\": 1, \"backup_dids\": [\"did:chia:1plzd3t49kek2clpfmy7eam3hkmqtm8lu66uw8r3v3qgdu5vecnfsmsdmm7\"], \"num_of_backup_ids_needed\": 1, \"fee\": 10000000}' That should produce an output similar to this: { \"my_did\": \"did:chia:19z0ladugc29x36580yejgp0s6czq0axt4tq0w7kr9uk4042asusqvxldga\", \"success\": true, \"type\": 8, \"wallet_id\": 4 } It will take a few minutes for your new wallet to be confirmed on the blockchain. You can run the following command to check the status: chia wallet show Which will eventually produce an output similar to this: Wallet keys: 1) * 2473516996 (Synced) 2) 2034978751 Choose a wallet key [1-2] ('q' to quit, or Enter to use 2473516996): Wallet height: 1150653 Sync status: Synced Balances, fingerprint: 2473516996 Chia Wallet: -Total Balance: 0.999999999999 txch (999999999999 mojo) -Pending Total Balance: 0.999999999998 txch (999999999998 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Backup DID: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1plzd3t49kek2clpfmy7eam3hkmqtm8lu66uw8r3v3qgdu5vecnfsmsdmm7 -Wallet ID: 2 Profile 1: -Total Balance: 0.0 -Pending Total Balance: 1.0 -Spendable: 0.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:19z0ladugc29x36580yejgp0s6czq0axt4tq0w7kr9uk4042asusqvxldga -Wallet ID: 4","s":"Create a DID Wallet","u":"/guides/nft-rpc/","h":"#create-a-did-wallet","p":2228},{"i":2233,"t":"note You are recommended to associate all NFTs with DIDs. This helps to establish the NFT's provenance, among other benefits. This guide will only discuss how to create NFTs in the recommended way, with DIDs. Create an NFT wallet that references your DID wallet's Wallet ID. Be sure to change the did_id to your local DID wallet's Wallet ID. Run the following command: chia rpc wallet create_new_wallet '{\"wallet_type\": \"nft_wallet\", \"name\": \"My NFT Wallet (RPC/DID)\", \"did_id\": \"did:chia:19z0ladugc29x36580yejgp0s6czq0axt4tq0w7kr9uk4042asusqvxldga\", \"fee\": 10000000}' That should produce an output similar to this: { \"success\": true, \"type\": 10, \"wallet_id\": 6 } You will now have two DIDs and one NFT wallet. Run the following command periodically so you know when they are added: chia wallet show Which will eventually produce an output similar to this: Wallet height: 1150656 Sync status: Synced Balances, fingerprint: 2473516996 Chia Wallet: -Total Balance: 0.999999999998 txch (999999999998 mojo) -Pending Total Balance: 0.999999999998 txch (999999999998 mojo) -Spendable: 0.999999999998 txch (999999999998 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Backup DID: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1plzd3t49kek2clpfmy7eam3hkmqtm8lu66uw8r3v3qgdu5vecnfsmsdmm7 -Wallet ID: 2 Profile 1: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:19z0ladugc29x36580yejgp0s6czq0axt4tq0w7kr9uk4042asusqvxldga -Wallet ID: 4 My NFT Wallet (RPC/DID): -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -DID ID: did:chia:19z0ladugc29x36580yejgp0s6czq0axt4tq0w7kr9uk4042asusqvxldga -Wallet ID: 6","s":"Create an NFT Wallet","u":"/guides/nft-rpc/","h":"#create-an-nft-wallet","p":2228},{"i":2235,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. You can mint your NFT with a DID like this: chia rpc wallet nft_mint_nft '{\"wallet_id\": 6, \"uris\": [\"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\"], \"hash\": \"0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4\", \"meta_uris\": [\"https://pastebin.com/raw/BHZc1suk\", \"https://pastebin.com/raw/bnzGwjmB\"], \"meta_hash\": \"07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51\", \"license_uris\": [\"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\"], \"license_hash\": \"30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6\", \"royalty_address\": \"txch1ape36g8rn8fm7d53z8rvngjkwhlkr83p28vnrpha94zt25szh8aq6anp3y\", \"royalty_percentage\": 175, \"target_address\": \"txch1ezy69gr6gpmu5e3hvyrn07ls7gqrw66s93pt555xcw50x25a2g7q3l3f8m\", \"edition_number\": 1, \"edition_total\": 5, \"fee\": 615000000}' That should produce an output similar to this: { \"spend_bundle\": { \"aggregated_signature\": \"0xb7cc94bff495c6ca81bced8c381db21923d9882709442343fc977b8647619bb075eef82925178a802e833a2a0097a3b90eb0cd0ae8dd839e90bba3a17293460ce2768abaf5ce7332b8daaee1d1cd12775a984619a0d1779b264fd51773214e4a\", \"coin_solutions\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0xa2982da3fda6f12e613eaf01770d8cd607102b9446c33793d580fee5d0c672be\", \"puzzle_hash\": \"0x811b594322ad73ccfb00726058a1d2fd919c233aa8feccf8afc07887d379c8a6\" }, \"puzzle_reveal\": ..., \"solution\": ... }, { \"coin\": { \"amount\": 999999999997, \"parent_coin_info\": \"0x00a986af4f2aecf5c32c2042c4651a9a3ceedb57fe68646258ab35815b31cefb\", \"puzzle_hash\": \"0xc16a7187151e46df4f91ebf0a5b7526d6ab55189ac91bf68c506791182db537d\" }, \"puzzle_reveal\": ..., \"solution\": ... }, { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x6a8f7d6883b5b566d2cbf45fe4a6a75a4134bc689aa5094181a7522155b604bd\", \"puzzle_hash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\" }, \"puzzle_reveal\": ..., \"solution\": ... }, { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0xefd2ec36dcdede4c48cdc87681f95416c1a181112ce919e54991b1ed5bbda0de\", \"puzzle_hash\": \"0xa50228088b095397af35ba2050aa9e11de210fe13152a6f462f1f6ea93f01886\" }, \"puzzle_reveal\": ..., \"solution\": ... } ] }, \"success\": true, \"wallet_id\": 6 } Here is a description of the parameters used in the command: Parameter Description \"wallet_id\" The ID of your NFT wallet. \"uris\" A list of URIs containing the image. \"hash\" The hash of the image. \"fee\" The transaction fee. \"did_id\" The DID associated with the NFT. \"meta_uris\" A list of URIs containing the metadata. \"meta_hash\" The hash of the metadata. \"license_uris\" A list of URIs containing the license. \"license_hash\" The hash of the license. \"royalty_address\" The wallet or smart coin address of the creator. \"royalty_percentage\" The royalty percentage expressed as tens of thousandths of a percent. \"target_address\" The address of the owner. \"edition_number\" If this NFT has multiple editions (multiple identical copies of an NFT), then this parameter indicates the edition number of this NFT. \"edition_total\" If this NFT has multiple editions, then this parameter indicates the total number of editions of this NFT. This parameter should be used with edition_number. Wait a few minutes for your NFT to be confirmed on the blockchain. You can use the following command to check whether it is minted periodically: chia rpc wallet nft_get_nfts '{\"wallet_id\": 6}' That should produce an output similar to this: { \"nft_list\": [ { \"chain_info\": \"((117 \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\") (104 . 0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4) (28021 \"https://pastebin.com/raw/BHZc1suk\" \"https://pastebin.com/raw/bnzGwjmB\") (27765 \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\") (29550 . 1) (29556 . 5) (28008 . 0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51) (27752 . 0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6))\", \"data_hash\": \"0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4\", \"data_uris\": [ \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\" ], \"launcher_id\": \"0xa2982da3fda6f12e613eaf01770d8cd607102b9446c33793d580fee5d0c672be\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6\", \"license_uris\": [ \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\" ], \"metadata_hash\": \"0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51\", \"metadata_uris\": [ \"https://pastebin.com/raw/BHZc1suk\", \"https://pastebin.com/raw/bnzGwjmB\" ], \"mint_height\": 1150673, \"nft_coin_id\": \"0x10965a0e7cf27b6ca377a8bf65c42c002a5ed83b71ddf0a2c2439626ef0ab1b4\", \"owner_did\": \"0x289ffeb788c28a68ea8779332405f0d60407f4cbaac0f77ac32f2d57d55d8720\", \"pending_transaction\": false, \"royalty_percentage\": 175, \"royalty_puzzle_hash\": \"0xe8731d20e399d3bf369111c6c9a25675ff619e2151d93186fd2d44b55202b9fa\", \"edition_number\": 1, \"edition_total\": 5, \"supports_did\": true, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" } ], \"success\": true, \"wallet_id\": 6 }","s":"Mint an NFT (With DID)","u":"/guides/nft-rpc/","h":"#mint-an-nft-with-did","p":2228},{"i":2237,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. There are two RPCs that show info about NFTs. This one will show all of the NFTs in a given wallet: chia rpc wallet nft_get_nfts '{\"wallet_id\": 6}' That should produce an output similar to this: { \"nft_list\": [ { \"chain_info\": \"((117 \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\") (104 . 0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4) (28021 \"https://pastebin.com/raw/BHZc1suk\" \"https://pastebin.com/raw/bnzGwjmB\") (27765 \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\") (29550 . 1) (29556 . 5) (28008 . 0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51) (27752 . 0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6))\", \"data_hash\": \"0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4\", \"data_uris\": [ \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\" ], \"launcher_id\": \"0xa2982da3fda6f12e613eaf01770d8cd607102b9446c33793d580fee5d0c672be\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6\", \"license_uris\": [ \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\" ], \"metadata_hash\": \"0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51\", \"metadata_uris\": [ \"https://pastebin.com/raw/BHZc1suk\", \"https://pastebin.com/raw/bnzGwjmB\" ], \"mint_height\": 1150673, \"nft_coin_id\": \"0xf5c8951c18dba6482df3447329a2e92f432c8d93d7bcec4ec5488df8763c321b\", \"owner_did\": \"0x289ffeb788c28a68ea8779332405f0d60407f4cbaac0f77ac32f2d57d55d8720\", \"pending_transaction\": false, \"royalty_percentage\": 175, \"royalty_puzzle_hash\": \"0xe8731d20e399d3bf369111c6c9a25675ff619e2151d93186fd2d44b55202b9fa\", \"edition_number\": 1, \"edition_total\": 5, \"supports_did\": true, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" } ], \"success\": true, \"wallet_id\": 6 } This RPC will show information relating to a specific NFT: chia rpc wallet nft_get_info '{\"wallet_id\": 6, \"coin_id\": \"0xf5c8951c18dba6482df3447329a2e92f432c8d93d7bcec4ec5488df8763c321b\"}' That should produce an output similar to this: { \"nft_info\": { \"chain_info\": \"((117 \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\") (104 . 0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4) (28021 \"https://pastebin.com/raw/BHZc1suk\" \"https://pastebin.com/raw/bnzGwjmB\") (27765 \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\") (29550 . 1) (29556 . 5) (28008 . 0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51) (27752 . 0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6))\", \"data_hash\": \"0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4\", \"data_uris\": [ \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\" ], \"launcher_id\": \"0xa2982da3fda6f12e613eaf01770d8cd607102b9446c33793d580fee5d0c672be\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6\", \"license_uris\": [ \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\" ], \"metadata_hash\": \"0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51\", \"metadata_uris\": [ \"https://pastebin.com/raw/BHZc1suk\", \"https://pastebin.com/raw/bnzGwjmB\" ], \"mint_height\": 1150673, \"nft_coin_id\": \"0xf5c8951c18dba6482df3447329a2e92f432c8d93d7bcec4ec5488df8763c321b\", \"owner_did\": \"0x289ffeb788c28a68ea8779332405f0d60407f4cbaac0f77ac32f2d57d55d8720\", \"pending_transaction\": false, \"royalty_percentage\": 175, \"royalty_puzzle_hash\": \"0xe8731d20e399d3bf369111c6c9a25675ff619e2151d93186fd2d44b55202b9fa\", \"edition_number\": 1, \"edition_total\": 5, \"supports_did\": true, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"success\": true }","s":"Get Info About Your NFTs","u":"/guides/nft-rpc/","h":"#get-info-about-your-nfts","p":2228},{"i":2239,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. As a reminder, NFTs contain URI lists for data, metadata, and license. The current owner may add URIs as needed, but they may not be removed. The URIs are recommended to hash to their corresponding data, metadata, and license hashes. This helps to obtain digital permanence while decreasing the likelihood of fraud from changing URIs. A few caveats: You can only update one type of key in one spend, and you can only add a single URI per spend. The nft_add_uri RPC takes one key and one URI. The key must be either u (data URI), mu (metadata URI), or lu (license URI). The new URI will be prepended to the existing list. If the new URI is inaccessible, some wallets may not continue to traverse the URI list. Each time you run the nft_add_uri RPC, the NFT's coin ID will change. You therefore should run either nft_get_nfts or nft_get_info to obtain the current coin ID before adding a new URI.","s":"Add a URI to Your NFTs","u":"/guides/nft-rpc/","h":"#add-a-uri-to-your-nfts","p":2228},{"i":2241,"t":"Get the NFT coin info: chia rpc wallet nft_get_nfts '{\"wallet_id\": 5}' Note that the NFT has one data URI, and no license or metadata URIs: { \"nft_list\": [ { ... \"data_uris\": [ \"https://images.pexels.com/photos/4812689/pexels-photo-4812689.jpeg\" ], ... \"license_uris\": [], ... \"metadata_uris\": [], ... \"nft_coin_id\": \"0x8470b7feda2f42459399bba36308449bfd24f46e4842258a25c60a0dfeb3f72c\", ... } ], \"success\": true, \"wallet_id\": 5 } Now, add the new data URI: chia rpc wallet nft_add_uri '{\"wallet_id\": 5, \"nft_coin_id\": \"0x8470b7feda2f42459399bba36308449bfd24f46e4842258a25c60a0dfeb3f72c\", \"key\": \"u\", \"uri\": \"new_datauri.com\"}' That should produce an output similar to this: { \"spend_bundle\": { \"aggregated_signature\": \"0xad392288e50e8a083baa032e212932377e9655260299d389eef9ee980e2705901146be1d67c0133b78a209ade9cbc05a198cd041e5de3ac4aa82e749eacef9b1ecab6951cd70bf9db3148366a2423e0df231c703628f60868a77368984ddca45\", \"coin_solutions\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x06673e7f4d5cb6fac227b5355036c2e541d8e72f02e3ac28b3d19e2568f1c60e\", \"puzzle_hash\": \"0xcdd2d2a6692a7bb544c16daa5dd9385b1282b20466425b92c3f2119a80a775bd\" }, \"puzzle_reveal\": ..., \"solution\": ... } ] }, \"success\": true, \"wallet_id\": 5 }","s":"Add Data URI","u":"/guides/nft-rpc/","h":"#add-data-uri","p":2228},{"i":2243,"t":"Get the NFT coin info: chia rpc wallet nft_get_nfts '{\"wallet_id\": 5}' That should produce an output similar to this: { \"nft_list\": [ { \"nft_coin_id\": \"0x1b3375608b8baa528a9e2fac3d460af82083e37b7078363513eaf65b17ef88fa\" } ], \"success\": true, \"wallet_id\": 5 } Now add the new metadata URI: chia rpc wallet nft_add_uri '{\"wallet_id\": 5, \"nft_coin_id\": \"0x1b3375608b8baa528a9e2fac3d460af82083e37b7078363513eaf65b17ef88fa\", \"key\": \"mu\", \"uri\": \"new_metadatauri.com\"}' That should produce an output similar to this: { \"spend_bundle\": { \"aggregated_signature\": \"0x8fd16016f682cb13c3a965874b0070b5cab6898914bbf95366fcf5d12bfdc63cc491429fc5a61f012d07cc3a298906f10235ad8a1186c1e3e14b2505fb7bb37c96b0d05e866c7caf299c40d878115ae748e73705503d75ea520483fcb5620383\", \"coin_solutions\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x8470b7feda2f42459399bba36308449bfd24f46e4842258a25c60a0dfeb3f72c\", \"puzzle_hash\": \"0x55ae8c90568ac90c0aca15f2a9275575ed577c3f168c537e6b3a30de6c44d83b\" }, \"puzzle_reveal\": ..., \"solution\": ... } ] }, \"success\": true, \"wallet_id\": 5 }","s":"Add Metadata URI","u":"/guides/nft-rpc/","h":"#add-metadata-uri","p":2228},{"i":2245,"t":"Get the NFT coin info: chia rpc wallet nft_get_nfts '{\"wallet_id\": 5}' That should produce an output similar to this: { \"nft_list\": [ { \"nft_coin_id\": \"0xe2487e41652b3aa01f0937423ccd9e5ed3d3442accb71974ad1e5e2b240ac2e2\" } ], \"success\": true, \"wallet_id\": 5 } Now add the new license URI: chia rpc wallet nft_add_uri '{\"wallet_id\": 5, \"nft_coin_id\": \"0xe2487e41652b3aa01f0937423ccd9e5ed3d3442accb71974ad1e5e2b240ac2e2\", \"key\": \"lu\", \"uri\": \"new_licenseuri.com\"}' That should produce an output similar to this: { \"spend_bundle\": { \"aggregated_signature\": \"0x91191c523ffc6608ce22ce05ea1e06e2058bf14b150aeb0940bb15189191a697dd3315cc7bf4353383505dcdf94e1bae00ea2e57f6ec89d75ad1a4ae43cad8a3ab17a7c8a26b74e9e6b73d8e9c6715f110472343f715f6eeddc44076a671173d\", \"coin_solutions\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x1b3375608b8baa528a9e2fac3d460af82083e37b7078363513eaf65b17ef88fa\", \"puzzle_hash\": \"0x67ab4378f5d52eeef02a550a849d6e54c5a0f8a575a8d28d6c696d144a879294\" }, \"puzzle_reveal\": ..., \"solution\": ... } ] }, \"success\": true, \"wallet_id\": 5 }","s":"Add License URI","u":"/guides/nft-rpc/","h":"#add-license-uri","p":2228},{"i":2247,"t":"You can now check the status of the URIs you just added: chia rpc wallet nft_get_nfts '{\"wallet_id\": 5}' Which will eventually produce an output similar to this: { \"nft_list\": [ { \"data_uris\": [ \"new_datauri.com\", \"https://images.pexels.com/photos/4812689/pexels-photo-4812689.jpeg\" ], \"license_uris\": [\"new_licenseuri.com\"], \"metadata_uris\": [\"new_metadatauri.com\"] } ], \"success\": true, \"wallet_id\": 5 } You can also check the list of NFTs once it has been updated: chia rpc wallet nft_get_nfts '{\"wallet_id\": 5}' Which will eventually produce an output similar to this: { \"nft_list\": [ { \"data_hash\": \"14836B86A48E1B2B5E857213AF97534704475B4C155D34B2CB83ED4B7CBA2BB0\", \"data_uris\": [ \"https://newuri.net\", \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\" ], \"did_owner\": \"\", \"edition_total\": 1, \"edition_number\": 1, \"launcher_id\": \"C2F3F7D54D254381FD33FBE2B6C031E5BE3BA1267215A2FA182E064ED6015FEF\", \"license_hash\": \"\", \"license_uris\": [], \"metadata_hash\": \"\", \"metadata_uris\": [], \"nft_coin_id\": \"D7FEC386B6F4A886ED406CAB09A541F85D3313206DA73FACF92B5A45158E3EEF\", \"royalty\": 0, \"version\": \"NFT0\" } ], \"success\": true, \"wallet_id\": 2 }","s":"Show the New URIs","u":"/guides/nft-rpc/","h":"#show-the-new-uris","p":2228},{"i":2249,"t":"important The values used in these commands are specific to this guide. Change any values that are different when you are following this guide such as the wallet id. This section will show you how to transfer an NFT to a new wallet. Generate a new set of keys, which will receive the NFTs: chia keys generate That should produce an output similar to this: Generating private key Added private key with public key fingerprint 3014780109 WARNING: using a farmer address which we might not have the private keys for. We searched the first 50 addresses. Consider overriding txch13amy3jfp8kkmqa87eswytj3a8ef22nm8zwsf3ckptpm8rv72qtgqgvk6fs with txch1ape36g8rn8fm7d53z8rvngjkwhlkr83p28vnrpha94zt25szh8aq6anp3y WARNING: using a pool address which we might not have the private keys for. We searched the first 50 addresses. Consider overriding txch13amy3jfp8kkmqa87eswytj3a8ef22nm8zwsf3ckptpm8rv72qtgqgvk6fs with txch1ape36g8rn8fm7d53z8rvngjkwhlkr83p28vnrpha94zt25szh8aq6anp3y Obtain the receive address for the new wallet with that fingerprint: chia keys show That should produce an output similar to this: Showing all public keys derived from your master seed and private key: Fingerprint: 2473516996 Master public key (m): a5eaca596431b5149b61ae707ab1de643db25d7415a29cd9a19eb7898c398c7da638e0ab06db1cf6a8d007c6032db636 Farmer public key (m/12381/8444/0/0): a20ce686aa8b466b3535a11f043b328f8dec0f129cf85e5c2bce27bf14c7d652805865dc75ae501ea71fe56418c3e291 Pool public key (m/12381/8444/1/0): b44a448fe6a003e02f0e84beb3cf8dc0774d941341443401241a848ebd2c2407ce07a0c6268c2d846903ee72bc70fc27 First wallet address: txch1ape36g8rn8fm7d53z8rvngjkwhlkr83p28vnrpha94zt25szh8aq6anp3y Fingerprint: 3014780109 Master public key (m): 96243c818a916a014c8c431c6f468e220e4b1f49d5a2acf9eab68d182be36b961677be48e080de6588bfe49be50942e3 Farmer public key (m/12381/8444/0/0): ad6bb3da07c886fccf49528a0f0b50d27fcde387c9cdf8d897651590663f0a7c7fe67d568da4edee83bafa9f6de77071 Pool public key (m/12381/8444/1/0): b879c9f384a7fc94f3195e613c0b22ff65718da9e0568394e205b7082c17dbfbb0935cefe29ab51bc2aed89e99b65ec2 First wallet address: txch1nqpall7xesjrk8eggqxxzly2jsntrgv4usfhk5uckg8gsxfmvpxsgjvzz5 Now you will need the coin ID of the NFT to transfer. chia rpc wallet nft_get_nfts '{\"wallet_id\": 6}' That should produce an output similar to this (note the nft_coin_id value): { \"nft_list\": [ { \"chain_info\": \"((117 \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\") (104 . 0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4) (28021 \"new_metadatauri.com\" \"https://pastebin.com/raw/bnzGwjmB\" \"https://pastebin.com/raw/BHZc1suk\" \"https://pastebin.com/raw/bnzGwjmB\") (27765 \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\") (29550 . 1) (29556 . 5) (28008 . 0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51) (27752 . 0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6))\", \"data_hash\": \"0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4\", \"data_uris\": [ \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\" ], \"launcher_id\": \"0xa2982da3fda6f12e613eaf01770d8cd607102b9446c33793d580fee5d0c672be\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6\", \"license_uris\": [ \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\" ], \"metadata_hash\": \"0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51\", \"metadata_uris\": [ \"new_metadatauri.com\", \"https://pastebin.com/raw/bnzGwjmB\", \"https://pastebin.com/raw/BHZc1suk\", \"https://pastebin.com/raw/bnzGwjmB\" ], \"mint_height\": 1150673, \"nft_coin_id\": \"0x0ee605a198dca410f4a820d4e2c8186c4d4e779d88330406b5e80579554e2213\", \"owner_did\": \"0x289ffeb788c28a68ea8779332405f0d60407f4cbaac0f77ac32f2d57d55d8720\", \"pending_transaction\": false, \"royalty_percentage\": 175, \"royalty_puzzle_hash\": \"0xe8731d20e399d3bf369111c6c9a25675ff619e2151d93186fd2d44b55202b9fa\", \"edition_number\": 1, \"edition_total\": 5, \"supports_did\": true, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" } ], \"success\": true, \"wallet_id\": 6 } Run the nft_transfer_nft RPC: chia rpc wallet nft_transfer_nft '{\"wallet_id\": 6, \"target_address\": \"txch1nqpall7xesjrk8eggqxxzly2jsntrgv4usfhk5uckg8gsxfmvpxsgjvzz5\", \"nft_coin_id\": \"0x0ee605a198dca410f4a820d4e2c8186c4d4e779d88330406b5e80579554e2213\"}' That should produce an output similar to this: { \"spend_bundle\": { \"aggregated_signature\": \"0x826377fd91e337bc8fb17342f8d2c6fdd2e6bb45a89b3ed6fa27b7b933e5829192ef9a4d59c2929dc2f29ba2833963d10aee8019023208fbe0c9ecdfd9c82467f3994cc19d18692ae156927e13e64dc55388341e1f7dac29f5f913aa9cc81370\", \"coin_solutions\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0xf5c8951c18dba6482df3447329a2e92f432c8d93d7bcec4ec5488df8763c321b\", \"puzzle_hash\": \"0x981893d399db72e3ed0a8b7622558a378311c2c196e30e75e74c75742badd918\" }, \"puzzle_reveal\": ..., \"solution\": ... } ] }, \"success\": true, \"wallet_id\": 6 } Sync the wallet you just transferred the NFT to. After syncing is complete, run this to check if the NFT wallet is created: chia wallet show That should produce an output similar to this: Wallet keys: 1) 2473516996 2) * 3014780109 (Synced) Choose a wallet key [1-2] ('q' to quit, or Enter to use 3014780109): Wallet height: 1159136 Sync status: Synced Balances, fingerprint: 3014780109 Chia Wallet: -Total Balance: 0.0 txch (0 mojo) -Pending Total Balance: 0.0 txch (0 mojo) -Spendable: 0.0 txch (0 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 NFT Wallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -Wallet ID: 2 You can get the NFT information the same way: chia rpc wallet nft_get_nfts '{\"wallet_id\": 2}' That should produce an output similar to this: { \"nft_list\": [ { \"chain_info\": \"((117 \"new_datauri.com\" \"https://images.pexels.com/photos/4812689/pexels-photo-4812689.jpeg\") (104 . 0x995b5e2837fa68292e88dd5f900ea83953aafcb6bfb7c086f1ba7671946c4600) (28021 \"new_metadatauri.com\") (27765 \"new_licenseuri.com\") (29550 . 1) (29556 . 1))\", \"data_hash\": \"0x995b5e2837fa68292e88dd5f900ea83953aafcb6bfb7c086f1ba7671946c4600\", \"data_uris\": [ \"new_datauri.com\", \"https://images.pexels.com/photos/4812689/pexels-photo-4812689.jpeg\" ], \"launcher_id\": \"0xd2a9c664cb131b4a9516ad4750e49924f77a1f784d43a6544998d5c4beac6d2d\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x\", \"license_uris\": [ \"new_licenseuri.com\" ], \"metadata_hash\": \"0x\", \"metadata_uris\": [ \"new_metadatauri.com\" ], \"mint_height\": 1150666, \"nft_coin_id\": \"0x3652afed15850be1d371f26f6a3789caf719fa15e79a10232ed64e6314c2f379\", \"owner_did\": null, \"pending_transaction\": false, \"royalty_percentage\": null, \"royalty_puzzle_hash\": null, \"edition_number\": 1, \"edition_total\": 1, \"supports_did\": false, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, { \"chain_info\": \"((117 \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\") (104 . 0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4) (28021 \"new_metadatauri.com\" \"https://pastebin.com/raw/bnzGwjmB\" \"https://pastebin.com/raw/BHZc1suk\" \"https://pastebin.com/raw/bnzGwjmB\") (27765 \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\") (29550 . 1) (29556 . 5) (28008 . 0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51) (27752 . 0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6))\", \"data_hash\": \"0x0ebedcd2cda065c75132218f745cecc3a1c131927f70b192b3fe6bbebaf437c4\", \"data_uris\": [ \"https://images.pexels.com/photos/1509582/pexels-photo-1509582.jpeg\" ], \"launcher_id\": \"0xa2982da3fda6f12e613eaf01770d8cd607102b9446c33793d580fee5d0c672be\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6\", \"license_uris\": [ \"https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE\" ], \"metadata_hash\": \"0x07cb3cc71732d1979abd357af86475e1e35f6c2b41ed2387b309e4b486a89a51\", \"metadata_uris\": [ \"new_metadatauri.com\", \"https://pastebin.com/raw/bnzGwjmB\", \"https://pastebin.com/raw/BHZc1suk\", \"https://pastebin.com/raw/bnzGwjmB\" ], \"mint_height\": 1150673, \"nft_coin_id\": \"0x4b2587ae95b451d21f63f5863bbcc48b796b54bf5ee249ded334408d2ab85500\", \"owner_did\": null, \"pending_transaction\": false, \"royalty_percentage\": 175, \"royalty_puzzle_hash\": \"0xe8731d20e399d3bf369111c6c9a25675ff619e2151d93186fd2d44b55202b9fa\", \"edition_number\": 1, \"edition_total\": 5, \"supports_did\": true, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" } ], \"success\": true, \"wallet_id\": 2 }","s":"Transfer Your NFTs","u":"/guides/nft-rpc/","h":"#transfer-your-nfts","p":2228},{"i":2251,"t":"After you are comfortable with creating and using DIDs and NFTs on the testnet, you may wish to move to mainnet. Please keep in mind that there are extra risks inherent to publishing code on a public blockchain. For example, an NFT's data, metadata and license hashes are not allowed to change after minting. Proceed with caution. That said, the code is the same for both testnet and mainnet usage. When you are ready to move to mainnet, the first step is to run chia configure -t false, which will instruct Chia to switch your configuration to mainnet. You should also generate a new set of keys and be extra careful to protect your seed phrase. Happy minting!","s":"Mainnet Usage","u":"/guides/nft-rpc/","h":"#mainnet-usage","p":2228},{"i":2253,"t":"Singletons are a fundamental concept in Chia. In this video, Chia developer Matthew Howard explains what Singletons are and how they're involved in creating Ethereum-like contracts in Chia. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Singleton Contracts","u":"/guides/singleton-contracts-video-series/","h":"","p":2252},{"i":2255,"t":"In this video, Chia developer Matt Hauff goes over what you need to set up so that you can start building in the next section: Coin Lifecycle and Testing.","s":"Tools and Setup","u":"/guides/tools-and-setup-video-series/","h":"","p":2254},{"i":2257,"t":"If you have further questions, join our Discord and ask in the #chialisp channel.","s":"1 - Environment Setup","u":"/guides/tools-and-setup-video-series/","h":"#1---environment-setup","p":2254},{"i":2259,"t":"Welcome to the Chialisp tutorial series. This video is a high level overview of the design decisions made in the Chia that lend themselves to strengths for certain financial use cases. Watch the following videos to learn more about the mindset and basic skills needed to program in Chialisp. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"Why Chia is Great","u":"/guides/why-chia-is-great-video-series/","h":"","p":2258},{"i":2261,"t":"Adam Kelly discusses managing state, coin creation, and announcements in this Chialisp video. If you have further questions, join our Discord and ask in the #chialisp channel.","s":"State, Coins, Announcements","u":"/guides/state-coins-announcements-video-series/","h":"","p":2260},{"i":2263,"t":"Approximately every 9.375 seconds, the full node sends a new signage point to the farmer, who sends it to each harvester. The exact protocol message sent for each signage point is the following: class PoolDifficulty: difficulty: uint64 sub_slot_iters: uint64 pool_contract_puzzle_hash: bytes32 class NewSignagePointHarvester: challenge_hash: bytes32 difficulty: uint64 sub_slot_iters: uint64 signage_point_index: uint8 sp_hash: bytes32 pool_difficulties: List[PoolDifficulty] The harvester receives a signage point, and computes the plot filter: plot filter bits = sha256(plot_id + challenge_hash + sp_hash). If the resulting bits start with 9 zeroes, then the plot passes the filter. This does not require disk access, since the plot_ids are stored in memory. 2. For each of the plots passing the filter, a new thread is started, which performs the quality lookups. Recall that this requires around 7-9 random reads into the plot, one for each table. This is where the majority of the disk activity will be. On average, 1 of every 512 plots will perform this step. 3. required_iterations is computed, as explained in the Signage and Infusion Points page. If the farmer is currently farming for a pool, then the pool will use custom values for both difficulty and sub-slot_iterations. These values make it more likely that a proof will be found. The reason to use these values is to make it easier for the pool to determine the amount of storage a farmer currently has dedicated. If required_iterations is less than the interval_iterations, this proof of space is good (it has won either a pool partial or a block). Most proofs will not pass this step. 5. For winning proofs, the whole proof is fetched on disk (approximately 64 random reads in the plot). 6. The proof is sent back to the farmer.","s":"Harvester Algorithm","u":"/harvester-algorithm/","h":"","p":2262},{"i":2265,"t":"Harvesters are individual machines controlled by a farmer. In a large farming operation, a farmer may be connected to many harvesters. Harvesters control the actual plot files by retrieving qualities or proofs from disk. The minimum plot size (and by far the most common) is k32, which corresponds to around 100 GiB. With each increment of a k-value, the plot size roughly doubles, so a k33 plot is around 200 GiB, k34 is around 400 GiB, etc. The difficulty level automatically adjusts every 4608 blocks to target one proof of space -- across the entire network -- for every two signage points. This is the targeted average value -- there can also be zero or multiple proofs per signage point. This leads to a difficulty adjustment approximately every 24 hours. Given a plot, the harvester must perform two tasks to find a valid proof: Fetch the initial quality -- this requires around seven random disk seeks, or 70 milliseconds on a slow HDD. (Only performed if the initial quality is sufficiently high) Fetch the full proof -- this requires around 64 disk seeks, or 640 milliseconds on a slow HDD. For most challenges, the quality (step 1) will be very low, so fetching the entire proof (step 2) will not be necessary. A node has 28 seconds to return a proof, so disk I/O will not be a limiting factor, even when proofs are stored on slow HDDs. note Tape drives are too slow for farming. The protocol was designed to support hard disks, but nothing slower. It is possible to use tape for long-term plot storage, only transferring the plots to disks for occasional farming, but this is likely a very rare use case. Finally, harvesters also maintain a private key for each plot. The blocks are signed with these keys, which is an important concept in Chia. It means that even when a farmer is a member of a pool, the farmer still controls the contents of a block. This is quite different from other blockchains' pooling protocols, where the pool operators are the ones signing the blocks. info The harvester algorithm is discussed in greater detail in the Harvester Algorithm page.","s":"Harvesters","u":"/harvester-architecture/","h":"","p":2264},{"i":2268,"t":"Before we jump in to the bulk of this lesson I wanted to remind you of how the Chia blockchain works. Chia uses a coin set model very similar to that of Bitcoin's UTXO model. This is very different than the account model used in other major chains. Instead of having an account with a balance, you just have a collection of unspent coins that you are able to spend. For example: Coin 1: 0.25 XCH Coin 2: 1.75 XCH Coin 3: 0.25 XCH Coin 4: 1.75 XCH Balance: 4 XCH You will often hear \"everything is a coin\" being said. This is true! This introduces some unique approaches to creating software on the Chia blockchain. To use Chialisp on the Chia blockchain, we must create a coin. As part of the coin set model, spending a coin results in a collection of removals and additions. The removals are your existing coins used for the spend being destroyed, and the additions are new coins (including any change) being created. Here is an example Say you have 1.75 XCH You send .75 XCH to some address (remember, an address is an encoded form of puzzle hash) This results in all 1.75 of your XCH being spent a new coin worth 1 XCH is created to be returned back to you (this is called change) a new coin worth .75 XCH is created for the destination puzzle hash Another example: Say you have 2 XCH made up of multiple small coins You send 1 XCH to some address Coins of .1 XCH, .5 XCH, and .45 XCH are being spent to sum up to 1.05 XCH (greater than or equal to 1 XCH spend) a new coin worth .05 XCH is created to be returned back to you a new coin worth 1 XCH is created for the destination puzzle hash","s":"Coin Set Refresher","u":"/guides/crash-course/state/","h":"#coin-set-refresher","p":2266},{"i":2270,"t":"We will be building a simple example of a coin that stores a message that anyone can change by spending the coin. This will be built using the previous lesson's project setup, but you can find all of index.ts here: index.ts import { mnemonicToSeedSync } from \"bip39\"; import { fromHex, PrivateKey, toHex } from \"chia-bls\"; import { Coin, formatHex, FullNode, sanitizeHex, toCoinId } from \"chia-rpc\"; import { KeyStore, StandardWallet } from \"chia-wallet-lib\"; import { Program } from \"clvm-lib\"; import dotenv from \"dotenv\"; import fs from \"fs\"; import os from \"os\"; import path from \"path\"; dotenv.config(); const mnemonic = process.env.MNEMONIC!; const privateKey = PrivateKey.fromSeed(mnemonicToSeedSync(mnemonic)); const dir = path.join(__dirname, \"..\"); const messagePuzzle = Program.deserializeHex( fs.readFileSync(path.join(dir, \"message.clsp.hex\"), \"utf-8\"), ); const node = new FullNode(os.homedir() + \"/.chia/mainnet\"); const keyStore = new KeyStore(privateKey); const wallet = new StandardWallet(node, keyStore); const genesis = fromHex(process.env.GENESIS!); const amount = 1; const fee = 0.00005e12; async function newInstance(initialMessage: Program) { await wallet.sync(); const spend = wallet.createSpend(); // Curry the puzzle const puzzle = messagePuzzle.curry([ // Mod hash Program.fromBytes(messagePuzzle.hash()), // Message is empty until the eve is spent Program.nil, ]); // Create the eve coin const send = await wallet.send(puzzle.hash(), amount, fee); spend.coin_spends.push(...send); // Calculate the root coin id const eveCoin: Coin = { parent_coin_info: formatHex(toHex(toCoinId(send[0].coin))), puzzle_hash: formatHex(puzzle.hashHex()), amount, }; // Create the eve solution const solution = Program.fromList([ // Message initialMessage, // Amount Program.fromInt(amount), ]); // Spend the eve coin spend.coin_spends.push({ coin: eveCoin, puzzle_reveal: puzzle.serializeHex(), solution: solution.serializeHex(), }); // Sign the wallet spend wallet.signSpend(spend, genesis); // Complete the transaction console.log(\"Eve coin id:\", toHex(toCoinId(eveCoin))); console.log(await node.pushTx(spend)); } interface SyncInfo { parent: string; current: string; } async function sync(): Promise { const eveCoinId = process.env.EVE_COIN_ID!; let current = eveCoinId; let parent = current; while (true) { // Fetch coins created by the current coin const coinRecords = await node.getCoinRecordsByParentIds( [current], undefined, undefined, true, ); if (!coinRecords.success) throw new Error(coinRecords.error); // If there are none, we are already synced if (!coinRecords.coin_records.length) break; // Update the parent parent = current; // Continue with the child coin as the new singleton const coinRecord = coinRecords.coin_records[0]; current = toHex(toCoinId(coinRecord.coin)); } return { parent, current, }; } async function getMessage(syncInfo: SyncInfo): Promise { const coinRecord = await node.getCoinRecordByName(syncInfo.parent); if (!coinRecord.success) throw new Error(coinRecord.error); const puzzleAndSolution = await node.getPuzzleAndSolution( syncInfo.parent, coinRecord.coin_record.spent_block_index, ); if (!puzzleAndSolution.success) throw new Error(puzzleAndSolution.error); const spend = puzzleAndSolution.coin_solution; const solution = Program.deserializeHex(sanitizeHex(spend.solution)).toList(); return solution[0]; } async function printMessage() { const syncInfo = await sync(); const message = await getMessage(syncInfo); console.log(\"Message:\", message.toString()); } async function setMessage(newMessage: Program) { await wallet.sync(); const syncInfo = await sync(); const message = await getMessage(syncInfo); // Fetch the coin record const coinRecord = await node.getCoinRecordByName(syncInfo.current); if (!coinRecord.success) throw new Error(coinRecord.error); const coin = coinRecord.coin_record.coin; const spend = wallet.createSpend(); // Create the current puzzle const puzzle = messagePuzzle.curry([ Program.fromBytes(messagePuzzle.hash()), message, ]); // Create the solution const solution = Program.fromList([newMessage, Program.fromInt(coin.amount)]); spend.coin_spends.push({ // Spend the current singleton coin, // The puzzle reveal contains the old message puzzle_reveal: puzzle.serializeHex(), // Spend it with the new message solution: solution.serializeHex(), }); const send = await wallet.sendFee(fee); spend.coin_spends.push(...send); wallet.signSpend(spend, genesis); console.log(await node.pushTx(spend)); } // newInstance(Program.fromText('Hello, world!')); // printMessage(); // setMessage(Program.fromText('Goodbye, world!'));","s":"What's Next?","u":"/guides/crash-course/state/","h":"#whats-next","p":2266},{"i":2272,"t":"We are now going to be discussing the idea of state. State is used to maintain some value on-chain. This can be done with a coin that recreates itself currying in a new value. The example we will be using today stores a message that can be changed by anyone. Essentially, the first coin we create will store the initial state, which is the message. Then, every time the coin is spent, we will create a new coin that stores the new message inside of it. The first coin is called the eve, and every coin that follows it forms a complete lineage of the history. First, we will install the needed Chialisp dependencies: cdv clsp retrieve condition_codes curry_and_treehash Here is the puzzle we will be using: (mod (MOD_HASH MESSAGE new_message amount) (include condition_codes.clib) (include curry_and_treehash.clib) (defun-inline new_puzzle_hash (MOD_HASH new_message) (puzzle-hash-of-curried-function MOD_HASH (sha256 1 new_message) (sha256 1 MOD_HASH) ) ) (list (list CREATE_COIN (new_puzzle_hash MOD_HASH new_message) amount) ) ) Specifically, this will create a new coin using CREATE_COIN. The puzzle hash is calculated by passing MOD_HASH and new_message to the new_puzzle_hash function. This effectively recreates the coin with the same puzzle. The only difference is that is uses the new message. We will compile this Chialisp code with this command: cdv clsp build message.clsp","s":"State in Chialisp","u":"/guides/crash-course/state/","h":"#state-in-chialisp","p":2266},{"i":2274,"t":"Install NPM: pip install npm Install the needed dependencies: npm install bip39 chia-bls chia-rpc chia-wallet-lib clvm-lib dotenv This is the code to set everything up and prepare for building this example: import { mnemonicToSeedSync } from 'bip39'; import { fromHex, PrivateKey, toHex } from 'chia-bls'; import { Coin, formatHex, FullNode, sanitizeHex, toCoinId } from 'chia-rpc'; import { KeyStore, StandardWallet } from 'chia-wallet-lib'; import { Program } from 'clvm-lib'; import dotenv from 'dotenv'; import fs from 'fs'; import os from 'os'; import path from 'path'; dotenv.config(); const mnemonic = process.env.MNEMONIC!; const privateKey = PrivateKey.fromSeed(mnemonicToSeedSync(mnemonic)); const dir = path.join(\\_\\_dirname, '..'); const messagePuzzle = Program.deserializeHex( fs.readFileSync(path.join(dir, 'message.clsp.hex'), 'utf-8') ); const node = new FullNode(os.homedir() + '/.chia/mainnet'); const keyStore = new KeyStore(privateKey); const wallet = new StandardWallet(node, keyStore); const genesis = fromHex(process.env.GENESIS!); const amount = 1; const fee = 0.00005e12;","s":"Initial Setup","u":"/guides/crash-course/state/","h":"#initial-setup","p":2266},{"i":2276,"t":"The first thing that we need to do is create the eve coin. However, that is not enough to be able to fetch the message that is stored on-chain. This is because the puzzle that a coin uses is not revealed until that coin is spent. The solution to this problem is to instantly spend the eve coin when it is created. This way, the solution will contain the message that the next coin uses. This allows the current state to be inferred and the coin to be spent later by someone else. Here is the code that initializes the eve coin and its descendant: async function newInstance(initialMessage: Program) { await wallet.sync(); const spend = wallet.createSpend(); // Curry the puzzle const puzzle = messagePuzzle.curry([ // Mod hash Program.fromBytes(messagePuzzle.hash()), // Message is empty until the eve is spent Program.nil, ]); // Create the eve coin const send = await wallet.send(puzzle.hash(), amount, fee); spend.coin_spends.push(...send); // Calculate the root coin id const eveCoin: Coin = { parent_coin_info: formatHex(toHex(toCoinId(send[0].coin))), puzzle_hash: formatHex(puzzle.hashHex()), amount, }; // Create the eve solution const solution = Program.fromList([ // Message initialMessage, // Amount Program.fromInt(amount), ]); // Spend the eve coin spend.coin_spends.push({ coin: eveCoin, puzzle_reveal: puzzle.serializeHex(), solution: solution.serializeHex(), }); // Sign the wallet spend wallet.signSpend(spend, genesis); // Complete the transaction console.log(\"Eve coin id:\", toHex(toCoinId(eveCoin))); console.log(await node.pushTx(spend)); } newInstance(Program.fromText(\"Hello, world!\")); Running this, you will get a response similar to: Eve coin id: a6c5a4d12456ae6dee553b1b17544799f561a62f678d7948df12f28d17bfa96e { status: 'SUCCESS', success: true } Where the eve coin ID is the ID of the first coin. We have successfully created the eve coin, spent it to reveal the current state (the message), and logged the eve coin ID.","s":"Initializing the Coin","u":"/guides/crash-course/state/","h":"#initializing-the-coin","p":2266},{"i":2278,"t":"We can retrieve the message by getting the eve coin and following its children to the latest (referred to as syncing). The most recent message is provided in the solution of the spend of the previous coin. For this to work, we read the EVE_COIN_ID from the .env file, which should now look something like: MNEMONIC=nasty sunny kingdom popular turn core rifle river twenty edit sort pill rice claw hollow please wash inform cannon empower emotion caught salt close GENESIS=d25b25b897564035695996922aa0f9ff9d611bd38cd2ecd0d2383a99a70dfc15 EVE_COIN_ID=5fe284bfa91c32fd274179769f5b808c916e5135e603cb292a90e04e5867bd1a info The hash used in GENESIS can be found in your chia environments config.yaml file. Mainnet Genesis = ccd5bb71183532bff220ba46c268991a3ff07eb358e8255a65c30a2dce0e5fbb Testnet11 Genesis = 37a90eb5185a9c4439a91ddc98bbadce7b4feba060d50116a067de66bf236615 For the simulator and other testnets please refer to the instances config.yaml $CHIA_ROOT/config/config.yaml. Write the following code to sync the state: interface SyncInfo { parent: string; current: string; } async function sync(): Promise { const eveCoinId = process.env.EVE_COIN_ID!; let current = eveCoinId; let parent = current; while (true) { // Fetch coins created by the current coin const coinRecords = await node.getCoinRecordsByParentIds( [current], undefined, undefined, true, ); if (!coinRecords.success) throw new Error(coinRecords.error); // If there are none, we are already synced if (!coinRecords.coin_records.length) break; // Update the parent parent = current; // Continue with the child coin as the new singleton const coinRecord = coinRecords.coin_records[0]; current = toHex(toCoinId(coinRecord.coin)); } return { parent, current, }; } Now that we have the current coin and its parent, we can fetch the solution of the parent's spend to find the message: async function getMessage(syncInfo: SyncInfo): Promise { const coinRecord = await node.getCoinRecordByName(syncInfo.parent); if (!coinRecord.success) throw new Error(coinRecord.error); const puzzleAndSolution = await node.getPuzzleAndSolution( syncInfo.parent, coinRecord.coin_record.spent_block_index, ); if (!puzzleAndSolution.success) throw new Error(puzzleAndSolution.error); const spend = puzzleAndSolution.coin_solution; const solution = Program.deserializeHex(sanitizeHex(spend.solution)).toList(); return solution[0]; } async function printMessage() { const syncInfo = await sync(); const message = await getMessage(syncInfo); console.log(\"Message:\", message.toString()); } printMessage(); Running this with npm run start should output the initial message: Message: \"Hello, world!\"","s":"Retrieving the Message","u":"/guides/crash-course/state/","h":"#retrieving-the-message","p":2266},{"i":2280,"t":"Finally, we can create a new coin by spending the existing coin and providing a new message in the solution. async function setMessage(newMessage: Program) { await wallet.sync(); const syncInfo = await sync(); const message = await getMessage(syncInfo); // Fetch the coin record const coinRecord = await node.getCoinRecordByName(syncInfo.current); if (!coinRecord.success) throw new Error(coinRecord.error); const coin = coinRecord.coin_record.coin; const spend = wallet.createSpend(); // Create the current puzzle const puzzle = messagePuzzle.curry([ Program.fromBytes(messagePuzzle.hash()), message, ]); // Create the solution const solution = Program.fromList([newMessage, Program.fromInt(coin.amount)]); spend.coin_spends.push({ // Spend the current singleton coin, // The puzzle reveal contains the old message puzzle_reveal: puzzle.serializeHex(), // Spend it with the new message solution: solution.serializeHex(), }); const send = await wallet.sendFee(fee); spend.coin_spends.push(...send); wallet.signSpend(spend, genesis); console.log(await node.pushTx(spend)); } setMessage(Program.fromText(\"Goodbye, world!\")); Run the following command to set the new message: npm run start","s":"Updating the Message","u":"/guides/crash-course/state/","h":"#updating-the-message","p":2266},{"i":2282,"t":"This will first find the latest coin from the eve coin ID: await wallet.sync(); const syncInfo = await sync(); const message = await getMessage(syncInfo); // Fetch the coin record const coinRecord = await node.getCoinRecordByName(syncInfo.current); if (!coinRecord.success) throw new Error(coinRecord.error); const coin = coinRecord.coin_record.coin; which is then spent using a solution with our new message: // Create the solution const solution = Program.fromList([newMessage, Program.fromInt(coin.amount)]); spend.coin_spends.push({ // Spend the current singleton coin, // The puzzle reveal contains the old message puzzle_reveal: puzzle.serializeHex(), // Spend it with the new message solution: solution.serializeHex(), });","s":"Breakdown","u":"/guides/crash-course/state/","h":"#breakdown","p":2266},{"i":2284,"t":"Now, we should be able to retrieve the new message with: printMessage(); Run the following command to see the new message: npm run start info As a reminder, each step can take some time as the message is updated on chain. Because of this, you'll want to issue each function call separately.","s":"Updated Message","u":"/guides/crash-course/state/","h":"#updated-message","p":2266},{"i":2286,"t":"Because this puzzle does not require a signature, anyone can spend the coin providing a new message. Say your eve coin ID is 5fe284bfa91c32fd274179769f5b808c916e5135e603cb292a90e04e5867bd1a, you can share this value with anyone to update this message.","s":"Shared Messages","u":"/guides/crash-course/state/","h":"#shared-messages","p":2266},{"i":2288,"t":"This has been an introduction to managing to state on the Chia blockchain. We've seen how you can write a puzzle that recreates itself with new values in order to maintain a complete linear history of updates on-chain. You can find the current value by looking at the solution of the last coin's parent. In the world of Chia, this concept is used heavily to store various information. For example, NFTs maintain a list of URIs that point to the data, metadata, and license. More Info: Singletons A singleton is a common application of the \"recreate self\" functionality we used in this lesson. Essentially, a singleton can be used to wrap an inner puzzle and add additional rules to it. In particular, it ensures that only one output is created (with an odd amount). Every time the coin is spent, the output of the inner puzzle is wrapped to maintain the singleton's lineage. This restriction can only be broken by melting the singleton. Anyone can create a coin with any puzzle. This means there is a good chance there will be multiple coins with the same puzzle hash. This can lead to confusion as to which coin is which, and may lead to confusion or mistakes. A singleton allows for something to exist on chain that is provably unique. This helps us be sure that we are working with the correct coin. The idea is that you can reuse the singleton behavior without having to write everything in a special way. You can read more about singletons if you want to, but we will not be covering them in this course due to the additional complexities involved in launching and spending them. Often times, puzzles that manage state will be wrapped in the singleton to ensure that there is only one instance of the state at a given time. It would be as simple as using the puzzle we wrote in this lesson as the inner puzzle to a singleton. The only additional restriction is that the coin's amount must be odd. Because the singleton will be a series of spent coins and new coins created over time, we need a different way than the coin ID to identify a singleton. A singleton is instead identified by its launcher ID, which is the coin ID of the singleton's parent coin (think of this as similar to the eve coin ID we created in this lesson). This parent coin is the coin used to create the initial coin of the singleton.","s":"Conclusion","u":"/guides/crash-course/state/","h":"#conclusion","p":2266},{"i":2290,"t":"A key ingredient in longest-chain blockchains are hash-chains as discussed in §4.1 below. While Chia\\textsf{Chia}Chia also uses a hash-chain (for the foliage chain FC{\\cal FC}FC), for Chia\\textsf{Chia}Chia we use a new chaining structure called a VDF chain defined in §4.2 below.","s":"4 - Hash and VDF chains","u":"/hash-and-vdf-chains/","h":"","p":2289},{"i":2292,"t":"For this writeup, a hash chain is a sequence b0,b1,b2…b_0,b_1,b_2\\ldotsb0​,b1​,b2​… of blocks, where each block bi={hi,xi}b_i=\\{h_i,x_i\\}bi​={hi​,xi​} contains some data value xix_ixi​ (possibly empty) and (with the exception of b0b_0b0​) a hash value of the current data and the previous block. hi:=H(bi−1,xi)h_i:={\\sf H}(b_{i-1},x_i)hi​:=H(bi−1​,xi​) Security from hash chains.​ A hash chain is immutable in the following sense: Proposition 2 (immutability of hash chains). If H{\\sf H}H is a collision-resistant hash function, then it is computationally infeasible to find two distinct hash chains H=b0,….bi{\\cal H}=b_0,\\ldots.b_iH=b0​,….bi​ and H′=b0′,…,bj′{\\cal H'}=b'_0,\\ldots,b'_jH′=b0′​,…,bj′​ where hi=hj′h_i=h'_jhi​=hj′​ and no chain is a prefix of the other (which holds if they start with the same x0=x0′x_0=x'_0x0​=x0′​).","s":"4.1 Hash chains","u":"/hash-and-vdf-chains/","h":"#41-hash-chains","p":2289},{"i":2294,"t":"Figure 6: Illustration of a VDF chain. A VDF chain is a sequence V=z0,τ1,z1,τ2,z2,…,τℓ{\\cal V}=z_0,\\tau_1,z_1,\\tau_2,z_2,\\ldots,\\tau_\\ellV=z0​,τ1​,z1​,τ2​,z2​,…,τℓ​ eq.(5) alternating data values zi∈{0,1}∗z_i\\in\\{0,1\\}^*zi​∈{0,1}∗ and VDF values τi=(τi.y,τi.π,τi.c,τi.t)\\tau_i=(\\tau_i.{\\sf y},\\tau_i.\\pi,\\tau_i.{\\sf c},\\tau_i.{\\sf t})τi​=(τi​.y,τi​.π,τi​.c,τi​.t) (as described in §A.3). The chain is valid if all VDF proofs are correct VDF.verify(τi)=accept{\\sf VDF.verify}(\\tau_i)={\\sf accept}VDF.verify(τi​)=accept and the challenge for the iiith VDF is derived from the previous VDF output (except for i=1i=1i=1) and data value τ1.c:=VDF.sample(z0) and ∀i>1:τi.c:=VDF.sample(τi−1.y,zi−1)\\tau_1.c := \\mathsf{VDF.sample}(z_0) \\quad \\text{ and } \\quad \\forall i > 1 : \\tau_i.\\mathsf{c} := \\mathsf{VDF.sample}(\\tau_{i-1}.\\mathsf{y}, z_{i-1})τ1​.c:=VDF.sample(z0​) and ∀i>1:τi​.c:=VDF.sample(τi−1​.y,zi−1​) where we use the convention that τ0.y\\tau_0.{\\sf y}τ0​.y is the empty string.","s":"4.2 VDF chains","u":"/hash-and-vdf-chains/","h":"#42-vdf-chains","p":2289},{"i":2296,"t":"We naturally extend the notion for VDFs as described in §A.3 to VDF chains. The total number of VDF steps in a VDF chain as in eq.(5) is simply the sum of the steps in its VDFs V.t=def∑i=1ℓτi.t{\\cal V}.{\\sf t}\\stackrel{\\scriptsize \\sf def}{=}\\sum_{i=1}^\\ell \\tau_i.{\\sf t}V.t=defi=1∑ℓ​τi​.t Security from VDF chains.​ VDF chains give two basic security guarantees, the first is immutability analogous to hash chains, but also sequentiality inherited from the underlying VDF, we discuss them shortly in more detail. Proposition 3 (immutability and sequentiality of VDF chains). Like a hash chain, a VDF chain is immutable in the sense that it's computationally infeasible to come up with two different VDF chains V=z0,τ1,z1,τ2,z2,…,τℓV′=z0′,τ1′,z1′,τ2′,z2′,…,τℓ′′{\\cal V}=z_0,\\tau_1,z_1,\\tau_2,z_2,\\ldots,\\tau_\\ell \\qquad {\\cal V}'=z'_0,\\tau'_1,z'_1,\\tau'_2,z'_2,\\ldots,\\tau'_{\\ell'}V=z0​,τ1​,z1​,τ2​,z2​,…,τℓ​V′=z0′​,τ1′​,z1′​,τ2′​,z2′​,…,τℓ′′​ where the last VDF outputs collide, i.e., τℓ.y=τℓ′′.y\\tau_\\ell.{\\sf y}=\\tau'_{\\ell'}.{\\sf y}τℓ​.y=τℓ′′​.y. Here different means that either they have different length ℓ≠ℓ′\\ell\\neq \\ell'ℓ=ℓ′ and neither is a prefix of the other. Or (if ℓ=ℓ′\\ell=\\ell'ℓ=ℓ′) there exists an iii s.t. either zi≠zi′z_i\\neq z'_izi​=zi′​ or τi.y≠τi′.y\\tau_i.{\\sf y}\\neq \\tau'_i.{\\sf y}τi​.y=τi′​.y or τ.t≠τ′.t\\tau.{\\sf t}\\neq \\tau'.{\\sf t}τ.t=τ′.t. Note that we ignore the proofs τ.π\\tau.\\piτ.π when comparing chains (we just use them to determine whether the chain is valid) as they must not be unique. Moreover a VDF chain is sequential, meaning that not only the individual VDFs must be computed sequentially (which follows from the security definition of VDFs), but also the VDFs in the chain were computed sequentially. I.e., computing a chain V{\\cal V}V as above requires ∑i=1ℓτi.t\\sum_{i=1}^\\ell \\tau_i.{\\sf t}∑i=1ℓ​τi​.t sequential steps.","s":"4.2.1 Notation for VDF chains","u":"/hash-and-vdf-chains/","h":"#421-notation-for-vdf-chains","p":2289},{"i":2298,"t":"The following instructions are for a Linux-based farmer (daemon host) and Windows GUI (main node). The same concept applies to other OS combinations.","s":"Setup","u":"/headless-node/","h":"","p":2297},{"i":2301,"t":"In config.yaml, change self_hostname from localhost to 0.0.0.0. This binds the daemon to all IPv4 addresses on the local machine. Next, open the port that the daemon is listening on (55400 by default). The UI assumes that the daemon is already running and it will not attempt to start a remote daemon. Using ufw and restricting traffic to just the UI's host: sudo ufw allow from to any port 55400 proto tcp","s":"Expose the daemon to the network","u":"/headless-node/","h":"#expose-the-daemon-to-the-network","p":2297},{"i":2303,"t":"To secure their connection, the GUI will need the daemon's certificates. Copy these files to the Windows machine: ~/.chia/mainnet/config/ssl/daemon/private_daemon.crt ~/.chia/mainnet/config/ssl/daemon/private_daemon.key","s":"Copy the daemon's cert files","u":"/headless-node/","h":"#copy-the-daemons-cert-files","p":2297},{"i":2306,"t":"Place the daemon's cert files, copied earlier, in the following location: ~/.chia/mainnet/config/ssl/ui/ ~/.chia/mainnet/config/ssl/ui/ Find the ui section in config.yaml and specify the following settings: daemon_host: daemon_port: 55400 daemon_ssl: private_crt: config/ssl/ui/private_daemon.crt private_key: config/ssl/ui/private_daemon.key","s":"Reference the daemon's cert files","u":"/headless-node/","h":"#reference-the-daemons-cert-files","p":2297},{"i":2310,"t":"The first thing to check is that the daemon's websocket URI shows up on the title bar. It should look like this: Make sure there isn't a syntax error in config.yaml.","s":"Can the GUI find the config folder?","u":"/headless-node/","h":"#can-the-gui-find-the-config-folder","p":2297},{"i":2312,"t":"Double check that in the ui section the crt and key paths are correct. It shouldn't point to the folder where the local certs are stored. It has to point to the folder where you copied the daemon's certs.","s":"Can the GUI find the remote daemon's certs?","u":"/headless-node/","h":"#can-the-gui-find-the-remote-daemons-certs","p":2297},{"i":2315,"t":"On the daemon host run sudo netstat -tulpn | grep 55400 or your OS's equivalent. It should show something similar to tcp 0 0 0.0.0.0:55400 0.0.0.0:* LISTEN 2925/chia_daemon. If you see 127.0.0.1 it means you haven't changed the daemon's bind IP address. The loopback address is not routable on the network. Double check that self_hostname: 0.0.0.0 is correct in the config. Also, make sure you have fully restarted the daemon: chia stop all -d chia start farmer","s":"Has the daemon been bound to a routable IP address?","u":"/headless-node/","h":"#has-the-daemon-been-bound-to-a-routable-ip-address","p":2297},{"i":2317,"t":"Run sudo ufw status | grep 55400 or your OS and firewall equivalent. You should see something like 55400/tcp ALLOW.","s":"Is the daemon's port opened on the firewall?","u":"/headless-node/","h":"#is-the-daemons-port-opened-on-the-firewall","p":2297},{"i":2319,"t":"Verify that the default port 55400 is not bound to VMWare Plugin or other service on the daemon host. If pre-bound, stop that other service or change the daemon_port value in config.yaml. netstat -tulpn includes the process name of listeners. It should be chia_daemon.","s":"Is VMWare Plugin Service bound to daemon port?","u":"/headless-node/","h":"#is-vmware-plugin-service-bound-to-daemon-port","p":2297},{"i":2321,"t":"Harvester protocol source The harvester protocol defines the messages sent between a farmer service and a harvester service. These tend to be on the same machine for small farmers, but for medium or large farmers they can be in multiple machines.","s":"Harvester Protocol","u":"/harvester-protocol/","h":"","p":2320},{"i":2323,"t":"The handshake between farmer and harvester. A farmer sends this message to harvesters, to initialize them and tell them which pool public keys and farmer public keys are acceptable to use. A farmer can be connected to multiple harvesters, but a harvester should only have one farmer connection. The harvester can start using plots which have these keys associated with them. class HarvesterHandshake(Streamable): farmer_public_keys: List[G1Element] pool_public_keys: List[G1Element]","s":"harvester_handshake","u":"/harvester-protocol/","h":"#harvester_handshake","p":2320},{"i":2325,"t":"This message is a notification from the farmer to the harvester of a new challenge. The harvester first checks which plots pass the plot filter (see the Harvester Algorithm page), and for those that do, fetches the quality. This requires around 7-9 random reads (and thus disk seeks) for each quality. Each plot is expected to have one proof of space (and therefore one quality) on average, so for 50 plots, a harvester would have around 50 qualities. For those qualities that are sufficiently good to win a block or a pool partial, the whole proof is fetched (64 random reads in the plot), and then new_proof_of_space is sent to the farmer. class NewSignagePointHarvester(Streamable): challenge_hash: bytes32 # The challenge hash for the sub slot in which the signage point lies difficulty: uint64 # The current blockchain difficulty sub_slot_iters: uint64 # The current blockchain sub-slot iters signage_point_index: uint8 # The signage point's index, from 0 to 63. 0 for an end of sub slot signage point sp_hash: bytes32 # The hash of the signage point, this is == challenge_hash iff the index is 0 pool_difficulties: List[PoolDifficulty] # List of each pool the farmer is in, and what the difficulty is for that pool class PoolDifficulty(Streamable): difficulty: uint64 # The current difficulty that is set for plots belonging to this pool contract sub_slot_iters: uint64 # The pool sub slot iters, which is static for each network (mainnet, testnet) pool_contract_puzzle_hash: bytes32 # The pool contract puzzle hash which can be in many plots","s":"new_signage_point_harvester","u":"/harvester-protocol/","h":"#new_signage_point_harvester","p":2320},{"i":2327,"t":"A successful proof of space that is sent to the farmer. The challenge_hash, sp_hash, and signage_point_index correspond to the ones sent in new_signage_point_harvester. Many proofs can be submitted for each signage point. The plot is a string chosen by the harvester to represent the winning plot (and proof index) in future communications between the farmer and harvester. This can be, for example, the filename of the plot with an additional byte for the index. This is relevant, because a certain plot can potentially have more than one proof for each signage point, and we want communications for each proof to be separate and not conflict (specifically to fetch signatures from the harvester). class NewProofOfSpace(Streamable): challenge_hash: bytes32 sp_hash: bytes32 plot_identifier: str proof: ProofOfSpace # The actual proof of space which contains more data, shown below signage_point_index: uint8 class ProofOfSpace(Streamable): challenge: bytes32 # This is the challenge for the pospace, explained in the Signage and Infusion Points page pool_public_key: Optional[G1Element] # Only one of these two should be present pool_contract_puzzle_hash: Optional[bytes32] # Present only for pooled plots plot_public_key: G1Element # Explained in the keys section size: uint8 # k size, usually 32 but can vary proof: bytes # proof bytes, 64 k bit values, total size 8k bytes","s":"new_proof_of_space","u":"/harvester-protocol/","h":"#new_proof_of_space","p":2320},{"i":2329,"t":"This is a request from the farmer to the harvester for a signature from the plot key, for a specific plot (using the plot identifier from new_proof_of_space). The farmer can request signatures from multiple messages. class RequestSignatures(Streamable): plot_identifier: str challenge_hash: bytes32 sp_hash: bytes32 messages: List[bytes32]","s":"request_signatures","u":"/harvester-protocol/","h":"#request_signatures","p":2320},{"i":2331,"t":"This is a response to request_signatures. The local public key is the public key corresponding to the secret key in the plot. To see more about the keys for plots, look at the BLS Keys page. class RespondSignatures(Streamable): plot_identifier: str challenge_hash: bytes32 sp_hash: bytes32 local_pk: G1Element # Key in the plot farmer_pk: G1Element # Key controlled by farmer message_signatures: List[Tuple[bytes32, G2Element]]","s":"respond_signatures","u":"/harvester-protocol/","h":"#respond_signatures","p":2320},{"i":2333,"t":"A request from the farmer to the harvester for the list of all plots being farmed by the harvester. class RequestPlots(Streamable): pass","s":"request_plots","u":"/harvester-protocol/","h":"#request_plots","p":2320},{"i":2335,"t":"A response to request_plots request. This message is also sent whenever a new plot is loaded. class RespondPlots(Streamable): plots: List[Plot] failed_to_open_filenames: List[str] # Filenames for files which cannot be opened no_key_filenames: List[str] # Filenames for files which cannot be farmed by this farmer class Plot(Streamable): filename: str size: uint8 plot_id: bytes32 pool_public_key: Optional[G1Element] pool_contract_puzzle_hash: Optional[bytes32] plot_public_key: G1Element file_size: uint64 time_modified: uint64","s":"respond_plots","u":"/harvester-protocol/","h":"#respond_plots","p":2320},{"i":2337,"t":"This document provides a comprehensive reference to Chia's Harvester RPC API. Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc harvester add_plot_directory '{\"dirname\": \"C:\\\\plots\"}' To run the same command on Windows, you need to escape the quotes with backslashes. In other words, add a \\ before each double quote, such that: \"dirname\" becomes \\\"dirname\\\" \"C:\\\\plots\" becomes \\\"C:\\\\plots\\\"","s":"Harvester RPC","u":"/harvester-rpc/","h":"","p":2336},{"i":2339,"t":"Functionality: Add a new plot directory Usage: chia rpc harvester [OPTIONS] add_plot_directory [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description dirname TEXT True The full path of the directory to add note Note that the new directory must already exist on the system Example First, add the directory to the local file system: mkdir /plots_new Next, add the new directory to the harvester's list: chia rpc harvester add_plot_directory '{\"dirname\": \"/plots_new\"}' Response: { \"success\": true }","s":"add_plot_directory","u":"/harvester-rpc/","h":"#add_plot_directory","p":2336},{"i":2341,"t":"Functionality: Delete a single plot Usage: chia rpc harvester [OPTIONS] delete_plot [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description filename TEXT True The file name of the plot to delete note As long as this command includes the required filename flag, it will always output \"success\": true, even if the filename was invalid Example chia rpc harvester delete_plot '{\"filename\": \"/plots/plot-k25-2022-07-11-19-22-a2ece0fd13e017f7b88911be5f91aa1e1866c89964c863f743f5c92e07118805.plot\"}' Response: { \"success\": true }","s":"delete_plot","u":"/harvester-rpc/","h":"#delete_plot","p":2336},{"i":2343,"t":"Functionality: List all local plots Usage: chia rpc harvester [OPTIONS] get_plots [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None note The plots will be grouped into three categories: failed_to_open_filenames - plots that the harvester was unable to open; these plots may be incomplete, corrupted or otherwise damaged not_found_filenames - typically these are plots that exist and are readable, but were created under a different key than the current one plots - a listing of all valid plots that were created with the current key used by the harvester Example chia rpc harvester get_plots Response: { \"failed_to_open_filenames\": [], \"not_found_filenames\": [ \"/plots/plot-k25-2022-07-11-21-33-4c01531e1b09b758705d1f12c77028e81cafb79c091330453eb249b089e46471.plot\" ], \"plots\": [ { \"file_size\": 674281385, \"filename\": \"/plots/plot-k25-2023-03-01-14-52-160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a_2.plot\", \"plot_id\": \"0x160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a\", \"plot_public_key\": \"0xa82069430a7ef8a6491f8b3a5ec64553a33b86e0a713ad03106879231ae77161a0b860df659dbfbb1cc07b6343e95d62\", \"pool_contract_puzzle_hash\": \"0xf5daa5a0d83c6a628782a386aa1f94ff041e29c4da4b9b97f91f4d46563d8e9b\", \"pool_public_key\": null, \"size\": 25, \"time_modified\": 1677653720 }, { \"file_size\": 674281385, \"filename\": \"/plots/plot-k25-2023-03-01-14-52-160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a.plot\", \"plot_id\": \"0x160798793b22b998133bbf5b2021ed70d24feb0e20d040668c685df2c7caf76a\", \"plot_public_key\": \"0xa82069430a7ef8a6491f8b3a5ec64553a33b86e0a713ad03106879231ae77161a0b860df659dbfbb1cc07b6343e95d62\", \"pool_contract_puzzle_hash\": \"0xf5daa5a0d83c6a628782a386aa1f94ff041e29c4da4b9b97f91f4d46563d8e9b\", \"pool_public_key\": null, \"size\": 25, \"time_modified\": 1677653720 } ], \"success\": true }","s":"get_plots","u":"/harvester-rpc/","h":"#get_plots","p":2336},{"i":2345,"t":"Functionality: List all plot directories Usage: chia rpc harvester [OPTIONS] get_plot_directories [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc harvester get_plot_directories Response: { \"directories\": [ \"/plots\" \"/plots_new\" ], \"success\": true }","s":"get_plot_directories","u":"/harvester-rpc/","h":"#get_plot_directories","p":2336},{"i":2347,"t":"Functionality: List all available RPC routes Usage: chia rpc harvester [OPTIONS] get_routes [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example { \"routes\": [ \"/get_plots\", \"/refresh_plots\", \"/delete_plot\", \"/add_plot_directory\", \"/get_plot_directories\", \"/remove_plot_directory\", \"/get_connections\", \"/open_connection\", \"/close_connection\", \"/stop_node\", \"/get_routes\", \"/healthz\" ], \"success\": true } Response: chia rpc harvester get_routes","s":"get_routes","u":"/harvester-rpc/","h":"#get_routes","p":2336},{"i":2349,"t":"Functionality: Refresh all plots from the harvester Usage: chia rpc harvester [OPTIONS] refresh_plots [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None note If successful, this command will output \"success\": true Example chia rpc harvester refresh_plots Response: { \"success\": true }","s":"refresh_plots","u":"/harvester-rpc/","h":"#refresh_plots","p":2336},{"i":2351,"t":"Functionality: Remove a directory from the harvester's list of plot directories Usage: chia rpc harvester [OPTIONS] remove_plot_directory [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file FILENAME False Optionally instead of REQUEST you can provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description dirname TEXT True The full path of the directory to remove note As long as this command includes the required dirname flag, it will always output \"success\": true, even if the dirname is not in the directory list Example chia rpc harvester remove_plot_directory '{\"dirname\": \"/plots_new\"}' Response: { \"success\": true }","s":"remove_plot_directory","u":"/harvester-rpc/","h":"#remove_plot_directory","p":2336},{"i":2353,"t":"Chia is a cryptocurrency and blockchain with smart transaction capabilities. It was designed from the ground up to make cryptocurrency easier to use (and harder to lose) than cash. Its Proof of Space and Time is the only Nakamoto consensus algorithm since Proof of Work, while also having a much lower energy consumption. Part of Chia's vision involves improving the carbon footprint of the blockchain industry. Chia's mainnet was launched on March 19, 2021. Development of its ecosystem is ongoing, with primitives released for CATs, NFTs, Offers, and DIDs. This page will give a brief overview of Chia and its various components. If you are interested in becoming a Chia farmer, feel free to skip ahead to the Beginner's Guide to Farming.","s":"Introduction to Chia","u":"/introduction/","h":"","p":2352},{"i":2355,"t":"Chia uses a consensus algorithm referred to as Proof of Space and Time. This allows anyone with an internet connection and some free disk space to participate in securing the network. Because of this process of farming (analogous to mining), Chia has become the most decentralized blockchain in the world, with over 100,000 nodes securing the system. Each of them store a copy of the blockchain's history, while also propagating new transactions across the network.","s":"Proof of Space and Time","u":"/introduction/","h":"#proof-of-space-and-time","p":2352},{"i":2357,"t":"Chia uses the coin set model to keep track of the network's state. In this model, a coin is a first-class object on the blockchain. Each coin is locked with a serialized CLVM program called a puzzle, which is then hashed to create a puzzle hash (which can be converted to an address). The coin's id is a hash of its parent coin's id, its puzzlehash, and its amount. Each transaction in Chia must contain at least one coin spend. In order to spend a coin, one must provide the original puzzle, as well as a valid solution, and an optional aggregated signature. Multiple coins can require each other be spent in the same transaction by using announcements. info For more information, check out the Coin Set Intro page and the Chialisp.com website.","s":"Coin Set Model","u":"/introduction/","h":"#coin-set-model","p":2352},{"i":2359,"t":"Like many other blockchains, Chia allows pooling to smooth out the reward structure for smaller farmers. However, Chia's pooling protocol has three unique features. First of all, farmers create the blocks that they farm rather than the pool they are a member of. This design decision was made in conjunction with Chia's goal of decentralization. In other blockchains such as Bitcoin, four or five pools control over 51% of the global hashrate on any given day (Sources: blockchain.com, blockchair.com). Arguably, the easiest way to attack Bitcoin would be to bribe each of these pools' operators. In Chia, the pool operators are only responsible for distributing rewards. They cannot modify the blockchain. Therefore, Chia's pooling protocol doesn't lead to increased centralization. When a block is won, the farmer gets 1/8 of the rewards and the pool operator gets the other 7/8. This was done to discourage pool operators from harming their competition by farming on a competing pool and neglecting to create a block when they find a proof (Solo farmers collect the entire reward when they create a block). Joining a pool is also permissionless, so farmers don't need to sign up for anything in order to join. All it takes is a small transaction on the blockchain, which costs only a single mojo and a network fee. info For more information, check out the Pool Protocol page.","s":"Pooling","u":"/introduction/","h":"#pooling","p":2352},{"i":2361,"t":"There are many other innovations in Chia, some of which include: BLS signatures, which allow aggregating all of a block's signatures together. Scalability and performance improvements, which allow running a Chia node on a Raspberry Pi. Weight proofs and light clients, which enable fast syncing from a mobile device. For more info, see light clients. Chia Asset Tokens (CATs) are fungible tokens that can be minted from standard XCH. The possibilities are endless! Read more on CATs or watch a CATs video intro. Additionally, a community member has created TAIL Database, which contains a list of CATs in the wild. Offer files enable the peer-to-peer exchange of assets, including standard XCH, as well as CATs. Read more on Offers or watch a brief intro video. NFTs enable and drive real-world applications of digital ownership through true marketplace independence, consistent provenance, and digital permanence. We laid out our vision for NFTs on Chia and launched our NFT1 standard in June 2022. This documentation will explain the motivation and implementation of the different components of the Chia system to a technical audience, and provide in-depth explanations of how everything works. If you would like to skip to how to make dApps (decentralized apps) on Chia, please visit the Chialisp website.","s":"Other Highlights","u":"/introduction/","h":"#other-highlights","p":2352},{"i":2364,"t":"Compression Level Plot Size k=32 (GiB) Plot Size k=32 (GB) Plot Size k=33 (GiB) Plot Size k=34 (GiB) Plot Size k=35 (GiB) 0 101.4 108.8 208.8 429.9 884.1 1 87.5 94.0 179.6 368.2 754.3 2 86.0 92.4 176.6 362.1 742.2 3 84.5 90.7 173.4 355.9 729.7 4 82.9 89.0 170.2 349.4 716.8 5 81.3 87.2 167.0 343.0 704.0 6 79.6 85.5 163.8 336.6 691.1 7 78.0 83.8 160.6 330.2 678.3 9 75.2 80.7 154.1 315.5 645.8 info k=32 is the minimum plot size that will be eligible for farming. Although you may see k=25, this is used for testing purposes only. When planning on how much plotting space is required, only calculate the temporary disk size requirement. If stagger plotting, disk size requirement may change depending on which Phase the plotting is at.","s":"K size with compression level","u":"/k-sizes/","h":"#k-size-with-compression-level","p":2362},{"i":2366,"t":"For a given k, the plot size is roughly ((2 * k) + 1) * (2 ** (k - 1)) * 0.78005. In previous versions of Chia's documentation and code, the constant at the end of this equation was estimated to be 0.762. Our documentation and code now use a closer estimation of 0.78005. The following table shows the old size estimation of C0 plots, along with the new estimations: k Old est. size (GB) New est. size (GB) 32 106.3648651 108.8844003 33 219.2752603 224.469379 34 451.641581 462.339915 35 929.4652826 951.4821439 36 1911.294806 1956.568916 37 3927.318095 4020.347087 38 8064.093156 8255.112685 39 16547.10024 16939.06239","s":"New constant space factor","u":"/k-sizes/","h":"#new-constant-space-factor","p":2362},{"i":2368,"t":"K-size Temp. Size Final Size K=32 239 GiB (256.6 GB) 101.4 GiB (108.9 GB) K=33 512 GiB (550 GB) 208.8 GiB (224.2 GB) K=34 1041 GiB (1118 GB) 429.8 GiB (461.5 GB) K=35 2175 GiB (2335 GB) 884.1 GiB (949.3 GB) When planning on how much plotting space is required, only calculate the temporary disk size requirement. When stagger plotting, disk size requirement may change depending on which Phase the plotting is at.","s":"Storage requirements for uncompressed plots","u":"/k-sizes/","h":"#storage-requirements-for-uncompressed-plots","p":2362},{"i":2370,"t":"Although not required, plots larger than k=32 may be created. There is not a great benefit to using larger plot sizes as the chance of winning is proportional to final plot file size. There are advanced tactics to using a larger k value to reduce unused storage space or optimize drive idle states, but these are not recommended for the majority of people.","s":"Plots larger than k=32","u":"/k-sizes/","h":"#plots-larger-than-k32","p":2362},{"i":2372,"t":"Light client support is another benefit of Proof of Space and Time (PoST) when compared with Proof of Stake (PoS). In PoST, all proofs can be verified objectively and cryptographically, while maintaining the requirement to control an actual resource at a certain point in time. With Chia's consensus, a candidate chain can be compared to an alternate chain objectively for weight, even after being offline for a long time, without relying on a central authority. For light clients that want to sync up quickly to the chain (for example, mobile wallets), a full node can create a small-sized proof that can convince the light client that the weight of a chain is close to some value. This is called a proof of weight. Naively, the light client could download every single block and all the required proofs and verify them. But, with a large number of blocks, this would require a lot of bandwidth and CPU. A more efficient method relies on a protocol similar to Flyclient. The node (Prover) sends all the sub-epoch summaries from the fork point, including difficulty resets, to the light client. There is only one sub-epoch every 384 blocks, so the summaries will only reach a few MB of data. The node also deterministically samples several sub-epochs based on the challenge of the last block. Sub-epochs have a chance to be chosen proportional to the difficulty during that sub-epoch. For the chosen sub-epoch, the light client downloads one of the challenge chain blocks (which are approximately 1/32 of all blocks), and computes the average infusion iterations of all challenge blocks in that sub-epoch. Based on this time, the light client can extrapolate how many blocks the reward chain contains. For example, if the challenge blocks all occur with very small iterations (close to the beginning of the sub-slot), there are likely many blocks in that sub-slot. Conversely, if the iterations are close to the middle of the sub-slot, there is likely only one block per sub-slot. This allows the light client to only download 1/32 of the blocks in each sub-slot, but still get a good estimate of the total weight. Furthermore, the last few sub-epochs should be downloaded in full for the light client. This adds a small amount of data, but prevents attackers from creating small forks at the end of the chain. The main difference between this protocol and Flyclient is that blocks are not committed to using a Merkle mountain range, but instead the light client downloads the entire list of sub-epoch hashes from genesis, guaranteeing that the queried sub-epochs are included in the chain. Another difference is that entire sections are downloaded, as opposed to individual blocks. As of December 2021, more analysis needs to be done on how many sub-epochs should be downloaded and what the bounds are for what the proof of weight implies.","s":"Light Clients","u":"/light-clients/","h":"","p":2371},{"i":2374,"t":"Light clients can fetch the transactions that they are interested in, without having to download every single block or block header. Two wallet protocols are available for this, a less efficient one that maintains better privacy, and a super efficient one that has a privacy tradeoff, namely that the wallet must ask a node for payments made to certain addresses. Both of these protocols are currently supported in the Wallet API.","s":"Obtaining Transactions","u":"/light-clients/","h":"#obtaining-transactions","p":2371},{"i":2376,"t":"This doc has been migrated to Logging Reference","s":"Logging Reference","u":"/logging-reference/","h":"","p":2375},{"i":2378,"t":"info This page details the architecture of keys. For a more general overview of other components, refer to the Architecture Overview page. The following image assumes an architecture where the farmer decides to keep all keys separate. a wallet key that can potentially be cold storage local keys within the harvester machine, which are separated from the farmer a separate pool key Note that in the simplest configuration, a user can run all of the services (wallet, node, harvester, farmer, pool) in the same machine, and thus the same master key is used for all keys. In this configuration, harvesters only store plot files, and provide the farmer with signatures by the local sk whenever necessary. The farmer machine has its own key, which is used to create signatures of new blocks, and combines them with the local sk signatures. The farmer machine can configure a different wallet address to send the funds to, so the user can keep their spending keys in cold storage. Furthermore, the communication channel between the farmer and harvester is authenticated with TLS certificates, which allows the harvester to know if the farmer is trusted. The farmer can also communicate with a pool, through the pooling protocol. In this case, the farmer would send periodic messages to the pool, to prove space. Recall from the Pool Architecture page that each block is eligible to create two coinbase reward coins: the pool reward, which is 7/8, and the farmer reward, which is 1/8 + transaction fees. After farming a block, the 7/8 coin is absorbed by the pool, and later distributed to pool members. Chia's pool architecture is decentralized, because the farmers run their own node, and pooling does not lead to central control of the system. If using a pool contract puzzle hash, the pool signature is not included in the block.","s":"Architecture","u":"/key-architecture/","h":"","p":2377},{"i":2380,"t":"The mempool (or memory pool) is a collection of transactions stored by full nodes, usually in memory, before they are confirmed on the blockchain. The mempool is not dictated by the consensus rules; a farmer can change how their mempool functions and customize the rules without permission from other full nodes. The mempool is a required facet of Chia due to the decentralized nature of the blockchain. Transaction blocks occur approximately every 52 seconds, and it's impossible to predict who will win a block. Therefore, all transactions must be broadcast to the whole network and stored locally until they are confirmed. Additionally, it is normal to have more pending transactions than can fit in a single block, so the mempool also acts as a queue for inclusion into the blockchain. For more information about the mempool, see our blog post on this subject. info How many transactions can fit into a block? Due to the varying size of transactions, and the different definitions of what even counts as a \"transaction,\" there is not an exact number. But just for a bit of rough guidance, approximately 1000 transactions with two inputs and two outputs, or 2000 transactions with one input and one output can fit into a single block. When a user makes a transaction, it gets sent to a full node, which then verifies it, adds it to the mempool, and broadcasts it to all of its peers. Therefore, transactions get propagated to the whole network in a very short period of time.","s":"Mempool","u":"/mempool/","h":"","p":2379},{"i":2382,"t":"Only valid transactions are allowed to enter the mempool. The process of validating transactions is similar to the process of validating blocks. This includes running CLVM, checking conditions, validating signatures, and checking that the coins to be spent are currently unspent and valid. The transaction is also checked against other transactions in the mempool, to ensure there are no conflicts.","s":"Validation","u":"/mempool/","h":"#validation","p":2379},{"i":2384,"t":"When you submit a transaction, one of several possible scenarios will play out, depending on how full the mempool is, how large of a fee was included, the CLVM cost of the transaction, and other factors. Keep in mind that each farmer has its own copy of the mempool, with its own set of rules. The default mempool behavior discussed in this section will apply to most, but not all, nodes. It is up to each individual farmer to decide which transactions to include upon creating a block. To view the current status of the mempool, see the dashboard for mainnet and testnet11. info By default, the total size of the mempool is 20 blocks. This true for both mainnet and testnet11. Prior to version 2.2, the block size was artificially capped at 50% of its capacity. Starting in version 2.2, the block size cap was increased to 60%. This limitation will be increased gradually, until it reaches 100%, or 11 billion cost -- the limit enforced by the consensus rules. The size (in CLVM cost) of the mempool is mempool blocks * max cost per block * block size limit. In version 2.2, this amounts to 20 * 11 billion * 0.6, which equals 132 billion. When the block limiter is lifted, the total size will be 20 * 11 billion, or 220 billion.","s":"Fee Required for Inclusion","u":"/mempool/","h":"#fee-required-for-inclusion","p":2379},{"i":2386,"t":"If the transaction you just submitted -- plus the entire contents of the mempool -- can fit into one block, then your transaction will be added to the next block. This is true even if you don't include a transaction fee. The reason for this is straightforward -- the farmer has nothing to gain by excluding certain transactions, so it will include everything. Note that some proprietary software takes the opposite approach: the farmer will only include transactions that pay a fee, regardless of mempool size. The mempool for Chia's mainnet is often in this state. This does not mean that no transactions are being submitted. It simply means that the network's speed of around 20 transactions per second is sufficient to keep up with demand.","s":"Scenario 1: Mempool Not Busy","u":"/mempool/","h":"#scenario-1-mempool-not-busy","p":2379},{"i":2388,"t":"If the mempool's contents will occupy more than one block, but the mempool is not full, then it is considered busy. In this case: Transactions that don't include fees will be added to the mempool, but they won't make it into the next block. Instead, they will have to \"wait in line\" for higher-priority transactions to be cleared. They likely will eventually be included in a block, but this is not guaranteed. Transactions with fees will be added to the mempool and prioritized according to the size of their fee-per-cost. For example, a transaction with a 1-mojo fee will enter the queue ahead of zero-fee transactions. Testnet11 info Testnet11 is constantly being \"dusted\" (thousands of small transactions are being included) in order to simulate a busy network, which can be useful for testing. The dust transactions do not include any fees, so in order for your transaction to be prioritized ahead of the dust, you simply have to include a 1-mojo fee. In this case, your transaction will likely be included in the next transaction block. However, if you don't include a fee, it will likely need to wait ~40-60 minutes before being included.","s":"Scenario 2: Mempool Busy But Not Full","u":"/mempool/","h":"#scenario-2-mempool-busy-but-not-full","p":2379},{"i":2390,"t":"If the mempool is completely full, then in order for your transaction to be added, it will need to kick out one or more transactions. In this scenario: Transactions with no fee will not be added to the mempool. Transactions with a fee of less than five mojos per cost (~100 million mojos for 2-input, 2-output transactions) will be treated as zero-fee transactions, i.e. they will not be added to the mempool. Transactions with a fee of at least five mojos per cost will be added to the mempool, prioritized by fee-per-cost, if they are not the lowest priority transactions (see Scenario 4 in this case). This scenario often occurs on testnet11. When the mempool is completely full, the dusters stop submitting transactions until some of the dust has been cleared. This scenario might occasionally happen on mainnet as well, in which case a minimum fee would be required. If you see INVALID_FEE_TOO_CLOSE_TO_ZERO in your log file, the mempool was likely full when you submitted your transaction, and you did not include a sufficient fee to kick out an existing transaction. Try resubmitting your transaction with a higher fee.","s":"Scenario 3: Mempool Full","u":"/mempool/","h":"#scenario-3-mempool-full","p":2379},{"i":2392,"t":"This is the final scenario, where every transaction in the mempool has a fee of at least five mojos per cost. In order for your transaction to be added, it will need to kick out one or more transactions. In this scenario: Transactions with no fee will not be added to the mempool. Transactions with a fee of less than five mojos per cost (~100 million mojos for 2-input, 2-output transactions) will be treated as zero-fee transactions, i.e. they will not be added to the mempool. Transactions with a fee of at least five mojos per cost might be added to mempool. For this to happen, they will need to kick out one or more transactions with a lower fee-per-cost ratio. For example: If the \"cheapest\" transaction currently in the mempool has a fee per cost of 10, and your transaction's fee per cost is 9, then your transaction will not be added to the mempool. If the \"cheapest\" transaction is 10, and yours is 15, then it likely will be added. However, even in this case, there are scenarios where your transaction might not be added, such as when the lowest-cost transaction currently in the mempool is quite large. If the mempool from Chia's mainnet reaches this state, the competition for block space will be strong. In order for your transaction to be included, the minimum fee might be significantly higher than it would be in the other scenarios.","s":"Scenario 4: Mempool Full of Transactions with Fees","u":"/mempool/","h":"#scenario-4-mempool-full-of-transactions-with-fees","p":2379},{"i":2394,"t":"A transaction can replace another transaction in the mempool if it spends at least the same coins as the original one. For example, if the original transaction spent coins A and B, then another transaction that spends A, B, and C can replace it. However, a transaction that spends B and C cannot. This prevents denial-of-service (DOS) attacks, as well as censorship of transactions. There is also a minimum fee bump which might depend on mempool software being used. In chia-blockchain, this is set to 5 fee-per-cost. This prevents spam replacement transactions. The full conditions for replace by fee are: The new spend bundle needs to include at least all the spends in the original one (can include additional spends) The new spend bundle needs to pay a higher fee per cost than the original one (and higher than the minimum fee required for inclusion) The new spend bundle needs to pay at least 10000000 mojos more in fees than the original one If there were any time-locks associated with the original spend, the new spend bundle has to have the same time-lock The replace by fee logic can be found herein the codebase)","s":"Replace by Fee","u":"/mempool/","h":"#replace-by-fee","p":2379},{"i":2396,"t":"When the farmer makes a block, they will select the highest fee-per-cost transactions from the mempool until they reach the maximum block size. These spend bundles are combined into one large spend bundle, which is guaranteed to be valid, since all spend bundles in the mempool must spend disjointed coins. Coin spends cannot impact other coin spends, which is a very nice property of UTXO systems, and allows parallelization of validation and block creation. The aggregate spend bundle also has one aggregate signature, which is a combination of every signature from every transaction in that block. For performance reasons, the chia-blockchain codebase currently creates only smaller blocks (less than 50% of the maximum size) in order to keep the blockchain smaller and easier to run. This \"throttle\" is likely to be removed in future versions, after additional optimizations have been performed.","s":"Block Creation","u":"/mempool/","h":"#block-creation","p":2379},{"i":2398,"t":"After a new block is added to the blockchain, all full nodes must look at the coins that were spent in that new block, and remove them from the mempool. The full node does not need to reapply every transaction again, since Chia coin spends are deterministic and sandboxed (see the Coin Set Intro page for more information). The full node only needs to look at the spent coins in the new block, and if there are any transactions that spend one of those coins, they are removed from the mempool. This means the mempool can be very large, the codebase can be simple, and high performance can be achieved.","s":"Updating the Mempool","u":"/mempool/","h":"#updating-the-mempool","p":2379},{"i":2400,"t":"Plots are stored in files. They can be moved from one directory to another, and even to another machine (the operating system doesn't matter). Back in 2021, plots took many hours to create with the original ChiaPoS plotter. A typical plotting process went something like this: ChiaPoS Phases 1-3: Create a plot on an SSD (1-8 hours) ChiaPoS Phase 4: Move the new plot to an HDD (10-15 minutes) Repeat steps 1-2 until the HDD is full. Finally, restart the plotter manually, pointing to a new HDD. This was reasonable at the time -- when it took 8 hours to create a plot, waiting an extra 15 minutes for it to be moved wasn't a big deal. However, with the release of newer plotters such as BladeBit CUDA, it now only takes a few minutes to create a plot. If the plotting software waited for the plot to be copied to an HDD before creating the next plot, the plotter would be idle nearly 90% of the time! Luckily, a few community members have created scripts to automate the plot-moving process. This page will show you how to use these tools. If you still prefer a manual process, we will cover that as well.","s":"Moving Plots","u":"/moving-plots/","h":"","p":2399},{"i":2403,"t":"GitHub link Video tutorial from JM Plow is a Python script developed by Luke Macken. It will automatically move files from an SSD to multiple HDDs. As long as you supply the script with enough HDDs, the SSD will never become full. Instead, either the plotter, or possibly the local network's latency, will become the bottleneck. Plow allows you to create upwards of 100 TB of plots per day from a single machine.","s":"Plow","u":"/moving-plots/","h":"#plow","p":2399},{"i":2405,"t":"GitHub link Plotman, by Eric Altendorf, is another tool for automating the plot creation process. It comes with a plethora of features, including the automatic spawning of new plotting processes, moving plots, and monitoring each plotting job.","s":"Plotman","u":"/moving-plots/","h":"#plotman","p":2399},{"i":2407,"t":"If you are only plotting a small farm, or if your plot times are greater than 15 minutes or so, then manually moving is a fine option.","s":"Manual","u":"/moving-plots/","h":"#manual","p":2399},{"i":2409,"t":"tip To prevent the harvester seeing a large plot as incomplete while it is being moved, append -mv to the file extension before moving the file. After it has been moved, rename it back to the original file extension. Once a plot is moved to a new directory, it will have to be added to the config. If you are using the command line, run the following command to add the directory: chia plots add -d '/path/to/directory' On the GUI, you can do this by going to the Farmer tab and clicking Add Plots. Select the new directory to add it. After following these steps, and restarting your farmer, the new plots should be visible.","s":"New Directory","u":"/moving-plots/","h":"#new-directory","p":2399},{"i":2411,"t":"note This will not work unless the farmer on the new machine has access to the same keys. Once Chia is installed on the new machine, you will need to import the same keys used by the previous farmer. If you are using the command line, run the following command to get the mnemonic phrase: chia keys show --show-mnemonic-seed On the GUI, you can do this by logging out and clicking the options button on your wallet. Click Details and reveal the seed phrase. Next, import the mnemonic phrase on the new machine through the GUI or by using the following command: chia keys add 'mnemonic' Finally, you will need to move the plot file to the new machine and add the directory to the config. If you are using the command line, run the following command to add the directory: chia plots add -d '/path/to/directory' On the GUI, you can do this by going to the Farmer tab and clicking Add Plots. Select the new directory to add it. After following these steps, and restarting your farmer, the new plots should be visible.","s":"New Machine","u":"/moving-plots/","h":"#new-machine","p":2399},{"i":2413,"t":"It's a good idea to periodically check plots to ensure that they are not corrupted. You can check if they are working by running the following command: chia plots check This can also be done in the GUI by checking if the plots are visible in the list.","s":"Checking Plots","u":"/moving-plots/","h":"#checking-plots","p":2399},{"i":2415,"t":"Before we can outline the specification of the Chia\\textrm{{\\sf Chia}}Chia blockchain and its rationale in more detail, we first must understand the general challenges one faces when constructing a PoSpace based blockchain and some of the relevant literature on how to address these challenges. Ultimately, we want to argue security assuming only that sufficient fraction of the resource (space, fast VDFs) is controlled by rational parties. Towards this, in this Section we first discuss how to achieve security assuming sufficiently many parties are honest, and then in §3 how rational behavior is incentivized by ensuring that deviating from the protocol will not give any (or very little) extra reward to parties. Figure 3: Illustration of the three main attack vectors that arise if we replace PoW with proofs of space (or any other efficient proof systems) in Bitcoin, and how they are addressed in Chia. As mentioned in the introduction, just replacing proofs of work in Bitcoin with proofs of space does not work. For one thing, there are syntactic differences between proofs of work and proofs of space. But more importantly, security breaks down if one replaces PoW with PoSpace in any straight forward way. The reason for this is the fact that for PoSpace (after plotting) it's extremely cheap to compute a proof for a given challenge. The analogue issue with proof of stake is sometimes called \"nothing at stake\". We'll refer to proof systems where proofs can be efficiently computed (like proofs of space or stake) as efficient, and describe three attack vectors that arise because of this issue: grinding, double-dipping and bootstrapping. Those are illustrated in Figure 3 and described below. In §5 we'll describe how those attacks are addressed in Chia\\textrm{{\\sf Chia}}Chia in more detail.","s":"2 - Longest-Chain Protocols from Efficient Proof Systems","u":"/longest-chain-protocols/","h":"","p":2414},{"i":2417,"t":"In longest-chain blockchains the challenge used to determine the miner/farmer who can add a block is derived from the chain itself. In Bitcoin, where the challenge for a block is simply the hash of the previous block, a miner can influence the PoW challenge by trying out different transaction sets or time stamps. While such \"grinding\" through different challenges gives no advantage in PoW based cryptocurrencies, it's a problem once we use an efficient proof system. To prevent such grinding we adopt an approach from Spacemint [PKF+18] and split the chain in two parts which we'll call trunk and foliage. The trunk contains only canonical proofs, and the challenges depend only on values contained in the trunk. This way the only choice a farmer has to influence the challenge is by withholding a winning block. The foliage contains all the remaining \"grindeable\" content, in particular transactions and time-stamps.","s":"2.1 Grinding","u":"/longest-chain-protocols/","h":"#21-grinding","p":2414},{"i":2419,"t":"Even once grinding is no longer an option, an adversary can in private create an entire \"block-tree\" by forking at each level. While each path in such a tree will have an exponentially small (in the depth) probability of overtaking the honest chain if the adversary controls less than half the resources, there's also an exponential number of paths, so it's not clear how much of an advantage this strategy gives. For constructions where each challenge depends on the previous block (as in Bitcoin), it was shown [CP19] that this strategy \"boosts\" the resource by a factor e≈2.718e\\approx 2.718e≈2.718, in particular, with this strategy an adversary (having an unlimited number of VDFs whose speed matches the fastest honest time lord) can create a chain that is longer than the honest one with only a 1/(1+e)≈0.2691/(1+e)\\approx 0.2691/(1+e)≈0.269 fraction of the total space, and thus significantly less than the 0.50.50.5 fraction (of hashing power) required in Bitcoin. To limit the impact of double-dipping an early version [CP19] of Chia\\textrm{{\\sf Chia}}Chia consensus specified that also the honest parties do a very limited form of double-dipping and try to extend the best 333 blocks they see at every depth, this rule was (by simulations) shown to increase the space required by an adversary from the 26.9%26.9\\%26.9% mentioned above, to 38.5%38.5\\%38.5%. The deployed Chia\\textrm{{\\sf Chia}}Chia protocol uses correlated randomness to limit the impact of double dipping. This elegant idea was introduced in [BDK+19], and basically suggest to only use every kkkth block to compute the challenges.1 The authors of [BDK+19] determine the exact fraction of the resource the adversary must control to break security as a function of kkk (as mentioned, it's 2.7182.7182.718 for k=1k=1k=1, and goes to 111 as kkk increases). Chia\\textrm{{\\sf Chia}}Chia uses a variant where a challenge depends on one out of at least (not exactly) k=16k=16k=16 blocks. Their analysis also applies to this setting, and with k=16k=16k=16 states that by double dipping the adversary can boost their resource by a factor of 1.471.471.47, which means they must control at least a 11+1.47=0.405\\frac{1}{1+1.47}=0.4051+1.471​=0.405 fraction of the resource for an attack. The resource considered in [BDK+19] is simply stake, while in Chia\\textrm{{\\sf Chia}}Chia it's the product of space and VDF speed. Concerning VDFs, while for the honest parties the only thing that matters is the speed of the three VDFs controlled by the fastest honest time lord, for an adversary the speed as well as the number of VDFs available to them matter. In the security analysis we can simply assume the adversary controls an unbounded number of VDFs, as that's when the analysis from [BDK+19] applies. This is how eq.(2) spaceh⋅vdfh>spacea⋅vdfa⋅1.47space_h\\cdot vdf_h > space_a \\cdot vdf_a \\cdot 1.47spaceh​⋅vdfh​>spacea​⋅vdfa​⋅1.47 in §1.1 was derived.","s":"2.2 Double-Dipping","u":"/longest-chain-protocols/","h":"#22-double-dipping","p":2414},{"i":2421,"t":"A major issue with longest-chain blockchains based on efficient proof systems is bootstrapping (aka. costless simulation) by which an adversary can use its resource to create a chain at basically no cost. Such bootstrapping can be used for short range attacks like selfish mining, but also long range attacks where an adversary forks the chain at a point in the past and then \"bootstraps\" it into the present. Such long range attacks make it hard to achieve security under dynamic availability, where we assume that the honest parties control a majority of the resource at any point in time, but the total resource can vary over time. The amount of hashing power contributed towards securing Bitcoin has varied by many orders of magnitude in the past, and the same already happened to Chia\\textrm{{\\sf Chia}}Chia in the first weeks after launch. Figure 4: Illustration of the no slowdown and delayed gratification properties. A longest-chain blockchain satisfying these properties is no more susceptible to selfish mining than Bitcoin. Existing proposals to achieve security under such dynamic availability include check-pointing, which is problematic as parties that join for the first time or have not followed the chain for a longer period need additional trust assumptions to decide which chain to follow. Unlike for grinding and double-dipping, the attacks that become possible due to bootstrapping are quite different for proofs of space and proofs of stake. In the latter one must consider old keys that hold no stake in the current chain, but still can be used to bootstrap from a past block. To address this it was suggested to have honest parties use key-evolution schemes [BGK+18] so the current keys cannot be used to create blocks in the past. Key-evolution is problematic as it's clearly not rational for honest parties to do; they could sell their keys or lose their stake in case of a deep reorg. The essence of the bootstrapping problem is the fact that one cannot ensure that time has passed in-between the creation of subsequent blocks. Chia\\textrm{{\\sf Chia}}Chia solves this problem by combining proofs of space with proofs of time, concretely, verifiable delay functions (VDFs), which enforce that some inherently sequential computation (which requires time linear in the length of the computation) was performed in-between the creation of blocks. Chia\\textrm{{\\sf Chia}}Chia combines those three countermeasures (splitting the chain, correlated randomness and proofs of time) into a single design which is secure if the resources controlled by the honest parties satisfy the bound from Eq. Footnotes​ Using the same challenge for k>1k>1k>1 blocks has already been suggested in [PKF+18], but this is a different requirement (as the challenge can still depend on all blocks) and adds much less security than correlated randomness for small kkk. ↩","s":"2.3 Bootstrapping","u":"/longest-chain-protocols/","h":"#23-bootstrapping","p":2414},{"i":2423,"t":"Using the same challenge for k>1k>1k>1 blocks has already been suggested in [PKF+18], but this is a different requirement (as the challenge can still depend on all blocks) and adds much less security than correlated randomness for small kkk. ↩","s":"Footnotes","u":"/longest-chain-protocols/","h":"#footnote-label","p":2414},{"i":2425,"t":"info This page will go into the details of the various different ways to install Chia. If you already installed Chia as part of the Farming Guide, then feel free to skip ahead to the Plotting Basics page. There are various ways to install Chia, with the best method depending on what you intend to do: If you simply wish to use the Chia wallet, or to run a farm on a single personal computer, then we recommend installing the GUI from our official downloads page for Windows and MacOS, and for Linux users to install the package as described below. The GUI is the simplest way to interact with the Chia client and ideal for most non-developer use cases. If you intend to run a dedicated Chia full node on a server and connect to it programmatically using the RPC interface, the best method would be to install and run Chia via the command line on a proper server environment. If you intend to do Chialisp development or build projects that leverage Chia, you have the options of either using an installer (the recommended pattern), or installing from source. Lastly, if you plan on making contributions to the source code, then installing Chia from source would be your path. In summary, unless you already knew before reading this page that you should be installing from source, chances are your best path will be to install from our official downloads page or a Linux package, depending on your OS.","s":"Advanced Installation","u":"/installation/","h":"","p":2424},{"i":2427,"t":"The minimum supported specs are that of the Raspberry Pi 4, 4GB model: Quad core 1.5Ghz CPU (must be 64 bit) 4 GB RAM As of Chia version 2.0, Python versions 3.8 and later are supported","s":"System Requirements","u":"/installation/","h":"#system-requirements","p":2424},{"i":2429,"t":"Chia plot files are at least 108GB in size (for K32). To plot successfully requires drives formatted to support large files. Formats that will work include NTFS, APFS, exFAT, and ext4. Do not use drives with FAT formatting (for example FAT12, FAT16, and FAT32), or else plotting will fail. Future versions of Chia will check for unsupported drives, but for now it's up to each user to check their drive format.","s":"Drive Format","u":"/installation/","h":"#drive-format","p":2424},{"i":2431,"t":"If the computer or hard drives go to sleep during the plotting process, it will fail, and you will need to start over. Please ensure all sleep, hibernate and power saving modes for your computer and hard drives are disabled before starting the Chia plotting process. In the future, Chia will have a resume plot feature. In the meantime, if you do get a failed plot, delete all *.tmp files before starting a new plot.","s":"Sleep kills plots","u":"/installation/","h":"#sleep-kills-plots","p":2424},{"i":2434,"t":"This method is intended for linux environments APT YUM DNF PIP # Install packages sudo apt-get update sudo apt-get install ca-certificates curl gnupg # Add GPG key curl -sL https://repo.chia.net/FD39E6D3.pubkey.asc | sudo gpg --dearmor -o /usr/share/keyrings/chia.gpg # Set up repository echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/chia.gpg] https://repo.chia.net/debian/ stable main\" | sudo tee /etc/apt/sources.list.d/chia.list > /dev/null sudo apt-get update # Install chia-blockchain sudo apt-get install chia-blockchain # Use chia-blockchain-cli instead for CLI only # Install packages sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://repo.chia.net/rhel/chia-blockchain.repo # Install chia-blockchain sudo yum install chia-blockchain # Use chia-blockchain-cli for CLI only # Install packages sudo dnf install 'dnf-command(config-manager)' sudo dnf config-manager --add-repo https://repo.chia.net/rhel/chia-blockchain.repo # Install chia-blockchain sudo dnf install chia-blockchain # Use chia-blockchain-cli for CLI only note Make sure you have Python 3.10 and Git installed. # Create virtual environment python -m venv venv # Activate virtual environment . ./venv/bin/activate # MacOS / Linux ./venv/Scripts/Activate.ps1 # Windows # Update pip pip install --upgrade pip # Install chia-blockchain pip install --extra-index-url https://pypi.chia.net/simple chia-blockchain miniupnpc Chia strives to provide binary wheels for modern systems. If your system does not have binary wheels, you may need to install development tools to build some Python extensions from source. If you're attempting to install from source, setting the environment variable BUILD_VDF_CLIENT to N will skip trying to build Timelord components that aren't very cross platform, e.g. export BUILD_VDF_CLIENT=N.","s":"Using the CLI","u":"/installation/","h":"#using-the-cli","p":2424},{"i":2436,"t":"This method is primarily intended for contributing to the Chia codebase Linux/MacOS Windows note Make sure you have Python 3.10 and Git installed. # Download chia-blockchain git clone https://github.com/Chia-Network/chia-blockchain -b latest --recurse-submodules # Change directory cd chia-blockchain # Install dependencies sh install.sh # Activate virtual environment . ./activate # Initialize chia init The following is how you update to the latest version: # Change directory cd chia-blockchain # Activate the virtual environment . ./activate # Stop running services chia stop -d all # Deactivate the virtual environment deactivate # Remove the current virtual environments rm -r venv rm -r .penv rm -r .venv # Pull the latest version git fetch git checkout latest git reset --hard FETCH_HEAD --recurse-submodules # If you get RELEASE.dev0 then delete the package-lock.json in chia-blockchain-gui and install.sh again # This should say \"nothing to commit, working tree clean\" # if you have uncommitted changes, RELEASE.dev0 will be reported git status # Install the new version sh install.sh # Activate the virtual environment . ./activate # Initialize the new version chia init note Make sure you have Python 3.10 and Git installed. # Download chia-blockchain git clone https://github.com/Chia-Network/chia-blockchain -b latest --recurse-submodules # Change directory cd chia-blockchain # Install dependencies ./Install.ps1 # Activate virtual environment . ./venv/Scripts/Activate.ps1 # Initialize chia init The following is how you update to the latest version: # Change directory cd chia-blockchain # Activate the virtual environment . ./venv/Scripts/Activate.ps1 # Stop running services chia stop -d all # Deactivate the virtual environment deactivate # Remove the current virtual environment rm -r venv rm -r .penv rm -r .venv # Pull the latest version git fetch git checkout latest git reset --hard FETCH_HEAD --recurse-submodules # If you get RELEASE.dev0 then delete the package-lock.json in chia-blockchain-gui and install.sh again # This should say \"nothing to commit, working tree clean\" # if you have uncommitted changes, RELEASE.dev0 will be reported git status # Install the new version ./Install.ps1 # Activate the virtual environment . ./venv/Scripts/Activate.ps1 # Initialize the new version chia init","s":"From Source","u":"/installation/","h":"#from-source","p":2424},{"i":2438,"t":"note Chia does not support the Raspberry Pi 3, and we do not recommend running the GUI on the 4GB Raspberry Pi 4 model. It is highly recommended you put the Chia blockchain and wallet database on an SSD or NVMe drive, rather than the SD card. Swap​ It is suggested that you set up 1024 MiB of swap: Ubuntu 20.04 LTS Raspbian 64 Run the following commands to set up the swap: sudo dd if=/dev/zero of=/swap bs=1M count=1024 sudo chmod 600 /swap sudo mkswap /swap sudo swapon /swap Add this line to /etc/fstab so that swap available on reboot: /swap swap swap defaults 0 0 Here is an excellent walk-through of increasing swap space on Raspbian 64. Setup​ Run the following commands to prepare for installation: # Requirements to compile the blockchain sudo apt-get install -y build-essential python3-dev # If you are not using Raspbian 64, add this export PIP_EXTRA_INDEX_URL=https://www.piwheels.org/simple/ # Make sure you have 64-bit Python 3.8 or later python3 -c 'import platform; print(platform.architecture())' Proceed​ note If you run into an error during the build process, make sure you are running a 64-bit version of the OS. You can check by running uname -a. If it says arm7l, you need a 64-bit version of the OS. The uname -a output should end with aarch64 GNU/Linux. Finally, follow the typical from source installation for Linux to continue. Disable Timelord​ This is not necessary when installing from source. However, if you install Chia in some other way, disable the timelord build process: export BUILD_VDF_CLIENT=N","s":"Raspberry Pi 4","u":"/installation/","h":"#raspberry-pi","p":2424},{"i":2440,"t":"Docker WSL2 Amazon Linux 2 FreeBSD OpenBSD Installation instructions for docker are found on the container repo: Docker You can run chia-blockchain in Ubuntu 20.04 LTS via WSL2 on Windows. NOTE: WSL2 plotting is currently only slightly faster than plotting on the native windows client. WSL2 requires significant tweaking to set up correctly. If you find that daunting, it's probably easier to just use the native windows client. You can not run the GUI as WSL2 doesn't yet support graphical interfaces from WSL2. Check if you already have WSL2 or WSL1 installed:​ From PowerShell, type: wsl -l -v If you get a listing of help topics for wsl commands, you have WSL1, and need to upgrade. To upgrade, follow the instructions here. If you get a blank result or a listing of installed Linux versions, you have WSL2 and are OK to proceed. If WSL is not installed:​ From an Administrator PowerShell: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all You will be prompted to reboot. Installing a new WSL2 instance:​ Install Ubuntu 20.04 LTS from the Microsoft Store and run it and complete its initial install steps. You now have a linux bash shell environment that can run linux native software on Windows. Install from source - WSL2​ See install from source for detailed instruction. Running a standalone Windows wallet gui is deprecated but may return in later versions. You can run the Windows version and share keys. You can also plot in WSL2 and migrate the plots to a Windows farmed plot directory. Increasing the WSL Maximum Storage Capacity​ WSL2 uses a Virtual Hardware Disk (VHD) to store files, and it automatically resizes as files grow. However, the VHD has an initial maximum size of 256 GB. Therefore, the default WSL2 VHD is probably only capable of plotting k=30 plots. To plot anything larger, you will need to increase the maximum allowable size. Follow the guide here. Setting a maximum limit to WSL2 memory access​ If you try plotting Chia in WSL2 without limiting the memory access, WSL2 will use 100% of your available machine's memory, and your computer will get bogged down and begin swapping memory to your hard drive. This will severely cripple your plotting speeds. To set the maximum memory that WSL2 is allowed to use, create a configuration file as described in this guide. WSL VHD Plotting Nuances​ Plotting within WSL2 can write to either the native VHD (which is EXT4) or to any other drive, which can be NTFS or any other FS-type. Writing to the native VHD is faster than writing out to another drive. Plotting uses three commands for directory control: -t for initial temp directory. Phases 1 and 2 happen here. -2 for secondary temp directory. Phase 3 (compression) happens here. -d for final destination. Phase 4 happens here. Plotting works such that -t and -2 require the exact same amount of storage space. Therefore, if -t and -2 point to the same drive, that drive needs 2x the final file size + 1x the max working file size. For maximum speed, -t and -2 should be inside the WSL2 filesystem. Something like: -t ~/chia_temp -2 ~/chia_temp. Just beware that the WSL2 VHD will need a much larger maximum capacity. -d can point to any other drive for the final destination. Install from source - Amazon Linux 2​ See install from source for detailed instruction. Install from binary package​ # Install chia-blockchain as a binary package python -m venv venv ln -s venv/bin/activate . ./activate pip install --upgrade pip pip install --extra-index-url https://pypi.chia.net/simple chia-blockchain miniupnpc These instructions were tested with Chia 1.1.4 on FreeBSD 11.3- and 11.4-RELEASE, newer versions may exist Upgrading Existing Chia Installs​ If you're upgrading from a previously built chia installation, exit from your previous venv environment (deactivate), create a new directory in which to place the latest Chia (e.g. mkdir ~/chia-1.0.5 && cd ~/chia-1.0.5), clone the latest repo (git clone https://github.com/Chia-Network/chia-blockchain.git -b latest), enter it and create a new Python virtual environment within it (python3 -m venv venv). Now, activate the newest environment (. venv/bin/activate), upgrade pip (pip install --upgrade pip). Now you may skip down to the clvm_rs install section and begin there. Why This Manual Installation?​ Currently the only way to ensure Chia builds on FreeBSD is to do it from the source. By following these instructions to the letter, you should have no problem building the latest Chia from source on a FreeBSD 11.3 or 11.4. This should also work on FreeBSD 12, possibly with some modifications - e.g. if the ports py-cryptography version is newer than 3.3.2, simply edit as needed - or if your preferred Python version is 3.8+ it should all still work considering you modify the package names as necessary. Notes on FreeNAS (TrueNAS)​ If you had been using NFS or Samba sharing to expose your plots to a harvester on another OS, such as Linux, you can instead build Chia within a jail (see the FreeNAS manual for 'jails'), expose your plot directories to it and run the harvester within. In my experience, it provides lower-latency and more reliable access to the plots since the disks are direct-attached and not being provided through an extra few layers of network protocols. If you are using a fresh jail created by the FreeNAS web GUI you may need to install openssh and setup a ssh key to login as root because by default it appears PAM password logins do not work. The jail shell CLI provided by the FreeNAS GUI allows copy and pasting so you can easily paste your public-key into /root/.ssh/authorized_keys && chmod -R 700 /root/.ssh. These instructions would be applicable to 11.3 and 11.4 jails created within FreeNAS 11 only. Version 12 (FreeBSD 12) ✔ Other Notes​ These instructions will have you building both chia-blockchain and clvm_rs from github source, and python-cryptography from FreeBSD's ports. The result of this build will be the \"chia version\" showing the current release branch ahead by 1 and in \"dev0\"; for instance building 1.0.1 results in \"chia version\" returning \"1.0.2.dev0\". If someone knows why this is and how to fix it, please, edit and correct this! It does not happen on Linux. These instructions assume a fresh FreeBSD 11 installation! Discouraged?​ Following the instructions in this document will result in a working Chia CLI build on FreeBSD 11 if you follow step-by-step starting from a vanilla FreeBSD installation. Is something broken? Compare the commands you typed, accessible in your bash shell history, and match them with each command in this document. If you feel you've messed something up, do the following: # if you have (venv) in your shell prompt, type deactivate deactivate # remove the chia-blockchain directory which will contain clvm_rs and the Python venv rm -rf chia-blockchain # ... now start again! You don't need to do all the setup steps but instead may start at the upgrade notes above if you had finished up to the py-cryptography ports build. Pre-requisite package installation​ If starting the build again after a failure and you have not re-installed FreeBSD, don't just skip this package installation section! You may have missed one or more software packages critical to the build. The 'pkg', 'portsnap' and port build are to be run as root. Everything else can be run from a normal non-root user. As root, update pkg and ports, and then install all packages as instructed below. # Update your packages and ports; if ports are already installed as part of your fresh install run portsnap update instead of fetch/extract. pkg update portsnap fetch && portsnap extract # Install bash if you have not; the default csh will not suffice for the build scripts. pkg install bash # change your shell to bash chsh -s /usr/local/bin/bash # run bash /usr/local/bin/bash Make sure you change the shell for your non-root chia-blockchain user. If you're opting to run Chia as root, you can skip this. If you are root, run this as it appears below; otherwise, you can omit the username because you are already that user. chsh -s /usr/local/bin/bash NONROOT_USERNAME Now proceed with installing the mandatory development tools. pkg install lang/gcc9 gcc gmake cmake gcc notes​ After installing gcc version 9.0, this message appears: To ensure binaries built with this toolchain find appropriate versions of the necessary run-time libraries, you may want to link using -Wl,-rpath=/usr/local/lib/gcc9 It's probably possible to build the libraries in a way that doesn't require export LD_LIBRARY_PATH=/usr/local/lib/gcc9. If you know how click \"edit\" and dish. Install rust, Python, and everything else.​ pkg install lang/rust pkg install lang/python37 py37-pip py37-setuptools py37-wheel py37-sqlite3 py37-cffi py37-virtualenv py37-maturin python pkg install node npm git openssl If you are ssh'ing into the machine you might want to use 'screen' so that processes will continue even if you logout. For more information: https://www.freebsd.org/cgi/man.cgi?query=screen. 'tmux' is also a great alternative especially if you use iTerm2 on macOS as it supports native tabs and windows with the '-CC' CLI option. # optional packages pkg install screen tmux Repo Cloning and Virtual Environment (venv) Activation​ From this point on, with the exception of the security/py-cryptography port build process (and any other exceptions noted), you may proceed as a normal user. # Clone the latest chia-blockchain repository, via HTTP: git clone https://github.com/Chia-Network/chia-blockchain.git -b latest # or with SSH: git clone git@github.com:Chia-Network/chia-blockchain.git -b latest # Note: you can specify the branch by adding \"--branch \" like: git clone http://github.com/Chia-Network/chia-blockchain.git --branch 1.0.1 Create a virtual environment directory 'venv' from within the 'chia-blockchain' directory and activate it before proceeding cd chia-blockchain python3 -m venv venv source venv/bin/activate You are now in the virtual environment that Python (and so chia) will use. You should have a \"(venv)\" prefix to your terminal prompt to confirm the venv is working. Upgrade pip: pip install --upgrade pip To exit the virtual environment: deactivate Building py-cryptography from ports​ You'll need to switch to root for this part. If you're already using root remember to leave the virtual environment for this step. cd /usr/ports/security/py-cryptography # Instruct 'make' that the SSL library is openssl. # Also force the Python version in case the port tries for a higher one echo \"DEFAULT_VERSIONS+=ssl=openssl python=3.7 python3=3.7\" >> /etc/make.conf make You'll probably see a bunch of warnings and notices; these are not errors and it will build. Do NOT run make install. We will do our own py-cryptography install because 'make install' does not copy to our virtual environment. (If you know how to change this, please edit). If you are running inside a jail and make fails with an error about the OSVERSION not matching UNAME, you will need to set the UNAME_r environment variable to match your jails OSVERSION: # Adjust the value to match your jails OSVERSION export UNAME_r=11.4-RELEASE A full version list can be found here. Once complete switch back to your non-root user if you so optioned. You must now be in your venv once again. clvm_rs​ Build and install the current version of clvm_rs. These instructions were created for version 0.1.7 but a newer version may exist. git clone http://github.com/Chia-Network/clvm_rs.git --branch 0.1.7 cd clvm_rs maturin develop --release pip install git+https://github.com/Chia-Network/clvm@use_clvm_rs clvm_rs 0.1.7 is now installed in your virtual environment. Install py-cryptography to the venv​ Copy py-cryptography and its meta-data from the staging directory to your virtual environment: cp -R /usr/ports/security/py-cryptography/work-py37/stage/usr/local/lib/python3.7/site-packages/cryptography ${VIRTUAL_ENV}/lib/python3.7/site-packages/cryptography cp -R /usr/ports/security/py-cryptography/work-py37/stage/usr/local/lib/python3.7/site-packages/cryptography-3.3.2-py3.7.egg-info ${VIRTUAL_ENV}/lib/python3.7/site-packages/cryptography-3.3.2-py3.7.egg-info Clear any Python byte-code cache files that may contain the old path. These should be re-built by the interpreter but we like a clean environment. find ${VIRTUAL_ENV}/lib/python3.7/site-packages/cryptography -name __pycache__ | xargs -I{} rm -rf \"{}\" Chia modifications and Building Chia Itself​ Switch to your chia-blockchain clone directory. You will need to edit two files. Using your favorite text editor, modify setup.py to edit the cryptography package version to 3.3.2. \"cryptography==3.4.6\" --> to --> \"cryptography==3.3.2\" Now you must modify chia/util/keychain.py to provide a static key when using the Python keyring. This is mandatory otherwise every time the keyring is accessed your passphrase will need to be entered on the command line, and for the CLI daemon this will not do. On line 25 of chia/util/keychain.py, change: elif platform==\"linux\": to: elif platform==\"linux\" or platform.startswith(\"freebsd\"): On line 27 of the same file, change the passphrase from \"your keyring password\" to whatever you wish your passphrase to be. This is intended to be fixed in future versions but, for the time being, Linux and FreeBSD must have the keyphrase provided statically. keyring.keyring_key = \"your keyring password\" # type: ignore can be changed like so: keyring.keyring_key = \"Too Many Secrets\" Now, you will build Chia! sh install.sh Once done, run: chia init NOTE: if you need to disable UPnP - a protocol which automatically sets up port-forwarding on routers using NAT which is a typical setup at any residence with broadband - set \"enable_upnp: False\" in config.yaml. You can use the one-liner below or do it yourself. sed -i .bak 's/enable_upnp: True/enable_upnp: False' ~/.chia/mainnet/config/config.yaml While you don't absolutely need port 8444 forwarded to your Chia node, it is advised that you do so that other peers may connect to you instead of you solely connecting to them. For the average at-home farmer it is advised you do not disable UPnP unless you absolutely know what you're doing or have another node on your local network already using the port and are planning to Farm on Many Machines. Installed and Ready to Farm!​ That's it! Provided the instructions were followed to the T, and the build is a fresh FreeBSD 11.3 or 11.4, either hardware or FreeNAS jailed, you should be good to go! Now go to town with chia start node or whatever floats your boat. More details can be found in the Chia Introduction. These instructions were tested with Chia 1.1.4 on OpenBSD/amd64 6.8, newer versions may exist # install required packages doas pkg_add git python-3.8.6 rust cmake gmake gmpxx # create a new user with the login class \"daemon\" so that it can use all # available memory for plotting, then switch to that user doas useradd -m -Ldaemon chia doas -u chia ksh -l cd # clone repos git clone https://github.com/Chia-Network/chia-blockchain.git --branch latest git clone https://github.com/Chia-Network/clvm_rs.git --branch 0.1.7 git clone https://github.com/PyO3/maturin.git --branch v0.10.3 git clone https://github.com/timkuijsten/chiavdf.git --branch openbsd # chiavdf/pull/71 export BUILD_VDF_CLIENT=N # create python virtual environment for Chia cd chia-blockchain/ python3 -m venv venv . ./venv/bin/activate pip install --upgrade pip cd ../chiavdf/ pip install . cd ../maturin/ # don't pass static compiler flags to the rust linker because that would cause # a core dump, possibly because of resource limits sed -i 's|cargo_args.extend(\\[\"--\", \"-C\", \"link-arg=-s\"\\])|#cargo_args.extend(\\[\"--\", \"-C\", \"link-arg=-s\"\\])|' setup.py pip install . cd ../clvm_rs/ maturin develop --release # XXX should be a more elegant way... cp target/release/libclvm_rs.so ../chia-blockchain/clvm_rs.so cd ../chia-blockchain/ # use our previous compile results sed -i 's|\"chiavdf==1.0.1\"|\"chiavdf==1.0.2.dev1\"|' setup.py # use a hardcoded random secret so the software can run headless and without # user intervention sed -i 's|elif platform == \"linux\":|elif platform == \"linux\" or platform.startswith(\"openbsd\"):|' chia/util/keychain.py _keyring=$(dd status=none if=/dev/random bs=8 count=1 | od -H | tr -d ' ' | head -1 | cut -b8-25) sed -i 's|keyring.keyring_key = \"your keyring password\"|keyring.keyring_key = \"'\"$_keyring\"'\"|' chia/util/keychain.py unset _keyring sh install.sh # DONE, Chia is installed now, start using it by creating a config and keys chia init chia keys generate # if you are going to setup port forwarding, disable upnp chia configure --enable-upnp false chia start node wallet farmer harvester GUI Build / Usage​ WARNING: the following has only been tested with Chia 1.0beta7 on OpenBSD/amd64 6.7 The build instructions in the previous sections above must be completed successfully before attempting to build the GUI using the procedure below. WARNING: Although the following steps have been used successfully, the resulting GUI will be run with an older version of electron than is recommended by the Chia Network team. This may result in unexpected problems. Prerequisite package installation​ As root (or using doas / sudo), first install some additional OpenBSD packages required for GUI usage: pkg_add -i electron Build​ cd chia-blockchain . ./activate cd chia-blockchain-gui # build / set up GUI npm run build # Remove failed electron 8.2.5 install and fall back to the OpenBSD # ports tree 8.2.0 electron, which currently (as of 6/10/2020) works. # # This may not continue to work in the future. A full solution to # this requires official OpenBSD electron builds, provided by the # electron project itself. rm -rf node_modules/electron Launch GUI​ The GUI can now be launched using the following commands: cd chia-blockchain . ./activate cd chia-blockchain-gui npm run electron","s":"Other environments","u":"/installation/","h":"#other-environments","p":2424},{"i":2442,"t":".chia/ └── mainnet/ ├─ config/ │ ├─ config.yaml │ └─ ssl/ ├─ db/ ├─ log/ │ └─ debug.log ├─ run/ └─ wallet/ All data used by the Chia blockchain is stored at the location set with the CHIA_ROOT environment variable, which defaults to ~/.chia/mainnet (the hidden folder .chia inside of your home directory) if unset. The blockchain database is stored under the db subdirectory. It is possible to copy the database file to use as a backup or put on another machine. To resync the full node from the start, delete the database file and restart the node. The config file under the config subdirectory. Its name is config.yaml, and it can be used to find the root cause of problems. It is possible to configure the CHIA_ROOT environment variable to another location. A common use for this would be to switch it to ~/.chia/testnet to have a separate config for the testnet.","s":"Directory Structure","u":"/installation/","h":"#directory-structure","p":2424},{"i":2444,"t":"Using the CLI gives greater and more precise control over the various Chia services such as the full node. As of 1.8.2, when installing from an installer or package CLI commands will be automatically added to your path for Windows and Linux. For more details on the commands, read the CLI Reference. MacOS Windows Linux The CLI commands are stored in the following location: /Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon To be able to use these commands without going to that directory in the terminal, add it to the path. This can be done by running the following command: export PATH=/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon:$PATH To load this on startup, add it to the .bashrc, .bash_profile, or .zshrc file depending on which is used by the shell. The CLI commands are stored in the following location: If installed for the user it can be found at ~\\AppData\\Local\\Programs\\Chia\\resources\\app.asar.unpacked\\daemon If installed for all users it can be found at C:\\Program Files\\Chia\\resources\\app.asar.unpacked\\daemon\\chia.exe The CLI commands are stored in the following location: /usr/bin/chia This location should already be included in your system's PATH, so you should be able to run chia directly from the command line without any further setup.","s":"CLI","u":"/installation/","h":"#cli","p":2424},{"i":2446,"t":"The GUI is the most user-friendly method of interacting with Chia for non-developer uses, and it can be installed manually from the CLI if you installed from source. MacOS / Linux Windows # Install the GUI . ./install-gui.sh # Start the GUI sh start-gui.sh The following is how you update to the latest version: # Change directory into the GUI cd chia-blockchain-gui # Pull the latest version git fetch # Change directory cd .. # Change permissions on install script chmod +x ./install-gui.sh # Install the new version of the GUI ./install-gui.sh # Start the GUI bash start-gui.sh # Install the GUI . .\\Install-gui.ps1 # Change directory cd chia-blockchain-gui # Start the GUI Start-Process -NoNewWindow npm run electron The following is how you update to the latest version: # Change directory cd chia-blockchain-gui # Pull the latest version git fetch # Change directory cd .. # Install the new version of the GUI ./Install-gui.ps1 # Change directory cd chia-blockchain-gui # Start the GUI Start-Process -NoNewWindow npm run electron","s":"GUI","u":"/installation/","h":"#gui","p":2424},{"i":2448,"t":"Upon launch the GUI will set everything up automatically, however if installing from source then the initial setup needs to be done manually via the CLI. First, initialize the Chia configuration files: chia init Then, generate your keys: chia keys generate Finally, start the farmer and its full node: chia start farmer","s":"Initial Startup","u":"/installation/","h":"#initial-startup","p":2424},{"i":2450,"t":"Linux users who have installed the chia-blockchain-cli package using apt, yum, or dnf will receive systemd configuration files for initializing and managing the Chia processes. Each Chia service needs to be managed separately with systemd, except for the chia-daemon, which will be initialized automatically when any other Chia service is started with systemd (for example, the data-layer service will not automatically start the wallet service - both need to be started individually with systemd). A user must be specified during the initialization to ensure the resulting process can find the Chia root directory. The included systemd files support the default Chia directory location of /home//.chia/mainnet only. To start a Chia process with systemd, the command format is systemctl start chia-@. For example, if starting a Chia full node for the Linux user ubuntu, the command would be: systemctl start chia-full-node@ubuntu To start the full-node at system boot: systemctl enable chia-full-node@ubuntu The services available to be managed with systemd are: chia-crawler chia-data-layer chia-data-layer-http chia-farmer chia-full-node chia-harvester chia-introducer chia-seeder chia-timelord chia-wallet Note that the chia-timelord service runs the timelord coordinator service, but not the VDF clients.","s":"Systemd","u":"/installation/","h":"#systemd","p":2424},{"i":2452,"t":"Sometimes stray daemons left over from previously running processes will cause strange bugs/errors when upgrading to a new version. Make sure all daemons and chia processes are killed before installing or upgrading. This is normally done by executing chia stop -d all from the upgrade example above. But it doesn't hurt to double check using ps -Af | grep chia to make sure there are no chia processes left running. You may have to manually kill the chia daemon if an install and chia start was performed without first running chia stop -d all If all else fails, rebooting the machine and restarting the chia daemon/processes usually does the trick.","s":"Troubleshooting","u":"/installation/","h":"#troubleshooting","p":2424},{"i":2454,"t":"To join a testnet, follow the instructions on How to Join the Official Testnet. It is recommended that you keep a separate testnet environment by prepending CHIA_ROOT=\"~/.chia/testnetx\" to all of your cli commands. For example, CHIA_ROOT=\"~/.chia/testnet11\" chia init. An easier way to do this is to run export CHIA_ROOT=\"~/.chia/testnet11\" so that all commands will use testnet11 instead of mainnet. You can update all config values to the testnet values by running chia configure -t true.","s":"Testnets","u":"/installation/","h":"#testnets","p":2424},{"i":2457,"t":"This method is primarily intended for contributing to the Chia codebase Linux/MacOS Windows note Make sure you have Python 3.10 and Git installed. # Download chia-blockchain git clone https://github.com/Chia-Network/chia-blockchain -b latest --recurse-submodules # Change directory cd chia-blockchain # Checkout the beta or release candidate by tag, tags can be found https://github.com/Chia-Network/chia-blockchain/tags. git checkout tags/2.1.2-rc2 # Install dependencies sh install.sh # Activate virtual environment . ./activate # Initialize chia init note Make sure you have Python 3.10 and Git installed. # Download chia-blockchain git clone https://github.com/Chia-Network/chia-blockchain -b latest --recurse-submodules # Change directory cd chia-blockchain # Checkout the beta or release candidate by tag, tags can be found https://github.com/Chia-Network/chia-blockchain/tags. git checkout tags/2.1.2-rc2 # Install dependencies ./Install.ps1 # Activate virtual environment . ./venv/Scripts/Activate.ps1 # Initialize chia init","s":"From Source","u":"/installation/","h":"#from-source-1","p":2424},{"i":2459,"t":"Apt exe, deb, dmg, rpm # Install packages sudo apt-get update sudo apt-get install ca-certificates curl gnupg # Add GPG key curl -sL https://repo.chia.net/FD39E6D3.pubkey.asc | sudo gpg --dearmor -o /usr/share/keyrings/chia.gpg # Set up repository echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/chia.gpg] https://repo.chia.net/prerelease/debian/ prerelease main\" | sudo tee /etc/apt/sources.list.d/chia-blockchain-prerelease.list > /dev/null sudo apt-get update # Install chia-blockchain sudo apt-get install chia-blockchain # Use chia-blockchain-cli instead for CLI only # Navigate to downloads page Open https://github.com/Chia-Network/chia-blockchain/releases in a web browser # Download the correct asset Navigate to the release candidate of interest and download the necessary installer for your OS (ex. exe for windows) # Install the downloaded installer Using your system finder/file explorer install the downloaded installer (note - make sure no other versions of chia are installed prior to this step)","s":"From packaged installer","u":"/installation/","h":"#from-packaged-installer","p":2424},{"i":2461,"t":"This page will answer your most common questions. Expect it to grow with time.","s":"FAQ","u":"/new-proof-faq/","h":"","p":2460},{"i":2463,"t":"Initially nothing, to give everyone time to upgrade. When the hard fork becomes activated six months after the release of Chia 3.0 there will be changes to the blockchain consensus which will cause non-upgraded full nodes and wallets to break. The upgrades software vendors will need to make before then are small and will be included in the reference codebase. Farmers will have to replot during the transition period and use upgraded plotters and harvesters. The computational requirements for harvesting will be slightly larger than with the original plot file format but vastly less than for compressed plots.","s":"What will this break/change?","u":"/new-proof-faq/","h":"#what-will-this-breakchange","p":2460},{"i":2465,"t":"After the hard fork date, currently expected Q4 2025 (see timeline).","s":"When will I be able to farm with new plots on mainnet?","u":"/new-proof-faq/","h":"#when-will-i-be-able-to-farm-with-new-plots-on-mainnet","p":2460},{"i":2467,"t":"By the end of the transition period, currently expected Q4 2026 (see timeline).","s":"When will the old plot format be fully phased out?","u":"/new-proof-faq/","h":"#when-will-the-old-plot-format-be-fully-phased-out","p":2460},{"i":2469,"t":"Sometime during the transition period. When will be best for you will depend on your setup, but there will be a long enough time that the plots compliant with the new format will be neutral in weight to your existing plots so you can do it at your leisure. We will provide guidelines on how to evaluate which time window would be ideal to transition for your setup.","s":"When should I replot?","u":"/new-proof-faq/","h":"#when-should-i-replot","p":2460},{"i":2471,"t":"Around 5 minutes for a k32 ~100GiB plot, but this may change depending on how the final parameters are tuned for the proof of space. See our table of expected plot times.","s":"With a modern GPU such as a 4090, what will be my expected plot times?","u":"/new-proof-faq/","h":"#with-a-modern-gpu-such-as-a-4090-what-will-be-my-expected-plot-times","p":2460},{"i":2473,"t":"CPU plotting will be supported but will not be recommended for plotting any significant amount. A single CPU thread will be about 1000x slower than a 4090, potentially completing a k30 in 3 hours. The more CPU threads and memory channels your system has will reduce this time. Current testing on a high-end multi-threaded system is about 40-50x slower than a 4090, and may produce a k32 in around 3 hours.","s":"Will you also support CPU plotting, and if so, what will be my expected plot times?","u":"/new-proof-faq/","h":"#will-you-also-support-cpu-plotting-and-if-so-what-will-be-my-expected-plot-times","p":2460},{"i":2475,"t":"For a small farmer using unused disk space on their system, a CPU is sufficient. For harvesters with >100TB of spare space, a CPU is sufficient but a low-end GPU may be more efficient. For harvesters with >1PiB, a low-end GPU (e.g. 3060Ti) is recommended. There will also be the option of adding a little more data to your plots (up to ~15% more space), so that CPU usage is almost completely idle and can support a large number of Petabytes even on a Raspberry Pi. How much a Raspberry Pi could support on default plots is still pending benchmarking from an optimized implementation. See our farming requirements for more detailed information.","s":"What will the hardware requirements be for harvesters?","u":"/new-proof-faq/","h":"#what-will-the-hardware-requirements-be-for-harvesters","p":2460},{"i":2477,"t":"The new plot format allows us to tune a difficulty setting to directly influence plot time. The higher the plot time, the more compression resistant the format becomes. However, we need to balance the difficulty with what should be an acceptable plotting time for most farmers, yet still have enough difficulty for significant compression resistance. Currently, we are tuning difficulty so that a 3060Ti GPU can process the plot construction in about the same time it takes to write the data to HDD, which is around 11 minutes per k32 plot (100GiB).","s":"What is the difficulty level in the new format?","u":"/new-proof-faq/","h":"#what-is-the-difficulty-level-in-the-new-format","p":2460},{"i":2479,"t":"Compression is always possible, but the incentive will be severely limited. For instance, you could compress 100% of the plot by constructing a plot on the fly in under 30 seconds when a challenge comes in. However, this would require a cluster of the latest GPU’s to achieve, and would cost hundreds of thousands of dollars, just to spoof the space taken up by less than a TB. Alternatively, a farmer could make a plot with just 1 bit dropped per entry, and save ~0.5% of space. However, even this could incur more energy per TiB than the honest farmer. In the future we expect extremely high efficiency in compute, however, storage will also improve in cost and efficiency during that time. With the advent of extremely low power SSDs when on idle, most farmers will be better off staying with the default plot format. Those farmers looking to squeeze the most out of their system by bit-dropping for extra levels of compression might achieve marginal gains despite higher energy costs per eTiB, but risk needing to replot and adjust their systems based on price fluctuations. If compute efficiency significantly outpaces gains in storage cost and efficiency, we could see bit-dropping with recompute reaching up to 10% space savings with marginal extra % gains in net rewards.","s":"How do you know that compression won’t be possible with the new format?","u":"/new-proof-faq/","h":"#how-do-you-know-that-compression-wont-be-possible-with-the-new-format","p":2460},{"i":2481,"t":"Yes, and there are also additional filters in play. However, these filters are not expected to vary on a timed schedule (we only propose changing them if/when needed, with plenty of advanced notice), so as a farmer you won’t need to plan for any pre-scheduled dates where the filter will change. It is possible, if there are no longer any HDDs in use, we could propose a fork to alter the plot filter to improve resistance further since the restriction on seek times for HDDs would be lifted. Also, if GPU efficiency increases substantially in the future, to 10x or 100x what it is today, we can apply a soft fork to increase the plot difficulty – this would affect plot times and allow the phase-in of new plots that would be resistant to the hardware specifications at that future point in time. Note, however, that as cost per TB and also idle storage Watts also decreases over time, this counterbalances with GPU efficiency. So, while we may see 10x more efficient GPUs in 5 years, it does not necessarily mean we already need to adjust plot difficulty since the economics of farming on cheaper storage with extremely low idle power usage will also be a factor.","s":"Will there still be a plot filter after the new format is available?","u":"/new-proof-faq/","h":"#will-there-still-be-a-plot-filter-after-the-new-format-is-available","p":2460},{"i":2483,"t":"Once for the foreseeable 5-year outlook, and possibly much longer. The security of the network against rental attacks should be very strong for at least 10 years.","s":"How many times will I have to replot?","u":"/new-proof-faq/","h":"#how-many-times-will-i-have-to-replot","p":2460},{"i":2485,"t":"There will be a single proof format for the blockchain. There will be no way to tell which blocks came from which format. There will be a proof format available to SSD which is smaller than on HDD but which is impractical to make work on HDD because of the seek times required for the number of lookups.","s":"What's this about different HDD and SSD plot formats?","u":"/new-proof-faq/","h":"#whats-this-about-different-hdd-and-ssd-plot-formats","p":2460},{"i":2487,"t":"It will be possible to save a few percent of space using bit dropping but the costs will go up exponentially. Currently we expect a 4090 on a large farm may be incentivized to compress up to 2-3% of the plot size, although this is still subject to change based on the final tuning parameters for the proof of space.","s":"How much space will someone be able to save using GPU compression?","u":"/new-proof-faq/","h":"#how-much-space-will-someone-be-able-to-save-using-gpu-compression","p":2460},{"i":2489,"t":"In general, the larger your farm, the more powerful your harvesters will need to be. However, keep in mind that one farm can be broken into multiple harvesters, so it it possible to run a large farm without any high-end equipment.","s":"Farming Requirements","u":"/new-proof-farming-requirements/","h":"","p":2488},{"i":2491,"t":"These are the current guidelines per harvester using the default compression for the plot format: < 100 TiB: For farmers using spare space on their machines, a modern consumer level CPU and < 1 GiB RAM should be sufficient and have negligible impact on their system. < 1 PiB: For small farmers a modern consumer level CPU and 1GiB RAM should be sufficient. 1 PiB - 10 PiB: Medium sized farms may benefit from an integrated GPU (e.g. Apple M-Series processor or Intel with onboard graphics), or some utilization on a GPU. > 10 PiB: a dedicated GPU is required and possibly more than 1GiB of motherboard RAM depending on the number of plots. If using a GPU, the RAM requirement is currently expected to be less than 1 GiB.","s":"Requirements by farm size","u":"/new-proof-farming-requirements/","h":"#requirements-by-farm-size","p":2488},{"i":2493,"t":"We are still pending benchmarks to assess how many plots a Raspberry Pi may support for default plot format settings. However, plots can be made with additional data (~10-15% more space), so that even a Raspberry Pi could support many PiB on a single harvester.","s":"Raspberry Pi support","u":"/new-proof-farming-requirements/","h":"#raspberry-pi-support","p":2488},{"i":2495,"t":"Shared networking protocol source The Chia protocol is asynchronous and peer-to-peer. It runs on top of WebSockets on port 8444 (or other ports for farmers and timelords). All nodes act as both clients and servers, and can maintain long-term connections with other peers. Every message in the Chia protocol is composed of bytes, using the Streamable format, and sent as a WebSocket message. Each message is composed of three parts: A field spanning 1 byte, representing the type of message being transmitted, and how to decode the data. Second, an optional 2-byte ID, which is used per connection to keep track of requests and responses. The data, which is a Streamable encoded representation of one of the protocol messages. class Message(Streamable): # one of ProtocolMessageTypes type: uint8 # message id id: Optional[uint16] # Message data for that type data: bytes Chia protocol messages have a max length of (4 + 2^32 - 1) = 4294967299 bytes, or around 4 GB.","s":"Networking Protocol","u":"/networking-protocol/","h":"","p":2494},{"i":2497,"t":"All peers in the Chia protocol (whether they are farmers, full nodes, timelords, etc.) act as both servers and clients (peers). As soon as a connection is initiated between two peers, both peers send a Handshake message, and a HandshakeAck message to complete the handshake. A peer's node_id is the SHA-256 hash of their x.509 DER certificate. class Handshake(Streamable): network_id: str # Network id, usually the genesis challenge of the blockchain protocol_version: str # Protocol version to determine which messages the peer supports software_version: str # Version of the software, to debug and determine feature support server_port: uint16 # Which port the server is listening on node_type: uint8 # NodeType (full node, wallet, farmer, etc.) capabilities: List[Tuple[uint16, str]] # Key value dict to signal support for additional capabilities/features After the handshake is completed, both peers can send Chia protocol messages, and disconnect at any time by closing the WebSocket.","s":"Handshake","u":"/networking-protocol/","h":"#handshake","p":2494},{"i":2499,"t":"Heartbeat messages are sent periodically by the WebSocket libraries. Peers that are unresponsive will therefore be disconnected. If a node does not receive any message from a peer for a certain period of time, even if heartbeats are being received, then the node will disconnect and remove the peer from the active peer list.","s":"Heartbeat","u":"/networking-protocol/","h":"#heartbeat","p":2494},{"i":2501,"t":"Please refer to the chia seeder documentation for more information on setting up you own chia seeder / introducer and how to have it included in the default chia config.yaml. When a new node joins the network, it randomly connects to existing nodes on the network. To facilitate this process, a number of introducer nodes will temporarily be run by Chia and other users, which will crawl the network and support one protocol message: get_peers_introducer. The introducer will then return a random subset of known recent peers that the calling node will attempt to connect to. DNS introducers are also available at different names, which return random reliable peers to connect to. For example: dig dns-introducer.chia.net. More DNS introducers will be recruited in the future; check the chia-blockchain repository for updates. The introducer is only contacted at initial launch of the application, or if the peer database has no good peers.","s":"Introducer","u":"/networking-protocol/","h":"#introducer","p":2494},{"i":2503,"t":"Aside from the Chia protocols described in the next page, there is also a local RPC protocol to allow simple control over a node or wallet through HTTPS. All requests and responses for the RPC protocol are in JSON, to simplify the interface. This allows doing things like getting the tips of the chain, getting a specific block, adding connections, stopping the node, etc. The full node UI connects to the full node using the RPC. The RPC APIs are provided in both WebSocket and HTTPS format.","s":"RPC","u":"/networking-protocol/","h":"#rpc","p":2494},{"i":2505,"t":"The Chia software has multiple rules and checks to make sure a node is connected to several good peers. For example, outgoing connections (connections which our node makes to external nodes) are ranked higher than incoming ones. This is because we cannot verify whether incoming peers are part of an attack or not. Each node will try to connect to 8 (implementation-dependent) external peers. As long as a node is connected to at least one fast and non-malicious peer, the node should be able to keep up with, and maintain, consensus with the heaviest blockchain.","s":"Incoming and Outgoing Connections","u":"/networking-protocol/","h":"#incoming-and-outgoing-connections","p":2494},{"i":2507,"t":"If a peer appears to be acting dishonestly, it can be disconnected and temporarily banned from reconnecting. Reasons for banning include (but are not limited to) exceeding the limits provided for each type of protocol message, sending invalid information, and making the node throw an exception when handling a message. The duration of the ban depends on the severity of the issue. Care should be taken to not ban honest peers by accident. Different implementations might have larger or different rate limits as well.","s":"Bans","u":"/networking-protocol/","h":"#bans","p":2494},{"i":2509,"t":"All connections between nodes are encrypted and signed with X.509 signed certificates. Each node generates an X.509 certificate and signs it with the Chia CA (Valid To: January 21, 2031, Serial Number: 5c8a71239328650eb9fef85cec32bf779ca6a0c5) for node connections on port 8444. Node IDs are derived by hashing the public key of the certificate, so each node can have a consistent node ID to use for authentication. Each node will also generate and have its own private CA and self-sign certificates for local connections to services like farmer and harvester.","s":"Certificates","u":"/networking-protocol/","h":"#certificates","p":2494},{"i":2511,"t":"Peers are broadcasted within the network with request_peers and respond_peers messages. The respond_peers message contains up to 1000 peers, each having its IP address, its port and an estimate of its last active timestamp. Data received from respond_peers messages or from the introducers are stored in peer tables, similar to Bitcoin's. The tables will be used to randomly select peers in order to establish the outgoing connections. If we've successfully connected with the peer at least once, it is stored in the \"tried\" table. Otherwise, it is stored in the \"new\" table. The tried table protects the node from attacks (i.e. eclipse attacks), as an attacker won't be able to easily alter it (all peers initially go into the new table). Periodically, feeler connections are made in order to increase the number of entries in the tried table: we select a peer from the new table and if it's reachable, we move it to the tried table and then we disconnect it. Additionally, peer tables are stored on disk (in the peers.dat file) every 15 to 30 minutes, and then loaded every time the node restarts. Both new and tried tables optimize for the network groups of the entries to be as diverse as possible (/8 for ipv4 and /16 for ipv6). The rules of storing the bucket and the bucket position for a given peer depend on hashing the peer's network group, peer's port, sender's network group (peer that sent the \"respond_peers\" message containing our current peer), and a secret 32 byte key. This way, an attacker won't be able to predict the bucket and the bucket position where a peer will be stored, and only one entry will be stored within the similar network groups (as the bucket and the bucket position calculations will be identical for similar network group peers). When a new inbound peer connects to us, we relay its address to one peer we're connected to by sending a respond_peers message. Similarly, when we receive a respond_peers message containing only one peer, we relay its address to two peers we're connected to. This ensures when a new peer connects to the network, its address will be eventually known by everyone else. The relay peers are chosen deterministically by our key, the current day and their IP and port, by choosing the smallest value after hashing those values (while being deterministic, they also change every day). Additionally, our node sends its address once every 24 hours to all the peers it is connected to, to point that we're still online. All the above update the timestamps of the peers. Additionally, we update the timestamp of our outbound connections, at most once every 20 minutes, after they send us a message. Beside picking our outgoing connections, the peer tables are also used to respond to request_peers messages. We pick random peers from both new and the tried table, assuming their timestamp is not too old and we don't have too many failed connections with them. Every time peer A connects to peer B, peer A will send peer B a request_peers message. The answer will be a respond_peers message that will help peer A bootstrap further.","s":"Peer gossiping","u":"/networking-protocol/","h":"#peer-gossiping","p":2494},{"i":2514,"t":"The matching algorithm for all tables has changed, and now forms the basis of security. It is a memory hard algorithm which can be tuned to take more or less time by adjusting the number of match indexes to test for whether two entries match. The benefit of this algorithm is that we can set the difficulty very high so that plotting will take longer and compression attacks will be more expensive, yet it incurs negligible cost when validating a proof. Since validation is “free”, we can tune this to be as difficult as we need, without adding extra compute expense to the network.","s":"New Matching Algorithm","u":"/new-proof-details/","h":"#new-matching-algorithm","p":2512},{"i":2516,"t":"The matching algorithm takes an additional index number which is used to show that a match works. The left value and the index results in a bucket. This must match a bucket which the right value hashes to, and the matching combination of them have to pass an additional filter. Index bits will be included in proofs to make verification fast. To keep required memory down, entries are sorted into sections. All of the buckets to which a left value hashes will land in the same section.","s":"Matching Bits","u":"/new-proof-details/","h":"#matching-bits","p":2512},{"i":2518,"t":"For the first table of matches, we match a k-bit value that comprises section_bits and random_bits. Match_index_bits is an additional variable to define which match_index creates a match. For the first set of pairs, x1 and x2 match iff: The upper section_bits of x1 are equal to the upper section bits of x2. There exists a match_index in the range [0..<2^match_index_bits] where the random_bits produced from hash(x1 + plot_id + match_index) are equal to the random_bits produced from x2 with hash(x2 + plot_id). A new_meta is created by hashing x1 and x2. A hash of new_meta must pass a filter for it to be a match.","s":"T1 Matching","u":"/new-proof-details/","h":"#t1-matching","p":2512},{"i":2520,"t":"The time to find a match is heavily influenced by match_index_bits, as the higher the range of match_indexes the more the number of lookups to test for a match. Since most bit dropping attacks are limited by the difficulty of matching in the earlier tables, the number of match index_bits will be tuned much higher for the first and second tables, and set lower for subsequent tables.","s":"Matching Difficulty","u":"/new-proof-details/","h":"#matching-difficulty","p":2512},{"i":2522,"t":"The new proof of space comprises 3 plot filters: Plot id filter EncryptedX’s scan filter Random x-quadruple quality filter","s":"New Plot Filters","u":"/new-proof-details/","h":"#new-plot-filters","p":2512},{"i":2524,"t":"The plot id filter is the same as the original proof of space – the challenge and plot id create a hash that validates the plot for that challenge if it passes the filter. For the new proof of space we will be able to reduce this filter significantly compared to the original. Once set, it is expected to stay fixed over time.","s":"Plot Id Filter","u":"/new-proof-details/","h":"#plot-id-filter","p":2512},{"i":2526,"t":"A few definitions: x1 and x2 are pairs matched in the first table, and are the left side match in the next table. x3 and x4 are pairs matched in the first table, that then form the right-side match with x1 and x2 in the second table. Xdata totals 2k bits, comprising the upper section bits of x1, additional bits of x1, additional bits of x2, and match index for pairing x1 and x2, upper section bits of x3, additional bits of x3, additional bits of x4, and match index for pairing x3 and x4. E.g. if we have a k32, 6 section bits and 6 match bits, we form: [upper 6 bits of x1 and x2 (which are the same)][bits 7-16 of x1][bits 7-16 of x2][6 match index bits (applied to x1)][upper 6 bits of x3 and x4 (which are the same)][bits 7-16 of x3][bits 7-16 of x4][6 match index bits (applied to x3)]. EncryptedXs is the 2k-bits encrypted Xdata with a seed based on plot_id (reversible) S is a random range within 0..2^2k based on the challenge The Challenge​ Find a proof where: The last 4 x values in the proof are converted to EncryptedX’s and are in range S, and hash(challenge,EncryptedXs) passes a filter (e.g. 1 in cardinality S chance will pass on average 1 result from this range). In order to quickly satisfy the challenge for the plot, we store the sorted EncryptedXs in the second table, and drop the first table. This requires only 1 or 2 disk seeks to read the number of EncrpytedXs in the range S for the challenge. To reconstruct the original x values a farmer finds all possible values of buckets for x1 and x2 and finds a collision between them. In the k32 example above bits 17-32 of x1 and x2 are missing so there are 2^16 possibilities for each. To find the values a farmer makes a list of all 2^16 possibilities for one of the values (it doesn’t matter which) then sorts it, then scans over all 2^16 possible values for the other looking up each one in the sorted list to see if it’s there. For a farmer to store fewer bits they can drop bits from the EncryptedX, which doubles the amount of work necessary to be done. For them to need less work but more space they can store unencrypted x bits which halves the amount of work needed for each bit stored. Because there’s an exponential increase in work per bit and computers are fast there’s a range of bit dropping which has very little work even on low end hardware but where the costs of farming get prohibitive even on high end hardware with even a tiny increase in compression. The EncryptedXs scan filter forces a particular ordering and dataset in the plot format that severely limits the flexibility for an attacker to re-organize the data in a way to leverage particular bit dropping attacks.","s":"EncryptedX’s Scan Filter","u":"/new-proof-details/","h":"#encryptedxs-scan-filter","p":2512},{"i":2528,"t":"For each x1/2/3/4 set that passes the scan filter, find another random full x-quadruple in the proof based on the hash of those x’s, the plot_id, and challenge. This x-quadruple then forms the value for the quality string that determines whether a good proof has been found. The additional random x-quadruple lookup ensures that all plot data is needed in order to find a quality by forcing a backwards traversal down the tables.","s":"Random x-quadruple quality filter","u":"/new-proof-details/","h":"#random-x-quadruple-quality-filter","p":2512},{"i":2530,"t":"The plot id filter can be set lower, since the EncryptedXs scan filter only requires 1 or 2 disk lookups. A low plot id filter, combined with an additional filter on the EncryptedXs scan, forces rental attackers to generate at least the first two tables of a plot which require the most time, and then discard most of their results if it doesn’t pass the scan filter. The scan filter also reduces the load on HDD disks by only passing a fraction of the time for the x-quadruple quality filter which requires more lookups. The combination of these three filters severely constrain the flexibility afforded to an attacker. The default level of bit dropping gives the honest farmer a baseline with negligible extra compute, but imposes an immediate difficulty for the attacker to compress much further without losing efficiency compared to the honest farmer.","s":"Benefits","u":"/new-proof-details/","h":"#benefits","p":2512},{"i":2532,"t":"A new compression algorithm allows us to compress each table in the plot by 2-3 extra bits compared to the original format. Note that this is not bit dropping (which incurs costs that go up exponentially based on the amount of data being dropped), but rather an improved way to losslessly store information in each table. The findings are based on this blog post. In addition, Benes compression has the unique property that plot tables can be traversed in both directions, whereas the HDD friendly format requires additional data to store an index from the T2 table to the last table (so that it can then traverse entries down the table). Each table in the plot using Benes compression comes at the cost of doing a few more random seeks in data retrieval. While it would be possible to put a few such Benes plots on an HDD, the proof retrieval times are not guaranteed to be completed in time. On SSD using Benes compression has minimal impact on farming and is the recommended storage format. While we hope to release Benes compression for plots prior to the hard fork, constructing the proof of space using the Benes algorithms is more challenging and could require significantly more RAM and slower plotting times.","s":"Benes Compression","u":"/new-proof-details/","h":"#benes-compression","p":2512},{"i":2534,"t":"One of the first known compression attacks is to bit drop on x1/x2 pairs on the first table, and recompute for the missing range of values. With the new scan filter requiring both an encryption step on x-quadruples and a range to satisfy a challenge, any attacker wanting to alter which bits in those x-quadruples to drop, will forfeit compression they receive from the ordered encrypted values, and immediately require making up for k bits of lost compression. Likewise, any other attempts to re-organize x data for other bit dropping or compression methods will result in similar penalties. It is still possible to drop the lower-order bits from the EncryptedX values, where each bit dropped would require a doubling of compute. A potentially more advantageous approach is to leave the default x values intact and instead drop bits from the back pointers starting from table T3. In the original format, dropping two bits (one from each of the two back pointers in T3) would have saved approximately 1% of space, at the cost of doubling the time needed to recompute the quality string and the full proof. In the new format, we have restructured the back pointers, and currently, we see the potential to drop only 1 bit per back pointer for a doubling of compute. Further research may reveal the possibility of more aggressive bit dropping back up to 2 bits per doubling of recompute. As it stands, the default plot already includes a certain level of bit dropping, and bit dropping further quickly becomes too expensive. Depending on the final parameter settings, we don’t expect this to be economically viable beyond a few bits on today’s hardware, with each bit dropped saving ~0.5%. We will also offer the ability to plot using the most optimal method for further compression for those interested.","s":"Further Compression by Additional Bit Dropping","u":"/new-proof-details/","h":"#further-compression-by-additional-bit-dropping","p":2512},{"i":2536,"t":"The x values stored in T2 have default levels of bit-dropping already applied that are defined in the challenge scan filter. A small amount of compute is required when fetching a final quality string, similar to the low C-levels of the bladebit formats. The honest farmer will have to grind an additional small amount to get the full x values for the proof. There will also be an option to omit this low-level grinding if desired, at the cost of adding more bits to the plot format. However, since the compute required for the grind is low and designed to be close to optimal, the default level of bit dropping specified by the challenge is the recommended setting.","s":"Impact to Honest Farmers","u":"/new-proof-details/","h":"#impact-to-honest-farmers","p":2512},{"i":2538,"t":"Due to the long plotting time, lower plot id filter, and additional scan and x-quadruple filters that potentially throw away a newly created plot; rental attacks are no longer deemed to be a viable threat (>$1 billion per hour for an attack and will be well over 1000 times more expensive than the original format).","s":"Impact to Rental Attacks","u":"/new-proof-details/","h":"#impact-to-rental-attacks","p":2512},{"i":2540,"t":"This section will go over some of the novel ideas for the proof of space and reasons why they are beneficial. The most notable changes to the proof of space are:","s":"Technical Overview","u":"/new-proof-technical-overview/","h":"","p":2539},{"i":2542,"t":"This offers security with tunable difficulty per table, yet allows instant verification of proofs. As a result, we are able to increase the difficulty of plotting without affecting proof validation time. The benefit is that we can increase resistance to rental and compression attacks without wasting energy when validating proofs for the network.","s":"New matching algorithm","u":"/new-proof-technical-overview/","h":"#new-matching-algorithm","p":2539},{"i":2544,"t":"A challenge will no longer start lookups based on a final y bucket. Instead, we use a special kind of scan filter on x values, specifically designed to constrain attackers against re-ordering data to accommodate various bit-dropping techniques. Now, an attacker is either restricted to organize data in a very specific way which severely limits the number of potential attacks, or the attacker must re-organize data by adding extra bits to account for that restructuring and incur a large penalty.","s":"Challenge based on x values","u":"/new-proof-technical-overview/","h":"#challenge-based-on-x-values","p":2539},{"i":2546,"t":"There is a small amount of compression where the first table is dropped by default. The parameters for the compression are specifically chosen to be the easiest bits to drop and recompute, with minimal cpu time needed. This creates optimal settings, and further bit dropping by an attacker will very quickly impose economic disadvantages to create an upper bound on how much compression is viable even for future hardware.","s":"Default compression to drop first table","u":"/new-proof-technical-overview/","h":"#default-compression-to-drop-first-table","p":2539},{"i":2548,"t":"We can compress an additional 2 bits per entry (without bit dropping) and drop a whole lookup table using a Benes network. This results in up to ~20% additional space savings depending on k-size when compared to the HDD friendly format. In terms of impact to farmers, because we drop some data to optimize efficiency, a small amount of compute is required when fetching a final quality string, similar to the low C-levels of the bladebit formats. We will include an option to omit this low-level grinding if desired, so that many Petabytes could be farmed on a Raspberry Pi for instance, at the cost of adding more bits to the plot format (up to 10-15% more space).","s":"Benes compression","u":"/new-proof-technical-overview/","h":"#benes-compression","p":2539},{"i":2551,"t":"We have separated the memory requirements by RAM only (no disk needed) and RAM + disk (for systems with 32 GiB of RAM). We also break down these requirements for plots meant to be stored on HDDs and for those meant to be stored on SSDs.","s":"Memory","u":"/new-proof-plotting-requirements/","h":"#memory","p":2549},{"i":2553,"t":"Technically, HDD plots will also work on SSDs, but we also have a format that is optimized to be stored on SSDs for farming. RAM only​ Memory requirements for full plotting in RAM for HDD friendly format: K30: less than 64GiB K31: less than 128GiB K32: less than 256GiB K33+: each increase in K will approximately double the previous K’s RAM requirements. RAM + disk​ We also expect to support partial plotting in RAM for all k sizes on 32 GiB RAM systems by writing to storage during plotting. This will add additional time compared to all RAM plotting, but won’t be as impactful as the previous plot format since compute takes a relatively large portion of the overall time.","s":"HDD","u":"/new-proof-plotting-requirements/","h":"#hdd","p":2549},{"i":2555,"t":"Memory requirements for Benes compression used in the SSD-only format will likely require significantly more RAM and plotting time, exact details still to be determined.","s":"SSD optimized","u":"/new-proof-plotting-requirements/","h":"#ssd-optimized","p":2549},{"i":2557,"t":"GPU plotting will be strongly recommended. Plotting times for a k32 format with a 3060 Ti nVidia GPU are expected to take about 11 minutes, and times for higher-end GPUs will scale down relative to their performance in memory bandwidth and compute. For each increase or decrease in k size, expect plotting time to double or half respectively. info Note that plot times are currently estimated and may still be adjusted depending on the final security and compression resistance requirements chosen at a later date. CPU plotting will be possible but slow and expensive, and thus only recommended for small numbers of plots. Expect a modern high-end multi-threaded cpu system to take about 10x longer than a 3060 Ti GPU, and a single processor with DDR4 RAM to take 60-70x times longer than a 3060 Ti GPU.","s":"GPU versus CPU plotting","u":"/new-proof-plotting-requirements/","h":"#gpu-versus-cpu-plotting","p":2549},{"i":2559,"t":"Some expected plot times according to size and format: Processor Type Processor Model Plot Size Expected Plot Time GPU 4090 k32 5 minutes GPU 3060 Ti k32 11 minutes CPU High-end multi-thread k30 30 minutes CPU High-end multi-thread k31 1 hour CPU High-end multi-thread k32 2 hours CPU Single-thread k30 2.5 hours CPU Single-thread k31 5 hours CPU Single-thread k32 10 hours Eventual support for Apple M-Series and iGPU’s acceleration. First releases will support CPU plotting and nVidia GPUs, and later additional support for other chips will be included.","s":"Expected plot times","u":"/new-proof-plotting-requirements/","h":"#expected-plot-times","p":2549},{"i":2561,"t":"This table gives a rough timeline of what to expect with the new format. We will know the exact timeline (to within a few days) when we enter the locked in period. Time frame Name Begins when Ends when Description 2H 2024 - 1H 2025 Proposal period New format announced Chia 3.0 released * New format still under development * A CHIP will be released * Feedback will be welcome * Significant testing and refining required 1H 2025 - 2H 2025 Locked in period Chia 3.0 released Hard fork activated * CHIP is finalized * Farmers must upgrade to 3.0 * Only old plots are valid 2H 2025 - 2H 2026 Replotting period Hard fork activated Old format becomes invalid * New plots become valid * Old plots remain valid * Replot during this period 2H 2026 and beyond A new era Old format becomes invalid - * Only new plots are valid","s":"Timeline","u":"/new-proof-timeline/","h":"","p":2560},{"i":2564,"t":"In 2024 we announced that we were developing a new Proof of Space format. This is a long-term project which is not expected to be finalized until the end of 2026. All farmers will need to replot in the year leading up to that date. This will be a gradual process, so farmers will have plenty of time to plan ahead. warning The documents in this section describe a technology that is still being developed. Everything you read here is subject to change. While the development of this technology is ongoing, we have put together several documents to answer all of your questions: A blog post by Dr. Nick, which takes a deep dive into our plans A list of the expected plotting requirements A list of the expected farming requirements A timeline of when we expect to reach each milestone A list of frequently asked questions An overview of the new format The technical details of the new format","s":"New Proof Format","u":"/new-proof-introduction/","h":"#new-proof-format","p":2562},{"i":2566,"t":"This doc has been migrated to Node Syncing","s":"Node Syncing","u":"/node-syncing/","h":"","p":2565},{"i":2568,"t":"Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc wallet create_new_wallet '{\"wallet_type\": \"nft_wallet\"}' To run the same command on Windows, you need to escape the quotes, so it looks like this: chia rpc wallet create_new_wallet '{\\\"wallet_type\\\": \\\"nft_wallet\\\"}'","s":"Offer CLI","u":"/offer-cli/","h":"","p":2567},{"i":2571,"t":"Functionality: Create an offer of XCH/CATs for XCH/CATs. Usage: chia wallet make_offer [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -o --offer TEXT True A wallet id to offer and the amount to offer (formatted like wallet_id:amount) -r --request TEXT True A wallet id of an asset to receive and the amount you wish to receive (formatted like wallet_id:amount) -p --filepath TEXT True The path to write the generated offer file to -m --fee TEXT False A fee to add to the offer when it gets taken --reuse None False Set this flag to reuse an existing address for the offer [Default: generate a new address] --override None False Creates offer without checking for unusual values --valid-at INTEGER False UNIX timestamp at which the associated transactions become valid --expires-at INTEGER False UNIX timestamp at which the associated transactions expire -h --help None False Show a help message and exit","s":"make_offer","u":"/offer-cli/","h":"#make_offer","p":2567},{"i":2573,"t":"Functionality: Examine or take an offer. Usage: chia wallet take_offer [OPTIONS] PATH_OR_HEX Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -e --examine-only None False Print the summary of the offer file but do not take it -m --fee TEXT False The fee to use when pushing the completed offer --reuse None False Set this flag to reuse an existing address for the offer [Default: generate a new address] -h --help None False Show a help message and exit","s":"take_offer","u":"/offer-cli/","h":"#take_offer","p":2567},{"i":2575,"t":"Functionality: Cancel an existing offer. Must be the offer's Maker. Usage: chia wallet cancel_offer [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -id --id TEXT True The offer ID that you wish to cancel --insecure None False Set this flag to disable making an on-chain transaction and simply mark the offer as canceled [Default: cancel on-chain] -m --fee TEXT False The fee to use when canceling the offer securely -h --help None False Show a help message and exit","s":"cancel_offer","u":"/offer-cli/","h":"#cancel_offer","p":2567},{"i":2577,"t":"Functionality: Get the status of existing offers. Usage: chia wallet get_offers [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -id --id TEXT False The ID of the offer that you wish to examine -p --filepath TEXT False The path to rewrite the offer file to (must be used in conjunction with --id) -em --exclude-my-offers None False Exclude your own offers from the output -et --exclude-taken-offers None False Exclude offers that you've accepted from the output -ic --include-completed None False Include offers that have already been confirmed/canceled or failed -s --summaries None False Show the assets being offered and requested for each offer -r --reverse None False Reverse the order of the output -h --help None False Show a help message and exit","s":"get_offers","u":"/offer-cli/","h":"#get_offers","p":2567},{"i":2580,"t":"This document will guide you through the process of minting Verifiable Credentials (VCs), adding proofs, transferring VCs, and revoking proofs. For additional resources, see the following: Verifiable Credentials RPC Reference Verifiable Credentials CLI Reference CHIP-16 -- the standard for Chia VCs CHIP-17 -- a generic VC metadata structure CHIP-18 -- a KYC-VC proof structure warning The commands in this guide are only examples. Be sure to replace the listed values with values from your local system. This guide was creating using testnet11. The example commands use a fee of 100 million mojos, which will be rather high for mainnet usage. If running on mainnet, be sure to adjust your fees accordingly.","s":"Intro","u":"/guides/verifiable-credentials-guide/","h":"#intro","p":2578},{"i":2582,"t":"Decentralized Identifier (DID) -- A decentralized way to represent an identity of an organization, a person, or any other entity Verifiable Credential (VC) -- Allows someone or something to prove that a subject belongs to a certain category or categories, such as being a US citizen. One type of VC is issued by a Know Your Customer (KYC) provider, who must perform this verification. In Chia terminology, VCs depend on DIDs. In other words, a DID is required in order to mint a VC on Chia's blockchain. Proofs -- Key-value pairs that are attached to a VC","s":"Definitions","u":"/guides/verifiable-credentials-guide/","h":"#definitions","p":2578},{"i":2585,"t":"In order to mint a VC, you will need to have: A synced Chia wallet (a full node is not required) One mojo to create a DID One mojo to create a VC singleton Sufficient funds to cover blockchain fees, the amount of which depend on how busy the blockchain is at any moment You are recommended to test minting VCs on the testnet prior to minting them on mainnet. If you are unsure of how to configure your wallet to use the testnet, see our guide. We also have faucets available if you don't have sufficient funds to get started: testnet mainnet","s":"Prerequisites","u":"/guides/verifiable-credentials-guide/","h":"#prerequisites","p":2578},{"i":2587,"t":"VC issuance and usage involves at least two entities: Credential subject / holder -- the individual or entity who has applied for a VC (aka the subject) or currently holds a VC (aka the holder) Proof provider / credential issuer -- the entity that creates and signs the VC, thus asserting the claims about the holder's identity, attributes, or qualifications, and provides a proof for those claims in a credential that is issued to the holder To test issuing, minting, and revoking VCs, you will need to create separate wallets to represent both of these entities. The two wallets can coexist on the same computer. note Technically, there is another entity involved: Verifier -- the entity that verifies the authenticity of the VC For this guide, the Verifier is the blockchain itself.","s":"Entities Involved","u":"/guides/verifiable-credentials-guide/","h":"#entities-involved","p":2578},{"i":2589,"t":"The proof provider must have a DID in order to mint a VC. In order to create a DID, run the following command from a terminal window or command prompt: chia wallet did create -m 0.0001 The response will include the ID of the newly created DID (it will begin with did:chia:). Save your local DID ID for later (it will be different from the one displayed here): Successfully created a DID wallet with name None and id 2 on key 1725104286 Successfully created a DID did:chia:1rnvmwp3wmglslk942mwsrmf7dlkluytyna8mgewel44h4ne3nd9slhtddg in the newly created DID wallet The DID will be created with an on-chain transaction. After this transaction has been confirmed, you can view your DID by running chia wallet show: chia wallet show Response: Wallet height: 2795460 Sync status: Synced Balances, fingerprint: 1725104286 Chia Wallet: -Total Balance: 4.999699999998 txch (4999699999998 mojo) -Pending Total Balance: 4.999699999998 txch (4999699999998 mojo) -Spendable: 4.999699999998 txch (4999699999998 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 Provider_DID: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:1rnvmwp3wmglslk942mwsrmf7dlkluytyna8mgewel44h4ne3nd9slhtddg -Wallet ID: 2 After you have a synced wallet and a DID, you are ready to execute the VC-specific commands.","s":"DID Creation","u":"/guides/verifiable-credentials-guide/","h":"#did-creation","p":2578},{"i":2591,"t":"This section will show you how to mint, transfer, and revoke a VC using Chia's wallet CLI commands. A similar walk-through using RPCs will be presented in the next section.","s":"CLI Guide","u":"/guides/verifiable-credentials-guide/","h":"#cli-guide","p":2578},{"i":2593,"t":"First, you must add proofs to the local database. To do this, run the add_proof_reveal command. You can add multiple proofs by reusing the proof parameter. For example: chia wallet vcs add_proof_reveal --proof test_proof1 --proof test_proof2 The response will be a simple success message. This command only adds the proofs locally; it does not modify the blockchain: Proofs added to DB successfully! To obtain the root hash, run the same command and add the --root-only flag: chia wallet vcs add_proof_reveal --proof test_proof1 --proof test_proof2 --root-only Response: Proof Hash: f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 Be sure to note your own root hash, as you will need it when minting a VC. important When using the CLI to add proofs, the value of each proof will be 1. This is not configurable in the CLI. If you need to use different values, see the RPC guide instead. info If you want to retrieve your original proofs from a proof hash, run the get_proofs_for_root command: chia wallet vcs get_proofs_for_root --proof-hash f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 Response: Proofs: - test_proof1 - test_proof2 Note that this command will only succeed if you have already added the corresponding proofs to your local database.","s":"Create proofs","u":"/guides/verifiable-credentials-guide/","h":"#create-proofs","p":2578},{"i":2595,"t":"To mint a VC, run the mint command and use the -d parameter to pass in a DID owned by the minting wallet: chia wallet vcs mint -d did:chia:1tu7xx74m6rqfew67upf4d7esnx5zj2m66p60lez7we6q7smwr4tqax8m7n -m 0.0001 The response will include some info about the VC, including its ID, the ID of the minting transaction, and the VC's destination wallet: New VC with launcher ID minted: 9883bb24810c2107c1ac10dd43a52959b2ab5a6bbf7e102e04232a4f2adcbc35 Relevant TX records: Transaction 0d1cc44c3a341cb35006bc09cb081812fa1d35be7fd00f2caa0548bcc894805c Status: Pending Amount sent: 1E-12 XCH To address: txch1wrr3hew9nr8ukenv3nwq0fg78h4uh5pm9shyqjl4rmfz9nuqcyxqcy8lth Created at: 2023-06-23 12:34:13 By default, the VC will be minted to the same wallet that runs this command. However, you can also use the --target-address parameter to mint the VC to a different address. When a VC is first minted, it will not contain any proofs. You can verify this by running the get command: chia wallet vcs get Response: Proofs: Launcher ID: 9883bb24810c2107c1ac10dd43a52959b2ab5a6bbf7e102e04232a4f2adcbc35 Coin ID: 8942dc321387287084a92e6451a01505e6771df81daa86937679eb1ef67abb4a Inner Address: txch1wrr3hew9nr8ukenv3nwq0fg78h4uh5pm9shyqjl4rmfz9nuqcyxqcy8lth This command shows the Launcher ID (the VC's ID), which you will need for the next command. In addition, the Coin ID will be required in case the proofs need to be revoked later. Previously, you added your desired proofs to the local database and calculated the root hash. The next step is to add this root hash to the VC, and simultaneously send it to the new holder. This is accomplished by spending the VC.","s":"Mint a VC","u":"/guides/verifiable-credentials-guide/","h":"#mint-a-vc","p":2578},{"i":2597,"t":"Use the update_proofs command to add proofs to a VC. This command must be run from the proof provider's wallet (the wallet that contains the DID used for minting). The --new-proof-hash parameter is required; this hash was included in the response from running the add_proof_reveal command. The --new-puzhash parameter is typically used, but not required. This parameter allows you to recreate the VC singleton in a different wallet (ie to send the VC to the new holder in the same command that is used to add the proof hash). note --new-puzhash requires a puzzle hash and not a wallet address. If you are not sure how to convert a wallet address to a puzzle hash, the Chia.tt explorer includes a handy puzzle hash converter tool. If you prefer to do this conversion programmatically, use the decode command from the chia-dev-tools repository. For example, the following command will update the specified VC (-l) with a new root hash (-p) and send the VC to a new wallet (-t), while including a blockchain fee (-m): chia wallet vcs update_proofs -l 9883bb24810c2107c1ac10dd43a52959b2ab5a6bbf7e102e04232a4f2adcbc35 -t 0xcdedf8c5a40e3db41d4fc7a45a892838454953e059bcaa467b3257450c8c138f -p f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 -m 0.0001 Response: Proofs successfully updated! Relevant TX records: Transaction 873df058c0b3f56c3828cf3f1b893e00d2fe57069caf7556ca4f9941fc4e1de8 Status: Pending Amount sent: 0 XCH To address: txch1fatr3nkc9jgnetkv6vnqdkaxlmjgx8dt4a359t9akgllzfycenzqlghpll Created at: 2023-06-23 12:48:15 Transaction c1ec7ee41ddb6e5369ea2d982bea90e4b11b91c5eee88662f37e05503b4aa945 Status: Pending Amount sent: 1E-12 XCH To address: txch1ehkl33dypc7mg820c7j94zfg8pz5j5lqtx7253nmxft52ryvzw8stx7czc Created at: 2023-06-23 12:48:15 After this transaction has been confirmed on the blockchain, the new credential holder can confirm that the proofs are included. First, the credential holder needs to run the same command as the proof provider to add the proofs to the local database. For example: chia wallet vcs add_proof_reveal --proof test_proof1 --proof test_proof2 Response: Proofs added to DB successfully! Next, the credential holder can run the get command: chia wallet vcs get In this case, one VC is shown, along with the proof hash and both proofs. If the proofs were not manually added to the local database, they would not show in this command, and the GUI would show the VC as invalid. Proofs: - f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5 - test_proof1 - test_proof2 Launcher ID: 9883bb24810c2107c1ac10dd43a52959b2ab5a6bbf7e102e04232a4f2adcbc35 Coin ID: 420f69cc8b541be7a0bf1d94ec028a8b2a875ee2cd6721f5316cf1b02519d13a Inner Address: txch1ehkl33dypc7mg820c7j94zfg8pz5j5lqtx7253nmxft52ryvzw8stx7czc Proof Hash: f063e22557705b14425b8fca60018796b4364eb6354f45d0b99431a71d3043e5","s":"Add proofs to a VC","u":"/guides/verifiable-credentials-guide/","h":"#add-proofs-to-a-vc","p":2578},{"i":2599,"t":"Typically, the proof provider only needs to mint a VC, add proofs, and transfer the VC to the new holder. However, at some point, a holder's proofs may change. For example, a holder might have originally proven that they were not a US citizen, and then they later became a US citizen. In cases such as this, the proof provider needs to revoke the credentials, ie to remove all proofs from a VC. (The holder will continue to hold the VC, but it will no longer contain any proofs.) We don't allow the proof provider to take back the VC itself because it is possible for it to custody other assets, though we don't support this yet. The only wallet that is allowed to revoke credentials is the proof provider's (the wallet that contains the DID used to mint the VC). In order to run the revoke command, the proof provider will need to know the parent coin ID (the -p parameter). Because VCs are singletons, their parent coin IDs will change every time the VC is spent (every time a change is made). For testing purposes, the holder's wallet can obtain the parent coin ID by running the vc_get RPC. The parent coin ID is the value of the \"parent_coin_info\". In a production environment, the proof provider will track the VC on-chain and obtain this info immediately prior to revoking the VC. An example of the revocation command: chia wallet vcs revoke -p 0x420f69cc8b541be7a0bf1d94ec028a8b2a875ee2cd6721f5316cf1b02519d13a -m 0.0001 As a result, the VC will be recreated in the same wallet, but without any proofs: VC successfully revoked! Relevant TX records: Transaction 286cc31575aa167c4b34cbc0a768a162caefb6afea77560db0693934ac3fbf1e Status: Pending Amount sent: 1E-12 XCH To address: txch1ehkl33dypc7mg820c7j94zfg8pz5j5lqtx7253nmxft52ryvzw8stx7czc Created at: 2023-06-23 13:33:50 Transaction ae6378e84742ab6abb07df666291093938ec9e06ae8e2b4066d7386d94289ba3 Status: Pending Amount sent: 0 XCH To address: txch1mahlm65l8q9frcqcfveekx3a29cd74w6gfajqy05ukz2afrzg03syqkz3p Created at: 2023-06-23 13:33:50 After these transactions have been confirmed on-chain, the VC no longer contains any proofs. The holder can verify this: chia wallet vcs get Result: Proofs:","s":"Revoke a VC","u":"/guides/verifiable-credentials-guide/","h":"#revoke-a-vc","p":2578},{"i":2601,"t":"This section will show you how to mint, transfer, and revoke a VC using Chia's wallet RPC. The RPC commands will generally give more detailed responses than their CLI equivalents, but the functionality will be mostly the same. Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc wallet vc_get '{\"vc_id\": \"13ba084e78475327e41c60df5a108965d7a283f065b5506e266ffb3563937b6c\"}' To run the same command on Windows, you need to escape the quotes, so it looks like this (the braces have been removed to support the formatting for this page. You still need to use them in your actual commands.): chia rpc wallet vc_get '\\\"vc_id\\\": \\\"13ba084e78475327e41c60df5a108965d7a283f065b5506e266ffb3563937b6c\\\"'","s":"RPC Guide","u":"/guides/verifiable-credentials-guide/","h":"#rpc-guide","p":2578},{"i":2603,"t":"First, you must add proofs to the local database. To do this, run the vc_add_proofs command. \"proofs\" is a dictionary of key-value pairs. Unlike the equivalent CLI command, this command allows you to use any string value. chia rpc wallet vc_add_proofs '{\"proofs\": {\"example_proof_1\": \"example_value_1\", \"example_proof_2\": \"example_value_2\"}}' The response is a simple success message. This command only adds the proofs locally; it does not modify the blockchain: { \"success\": true } The next step is to calculate the root hash for the proofs you just added.","s":"Create proofs","u":"/guides/verifiable-credentials-guide/","h":"#create-proofs-1","p":2578},{"i":2605,"t":"A VC's proofs are presented as a Merkle tree, the root hash of which is stored on-chain. When looking up proofs, a hash called a Proof of Inclusion is all that is required to be presented. Any third-party observers of the blockchain won't be able to identify who the VC corresponds to, but the KYC Provider will know this information as the issuer of the VC. In order to construct a Merkle tree from a set of proofs: Sort the proofs into reverse alphabetical order by key Transform the proofs' key-value pairs into a binary tree by recursively splitting the list in half With the tree constructed, the root hash can be obtained by recursively traversing the tree, hashing the leaves until the root is reached. There is not an RPC for calculating the root hash; instead, you will need to obtain it programmatically (unless you use 1 for all values, in which case you can use the CLI command). For example, the following Javascript program will output the root hash of the proofs listed in the console.log command: Javascript Example In order to run this example: Copy the script to a text editor Replace the keys and values in the last line with the keys and values from your own proof(s) Save the script locally, for example, as calculate_proof_hash.js Run the script by calling, for example, node calculate_proof_hash.js const { strict: assert } = require(\"node:assert\"); const crypto = require(\"crypto\"); const std_hash = (s) => crypto.createHash(\"sha256\").update(s).digest(\"hex\"); const sort_pairs = (pairs) => pairs.sort(([a], [b]) => { if (a < b) { return 1; } if (a > b) { return -1; } return 0; }); const CHIA_TREE_HASH_ATOM_PREFIX = \"01\"; const CHIA_TREE_HASH_PAIR_PREFIX = \"02\"; const tree_hash = (node) => { if (Array.isArray(node)) { // Only supporting pairs and utf-8 string/boolean atoms assert.equal(node.length, 2); const left_hash = tree_hash(node[0]); const right_hash = tree_hash(node[1]); // Hashes pair return std_hash( Buffer.concat([ Buffer.from(CHIA_TREE_HASH_PAIR_PREFIX, \"hex\"), Buffer.from(left_hash, \"hex\"), Buffer.from(right_hash, \"hex\"), ]), ); } else { // Hashes string key if (typeof node === \"string\") { return std_hash( Buffer.concat([ Buffer.from(CHIA_TREE_HASH_ATOM_PREFIX, \"hex\"), Buffer.from(node, \"utf-8\"), ]), ); } // Hashes boolean value if (typeof node === \"boolean\") { return std_hash( Buffer.concat([ Buffer.from(CHIA_TREE_HASH_ATOM_PREFIX, \"hex\"), Buffer.from(node ? \"01\" : \"\", \"hex\"), ]), ); } // Only supporting pairs containing string keys and boolean values throw new Error(\"Unsupported type passed to hash function\"); } }; // Convert sorted listed to binary tree to be hashed const list_to_binary_tree = (objects) => { if (objects.length == 1) { return objects[0]; } const mid = Math.floor(objects.length / 2); const first_half = objects.slice(0, mid); const second_half = objects.slice(mid, objects.length); return [list_to_binary_tree(first_half), list_to_binary_tree(second_half)]; }; const calculate_root_hash = (proofs) => { const kv_pairs = Object.entries(proofs); const sorted = sort_pairs(kv_pairs); const binary_tree = list_to_binary_tree(sorted); const result = tree_hash(binary_tree); return result; }; console.log( calculate_root_hash({ example_proof_1: \"example_value_1\", example_proof_2: \"example_value_2\", }), ); The script will output the proof hash for the proofs your entered. In this example, the output is: 96c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3 info If you want to retrieve your original proofs from a proof hash, run the vc_get_proofs_for_root command. For example: chia rpc wallet vc_get_proofs_for_root '{\"root\": \"96c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3\"}' Response: { \"proofs\": { \"example_proof_1\": \"example_value_1\", \"example_proof_2\": \"example_value_2\" }, \"success\": true } Note that this command will only succeed if you have already added the corresponding proofs to your local database.","s":"Root Hash Calculation","u":"/guides/verifiable-credentials-guide/","h":"#root-hash-calculation","p":2578},{"i":2607,"t":"To mint a VC, run the vc_mint command. The did_id parameter is required. This is the DID owned by the minting wallet. You may also optionally pass in a target_address, where the VC will be delivered. If this parameter is missing, the VC will be sent to the same wallet that owns the DID: chia rpc wallet vc_mint '{\"did_id\": \"did:chia:1rnvmwp3wmglslk942mwsrmf7dlkluytyna8mgewel44h4ne3nd9slhtddg\", \"target_address\": \"txch1yfcclacd6sch2w9dz394zjuq7pqnmz5g7mrqac0hjhwpzmyahe9sqetxaz\", \"fee\": 100000000}' As a result, the spend bundle used to mint the VC will be output: { \"success\": true, \"transactions\": [ { \"additions\": [ { \"amount\": 1, \"parent_coin_info\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"puzzle_hash\": \"0x8b75b2ced8cdd1081021552f490618fb8b0c39e46ee5c5f9d46b6b7f9d8a8a74\" }, { \"amount\": 1, \"parent_coin_info\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\", \"puzzle_hash\": \"0x34557d1304533235fa1713a5eafcb23ffca18e8696c0d4fb92bd02c901c9d556\" }, { \"amount\": 1, \"parent_coin_info\": \"0xfcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8\", \"puzzle_hash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\" }, { \"amount\": 4999799999998, \"parent_coin_info\": \"0xfcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8\", \"puzzle_hash\": \"0x75f7052246d2da738d105b735e7f3fa945f93270d5d5c6e18ea9ef7eaa939632\" } ], \"amount\": 1, \"confirmed\": false, \"confirmed_at_height\": 0, \"created_at_time\": 1687537068, \"fee_amount\": 100000000, \"memos\": { \"1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\": \"22718ff70dd4317538ad144b514b80f0413d8a88f6c60ee1f795dc116c9dbe4b\" }, \"name\": \"0xfc09b898b5d667ab15ea76015b274309f9fc2254767e3d0def58a645939f63ba\", \"removals\": [ { \"amount\": 1, \"parent_coin_info\": \"0xfcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8\", \"puzzle_hash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\" }, { \"amount\": 1, \"parent_coin_info\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"puzzle_hash\": \"0x8b75b2ced8cdd1081021552f490618fb8b0c39e46ee5c5f9d46b6b7f9d8a8a74\" }, { \"amount\": 4999899999999, \"parent_coin_info\": \"0xe4e28034d312cbba0e2809dbed5475e2dc20742158eefa48c05bcea195b78308\", \"puzzle_hash\": \"0x75f7052246d2da738d105b735e7f3fa945f93270d5d5c6e18ea9ef7eaa939632\" } ], \"sent\": 0, \"sent_to\": [], \"spend_bundle\": { \"aggregated_signature\": \"0x9980f93b32587b3331997b27667067c3701569ebb8844c41602303bdc58c33a07f45e373d12f7cef8ef1e35dcd3679f30957493b325dbe4f536f19003a7ad45138a9c8951593f51176f3400852029404f5b2490a1ee4983dd0f57b90da9d23e1\", \"coin_spends\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0xfcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8\", \"puzzle_hash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\" }, \"puzzle_reveal\": \"0xff02ffff01ff04ffff04ff04ffff04ff05ffff04ff0bff80808080ffff04ffff04ff0affff04ffff02ff0effff04ff02ffff04ffff04ff05ffff04ff0bffff04ff17ff80808080ff80808080ff808080ff808080ffff04ffff01ff33ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080\", \"solution\": \"0xffa08b75b2ced8cdd1081021552f490618fb8b0c39e46ee5c5f9d46b6b7f9d8a8a74ff01ff8080\" }, { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"puzzle_hash\": \"0x8b75b2ced8cdd1081021552f490618fb8b0c39e46ee5c5f9d46b6b7f9d8a8a74\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0d2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4ea0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3affff04ff02ffff04ff05ffff04ff17ffff04ff2fffff04ff0bffff04ffff02ff5fff81bf80ff8080808080808080ffff04ffff01ffffff02ff3304ff01ff0101ffff02ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff14ff3880ffff0bff12ffff0bff12ffff0bff14ff2c80ff0980ffff0bff12ff0bffff0bff14ff8080808080ff8080808080ffff010b80ff0180ff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff5fffff01ffff80ff80ff8080808080808080808080ffff04ffff03ff820b7fff820b7fffff04ff3cff808080ffff02ffff03ff81bfffff01ff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff8201bfffff04ffff02ffff03ffff09ff82023fff2880ffff01ff02ffff03ffff18ff820b3fffff010180ffff01ff02ffff03ffff20ff82027f80ffff01ff04ff82033fffff04ff82057fffff01ff80808080ffff01ff088080ff0180ffff01ff04ff82027fffff04ff82057fffff04ff82013fff8080808080ff0180ffff01ff02ffff03ffff09ff82023fffff0181f680ffff01ff02ffff03ffff20ff82057f80ffff01ff04ff82027fffff04ffff02ff0bffff04ff2fffff04ff5fffff04ff82033fff8080808080ffff01ff80808080ffff01ff088080ff0180ffff01ff04ff82027fffff04ff82057fffff04ff82013fff8080808080ff018080ff0180ff80808080808080808080ffff01ff04ffff04ff28ffff04ffff02ff2effff04ff02ffff04ff05ffff04ff82047fffff04ffff0bff14ffff02ffff03ff82157fffff0182157fffff011780ff018080ffff04ffff02ffff03ff82157fffff0182157fffff011780ff0180ffff04ffff02ff3effff04ff02ffff04ff82097fff80808080ffff04ffff0bff14ff0580ff808080808080808080ff82067f8080ff822d7f8080ff018080ffff0bff12ffff0bff14ff1080ffff0bff12ffff0bff12ffff0bff14ff2c80ff0580ffff0bff12ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff14ff1480ff8080808080ffff0bff14ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01a0d5fd32e069fda83e230ccd8f6a7c4f652231aed5c755514b3d996cbeff4182b8ffff04ffff0180ffff04ffff01ff04ffff04ff13ff8080ffff04ff2bffff01ff80808080ffff04ffff01a0a8bd2fd3220e462b6914ec860f3454cb21df9313cf0d5897343d97bb381ce8edffff04ffff01ff02ffff01ff04ffff04ff04ffff04ffff02ff06ffff04ff02ffff04ff05ff80808080ff808080ffff02ff05ff0b8080ffff04ffff01ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ff01808080808080ff01808080\", \"solution\": \"0xffffa0fcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8ff0180ff01ffffffff01ffff33ffa05f405810abf8d6e690cfcea3409300e71b23a8362b47068d88d7aaa296278aafff01ffffa022718ff70dd4317538ad144b514b80f0413d8a88f6c60ee1f795dc116c9dbe4b8080ffff01ffa022718ff70dd4317538ad144b514b80f0413d8a88f6c60ee1f795dc116c9dbe4b80ffff81f6ffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4bffa0e00c460366d00066f75597edfb72ddfcfd0d336d67f85dc2671498900ba2810e8080ff80808080\" }, { \"coin\": { \"amount\": 4999899999999, \"parent_coin_info\": \"0xe4e28034d312cbba0e2809dbed5475e2dc20742158eefa48c05bcea195b78308\", \"puzzle_hash\": \"0x75f7052246d2da738d105b735e7f3fa945f93270d5d5c6e18ea9ef7eaa939632\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b095da6e852d85a01103de927984ecd7368be3ec3ff003380d33c77a90947caaead80640bec0447f5338990d07988535dbff018080\", \"solution\": \"0xff80ffff01ffff33ffa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff0180ffff33ffa075f7052246d2da738d105b735e7f3fa945f93270d5d5c6e18ea9ef7eaa939632ff86048c1b4d8dfe80ffff34ff8405f5e10080ffff3dffa08426eba36496cbf0da25676027ead2830a9fb38f171256e52d788648a17acae280ffff3dffa0cab37fa0941e854e034e8d93762c554047f71ecd897807aba1f822e2f6ed38678080ff8080\" } ] }, \"to_address\": \"txch1yfcclacd6sch2w9dz394zjuq7pqnmz5g7mrqac0hjhwpzmyahe9sqetxaz\", \"to_puzzle_hash\": \"0x22718ff70dd4317538ad144b514b80f0413d8a88f6c60ee1f795dc116c9dbe4b\", \"trade_id\": null, \"type\": 1, \"wallet_id\": 1 } ], \"vc_record\": { \"confirmed_at_height\": 0, \"vc\": { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\", \"puzzle_hash\": \"0x34557d1304533235fa1713a5eafcb23ffca18e8696c0d4fb92bd02c901c9d556\" }, \"eml_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": null, \"parent_name\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"parent_proof_hash\": null }, \"inner_puzzle_hash\": \"0x22718ff70dd4317538ad144b514b80f0413d8a88f6c60ee1f795dc116c9dbe4b\", \"launcher_id\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"proof_hash\": null, \"proof_provider\": \"0x1cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4b\", \"singleton_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": \"0x43309e9613bc9d8156b52cfe1e396b43448c59286bf0b3d3dd283eeea7eb9c09\", \"parent_name\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\" } } } } When a VC is first minted, it will not contain any proofs. Previously, you added your desired proofs to the local database and calculated the root hash. The next step is to add your root hash to the VC.","s":"Mint a VC","u":"/guides/verifiable-credentials-guide/","h":"#mint-a-vc-1","p":2578},{"i":2609,"t":"In Chia, a singleton is a primitive standard that allows a coin to be recreated with different properties when it is spent. Chia VCs are singletons; use the vc_spend command to spend a VC and recreate it with a new set of proofs. The new_proof_hash parameter is required; this is the root hash you previously obtained. The new_puzhash parameter is typically used, but not required. This parameter allows you to recreate the VC singleton in a different wallet (ie to send the VC to the new holder in the same command that is used to add the proof hash). note new_puzhash requires a puzzle hash and not a wallet address. If you are not sure how to convert a wallet address to a puzzle hash, the Chia.tt explorer includes a handy puzzle hash converter tool. If you prefer to do this conversion programmatically, use the decode command from the chia-dev-tools repository. For example, this command will update the specified vc_id with a new_proof_hash and send the VC to a new_puzhash, while including a blockchain fee: chia rpc wallet vc_spend '{\"vc_id\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"new_puzhash\": \"0x08db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088\", \"new_proof_hash\": \"96c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3\", \"fee\": 100000000}' The response includes the spend bundle used to spend the VC: { \"success\": true, \"transactions\": [ { \"additions\": [ { \"amount\": 4999699999998, \"parent_coin_info\": \"0x653a6248d7c2b308a35fd8b3f529c9dc485ba76f87621a4b62143edd06dd7be0\", \"puzzle_hash\": \"0xc32479a76e578a51deb053c32a2116bb9cc3b80f49d26b5aaa58d032b3770058\" } ], \"amount\": 0, \"confirmed\": false, \"confirmed_at_height\": 0, \"created_at_time\": 1687537276, \"fee_amount\": 100000000, \"memos\": {}, \"name\": \"0xf5c90151aaddb6deedf0a539a6d79c7f672b42e5d5cc5e61c57f7480f0ceeb6a\", \"removals\": [ { \"amount\": 4999799999998, \"parent_coin_info\": \"0xfcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8\", \"puzzle_hash\": \"0x75f7052246d2da738d105b735e7f3fa945f93270d5d5c6e18ea9ef7eaa939632\" } ], \"sent\": 0, \"sent_to\": [], \"spend_bundle\": null, \"to_address\": \"txch1s6a6j3rkeahqcf02ujm7m5nmkvzqr66n49cx3qlunqm9h8s46asqm0tk5d\", \"to_puzzle_hash\": \"0x86bba94476cf6e0c25eae4b7edd27bb30401eb53a9706883fc98365b9e15d760\", \"trade_id\": null, \"type\": 1, \"wallet_id\": 1 }, { \"additions\": [ { \"amount\": 1, \"parent_coin_info\": \"0x1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\", \"puzzle_hash\": \"0xaff7139c2d31a2e4244d745baad309c857edf7dc4190e0619f475a80d1099906\" }, { \"amount\": 1, \"parent_coin_info\": \"0x720630bc5e8d8dbddb297f96f765a1eec34e7fd9fc333f143c359cf16858d290\", \"puzzle_hash\": \"0x56d7629bc6b66c3b6ab9765c53603961fe7fab44b5985e038ba06f56a3ad26b5\" }, { \"amount\": 4999699999998, \"parent_coin_info\": \"0x653a6248d7c2b308a35fd8b3f529c9dc485ba76f87621a4b62143edd06dd7be0\", \"puzzle_hash\": \"0xc32479a76e578a51deb053c32a2116bb9cc3b80f49d26b5aaa58d032b3770058\" } ], \"amount\": 1, \"confirmed\": false, \"confirmed_at_height\": 0, \"created_at_time\": 1687537276, \"fee_amount\": 100000000, \"memos\": { \"a3981ceeb0a4b0c443d0d9b7c9c6777960978f96b1c7f522111e31dce4076d07\": \"08db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088\", \"afa6c6e09641c42b484392772902be8809c76c7790dd39742606f045a14040c0\": \"070216d3ac8d37d1fc72e4259c7a96103e4de49935c9a8b7ab7ebe78513fae02\" }, \"name\": \"0x17c5e475f9bcda500ef12484d0aca31c0674cd4f10bf90456f30344963d7ef76\", \"removals\": [ { \"amount\": 1, \"parent_coin_info\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\", \"puzzle_hash\": \"0x34557d1304533235fa1713a5eafcb23ffca18e8696c0d4fb92bd02c901c9d556\" }, { \"amount\": 1, \"parent_coin_info\": \"0xddb4dcaa641f2c10b7373a2bbf8571b4f761aea557f27e816a913a0b1fb5d1ec\", \"puzzle_hash\": \"0x56d7629bc6b66c3b6ab9765c53603961fe7fab44b5985e038ba06f56a3ad26b5\" }, { \"amount\": 4999799999998, \"parent_coin_info\": \"0xfcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8\", \"puzzle_hash\": \"0x75f7052246d2da738d105b735e7f3fa945f93270d5d5c6e18ea9ef7eaa939632\" } ], \"sent\": 0, \"sent_to\": [], \"spend_bundle\": { \"aggregated_signature\": \"0xafd0baafa738e7cfffe67c1acaa34e0b3d38c0c2e7922dac3f4a0de77ab4c888a9bef3789d796af83ba87a3a17560f831090f7286480aa09e36fde23b6e515df5c311f0b82c6a500c178172df8c873deafe1b1344a3449f61d7f8fb0d075c428\", \"coin_spends\": [ { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\", \"puzzle_hash\": \"0x34557d1304533235fa1713a5eafcb23ffca18e8696c0d4fb92bd02c901c9d556\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0d2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4ea0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3affff04ff02ffff04ff05ffff04ff17ffff04ff2fffff04ff0bffff04ffff02ff5fff81bf80ff8080808080808080ffff04ffff01ffffff02ff3304ff01ff0101ffff02ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff14ff3880ffff0bff12ffff0bff12ffff0bff14ff2c80ff0980ffff0bff12ff0bffff0bff14ff8080808080ff8080808080ffff010b80ff0180ff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff5fffff01ffff80ff80ff8080808080808080808080ffff04ffff03ff820b7fff820b7fffff04ff3cff808080ffff02ffff03ff81bfffff01ff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff8201bfffff04ffff02ffff03ffff09ff82023fff2880ffff01ff02ffff03ffff18ff820b3fffff010180ffff01ff02ffff03ffff20ff82027f80ffff01ff04ff82033fffff04ff82057fffff01ff80808080ffff01ff088080ff0180ffff01ff04ff82027fffff04ff82057fffff04ff82013fff8080808080ff0180ffff01ff02ffff03ffff09ff82023fffff0181f680ffff01ff02ffff03ffff20ff82057f80ffff01ff04ff82027fffff04ffff02ff0bffff04ff2fffff04ff5fffff04ff82033fff8080808080ffff01ff80808080ffff01ff088080ff0180ffff01ff04ff82027fffff04ff82057fffff04ff82013fff8080808080ff018080ff0180ff80808080808080808080ffff01ff04ffff04ff28ffff04ffff02ff2effff04ff02ffff04ff05ffff04ff82047fffff04ffff0bff14ffff02ffff03ff82157fffff0182157fffff011780ff018080ffff04ffff02ffff03ff82157fffff0182157fffff011780ff0180ffff04ffff02ff3effff04ff02ffff04ff82097fff80808080ffff04ffff0bff14ff0580ff808080808080808080ff82067f8080ff822d7f8080ff018080ffff0bff12ffff0bff14ff1080ffff0bff12ffff0bff12ffff0bff14ff2c80ff0580ffff0bff12ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff14ff1480ff8080808080ffff0bff14ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01a0d5fd32e069fda83e230ccd8f6a7c4f652231aed5c755514b3d996cbeff4182b8ffff04ffff01ffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4b80ffff04ffff01ff02ffff01ff02ffff01ff02ff02ffff04ff02ffff04ffff02ff05ffff04ff4fffff04ff81afffff04ffff04ff0bffff04ff17ffff04ff82016fff80808080ff8080808080ff80808080ffff04ffff01ff04ff15ffff04ff2dffff04ffff04ff09ff5d80ff80808080ff018080ffff04ffff01ff02ffff01ff02ffff01ff04ffff04ff02ffff04ffff0bff4fffff02ffff03ff81efffff01ff02ff0bffff04ff05ffff04ff81afff5f808080ffff010580ff0180ffff02ffff03ff81efffff0182016fffff0181af80ff018080ff808080ffff02ff17ff81bf8080ffff04ffff0147ff018080ffff04ffff01a08b75b2ced8cdd1081021552f490618fb8b0c39e46ee5c5f9d46b6b7f9d8a8a74ffff04ffff01ff02ffff01ff02ffff01ff02ffff01ff02ff1effff04ff02ffff04ff0bffff04ff2fffff04ff5fffff04ff8205ffffff04ff820bffffff04ff8217ffffff04ffff02ff1affff04ff02ffff04ff17ffff04ffff02ff1affff04ff02ffff04ff05ffff04ffff0bff08ff8202ff80ffff04ffff02ff1affff04ff02ffff04ff82017fffff04ffff0bff08ff82017f80ff8080808080ffff04ff81bfff80808080808080ff8080808080ff80808080808080808080ffff04ffff01ffff01ff02ff02ffff03ff05ffff01ff0bff72ffff02ff16ffff04ff02ffff04ff09ffff04ffff02ff1cffff04ff02ffff04ff0dff80808080ff808080808080ffff016280ff0180ffffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e1879b7152a6e7298a91ce119a63400ade7c5ff0bff52ffff02ff16ffff04ff02ffff04ff05ffff04ffff02ff1cffff04ff02ffff04ff07ff80808080ff808080808080ffff0bff14ffff0bff14ff62ff0580ffff0bff14ff0bff428080ff02ff1affff04ff02ffff04ff0bffff04ffff0bff14ffff0bff08ff0b80ffff0bff14ffff0bff08ff81bf80ff178080ffff04ffff02ff1affff04ff02ffff04ff05ffff04ffff0bff08ff0580ffff04ff5fffff04ff82017fffff04ffff0bff08ff82017f80ffff04ff2fff808080808080808080ff808080808080ff018080ffff04ffff01a0b982796850336aabf9ab17c3f21e299f0c633444117ab5e9ebeafadf1860d9fcffff04ffff01a0d5fd32e069fda83e230ccd8f6a7c4f652231aed5c755514b3d996cbeff4182b8ffff04ffff01a04218fbebbb6f3c0907ebe8a672fa5d1e4bc655645a3a0073601e6c9b50b07c47ffff04ffff01a07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffff04ffff01a0520e10fa83a9bf74c52870cf41a5c5e7bbaa82c0f5838276f27bd88b4886d4c7ffff04ffff01a053f87e8879fd7b0accd777ffe724b47373993c03d1814958211ecae6c69e6ec5ff0180808080808080ffff04ffff01a0dd12ebf70feba2ee45dc25b7de7a53a8cd9e82e0b5648fabea5e998b890ed86dff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ffff07ff5f80ffff01ff04ffff03ff8202dfffff04ff27ff8202df80ff8080ffff04ff8205dfffff04ffff04ffff04ff08ffff04ff82015fff808080ffff04ffff04ff14ffff04ffff0bffff0bff56ffff0bff0affff0bff0aff66ff0580ffff0bff0affff0bff76ffff0bff0affff0bff0aff66ffff0bff0affff0bff1cff0580ffff0bff0affff0bff1cff2780ffff0bff1cff0b80808080ffff0bff0affff0bff76ffff0bff0affff0bff0aff66ff819f80ffff0bff0aff66ff46808080ff46808080ff46808080ffff0bff82015fffff02ff1effff04ff02ffff04ff8202dfff80808080ff8205df8080ff808080ff808080ff80808080ffff01ff02ffff03ff5fffff01ff04ff80ffff04ff5fffff01ff80808080ffff01ff04ffff04ff27ff3780ffff01ff80ff80808080ff018080ff0180ffff04ffff01ffff46ff3f01ff02ffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e1879b7152a6e7298a91ce119a63400ade7c5ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff1effff04ff02ffff04ff09ff80808080ffff02ff1effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01a07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffff04ffff01a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff01808080ff0180808080ff018080ffff04ffff01a0e00c460366d00066f75597edfb72ddfcfd0d336d67f85dc2671498900ba2810effff04ffff01ff02ffff01ff02ffff01ff02ffff03ff2fffff01ff02ffff03ffff09ff0bffff02ff16ffff04ff02ffff04ff5fff8080808080ffff01ff02ff5fff81bf80ffff01ff088080ff0180ffff01ff02ffff03ffff09ff17ffff02ff16ffff04ff02ffff04ff5fff8080808080ffff01ff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ffff02ff5fff81bf80ff808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffff33ff0102ffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e1879b7152a6e7298a91ce119a63400ade7c5ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff16ffff04ff02ffff04ff09ff80808080ffff02ff16ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff17ffff01ff02ffff03ffff09ff47ff0880ffff01ff04ffff04ff08ffff04ffff0bff2affff0bff1cffff0bff1cff32ff0580ffff0bff1cffff0bff3affff0bff1cffff0bff1cff32ffff0bff14ff058080ffff0bff1cffff0bff3affff0bff1cffff0bff1cff32ffff0bff14ff0b8080ffff0bff1cffff0bff3affff0bff1cffff0bff1cff32ffff0bff14ff81a78080ffff0bff1cff32ff22808080ff22808080ff22808080ff22808080ff81e78080ffff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ff37ff80808080808080ffff01ff04ff27ffff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ff37ff8080808080808080ff0180ff8080ff0180ff018080ffff04ffff01a000848115554ea674131f89f311707a959ad3f4647482648f3fe91ba289131f51ffff04ffff01a0ae616e8425823c1267d088f82145c3107283379598c75723b55fa15daed2c89affff04ffff01a022718ff70dd4317538ad144b514b80f0413d8a88f6c60ee1f795dc116c9dbe4bff0180808080ff01808080808080ff01808080\", \"solution\": \"0xffffa0d2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4effa043309e9613bc9d8156b52cfe1e396b43448c59286bf0b3d3dd283eeea7eb9c09ff0180ff01ffffff80ffff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b621e6c5d498b1b66886c07a68b498b1116ad9ce9fa825583d9f9e57c9f95689e230accc99186f71510577890d458cbdff018080ffff80ffff01ffff33ffa008db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088ff01ffffa008db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d60888080ffff3cffa01b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b80ffff81f6ffffa0d2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4eff0180ffff80ffa0d2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e80ffffa0c6fd05ffe8312a09f90fd3ac3f45442d3adc24a3ffb5fd6934939a13565c52b1ffa01b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987bffa096c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3ff80808080ff8080808080\" }, { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0xddb4dcaa641f2c10b7373a2bbf8571b4f761aea557f27e816a913a0b1fb5d1ec\", \"puzzle_hash\": \"0x56d7629bc6b66c3b6ab9765c53603961fe7fab44b5985e038ba06f56a3ad26b5\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4ba0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b096ba725bd3974fcb97a03d68b39605239c00050f6021a6f029d0e3c12ba0e15320608b69de24fab81e9983eb8c16b9e3ff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4ba0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080\", \"solution\": \"0xffffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4bffa0c6fd05ffe8312a09f90fd3ac3f45442d3adc24a3ffb5fd6934939a13565c52b1ff0180ff01ffff01ffff80ffff01ffff33ffa0c6fd05ffe8312a09f90fd3ac3f45442d3adc24a3ffb5fd6934939a13565c52b1ff01ffffa0070216d3ac8d37d1fc72e4259c7a96103e4de49935c9a8b7ab7ebe78513fae028080ffff3effa05c5d1e036fef46a325084587cece6fbd90969153b643f1ee0ec7d4e44a0f29a18080ff80808080\" }, { \"coin\": { \"amount\": 4999799999998, \"parent_coin_info\": \"0xfcf2249962009aadae936bf5198095f0b1d3e89f5dc8d08be7e3ccb5123af2d8\", \"puzzle_hash\": \"0x75f7052246d2da738d105b735e7f3fa945f93270d5d5c6e18ea9ef7eaa939632\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b095da6e852d85a01103de927984ecd7368be3ec3ff003380d33c77a90947caaead80640bec0447f5338990d07988535dbff018080\", \"solution\": \"0xff80ffff01ffff33ffa0c32479a76e578a51deb053c32a2116bb9cc3b80f49d26b5aaa58d032b3770058ff86048c1557acfe80ffff34ff8405f5e10080ffff3cffa0278da82ea9c4053cc2d189918632e819348b923d5ec600d41f7761c68a9e1be080ffff3dffa048f300a9148586907532753631c608149514c98ba6ea0e4415ba7c9ab29b745d8080ff8080\" } ] }, \"to_address\": \"txch1prde27n2k5338dz2qqn8dq5z4cc50kcr6efxhx8rnd9ev2savzyq0ew26n\", \"to_puzzle_hash\": \"0x08db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088\", \"trade_id\": null, \"type\": 1, \"wallet_id\": 4 } ] } After this transaction has been confirmed on the blockchain, the new credential holder can confirm that the proofs are included. First, the credential holder needs to run the same command as the proof provider to add the proofs to the local database. For example: chia rpc wallet vc_add_proofs '{\"proofs\": {\"example_proof_1\": \"example_value_1\", \"example_proof_2\": \"example_value_2\"}}' Response: { \"success\": true } Next, the credential holder can run the vc_get RPC: chia rpc wallet vc_get '{\"vc_id\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\"}' Result: { \"success\": true, \"vc_record\": { \"confirmed_at_height\": 2813720, \"vc\": { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\", \"puzzle_hash\": \"0xaff7139c2d31a2e4244d745baad309c857edf7dc4190e0619f475a80d1099906\" }, \"eml_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": \"0x5f405810abf8d6e690cfcea3409300e71b23a8362b47068d88d7aaa296278aaf\", \"parent_name\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\", \"parent_proof_hash\": \"0x69037cc8334927175cffb30007545a95a9b06b56b0ebcec8213cc26adad3f43b\" }, \"inner_puzzle_hash\": \"0x08db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088\", \"launcher_id\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"proof_hash\": \"0x96c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3\", \"proof_provider\": \"0x1cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4b\", \"singleton_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": \"0x72404cf61f085ad55ee5632646aedb69e0129eaa4a8910a0f579c46f9bfd317c\", \"parent_name\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\" } } } } The credential holder can also call the vc_get_list RPC to get a complete list of VCs controlled by that wallet, along with all stored proofs: chia rpc wallet vc_get_list Response: { \"proofs\": { \"96c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3\": { \"example_proof_1\": \"example_value_1\", \"example_proof_2\": \"example_value_2\" } }, \"success\": true, \"vc_records\": [ { \"coin_id\": \"0xa3981ceeb0a4b0c443d0d9b7c9c6777960978f96b1c7f522111e31dce4076d07\", \"confirmed_at_height\": 2813720, \"vc\": { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\", \"puzzle_hash\": \"0xaff7139c2d31a2e4244d745baad309c857edf7dc4190e0619f475a80d1099906\" }, \"eml_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": \"0x5f405810abf8d6e690cfcea3409300e71b23a8362b47068d88d7aaa296278aaf\", \"parent_name\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\", \"parent_proof_hash\": \"0x69037cc8334927175cffb30007545a95a9b06b56b0ebcec8213cc26adad3f43b\" }, \"inner_puzzle_hash\": \"0x08db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088\", \"launcher_id\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"proof_hash\": \"0x96c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3\", \"proof_provider\": \"0x1cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4b\", \"singleton_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": \"0x72404cf61f085ad55ee5632646aedb69e0129eaa4a8910a0f579c46f9bfd317c\", \"parent_name\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\" } } } ] }","s":"Add proofs to a VC","u":"/guides/verifiable-credentials-guide/","h":"#add-proofs-to-a-vc-1","p":2578},{"i":2611,"t":"Typically, the proof provider only needs to mint a VC, add proofs, and transfer the VC to the new holder. However, at some point, a holder's proofs may change. For example, a holder might have originally proven that they were not a US citizen, and then they later became a US citizen. In cases such as this, the proof provider needs to revoke the credentials, ie to remove all proofs from a VC. (The holder will continue to hold the VC, but it will no longer contain any proofs.) We don't allow the proof provider to take back the VC itself because it is possible for it to custody other assets, though we don't support this yet. The only wallet that is allowed to revoke credentials is the proof provider's (the wallet that contains the DID used to mint the VC). In order to run the vc_revoke command, the proof provider will need to know the parent coin ID (the vc_parent_id parameter). For testing purposes, the holder's wallet can obtain the parent coin ID by running the vc_get RPC. In a production environment, the proof provider will track the VC on-chain and obtain this info immediately prior to revoking the VC. chia rpc wallet vc_get '{\"vc_id\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\"}' The response will contain pertinent info about the VC, including its parent_coin_info: { \"success\": true, \"vc_record\": { \"confirmed_at_height\": 2813720, \"vc\": { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\", \"puzzle_hash\": \"0xaff7139c2d31a2e4244d745baad309c857edf7dc4190e0619f475a80d1099906\" }, \"eml_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": \"0x5f405810abf8d6e690cfcea3409300e71b23a8362b47068d88d7aaa296278aaf\", \"parent_name\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\", \"parent_proof_hash\": \"0x69037cc8334927175cffb30007545a95a9b06b56b0ebcec8213cc26adad3f43b\" }, \"inner_puzzle_hash\": \"0x08db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088\", \"launcher_id\": \"0xd2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4e\", \"proof_hash\": \"0x96c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3\", \"proof_provider\": \"0x1cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4b\", \"singleton_lineage_proof\": { \"amount\": 1, \"inner_puzzle_hash\": \"0x72404cf61f085ad55ee5632646aedb69e0129eaa4a8910a0f579c46f9bfd317c\", \"parent_name\": \"0x64c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136\" } } } } The revocation command then uses the parent_coin_info as the vc_parent_id parameter: chia rpc wallet vc_revoke '{\"vc_parent_id\": \"0x1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\", \"fee\": 100000000}' As a result, the VC will be recreated in the same wallet, but without any proofs: { \"success\": true, \"transactions\": [ { \"additions\": [ { \"amount\": 1, \"parent_coin_info\": \"0xa3981ceeb0a4b0c443d0d9b7c9c6777960978f96b1c7f522111e31dce4076d07\", \"puzzle_hash\": \"0x160c23f1632e49d5d2d978805d9319f242745f607525b72b55bee2a10e2206f2\" }, { \"amount\": 1, \"parent_coin_info\": \"0xafa6c6e09641c42b484392772902be8809c76c7790dd39742606f045a14040c0\", \"puzzle_hash\": \"0x56d7629bc6b66c3b6ab9765c53603961fe7fab44b5985e038ba06f56a3ad26b5\" } ], \"amount\": 1, \"confirmed\": false, \"confirmed_at_height\": 0, \"created_at_time\": 1687537712, \"fee_amount\": 100000000, \"memos\": { \"c5b0a0ad6dd223b30ba36f92c02bed3daae0c18112523bde11c4e3b41bbeea7e\": \"070216d3ac8d37d1fc72e4259c7a96103e4de49935c9a8b7ab7ebe78513fae02\" }, \"name\": \"0xafdcc45f0ec1caf4d573b6702671c1c89ff57a0b8e8dc8a200a85b3e1f944600\", \"removals\": [ { \"amount\": 1, \"parent_coin_info\": \"0x1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\", \"puzzle_hash\": \"0xaff7139c2d31a2e4244d745baad309c857edf7dc4190e0619f475a80d1099906\" }, { \"amount\": 1, \"parent_coin_info\": \"0x720630bc5e8d8dbddb297f96f765a1eec34e7fd9fc333f143c359cf16858d290\", \"puzzle_hash\": \"0x56d7629bc6b66c3b6ab9765c53603961fe7fab44b5985e038ba06f56a3ad26b5\" } ], \"sent\": 0, \"sent_to\": [], \"spend_bundle\": { \"aggregated_signature\": \"0xa3bf587c41b621096a761b79482ceca9db46fa31641b4bbfd68187cfd210233c4a92f365dbd37f03483f50c95adf06fb0796ba0b73711a3ebcd1750e7f3da44bc20f5180c146863b11c3e77bb9e0f0d84722c032105b99cc26dfca718db9f385\", \"coin_spends\": [ { \"coin\": { \"amount\": 4999699999998, \"parent_coin_info\": \"0x653a6248d7c2b308a35fd8b3f529c9dc485ba76f87621a4b62143edd06dd7be0\", \"puzzle_hash\": \"0xc32479a76e578a51deb053c32a2116bb9cc3b80f49d26b5aaa58d032b3770058\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0aa8d1b491839d1b757fcf787787782e5502233955073b64d434f4dec0fa5f7c7c1fb1f5efc1a3afde7185deac8035925ff018080\", \"solution\": \"0xff80ffff01ffff33ffa060e63f11c26184b3c6ee387db1bca32312ef49b1c69dfb1d663a03b6e92df0baff86048c0f61cbfe80ffff34ff8405f5e10080ffff3cffa05c32eabf1eb0f4a6c3eb3e059f5c40877c95ec65fa018afed02ca88128ffc6fc80ffff3dffa0960d6eef2fe3565dee96fd4fb912133c0ce5428cb6dc2578a9f9c5fea6027ff08080ff8080\" }, { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x1b4136963ef41ece657772ef70ca9d23b03c42a16ecb8f57748d7fdc90e0987b\", \"puzzle_hash\": \"0xaff7139c2d31a2e4244d745baad309c857edf7dc4190e0619f475a80d1099906\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0d2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4ea0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3affff04ff02ffff04ff05ffff04ff17ffff04ff2fffff04ff0bffff04ffff02ff5fff81bf80ff8080808080808080ffff04ffff01ffffff02ff3304ff01ff0101ffff02ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff14ff3880ffff0bff12ffff0bff12ffff0bff14ff2c80ff0980ffff0bff12ff0bffff0bff14ff8080808080ff8080808080ffff010b80ff0180ff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff5fffff01ffff80ff80ff8080808080808080808080ffff04ffff03ff820b7fff820b7fffff04ff3cff808080ffff02ffff03ff81bfffff01ff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff8201bfffff04ffff02ffff03ffff09ff82023fff2880ffff01ff02ffff03ffff18ff820b3fffff010180ffff01ff02ffff03ffff20ff82027f80ffff01ff04ff82033fffff04ff82057fffff01ff80808080ffff01ff088080ff0180ffff01ff04ff82027fffff04ff82057fffff04ff82013fff8080808080ff0180ffff01ff02ffff03ffff09ff82023fffff0181f680ffff01ff02ffff03ffff20ff82057f80ffff01ff04ff82027fffff04ffff02ff0bffff04ff2fffff04ff5fffff04ff82033fff8080808080ffff01ff80808080ffff01ff088080ff0180ffff01ff04ff82027fffff04ff82057fffff04ff82013fff8080808080ff018080ff0180ff80808080808080808080ffff01ff04ffff04ff28ffff04ffff02ff2effff04ff02ffff04ff05ffff04ff82047fffff04ffff0bff14ffff02ffff03ff82157fffff0182157fffff011780ff018080ffff04ffff02ffff03ff82157fffff0182157fffff011780ff0180ffff04ffff02ff3effff04ff02ffff04ff82097fff80808080ffff04ffff0bff14ff0580ff808080808080808080ff82067f8080ff822d7f8080ff018080ffff0bff12ffff0bff14ff1080ffff0bff12ffff0bff12ffff0bff14ff2c80ff0580ffff0bff12ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff14ff1480ff8080808080ffff0bff14ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01a0d5fd32e069fda83e230ccd8f6a7c4f652231aed5c755514b3d996cbeff4182b8ffff04ffff01ffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4ba096c9597578333c840f895f30af6d40b9f6c0d69100db1a13ae2e26e4c94acdd3ffff04ffff01ff02ffff01ff02ffff01ff02ff02ffff04ff02ffff04ffff02ff05ffff04ff4fffff04ff81afffff04ffff04ff0bffff04ff17ffff04ff82016fff80808080ff8080808080ff80808080ffff04ffff01ff04ff15ffff04ff2dffff04ffff04ff09ff5d80ff80808080ff018080ffff04ffff01ff02ffff01ff02ffff01ff04ffff04ff02ffff04ffff0bff4fffff02ffff03ff81efffff01ff02ff0bffff04ff05ffff04ff81afff5f808080ffff010580ff0180ffff02ffff03ff81efffff0182016fffff0181af80ff018080ff808080ffff02ff17ff81bf8080ffff04ffff0147ff018080ffff04ffff01a08b75b2ced8cdd1081021552f490618fb8b0c39e46ee5c5f9d46b6b7f9d8a8a74ffff04ffff01ff02ffff01ff02ffff01ff02ffff01ff02ff1effff04ff02ffff04ff0bffff04ff2fffff04ff5fffff04ff8205ffffff04ff820bffffff04ff8217ffffff04ffff02ff1affff04ff02ffff04ff17ffff04ffff02ff1affff04ff02ffff04ff05ffff04ffff0bff08ff8202ff80ffff04ffff02ff1affff04ff02ffff04ff82017fffff04ffff0bff08ff82017f80ff8080808080ffff04ff81bfff80808080808080ff8080808080ff80808080808080808080ffff04ffff01ffff01ff02ff02ffff03ff05ffff01ff0bff72ffff02ff16ffff04ff02ffff04ff09ffff04ffff02ff1cffff04ff02ffff04ff0dff80808080ff808080808080ffff016280ff0180ffffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e1879b7152a6e7298a91ce119a63400ade7c5ff0bff52ffff02ff16ffff04ff02ffff04ff05ffff04ffff02ff1cffff04ff02ffff04ff07ff80808080ff808080808080ffff0bff14ffff0bff14ff62ff0580ffff0bff14ff0bff428080ff02ff1affff04ff02ffff04ff0bffff04ffff0bff14ffff0bff08ff0b80ffff0bff14ffff0bff08ff81bf80ff178080ffff04ffff02ff1affff04ff02ffff04ff05ffff04ffff0bff08ff0580ffff04ff5fffff04ff82017fffff04ffff0bff08ff82017f80ffff04ff2fff808080808080808080ff808080808080ff018080ffff04ffff01a0b982796850336aabf9ab17c3f21e299f0c633444117ab5e9ebeafadf1860d9fcffff04ffff01a0d5fd32e069fda83e230ccd8f6a7c4f652231aed5c755514b3d996cbeff4182b8ffff04ffff01a04218fbebbb6f3c0907ebe8a672fa5d1e4bc655645a3a0073601e6c9b50b07c47ffff04ffff01a07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffff04ffff01a0520e10fa83a9bf74c52870cf41a5c5e7bbaa82c0f5838276f27bd88b4886d4c7ffff04ffff01a053f87e8879fd7b0accd777ffe724b47373993c03d1814958211ecae6c69e6ec5ff0180808080808080ffff04ffff01a0dd12ebf70feba2ee45dc25b7de7a53a8cd9e82e0b5648fabea5e998b890ed86dff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ffff07ff5f80ffff01ff04ffff03ff8202dfffff04ff27ff8202df80ff8080ffff04ff8205dfffff04ffff04ffff04ff08ffff04ff82015fff808080ffff04ffff04ff14ffff04ffff0bffff0bff56ffff0bff0affff0bff0aff66ff0580ffff0bff0affff0bff76ffff0bff0affff0bff0aff66ffff0bff0affff0bff1cff0580ffff0bff0affff0bff1cff2780ffff0bff1cff0b80808080ffff0bff0affff0bff76ffff0bff0affff0bff0aff66ff819f80ffff0bff0aff66ff46808080ff46808080ff46808080ffff0bff82015fffff02ff1effff04ff02ffff04ff8202dfff80808080ff8205df8080ff808080ff808080ff80808080ffff01ff02ffff03ff5fffff01ff04ff80ffff04ff5fffff01ff80808080ffff01ff04ffff04ff27ff3780ffff01ff80ff80808080ff018080ff0180ffff04ffff01ffff46ff3f01ff02ffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e1879b7152a6e7298a91ce119a63400ade7c5ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff1effff04ff02ffff04ff09ff80808080ffff02ff1effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01a07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffff04ffff01a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff01808080ff0180808080ff018080ffff04ffff01a0e00c460366d00066f75597edfb72ddfcfd0d336d67f85dc2671498900ba2810effff04ffff01ff02ffff01ff02ffff01ff02ffff03ff2fffff01ff02ffff03ffff09ff0bffff02ff16ffff04ff02ffff04ff5fff8080808080ffff01ff02ff5fff81bf80ffff01ff088080ff0180ffff01ff02ffff03ffff09ff17ffff02ff16ffff04ff02ffff04ff5fff8080808080ffff01ff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ffff02ff5fff81bf80ff808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffff33ff0102ffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e1879b7152a6e7298a91ce119a63400ade7c5ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff16ffff04ff02ffff04ff09ff80808080ffff02ff16ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff17ffff01ff02ffff03ffff09ff47ff0880ffff01ff04ffff04ff08ffff04ffff0bff2affff0bff1cffff0bff1cff32ff0580ffff0bff1cffff0bff3affff0bff1cffff0bff1cff32ffff0bff14ff058080ffff0bff1cffff0bff3affff0bff1cffff0bff1cff32ffff0bff14ff0b8080ffff0bff1cffff0bff3affff0bff1cffff0bff1cff32ffff0bff14ff81a78080ffff0bff1cff32ff22808080ff22808080ff22808080ff22808080ff81e78080ffff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ff37ff80808080808080ffff01ff04ff27ffff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ff37ff8080808080808080ff0180ff8080ff0180ff018080ffff04ffff01a000848115554ea674131f89f311707a959ad3f4647482648f3fe91ba289131f51ffff04ffff01a0ae616e8425823c1267d088f82145c3107283379598c75723b55fa15daed2c89affff04ffff01a008db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088ff0180808080ff01808080808080ff01808080\", \"solution\": \"0xffffa064c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136ffa072404cf61f085ad55ee5632646aedb69e0129eaa4a8910a0f579c46f9bfd317cff0180ff01ffffff01ffff02ffff01ff02ffff01ff04ffff04ff18ffff04ffff02ff2effff04ff02ffff04ff05ffff04ffff0bff12ffff0bff3cff0580ffff0bff12ffff0bff3cff81bf80ff0b8080ffff04ffff02ff2effff04ff02ffff04ff17ffff04ffff0bff3cff1780ffff04ff82017fffff04ff8202ffffff04ffff0bff3cff8202ff80ffff04ffff02ff2effff04ff02ffff04ff2fffff04ffff0bff3cff2f80ffff04ff8205ffffff04ffff0bff3cff820bff80ff80808080808080ff808080808080808080ff808080808080ff808080ffff04ffff04ff10ffff04ff8217ffff808080ffff04ffff04ff14ffff04ff820bffffff04ff8217ffff80808080ffff04ffff04ff2cffff04ff82bfffff808080ffff04ffff04ffff0181f6ffff04ff822fffffff04ffff04ff825fffffff04ff81bfff808080ffff04ffff04ff83027fffffff04ff83057fffffff04ff80ffff04ff5fff8080808080ff8080808080ff808080808080ffff04ffff01ffffff4948ff33ff3c01ffff02ff02ffff03ff05ffff01ff0bff76ffff02ff3effff04ff02ffff04ff09ffff04ffff02ff1affff04ff02ffff04ff0dff80808080ff808080808080ffff016680ff0180ffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e1879b7152a6e7298a91ce119a63400ade7c5ffff0bff56ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff1affff04ff02ffff04ff07ff80808080ff808080808080ff0bff12ffff0bff12ff66ff0580ffff0bff12ff0bff468080ff018080ffff04ffff01a07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffff04ffff01a0520e10fa83a9bf74c52870cf41a5c5e7bbaa82c0f5838276f27bd88b4886d4c7ffff04ffff01a0d5fd32e069fda83e230ccd8f6a7c4f652231aed5c755514b3d996cbeff4182b8ffff04ffff01a000848115554ea674131f89f311707a959ad3f4647482648f3fe91ba289131f51ffff04ffff01a0664e6e57ac6a184334a3e743c446c5d28c0dd2ae6f84bad6dacec29ab7a0bd43ff01808080808080ffffa0d2097d50519925faa13b224257a4e5ddca4f5234230fc5b1606552325a2d3a4effa0534194946506ac64d2cc4e72f4808e978e7cfac4c70686f7226184fde279c4bdffa0e00c460366d00066f75597edfb72ddfcfd0d336d67f85dc2671498900ba2810effa0e360bd07b1d45411f7a1d28741de03b66ab29dce584e3bf8c3f80ae5c7070f92ffa008db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088ff01ffffa064c61415d7e8dc212cefde59602aebeba2388fbb2fd559508e6a24988e625136ffa05f405810abf8d6e690cfcea3409300e71b23a8362b47068d88d7aaa296278aafff0180ffa069037cc8334927175cffb30007545a95a9b06b56b0ebcec8213cc26adad3f43bffa0561beddfb34781d98af7c9beaa67ededc32b566b43ca8b01b2bf141df940a613ffffa0c6fd05ffe8312a09f90fd3ac3f45442d3adc24a3ffb5fd6934939a13565c52b1ffa0a3981ceeb0a4b0c443d0d9b7c9c6777960978f96b1c7f522111e31dce4076d078080808080\" }, { \"coin\": { \"amount\": 1, \"parent_coin_info\": \"0x720630bc5e8d8dbddb297f96f765a1eec34e7fd9fc333f143c359cf16858d290\", \"puzzle_hash\": \"0x56d7629bc6b66c3b6ab9765c53603961fe7fab44b5985e038ba06f56a3ad26b5\" }, \"puzzle_reveal\": \"0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4ba0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b096ba725bd3974fcb97a03d68b39605239c00050f6021a6f029d0e3c12ba0e15320608b69de24fab81e9983eb8c16b9e3ff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa01cd9b7062eda3f0fd8b556dd01ed3e6fedfe11649f4fb465d9fd6b7acf319b4ba0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080\", \"solution\": \"0xffffa0ddb4dcaa641f2c10b7373a2bbf8571b4f761aea557f27e816a913a0b1fb5d1ecffa0c6fd05ffe8312a09f90fd3ac3f45442d3adc24a3ffb5fd6934939a13565c52b1ff0180ff01ffff01ffff80ffff01ffff33ffa0c6fd05ffe8312a09f90fd3ac3f45442d3adc24a3ffb5fd6934939a13565c52b1ff01ffffa0070216d3ac8d37d1fc72e4259c7a96103e4de49935c9a8b7ab7ebe78513fae028080ffff3dffa0960d6eef2fe3565dee96fd4fb912133c0ce5428cb6dc2578a9f9c5fea6027ff080ffff3effa0e707101647c483550aafb4221862a068a89b001ed2d9ff8c4b4b7d747deda7d78080ff80808080\" } ] }, \"to_address\": \"txch1prde27n2k5338dz2qqn8dq5z4cc50kcr6efxhx8rnd9ev2savzyq0ew26n\", \"to_puzzle_hash\": \"0x08db957a6ab52313b44a0026768282ae3147db03d6526b98e39b4b962a1d6088\", \"trade_id\": null, \"type\": 1, \"wallet_id\": 4 }, { \"additions\": [ { \"amount\": 4999599999998, \"parent_coin_info\": \"0xdeb812bdc6ba2999876f9088c057867694faf4c0a3cfcb384a578d673d50347f\", \"puzzle_hash\": \"0x60e63f11c26184b3c6ee387db1bca32312ef49b1c69dfb1d663a03b6e92df0ba\" } ], \"amount\": 0, \"confirmed\": false, \"confirmed_at_height\": 0, \"created_at_time\": 1687537712, \"fee_amount\": 100000000, \"memos\": {}, \"name\": \"0xe1adf82a6480190c943f8e37fe4d7f5945dd9fbe2284bf4cb60075b5e33f210f\", \"removals\": [ { \"amount\": 4999699999998, \"parent_coin_info\": \"0x653a6248d7c2b308a35fd8b3f529c9dc485ba76f87621a4b62143edd06dd7be0\", \"puzzle_hash\": \"0xc32479a76e578a51deb053c32a2116bb9cc3b80f49d26b5aaa58d032b3770058\" } ], \"sent\": 0, \"sent_to\": [], \"spend_bundle\": null, \"to_address\": \"txch169ga7klgwgqlu48anudsmq806f6trn95whz7mztu9aw663ygr8nqkuaxmk\", \"to_puzzle_hash\": \"0xd151df5be87201fe54fd9f1b0d80efd274b1ccb475c5ed897c2f5dad448819e6\", \"trade_id\": null, \"type\": 1, \"wallet_id\": 1 } ] } After these transactions have been confirmed on-chain, the VC no longer contains any proofs. The holder can verify this: chia rpc wallet vc_get_list Result: { \"proofs\": {}, \"success\": true, \"vc_records\": [] }","s":"Revoke a VC","u":"/guides/verifiable-credentials-guide/","h":"#revoke-a-vc-1","p":2578},{"i":2614,"t":"For a farmer to create a block, their required_iterations must be less than sub-slot_iterations / 64, as described in the Signage and Infusion Points page. This means that infusion_iterations might be greater than the sub-slot_iterations, and therefore the infusion must happen in the next sub-slot. Overflow block: a block whose infusion point is in a different sub-slot than its signage point. Current-slot challenge: Any given block's current-slot challenges include all challenges starting at the first challenge in the slot, and ending at the end of the slot (non-inclusive). This is relevant because sometimes a slot spans multiple sub-slots, and thus multiple challenges. Figure 9: B4 in this diagram is an overflow block, since the infusion is in the next sub-slot. B4 is not based on a current-slot challenge, and thus does not decrease the deficit or make a challenge block. Overflow blocks cannot exist in the first sub-slot of the epoch (since the sub-slot iterations change). Also, overflow blocks do not change the deficit unless they are based on a current-slot challenge, since overflow blocks are responses to the previous sub-slot's challenge. Overflow blocks are not challenge blocks unless they are based on a current-slot challenge. Note that it is rare for overflow blocks to decrease the deficit, since the deficit will almost always be decreased to zero, and a new slot will be started on every sub-slot.","s":"Overflow Blocks","u":"/overflow-blocks/","h":"#overflow-blocks","p":2612},{"i":2616,"t":"A minimum of 16 current-slot challenge blocks must be infused into the rewards chain in order for a slot to be finished. (Recall that a sub-slot has no such requirement, so a slot could span multiple sub-slots.) The deficit is a number between 0 and 16 that is present at the start of a sub-slot, and is present for each finished block. This is defined as the number of reward chain blocks that we need to infuse in order to finish a slot. It is reset to 16 whenever we start a slot (so there must be at least 16 total blocks per challenge chain infusion). The deficit goes down for each reward chain infusion that is based on a current-slot challenge. The block with deficit 15 is a challenge block. The normal case is where the deficit starts at 16, and goes down to zero within the sub-slot, and resets back to 16 as we finish the slot and start a new one. In the case that we don't manage to reduce it to 0 within the end of the sub-slot, the challenge chain and infused challenge chain (if present) continue, and the deficit does not reset to 16. Blocks (including overflow blocks now), keep subtracting from the deficit until we reach 0. When we finish a sub-slot with a zero deficit, the infused challenge chain is included into the challenge chain, and the deficit is reset to 16. This requirement was added to discourage long-range attacks, and is described in detail in the Attacks and Countermeasures page. The vast majority of sub-slots will have more than 16 blocks (recall that the average number is targeted to be 32), therefore the minimum-block requirement will not have much of an affect on normal operation. Figure 10: c2 is the end of the sub-slot but not the end of the slot (we have yet to reach 0 deficit). c2 does NOT point to ic2, since the slot did not end at this sub-slot. Deficit is 3 instead of resetting to 16, and the infused challenge chain continues.","s":"Minimum Block Requirement","u":"/overflow-blocks/","h":"#minimum-block-requirement","p":2612},{"i":2618,"t":"The weight of a block is the sum of the difficulty of this block, plus all previous blocks that are ancestors of this block. Honest full nodes must choose the peak of the blockchain such that the peak is the block with the heaviest weight that they know of. This is a crucial requirement, and is identical to Bitcoin's heaviest chain rule. Due to this rule, an attacker with less than 50% of the space and no VDF advantage will have trouble earning more than their fair share, since they must get lucky and create more reward chain blocks than the honest chain. Furthermore, farmers only farm on the challenges that correspond to the heaviest chain. Both VDF speed and total amount of space are important for weight, and changes in these can trigger difficulty adjustments. If the amount of space increases, more than 32 blocks per slot will be created, so the difficulty has to be increased. If the network VDF speed increases, more than 32 blocks are created every 10 minutes, and thus the difficulty (and the sub-slot iterations) has to be increased. A farmer with exclusive access to a slightly faster VDF, however, cannot easily get more rewards than a farmer with the normal speed VDF. If an attacker tries to orphan one of the blocks on the chain, having a faster VDF will not help, since the attacker's chain will have fewer blocks (and thus a lower weight). Farmers must sign the block which they are building on top of, and they will only build on top of the highest weight chain. The VDF speed comes into play when the attacker wishes to launch a 51% attack, however. In this case, an attacking farmer can use the VDF to create a completely alternate chain with no honest blocks, and overtake the honest chain. This requires 42.7% of the total netspace, since the faster VDF chain can obtain weight at a faster rate than the honest chain. This attack is described in detail in the Attacks and Countermeasures page.","s":"Weight","u":"/overflow-blocks/","h":"#weight","p":2612},{"i":2621,"t":"We are introducing a new feature that allows users to specify a passphrase to protect their Chia keys across all currently supported platforms. Along with passphrase protection, this feature also introduces a new keyring file for storing those keys. By implementing a common key storage format, moving Chia keys between installations is greatly simplified, eliminating the need to re-enter each key's 24-word mnemonic. Any keys stored in the new keyring will be encrypted using a key derived from the specified passphrase. warning Your passphrase protects only from local access of your Chia client. You must still protect your 24 words. Chia is unable to assist with the recovery of a forgotten passphrase. Be sure to backup the 24-word mnemonic for each of your keys. If you forget your passphrase, you will be able to recover by importing your keys from their 24-word mnemonic.","s":"Overview","u":"/passphrases-protected-keys/","h":"#overview","p":2619},{"i":2623,"t":"Chia's supported platforms each provide different solutions for storing sensitive data, with varying levels of security and different user experiences per platform. In addition, these platform dependent solutions for storing sensitive data did not provide a mechanism for the user to passphrase-protect Chia keys outside of whatever protection the OS already provided. On Linux, the cryptfile keyring Python module has been used with a fixed key. On macOS, the Keychain is used to securely store each key, sometimes requiring one or more system prompts to authorize access to the key material. This resulted in a system where keys were considered to be secure on systems, but that level of security was subjective to individual use cases and OS configuration, and not suitable for everyone's needs. Our primary goals with this passphrase feature have been to grant more control to our users, uniformly secure Chia keys, and to simplify the task of moving keys from one installation to another.","s":"Motivation","u":"/passphrases-protected-keys/","h":"#motivation","p":2619},{"i":2625,"t":"The new keyring file is a YAML document named keyring.yaml. Upon launch, Chia will automatically create an empty keyring.yaml file residing at: %HOMEDRIVE%%HOMEPATH%/.chia_keys/keyring.yaml (Windows) ~/.chia_keys/keyring.yaml (macOS and Linux) Note that in this release, any new keys created or imported will be stored in the new keyring.yaml file and not in the previous location. Keys in this new keyring file are encrypted using ChaCha20-Poly1305 (RFC 7539, Section 2.8) which provides encryption and authentication (AEAD). The encryption key is derived from the user's passphrase using PBKDF2 with SHA-256 (RFC 2898).","s":"New Keyring","u":"/passphrases-protected-keys/","h":"#new-keyring","p":2619},{"i":2627,"t":"danger We STRONGLY recommend that users create backups of their 24-word mnemonic before migrating their keys. Existing users with keys will want to migrate their keys from the previous location to the new keyring.yaml file, and optionally protect those keys with a passphrase. We recommend all users create a strong passphrase. On macOS and Windows, users will have the option to save their passphrase to the macOS Keychain or Windows Credential Manager respectively, allowing for Chia to run unattended (such as after a reboot due to a power failure). When launching the Chia GUI application, a migration prompt will automatically appear if existing keys are detected. The GUI migration process is nearly instantaneous and will not delete or modify those keys that were found. It's strongly encouraged that users perform the migration step right away to move to the new keyring. If necessary, it's possible to skip the migration step and continue using Chia as before, however, any attempts to add or delete a key will first require completion of the migration process. From the command line interface, keyring migration can be initiated by setting a passphrase for the new keyring, or by adding or deleting a key. When performing keyring migration from the command line, the user will have the option of deleting those old keys that were found and successfully migrated. note It is possible to migrate keys to the new key storage and not set a passphrase. In this case, the keyring.yaml file will remain encrypted with a fixed key. When you remove a passphrase, that passphrase will also be removed from the macOS Keychain or Windows Credential Manager (if saved there by the user).","s":"Migration","u":"/passphrases-protected-keys/","h":"#migration","p":2619},{"i":2630,"t":"Setting or updating a passphrase for keyring.yaml. This will prompt for keyring migration as necessary: chia passphrase set When setting a passphrase, an optional hint may be specified. This hint will be displayed by the GUI when prompting for your keyring passphrase: chia passphrase set --hint \"Summer of 2020\" Removing a passphrase from keyring.yaml. Note, keyring.yaml always keeps keys stored in an encrypted form. Without a user-specified passphrase, a fixed encryption is used: chia passphrase remove","s":"Setting/Updating/Removing Passphrases","u":"/passphrases-protected-keys/","h":"#settingupdatingremoving-passphrases","p":2619},{"i":2632,"t":"A passphrase hint can be set to assist in remembering the keyring passphrase. The hint data is stored in keyring.yaml as cleartext (not encrypted). Setting a passphrase hint when a passphrase is in use. This command will fail if a passphrase hasn't been previously set: chia passphrase hint set \"Summer of 2020\" Removing a passphrase hint. This command will fail if a passphrase and passphrase hint haven't been previously set: chia passphrase hint delete Displaying a passphrase hint. This command will fail if a passphrase and passphrase hint haven't been previously set: chia passphrase hint display","s":"Passphrase Hints","u":"/passphrases-protected-keys/","h":"#passphrase-hints","p":2619},{"i":2634,"t":"Passphrases may be accessed from a file (or file descriptor on macOS/Linux) to assist with automated workflows. Note that whitespace is not stripped from the passphrase when read from a file. Reading the passphrase from a file: chia --passphrase-file \"~/.my_chia_passphrase\" keys show Reading the passphrase from another process (on macOS/Linux): chia --passphrase-file <(echo -n 'my super secure passphrase') keys show","s":"Reading Passphrases From a File","u":"/passphrases-protected-keys/","h":"#reading-passphrases-from-a-file","p":2619},{"i":2636,"t":"On macOS and Windows, an option is available to save the passphrase to the OS-provided secure credential store (macOS Keychain or Windows Credential Manager). This option may help with automated workflows, but carries a risk that other processes may be able to read the saved passphrase without requiring user authorization. For this reason, it's recommended that users only save their passphrase if they fully trust their environment. To facilitate downgrading to a prior version of Chia, keys will be left intact in their old locations after migration (unless migrating from the command line, and the option to delete old keys was selected). If necessary, it's possible to temporarily disable passphrase support as well as usage of the new keyring. To disable passphrase and keyring support, set the CHIA_PASSPHRASE_SUPPORT environment variable to false and run Chia as you normally would. Once disabled, Chia will use the old location for key retrieval and storage. export CHIA_PASSPHRASE_SUPPORT=false; chia start farmer","s":"Additional Notes","u":"/passphrases-protected-keys/","h":"#additional-notes","p":2619},{"i":2638,"t":"Note about Windows command escaping This document will use Linux/MacOS RPC syntax. When running rpc commands on Windows, you'll need to escape all quotes with backslashes. For example, here is a typical RPC command on Linux and MacOS: chia rpc wallet create_new_wallet '{\"wallet_type\": \"nft_wallet\"}' To run the same command on Windows, you need to escape the quotes with backslashes. In other words, add a \\ before each double quote, such that: \"wallet_type\" becomes \\\"wallet_type\\\" \"nft_wallet\" becomes \\\"nft_wallet\\\" etc","s":"Offer RPC","u":"/offer-rpc/","h":"","p":2637},{"i":2641,"t":"Functionality: Cancel an Offer with a specific identifier Usage: chia rpc wallet [OPTIONS] cancel_offer [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description trade_id STRING True The trade_id of the Offer to cancel. Can be retrieved from an Offer file by calling cdv inspect spendbundles fee NUMBER False An optional fee (in mojos) to include with the cancellation [Default: 0] secure BOOLEAN False If true, then \"cancel on blockchain,\" ie spend the coins being offered. If false, then cancel locally [Default: true] note If you set secure to false, then the Offer will not be canceled on the blockchain. It could still be taken if a copy of the Offer exists on another computer. Example chia rpc wallet cancel_offer '{\"trade_id\": \"0x039492f84708b8a585ddaa0dd44fa8db1a6afdad799b0900e37dfc9097f1f351\", \"secure\": false}' Response: { \"success\": true }","s":"cancel_offer","u":"/offer-rpc/","h":"#cancel_offer","p":2637},{"i":2643,"t":"Functionality: Cancel multiple Offers Usage: chia rpc wallet [OPTIONS] cancel_offers [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description secure BOOLEAN True If true, then \"cancel on blockchain,\" ie spend the coins being offered. If false, then cancel locally fee NUMBER False An optional fee (in mojos) to include with the cancellation [Default: 0] batch_size NUMBER False The number of Offers to cancel in one batch [Default: 5] cancel_all BOOLEAN False Cancel all Offers [Default: false] asset_id STRING False The ID of the asset to cancel; only used when cancel_all is false [Default: xch] Example chia rpc wallet cancel_offers '{\"secure\": true, \"batch_fee\": 1, \"batch_size\": 2}' Response: { \"success\": true }","s":"cancel_offers","u":"/offer-rpc/","h":"#cancel_offers","p":2637},{"i":2645,"t":"Functionality: Checks whether a specific Offer is valid (see below for definitions) Usage: chia rpc wallet [OPTIONS] check_offer_validity [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description offer STRING True The text of the Offer to validate note The Offer is considered valid if it is in any of the following states: PENDING_ACCEPT PENDING_CONFIRM PENDING_CANCEL The Offer is not valid if it is in any of the following states: CANCELLED CONFIRMED FAILED Example chia rpc wallet check_offer_validity '{\"offer\": \"offer1qqr83wcuu2rykcmqvpsxzgqq4gnsn0v2w6gchlaawrmeju4af4arrwu5s2kvce6at3nhmsa4v03kvgvc8furkat55swhlsmpwjj86a9ylhljq8mfs7jw6p044wxg9a7lhhuwphnff6my6aujm3m37wvl6q0kzy3tde6nh7w9j6d0nlchdsgk628m7aktm6jfqa47hwwnj705chexjdkhufx3fd9zegkcwhfknvg9auleg2neqcjpcj8mjehmfeks7gazhwlz4ffam6ukt3wwddlya3qah92s4wgqhr73797a5fyq68clmcfmhc85auqtzmuvure07v84jch8vzcwldm0qdf4uwatuj4xtjfxadlp37x8xf8nupxtz7jl7reyvj2fg9q5t057kfe95e2jdftx5etj2f6k2kjfdx48zmjwdx55j4jfwf4xzj24295hnxd7gfz425j72x99jc2kf9py56dxtxu62an2g4lxzkvwsegk5s27hed9j52f0eqhykn206h9vnnxt66mtqvw3ft85cqam9935q4wlmd45q9u7t5t86dl3g37vrrghz8aelwgga99mg3e0uylklaume8alal4xtksxxynga2v2echu8ksx4xnjsym2f5xv56wveex5hn34f0yzzkgadxu27dqvx4wyyssnxdmzcyn5tlsl0v0tnsalqhlwgly708udd0n9ee5q0lqnhm7hul7m8e6cxn3he9u3sz546dwmxtualtc0h5f89knj34tdmkrrvknf0pzat0ju7hm3a7hz7raqqkfalm408a6jtm6xn9a0lhchxu5z4dhf7wandtdah3qjdh844tjanauwj73kjap8ga08qujwarxwljxvalq3w88ll5vcra379zflxglfrvhwa844090t2cc53pafme08pcaa625hmzaw9hf320ekrc9zhdkmw484cr9zp3tclgr4fdrxv52xvegsdlqdefln5a47zuzfu7t8hh7f3y0fd5dcqktrt57ntn30xm6nja58d8kfh8rsct4lypkfyq0npsh2sxwddqvkk4rqdk03c5jz90yfs4glll3w888k40ml09v39n6xhpdhlz85lm9mcdjlsujrck85alr6lceqjgl0etsp9tv98mq48hkmvulalxn9vgn0nht9k6sayee0mdwyfp0wd67ewknh64pxsppf3gprjxwmgsdmrfj4l8ejtukh846a43sh036d6a3e80gkmjdmf3nfu0qr50vxrg0nmezadj5hkku0srmhefz57xxw5re2na6pku46t5neaaq5fzkda9kwcrqzramre95yeayjwnvk7cgqrw7kzddne7778jslravahl4ua8v2tklam7v9x0yc63l7mu7j8xkeu7t4unqs72l9q0th3npxakcgeynt8uaksf2edgpjtc07techllaakccnazlwm9ehu4wc08dhk7ufjn576jkwzem9m88jlhl3l3wtelltvvnvhvgvd5zq543hprajzagvtsamxaxn2vt4lzn83aagcvw8rt65l57a88ua4a0ls70tekewukd805hq9xeuwj9uy89pvgf4zyq053kluthp3d4z7h8vaa4nv75tmwlc5y3duk7l4aylcmwaqrdljzl4gjm62nuxdgftl0lqh9m7xmeaha0t7dc0tp3wrwah94w7xaltkvnq460f8l09atlnd0vueveq3glt7mka5xk28fas8hawnqamaa80nfhdr7jna5qvldunsnhh70ra78ze5ycatyhplvmlhc0xf8skk4fklj2pkwtxh30xwr03qr9ckmz7r97dwe8hlaajk0t6664dahv6y78anx29pmgxkdzmk3zj57am2ngdh05u699ce8k0qrrp5f3eccrkarcssjm4950tv63cfmf8dnh5nl9vp8w7hagjjuwm6udnftt24le2wnd79kadf4jxxrmuh5myxte6vh2sky9vlvnc3j2wjm079msdng0uan048n0t09lmsnn0mfl2teylev3avfgdupa32x57tjxe6t86phk6ypgrk4e2x92kasy447ds0te305gdsrrdvl9d8vurct22gqel9z8dh2pg2y3zdxjpa9t4ga98agazj4s3grz5g2cldpq5zez2jpdevdc7p28mfzrkru7nsk9vgdv9x7jmn9edtf5fn69xw84sxjaacjdemhdfsqaxu49dlzm0aq4rk0ptpxclwncekuk4yu29tgakdl53uwfdkaavr8dnmweljt66csujmjkeeznhecn9cx5aaw9du02wkkp09qkd8kmjyqtqqv6yzy7lk89vq\"}' Response: { \"id\": \"0x7cd4ea3988ffe67388b7a12facff0499059000f99b0f9cb8b343c821b422ced9\", \"success\": true, \"valid\": true }","s":"check_offer_validity","u":"/offer-rpc/","h":"#check_offer_validity","p":2637},{"i":2647,"t":"Functionality: Creates a new Offer Usage: chia rpc wallet [OPTIONS] create_offer_for_ids [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description offer OBJECT True A dictionary [str, int] of the Offer to create (see the examples below for specifics) fee NUMBER False An optional fee (in mojos) to include with the Offer [Default: 0] validate_only BOOLEAN False Set to true to verify the validity of a potential Offer, rather than actually creating an Offer [Default: false] driver_dict OBJECT False A dictionary [str, Any] containing metadata of the asset being requested, for example an NFT's on-chain metadata min_coin_amount NUMBER False The minimum coin size to be included in the Offer [Default: 0] max_coin_amount NUMBER False The maximum coin size to be included in the Offer [Default: 0] solver False Default: None min_height NUMBER False The minimum block height that must be reached before this Offer becomes valid [Default: null (not used)] min_time NUMBER False The minimum UNIX timestamp that must be reached before this Offer becomes valid [Default: null (not used)] max_height NUMBER False The maximum block height where this Offer is still considered valid, aka the expiry height [Default: null (not used)] max_time NUMBER False The maximum UNIX timestamp where this Offer is stil considered valid, aka the expiry timestamp [Default: null (not used)] note Although relative time lock flags are included in Offer files, the RPC API does not yet support them. The unsupported flags include: max_blocks_after_created max_secs_after_created min_blocks_since_created min_secs_since_created In addition, of the four absolute time lock flags, the reference wallet will only recognize max_time. The other three (min_height, min_time, and max_height) are each enforced on the blockchain, but the reference wallet will not currently understand that the time locks need to be applied until it submits the Offer spendbundle to the mempool. For this reason, if you use the reference wallet to accept an Offer that uses any of these three flags, the transaction will be initiated, but will fail. Your log file will contain ASSERT_SECONDS_ABSOLUTE_FAILED in this case, but the GUI will continue to show the pending transaction as if it were still valid. Example 1: sell an NFT This example will create an Offer to sell an NFT. First, list the NFTs in the local wallet. For example: chia rpc wallet nft_get_nfts '{\"wallet_id\": 2}' Response: { \"nft_list\": [ { \"chain_info\": \"((117 \\\"https://bafkreifouyunkfshyhywp27uxx62bicxmarr263kohlyshg6s5yphv5acq.ipfs.nftstorage.link\\\") (104 . 0xaea628d51647c1f167ebf4bdfda0a05760231d7b6a71d7891cde9770f3d7a014) (28021 \\\"https://bafkreibspamgjmtkisxjqocjqpb3qjo4tqmjacrhe6d7jmddgdny5kenuu.ipfs.nftstorage.link\\\") (27765 \\\"https://bafkreibd6dchfc56by7fntdoe2viwdnbfbhowals4ivipugkzq6btx7koq.ipfs.nftstorage.link/\\\") (29550 . 1) (29556 . 1) (28008 . 0x32781864b26a44ae98384983c3b825dc9c18900a272787f4b06330db8ea88da5) (27752 . 0x23f0c4728bbe0e3e56cc6e26aa8b0da1284eeb0172e22a87d0cacc3c19dfea74))\", \"data_hash\": \"0xaea628d51647c1f167ebf4bdfda0a05760231d7b6a71d7891cde9770f3d7a014\", \"data_uris\": [ \"https://bafkreifouyunkfshyhywp27uxx62bicxmarr263kohlyshg6s5yphv5acq.ipfs.nftstorage.link\" ], \"edition_number\": 1, \"edition_total\": 1, \"launcher_id\": \"0x93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x23f0c4728bbe0e3e56cc6e26aa8b0da1284eeb0172e22a87d0cacc3c19dfea74\", \"license_uris\": [ \"https://bafkreibd6dchfc56by7fntdoe2viwdnbfbhowals4ivipugkzq6btx7koq.ipfs.nftstorage.link/\" ], \"metadata_hash\": \"0x32781864b26a44ae98384983c3b825dc9c18900a272787f4b06330db8ea88da5\", \"metadata_uris\": [ \"https://bafkreibspamgjmtkisxjqocjqpb3qjo4tqmjacrhe6d7jmddgdny5kenuu.ipfs.nftstorage.link\" ], \"mint_height\": 2823110, \"minter_did\": \"0x88ac2fbe439e8de2edc891bc0a6721fa709f9f4bba69c74150810ae3a081596c\", \"nft_coin_id\": \"0xce1061c6ebaeb4820449b72be34f929449dda8b2e7a59c63f55e2d803a8170e0\", \"nft_id\": \"nft1j0rlfpmck46cy49l3h8keegt7gpcg83swdvhn5aqwk6fxs38d5xs5s9ewk\", \"off_chain_metadata\": null, \"owner_did\": null, \"p2_address\": \"0xa95c074e5c0da290328078f7c2851b23549d0523214a96bebf663e9eb432d569\", \"pending_transaction\": false, \"royalty_percentage\": 0, \"royalty_puzzle_hash\": \"0xccc150219bd48d487cb06a7a6637ba2c38776c8e03c3b5962b51bbd2dc917707\", \"supports_did\": true, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" } ], \"success\": true, \"wallet_id\": 2 } Note the value of launcher_id, which in this case is 0x93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d. This will be needed momentarily. Next, create the Offer. A few things to note: \"1\" is the Wallet ID of the STANDARD_WALLET (the local XCH wallet) If a value is positive, it is being requested Therefore, this Offer will request 1000000000000 mojos (1 XCH) If a value is negative, it is being offered Normally it's a good idea to set validate_only to true in order to make sure the Offer is valid. If everything looks OK, you can rerun the command with validate_only set to false, which is the case in the following example command: chia rpc wallet create_offer_for_ids '{\"offer\":{\"1\":1000000000000,\"93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d\":-1},\"fee\":10000000,\"driver_dict\":{},\"validate_only\":false}' Response: { \"offer\": \"offer1qqr83wcuu2rykcmqvpsxvgqqemhmlaekcenaz02ma6hs5w600dhjlvfjn477nkwz369h88kll73h37fefnwk3qqnz8s0lle0lzuk8m29ahf74v6c039gt8j0n7luufm07ul2zpa7vmagj57t89vyljcrj47dau6jdtxegfgdpj9fxvhx0j7a8wfydh578t84fcts7a48whzufmp3l00udu8zeffqzp4s8h05ccay50tx0mwha7lhynpxvru7r9ax2ldwfa7u0vthet3vk2xrn5fvvxgm9v7lhwrcanardkpp806v8rsfkmrs0mng2z4e32frhnxehvpmhgx3cuygk0ayxxlarxvj6xve9larxvj5xu9xqjftv9754ueq4hnl7l3gx7a888vndh2fwt0hmerugflcgjdvhr27meqhtd4wdl6lxrul39lk32k62nfpldauleeuuhlvfhpzvagpckte09q7n9kffm4tn0qtmeljs40jp3yr3y8k9h0k3ndpu464vak92knm44edhxuvcm7fmxpmv2ap2cs3w84r7vemgjgq50en8smh0crfecqh9ncf6867uc0m93xwc9sd7m7lq6ntcajke92uhyjd6m7npuy0vk08czyk9a9078ugeq5zj2fgkmfdwn62fn9jujkdfn9jltfveh95u27w4rx2stp0xqezltdgxqe54jjv4myy6tp2xger8nkwely2jtxwfqmjkd4d9nyzsv6dfshdfjevfq4adj6t9v5jajf0ffxyl4wte8xvkp46y43urwn9rftuthq00ex8llt9al0s2z7zzw2xt2anp2hh0jkund00p706q2glllumw2cnsg4fhqsrzdea9wmjgwanhq32kvpl8x4mqgxfhqczhhay5scrw2e3hy5z84fvc57zkde9y57jtt7jxsantta5zjtj8xnjsqtyfgjmjp3fdy5ujxtxc65k235ea9jhj2ff76j5jeveay5hjjtffy2ln6v9xmyjtxt9j5y6new426yk23fxr85a3lwe0gpp57nwy0xs2p38zzvgenx4scz5yxgmy2wtvhwscz70umpnk480ejge3s994m00ue2rktq7m0s4h495zmk2tzs0ec2g28mnu04mkqehj64thfu3w6hch4nzc74y64lwr4qer0ylht62vpclnt7tmd8hm5drtxl0d370e5x64wnaatx2umttza8mqwt0h4e8ne49a0w4szkw68vnn98uxyarkde68druq00lgan70zydylavenjpe2l2826l2kh9l3fqrk38ul7p38e5aflj9kltvjzhlnw8c29gmphdx0t4xkyrykpesmt0z8yau5dfmeg67je4ellfmnq45u8xvzqw9mpth50r2xaj4tfvcalftz2w0ap3rl0r5nfmwrm62wcne0vkzkv2z83xgmqed0vwuwsprw72r0vl7xt96k47y6f7fg7gktvsl7uzeklznlc0tt6j6cx26la60tvld3kynlju0krwlk52w7eku6h28cx90p543yx6348llu9sy9ku90x3wwt4hn5eknw9adp4jxl0tpwt0wwxrr7zgn6ac04ctsaf8hl3wkzutdj0346us8luezmh3kngz7muvhtpual829kltm9mrtqm2dl5l99tpj6qvd9kqpcrrdnjqpnumphqrgf324yyuqrk6vy25pyef6x8rs9kejp8xq5fca02lk7jcn3tjh0mk8l6g2v7watkc747w38094ecm5r2h35zqaq9tahlzlk08uvmdtr8r70yn0uj93lzl7hwlee7c0q4dv8p3tt8r9e0wathnk9tcxe0t4wy88wyc274ulw3whxhafg8lc6wf8gnl9leeat8whpeu0q3t6ad7f2ae6qjlvrzle4mk4yn5falfj7x9veqfnnth9wu47e6h7x5texdp6fwqcxn4mk5augp6cdfk3j4avsp2dpx7eusmzyu5dm436a5f70xntle7gavz9wje8e00z5rth6ujaf655tkyt07460l6uk8684zp8tq5j29crj8qv0caaf0ajatf7lpq4q2ltl2le6dcrwryhlhf00fxq3knw7lwkmye8mtl9tpc76g75upafxladesejvqdrteww7kfemhq9df2wm8vh5k48fez2j8efl9e0vl2llyk7lew2xlle8mgx9getm07q58s5hau9jg7v7p8dshdykls4855t223sejlwvd9m3h5che98edx3lqgr4wjm64e675hq9umn26hmcjd2zlwxcdzt734zyhjmwkhnuwumw7rvl3kl0yx6hge034703gztfht74aslnuc4cuak8g6atcknw8ua89ea7hapgl4zssqhrm6yel8c7tg3dpy6ganrlfuuz9aawahandca6lm34ryner6qgqpvq3ymqqjqgn79\", \"success\": true, \"trade_record\": { \"accepted_at_time\": null, \"coins_of_interest\": [ { \"amount\": 1, \"parent_coin_info\": \"0xf6355c1b5aaf6abf2f8fd4c61c50a7c3e935d4861fbcdeee53ce765976036136\", \"puzzle_hash\": \"0x60a223434eeee141e75b3c5361f490c04d6330cf99d0781e7874dc036bbb518a\" }, { \"amount\": 3106899989, \"parent_coin_info\": \"0xd5619c0b02a9279edf11ae85407fd8dc7472fe449fe6ab88d4cc480a5d4b24f5\", \"puzzle_hash\": \"0x1732d207b04a03dd7d622cc9f491d43ca0561cf73a1efacdaa0e26e8902c8b73\" } ], \"confirmed_at_index\": 0, \"created_at_time\": 1678334380, \"is_my_offer\": true, \"pending\": { \"93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d\": 1, \"unknown\": 3106899989 }, \"sent\": 0, \"sent_to\": [], \"status\": \"PENDING_ACCEPT\", \"summary\": { \"fees\": 10000000, \"infos\": { \"93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d\": { \"also\": { \"also\": { \"owner\": \"()\", \"transfer_program\": { \"launcher_id\": \"0x93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d\", \"royalty_address\": \"0xccc150219bd48d487cb06a7a6637ba2c38776c8e03c3b5962b51bbd2dc917707\", \"royalty_percentage\": \"0\", \"type\": \"royalty transfer program\" }, \"type\": \"ownership\" }, \"metadata\": \"((117 \\\"https://bafkreifouyunkfshyhywp27uxx62bicxmarr263kohlyshg6s5yphv5acq.ipfs.nftstorage.link\\\") (104 . 0xaea628d51647c1f167ebf4bdfda0a05760231d7b6a71d7891cde9770f3d7a014) (28021 \\\"https://bafkreibspamgjmtkisxjqocjqpb3qjo4tqmjacrhe6d7jmddgdny5kenuu.ipfs.nftstorage.link\\\") (27765 \\\"https://bafkreibd6dchfc56by7fntdoe2viwdnbfbhowals4ivipugkzq6btx7koq.ipfs.nftstorage.link/\\\") (29550 . 1) (29556 . 1) (28008 . 0x32781864b26a44ae98384983c3b825dc9c18900a272787f4b06330db8ea88da5) (27752 . 0x23f0c4728bbe0e3e56cc6e26aa8b0da1284eeb0172e22a87d0cacc3c19dfea74))\", \"type\": \"metadata\", \"updater_hash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"launcher_id\": \"0x93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d\", \"launcher_ph\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"type\": \"singleton\" } }, \"offered\": { \"93c7f48778b5758254bf8dcf6ce50bf203841e30735979d3a075b49342276d0d\": 1 }, \"requested\": { \"xch\": 1000000000000 } }, \"taken_offer\": null, \"trade_id\": \"0x0cb147ed072210499e1f33f288aa6233a37b7db0a49012d103a89168a08da1d0\" } } The Offer itself is the value of offer, at the top of the response. It is possible to copy this string and paste it into the Offers dialog of the GUI. You can also send the Offer directly in an email, direct message, etc. It does not contain any sensitive information. A \"thief\" only has two options: accept the Offer or ignore it. Example 2: buy an NFT This example will create an Offer to buy an NFT. By definition, the NFT cannot be in your wallet, so you first need to query the blockchain to obtain an NFT's info based on its ID alone: chia rpc wallet nft_get_info '{\"coin_id\":\"nft1ks2cqah7u6hjtj2q8vaem9a8e9n6v8rtxlzxzjs6zev8x3djevtq2kd8wn\"}' Response: { \"nft_info\": { \"chain_info\": \"((117 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.gif\\\") (104 . 0x7a6eedd652d0e6d315e691e87f5098e858bfe646122d1a8759a40fcf3efb024b) (28021 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.json\\\") (27765 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/license.pdf\\\") (29550 . 1) (29556 . 1) (28008 . 0xb2214ff82ef10a57f653fd09e761c3fabe630996300f90f6fbefcb4f65904c8b) (27752 . 0x2267456bd2cef8ebc2f22a42947b068bc3b138284a587feda2edfe07a3577f50))\", \"data_hash\": \"0x7a6eedd652d0e6d315e691e87f5098e858bfe646122d1a8759a40fcf3efb024b\", \"data_uris\": [ \"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.gif\" ], \"edition_number\": 1, \"edition_total\": 1, \"launcher_id\": \"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x2267456bd2cef8ebc2f22a42947b068bc3b138284a587feda2edfe07a3577f50\", \"license_uris\": [ \"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/license.pdf\" ], \"metadata_hash\": \"0xb2214ff82ef10a57f653fd09e761c3fabe630996300f90f6fbefcb4f65904c8b\", \"metadata_uris\": [ \"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.json\" ], \"mint_height\": 2202579, \"minter_did\": \"0x28131414fed2de3b03cb4b6d851f06492aaa905d9e7aa28ec227c072d839696e\", \"nft_coin_id\": \"0x4b79bd1b4ed64bde3c3d33a55390228e4e2b412d87bfa5acf42cced4f825ec3e\", \"nft_id\": \"nft1ks2cqah7u6hjtj2q8vaem9a8e9n6v8rtxlzxzjs6zev8x3djevtq2kd8wn\", \"off_chain_metadata\": null, \"owner_did\": null, \"p2_address\": \"0x5c98e0455b643c3c5007d3bb09623820059388ba6528d41ac17e7f6ba9c4bed6\", \"pending_transaction\": false, \"royalty_percentage\": 300, \"royalty_puzzle_hash\": \"0x53c8e63bb7e61215db3c109a168a8c7ce7d1828c438b542abe9368c83ad3f0ff\", \"supports_did\": true, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"success\": true } The next step is to create a valid Offer that wallets will recognize. This includes creating a driver_dict, without which the Offer will be valid but wallets won't know how to interpret. The response from the above RPC call will include the information necessary to create the driver_dict, and the reference wallet uses a specific format for Offers. The following is an example RPC call that includes all of the necessary information. However, it is formatted with multiple lines, so it will be difficult to copy/paste into a terminal. We'll give a few single-line, OS-specific examples afterward. chia rpc wallet create_offer_for_ids '{ \"offer\":{ \"1\":-100000000000,\"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\":1 }, \"fee\":10000, \"driver_dict\":{ \"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\":{ \"type\":\"singleton\", \"launcher_id\":\"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"launcher_ph\":\"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"also\":{ \"type\":\"metadata\", \"metadata\":\"((117 \\\\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.gif\\\\\") (104 . 0x7a6eedd652d0e6d315e691e87f5098e858bfe646122d1a8759a40fcf3efb024b) (28021 \\\\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.json\\\\\") (27765 \\\\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/license.pdf\\\\\") (29550 . 1) (29556 . 1) (28008 . 0xb2214ff82ef10a57f653fd09e761c3fabe630996300f90f6fbefcb4f65904c8b) (27752 . 0x2267456bd2cef8ebc2f22a42947b068bc3b138284a587feda2edfe07a3577f50))\", \"updater_hash\":\"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\", \"also\":{ \"type\":\"ownership\", \"owner\":\"()\", \"transfer_program\":{ \"type\":\"royalty transfer program\", \"launcher_id\":\"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"royalty_address\":\"0x53c8e63bb7e61215db3c109a168a8c7ce7d1828c438b542abe9368c83ad3f0ff\", \"royalty_percentage\":\"300\" } } } } }, \"validate_only\":false }' Just as in Example 1, the response includes the Offer itself at the top of the JSON output. Copy the string beginning with offer1 and paste it into the reference wallet to verify its validity: { \"offer\": \"offer1qqr83wcuu2rykcmqvpsxzgqq4gnsn0v2w6gchlaawrmeju4af4arrwu5s2kvce6at3nhmsa4v03kvgvc8furkat55swhlsmpwjj86a9ylhljq8mfs7jw6p044wxg9a7lhhuwphnff6my6aujm3m37wvl6q0kzy3tde6nh7w9j6d0nlchdsgk628m7aktm6jfqa47hwwnj705chexjdkhufx3fd9zegkcwhfknvg9auleg2neqcjpcj8mjehmfeks7gazhwlz4ffam6ukt3wwddlya3qah92s4wgqhr73797a5fyq68clmcfmhc85auqtzmuvure07v84jch8vzcwldm0qdf4uwatuj4xtjfxadlp37x8xf8nupxtz7jl7reyvj2fg9q5t057kfe95e2jdftx5etj2f6k2kjfdx48zmjwdx55j4jfwf4xzj24295hnxd7gfz425j72x99jc2kf9py56dxtxu62an2g4lxzkvwsegk5s27hed9j52f0eqhykn206h9vnnxt66mtqvw3ft85cqam9935q4wlmd45q9u7t5t86dl3g37vrrghz8aelwgga99mg3e0uylklaume8alal4xtksxxynga2v2echu8ksx4xnjsym2f5xv56wveex5hn34f0yzzkgadxu27dqvx4wyyssnxdmzcyn5tlsl0v0tnsalqhlwgly708udd0n9ee5q0lqnhm7hul7m8e6cxn3he9u3sz546dwmxtualtc0h5f89knj34tdmkrrvknf0pzat0ju7hm3a7hz7raqqkfalm408a6jtm6xn9a0lhchxu5z4dhf7wandtdah3qjdh844tjanauwj73kjap8ga08qujwarxwljxvalq3w88ll5vcra379zflxglfrvhwa844090t2cc53pafme08pcaa625hmzaw9hf320ekrc9zhdkmw484cr9zp3tclgr4fdrxv52xvegsdlqdefln5a47zuzfu7t8hh7f3y0fd5dcqktrt57ntn30xm6nja58d8kfh8rsct4lypkfyq0npsh2sxwddqvkk4rqdk03c5jz90yfs4glll3w888k40ml09v39n6xhpdhlz85lm9mcdjlsujrck85alr6lceqjgl0etsp9tv98mq48hkmvulalxn9vgn0nht9k6sayee0mdwyfp0wd67ewknh64pxsppf3gprjxwmgsdmrfj4l8ejtukh846a43sh036d6a3e80gkmjdmf3nfu0qr50vxrg0nmezadj5hkku0srmhefz57xxw5re2na6pku46t5neaaq5fzkda9kwcrqzramre95yeayjwnvk7cgqrw7kzddne7778jslravahl4ua8v2tklam7v9x0yc63l7mu7j8xkeu7t4unqs72l9q0th3npxakcgeynt8uaksf2edgpjtc07techllaakccnazlwm9ehu4wc08dhk7ufjn576jkwzem9m88jlhl3l3wtelltvvnvhvgvd5zq543hprajzagvtsamxaxn2vt4lzn83aagcvw8rt65l57a88ua4a0ls70tekewukd805hq9xeuwj9uy89pvgf4zyq053kluthp3d4z7h8vaa4nv75tmwlc5y3duk7l4aylcmwaqrdljzl4gjm62nuxdgftl0lqh9m7xmeaha0t7dc0tp3wrwah94w7xaltkvnq460f8l09atlnd0vueveq3glt7mka5xk28fas8hawnqamaa80nfhdr7jna5qvldunsnhh70ra78ze5ycatyhplvmlhc0xf8skk4fklj2pkwtxh30xwr03qr9ckmz7r97dwe8hlaajk0t6664dahv6y78anx29pmgxkdzmk3zj57am2ngdh05u699ce8k0qrrp5f3eccrkarcssjm4950tv63cfmf8dnh5nl9vp8w7hagjjuwm6udnftt24le2wnd79kadf4jxxrmuh5myxte6vh2sky9vlvnc3j2wjm079msdng0uan048n0t09lmsnn0mfl2teylev3avfgdupa32x57tjxe6t86phk6ypgrk4e2x92kasy447ds0te305gdsrrdvl9d8vurct22gqel9z8dh2pg2y3zdxjpa9t4ga98agazj4s3grz5g2cldpq5zez2jpdevdc7p28mfzrkru7nsk9vgdv9x7jmn9edtf5fn69xw84sxjaacjdemhdfsqaxu49dlzm0aq4rk0ptpxclwncekuk4yu29tgakdl53uwfdkaavr8dnmweljt66csujmjkeeznhecn9cx5aaw9du02wkkp09qkd8kmjyqtqqv6yzy7lk89vq\", \"success\": true, \"trade_record\": { \"accepted_at_time\": null, \"coins_of_interest\": [ { \"amount\": 98660829993, \"parent_coin_info\": \"0x7d522db11cebce37a31cdd4726809b88d945c6934ba2da92bc3291c1dc0c31b0\", \"puzzle_hash\": \"0xe0e50da33925db2e000dcf791a5398d74024f22d806d8a4493cd4910617bb667\" }, { \"amount\": 6848692931, \"parent_coin_info\": \"0xe9e107f7df52376652a92ea4c136e9ac179e09d81550d6a430fa3cf7490f47cd\", \"puzzle_hash\": \"0x9aaeae85798cbc29c7c63a325db036613ea2949546869556d94b0a59a236e398\" } ], \"confirmed_at_index\": 0, \"created_at_time\": 1678339109, \"is_my_offer\": true, \"pending\": { \"unknown\": 10000, \"xch\": 105509512924 }, \"sent\": 0, \"sent_to\": [], \"status\": \"PENDING_ACCEPT\", \"summary\": { \"fees\": 10000, \"infos\": { \"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\": { \"also\": { \"also\": { \"owner\": \"()\", \"transfer_program\": { \"launcher_id\": \"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"royalty_address\": \"0x53c8e63bb7e61215db3c109a168a8c7ce7d1828c438b542abe9368c83ad3f0ff\", \"royalty_percentage\": \"300\", \"type\": \"royalty transfer program\" }, \"type\": \"ownership\" }, \"metadata\": \"((117 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.gif\\\") (104 . 0x7a6eedd652d0e6d315e691e87f5098e858bfe646122d1a8759a40fcf3efb024b) (28021 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.json\\\") (27765 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/license.pdf\\\") (29550 . 1) (29556 . 1) (28008 . 0xb2214ff82ef10a57f653fd09e761c3fabe630996300f90f6fbefcb4f65904c8b) (27752 . 0x2267456bd2cef8ebc2f22a42947b068bc3b138284a587feda2edfe07a3577f50))\", \"type\": \"metadata\", \"updater_hash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"launcher_id\": \"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"launcher_ph\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"type\": \"singleton\" } }, \"offered\": { \"xch\": 100000000000 }, \"requested\": { \"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\": 1 } }, \"taken_offer\": null, \"trade_id\": \"0x7cd4ea3988ffe67388b7a12facff0499059000f99b0f9cb8b343c821b422ced9\" } } In Windows, quotes need to be escaped with backslashes. The following is the equivalent command, formatted for Windows, using a single line. Note that for the quotes surrounding URIs three backslashes are required: chia rpc wallet create_offer_for_ids '{ \\\"offer\\\":{ \\\"1\\\":-100000000000,\\\"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\\\":1 }, \\\"fee\\\":10000, \\\"driver_dict\\\":{ \\\"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\\\":{ \\\"type\\\":\\\"singleton\\\", \\\"launcher_id\\\":\\\"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\\\", \\\"launcher_ph\\\":\\\"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\\\", \\\"also\\\":{ \\\"type\\\":\\\"metadata\\\", \\\"metadata\\\":\\\"((117 \\\\\\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.gif\\\\\\\") (104 . 0x7a6eedd652d0e6d315e691e87f5098e858bfe646122d1a8759a40fcf3efb024b) (28021 \\\\\\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.json\\\\\\\") (27765 \\\\\\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/license.pdf\\\\\\\") (29550 . 1) (29556 . 1) (28008 . 0xb2214ff82ef10a57f653fd09e761c3fabe630996300f90f6fbefcb4f65904c8b) (27752 . 0x2267456bd2cef8ebc2f22a42947b068bc3b138284a587feda2edfe07a3577f50))\\\", \\\"updater_hash\\\":\\\"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\\\", \\\"also\\\":{ \\\"type\\\":\\\"ownership\\\", \\\"owner\\\":\\\"()\\\", \\\"transfer_program\\\":{ \\\"type\\\":\\\"royalty transfer program\\\", \\\"launcher_id\\\":\\\"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\\\", \\\"royalty_address\\\":\\\"0x53c8e63bb7e61215db3c109a168a8c7ce7d1828c438b542abe9368c83ad3f0ff\\\", \\\"royalty_percentage\\\":\\\"300\\\" } } } } }, \\\"validate_only\\\":false }' In Linux and MacOS, the backslashes are generally not needed. Note, however, that one backslash is still needed in front of the quotes surrounding URIs. The following command is equivalent to the one above, but formatted for Linux and MacOS: chia rpc wallet create_offer_for_ids '{ \"offer\":{ \"1\":-100000000000,\"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\":1 }, \"fee\":10000, \"driver_dict\":{ \"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\":{ \"type\":\"singleton\", \"launcher_id\":\"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"launcher_ph\":\"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"also\":{ \"type\":\"metadata\", \"metadata\":\"((117 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.gif\\\") (104 . 0x7a6eedd652d0e6d315e691e87f5098e858bfe646122d1a8759a40fcf3efb024b) (28021 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.json\\\") (27765 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/license.pdf\\\") (29550 . 1) (29556 . 1) (28008 . 0xb2214ff82ef10a57f653fd09e761c3fabe630996300f90f6fbefcb4f65904c8b) (27752 . 0x2267456bd2cef8ebc2f22a42947b068bc3b138284a587feda2edfe07a3577f50))\", \"updater_hash\":\"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\", \"also\":{ \"type\":\"ownership\", \"owner\":\"()\", \"transfer_program\":{ \"type\":\"royalty transfer program\", \"launcher_id\":\"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"royalty_address\":\"0x53c8e63bb7e61215db3c109a168a8c7ce7d1828c438b542abe9368c83ad3f0ff\", \"royalty_percentage\":\"300\" } } } } }, \"validate_only\":false }' Example 3: Expiring Offer In this example, we will offer 0.1 CATs (Launcher ID: 91aa...004r) in exchange for 1 TXCH (Wallet ID: 1). In addition, we will add an expiry timestamp so that this Offer will expire on Jan. 1, 2024: chia rpc wallet create_offer_for_ids '{\"offer\":{\"1\":1000000000000,\"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\":-100},\"fee\":10000000,\"driver_dict\":{},\"validate_only\":false, \"max_time\": 1704070800}' Response: { \"offer\": \"offer1qqr83wcuu2rykcmqvpsxvgqqemhmlaekcenaz02ma6hs5w600dhjlvfjn477nkwz369h88kll73h37fefnwk3qqnz8s0lle0xp70k7vrwmdq0sfnsf7jns276kh4lah7ark8fkc5kmjeav0nkkmyms8jvjqcrgd9jd46wvwh568qn8qlklu95fmvv060rwr0h4c8r55hwwal5y32l7mnr09ckf2gqqtv3a67c0rra0fyx8y6tlt8e2qk6t0m6s0hl0hd0n9kflhnm2lah9ryzn49yre20axxr3ue2a7neg06mvh7zte0uk9jmzekjndhl5v330qtd2f00q0zeeadv2tcljxmdhjxtdh68tdh68tdk68tp57nmrdkmm5dw7srzlhqhn8h04883476dz7x6mny6jzdcga33n4s8n884cxcekcemz6mk3jk4v925m8z9f8s877t4tn3kdx07q7h6w8t0r0krkc5m8j2m0xu9v3q6es4x0uy92c2us9xuwp0cgp3h0rpwdkcn37486waykwls2k94hn7zlllxl5lkeytd9wv2yxurz5x56r4h9sxq6mac5ea7e5k66wa2xcj0an6kqq4eyqpvpellpl7dayem3phq8yrrl4lspgr8urleflu9zs6ypnxm0e77awkul4mh05cu4qwekejhwru43ztcv7wj4yan0lur7dvkyp4ualchadvjdeluy6kpqevlehlqtxcld0mp2dqctl4l5u065h2utealkaxme27yv5knkhxxgrc7fd57trg0mq0alcz7yu76yexf3mfear3424luwmt87cjqkuw9jmjn26h7xz96yrlyufp6rxfyhl3w8rv2remjywkvwewme3paxt2v8yxhhmd6fdhnuwhnslq7957ye20uafl79echvvpkt2w86e06d985ravvym8huef3hvlkmk0enw4fu44ad3ltshuwqrjlu5cdphlpw3pdpy6led8dt7qwyl90s4ffl0vewuhdjwj70al622xtlc54m4d6n7nsxmpz647l405p2qpq7ec6x9np3m4n8e0h74ua3328nznycrm7j3uu300e0adn8m4hulnuu27jpduqfyctxs2pcyckg307epnev6xa4f7hkx20mlk4ellnlhlqs4kreh2rzju0w6rs5ma60mlxs6v8thtv9tl3lynp7m7nxr0eg5nuhkfaxclysmrf35dmrzgq4stk5nvem5aajer9n07m0rjv3z4l38trd0lgdthakh2setfl3d8kmuw933khanfem0hk66l97a7htg6a9vdegaxjgvl65d8j5es3tq4jtscqkwrgm789ux074amv0r3lqdwcv8t72et85hddwm7mkas2hh6464rx60yk6llk79v6v06rcx9gmljh7zkr335dq89q9flazmz67dwctlv4n8npld5lw3s8wkhj7v57h67rj0nsvw8tn3hesq24vhahlsda2ldk847g8caa0h95wfmtwt4lvm96edwklv0uf9m78svj4dz6mgaqv82a2fl8hn8u7f484yy9uzpe67jnmfea7d6ytj08da0jkkz96t2fv4fdc9ht06ulzf86g43y0pdj7nw3dlcjfwl37550wn5vda70zavknx4h5xxnfhjpy9slrkwcpvxt7704adwslkh8lfp76at40dd0ny6zg4dgjwlkrcphtgy7lsx3jccq\", \"success\": true, \"trade_record\": { \"accepted_at_time\": null, \"coins_of_interest\": [ { \"amount\": 1000000000, \"parent_coin_info\": \"0x3b5d9e333b75c20829f4acf07b122fbbb02df7bbeb033de5dee67df9ac201e24\", \"puzzle_hash\": \"0x7059f91bb16c1f24ee9677e2aa3bf454efc66316e69682db4f00004b707c63be\" }, { \"amount\": 97119866323, \"parent_coin_info\": \"0x0894a86fc98304960b258e2e68e5eebdafe9efff903a13037b5c22e3bb5513b2\", \"puzzle_hash\": \"0xdfcfc555683e8ae18a579fc9e1b62c37b26c73c7790948a9f0815c557e985920\" } ], \"confirmed_at_index\": 0, \"created_at_time\": 1695625850, \"is_my_offer\": true, \"pending\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": 1000000000, \"unknown\": 97119866323 }, \"sent\": 0, \"sent_to\": [], \"status\": \"PENDING_ACCEPT\", \"summary\": { \"fees\": 10000000, \"infos\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": { \"tail\": \"0x91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\", \"type\": \"CAT\" } }, \"offered\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": 100 }, \"requested\": { \"xch\": 1000000000000 } }, \"taken_offer\": null, \"trade_id\": \"0x0561bd8ab330bdc1c12231c6ddd75c4cda2d6e1ae5188274b228a77ff35efb35\", \"valid_times\": { \"max_blocks_after_created\": null, \"max_height\": null, \"max_secs_after_created\": null, \"max_time\": 1704070800, \"min_blocks_since_created\": null, \"min_height\": null, \"min_secs_since_created\": null, \"min_time\": null } } } Example 4: Offer in time window Per the above note, this example will create a valid Offer, but the reference wallet currently (as of 2.1.0) will not be able to read it. In this example, we will offer 12.345 CATs (Launcher ID: 91aa...004r) in exchange for 1 TXCH (Wallet ID: 1). The offer will not be valid until UNIX timestamp 1700000000, and it will expire after timestamp 1705000000: chia rpc wallet create_offer_for_ids '{\"offer\":{\"1\":1000000000000,\"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\":-12345},\"fee\":10000000,\"driver_dict\":{},\"validate_only\":false, \"min_time\": 1700000000, \"max_time\": 1705000000}' Response: { \"offer\": \"offer1qqr83wcuu2rykcmqvpsxvgqqemhmlaekcenaz02ma6hs5w600dhjlvfjn477nkwz369h88kll73h37fefnwk3qqnz8s0lle0xp70k7vrwmdq0sfnsf7jns276kh4lah7ark8fkc5kmjeav0nkkmyms8jvnqekfckkdxnl3fwnhlarmv7ghjkcpjlj7838z7arcly3df5nqhkw45k76lcmcw9jkjsyrrq0wkx8ecetwt3acksljewvsa4jrlwurd6mamm7e4k04aw7k0deu6s5u32qkgnlffhumy2h0ym2mlx3904j7g003ujck0y66a6ah8upcza2zfmcrc5wlttxnkpudhmfafkmfapkmda3kmdu3jmdl5wj6d574rtl4smhpc97c97aaeu9w7kgm3k6uer5vnwg85fv4wp7cp7wakkphxwczhd6ddjtf24qegn2au34kzl2c7algresmh7ns6eclasakaxeqnxle09tcgkjv9tnrq3wkj4ypthpsmezy0d3cqdnd45k09w7m5efnh6zejdtuhkh0uflalmk3zm9tty3e4qs435xs7aev35xzuwt8h2k98kkjlt369rmvwhsvx7pqsvqzdlk0ls0a9k4uz8qcszw9xgtfswxqryr8l47s9gg8utljwq7glkzegdzrfe9mr26a8a078zwwf86ltmj8xyk45a4zx6j0hexvz9l0dlwh7whedc2hl4htr8e570a8asg2g8jdhlza58atxa2lgxg79falr7n96jz70llh3k7khp99a3a36p6q7pj00h5cjpwvzldlch4plqaha200ww0rzask0l2x2w3y53m2v2m3qsvjtu2y90r044etajcgfeumlc9qcddglr0sn6fjmd60pymhfffsas67lthe8kkv3k7xpu8exmem8f0n407qn8za3683wfg7mfles52n0h3chv2urt877nj6wmlw06d8zuha58a0j3ss8w8uzsesc92y95yntl9ka40cpcnu47r4p8dlnd6jake6te7hmfe2e87zjh7hh2062qmvyrte079usdfxyrm9rgckvxhwkvl97l24nkx9v7vgvmq00628n69am9lhkvlwklr70nst7g94sp9npv2pg8qnzej9lm9xt9r2mk4867cmfhw77hha707luzj5c8xavv6t3amgwzn0hf70c6nfsa0ads9d70ajv8md6vcdl9zs06le85tru6zvfxk3hydfqzkzxjjdh8wnh72yvkqam4uwdj5gh79avd9laf4wmk2l2tydr74k7nw3ukky6lkd88a77mttuhmh64drt59nh9z57f3nl23572ryzdvzkf0nq2esdendxu4mtlnlve4r0xfu8hd7rjtmt0lyga4ntnvgv94a3amjlemk0lldu2e5cl58sv23hl90u9v8rrg6qwxq2kwkwh08echeutguxqlzs0whe258ane39m40yduhv3gsmdslwm0esp2hvluhmsal2ldkr4728cuath4kwfmtwt4lvny6ad7kly0ud9tu8cvj4dj6mguqg867pg7lk0f2n8xu0982lmfvfmhzxchxdtltda8sunh5fk542rauavgvhn5udtq2w6zexjhvt720uldnmkyltvez63h67yh9lyenf4pl07yrd7zlrpf4q0508p2hga8tqne75d2v7fw7np2nnlx3c4txuawcpghus0dvqqc2j0aure5eas\", \"success\": true, \"trade_record\": { \"accepted_at_time\": null, \"coins_of_interest\": [ { \"amount\": 1000000000, \"parent_coin_info\": \"0x3b5d9e333b75c20829f4acf07b122fbbb02df7bbeb033de5dee67df9ac201e24\", \"puzzle_hash\": \"0x7059f91bb16c1f24ee9677e2aa3bf454efc66316e69682db4f00004b707c63be\" }, { \"amount\": 97119866323, \"parent_coin_info\": \"0x0894a86fc98304960b258e2e68e5eebdafe9efff903a13037b5c22e3bb5513b2\", \"puzzle_hash\": \"0xdfcfc555683e8ae18a579fc9e1b62c37b26c73c7790948a9f0815c557e985920\" } ], \"confirmed_at_index\": 0, \"created_at_time\": 1695626838, \"is_my_offer\": true, \"pending\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": 1000000000, \"unknown\": 97119866323 }, \"sent\": 0, \"sent_to\": [], \"status\": \"PENDING_ACCEPT\", \"summary\": { \"fees\": 10000000, \"infos\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": { \"tail\": \"0x91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\", \"type\": \"CAT\" } }, \"offered\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": 12345 }, \"requested\": { \"xch\": 1000000000000 } }, \"taken_offer\": null, \"trade_id\": \"0x6d5f5b2a728851ce1b1d8797f734b6c963ee2b6717087d480be970eb58e1a22b\", \"valid_times\": { \"max_blocks_after_created\": null, \"max_height\": null, \"max_secs_after_created\": null, \"max_time\": 1705000000, \"min_blocks_since_created\": null, \"min_height\": null, \"min_secs_since_created\": null, \"min_time\": 1700000000 } } }","s":"create_offer_for_ids","u":"/offer-rpc/","h":"#create_offer_for_ids","p":2637},{"i":2649,"t":"Functionality: Gets multiple Offers for the current wallet, depending on the supplied parameters Usage: chia rpc wallet [OPTIONS] get_all_offers [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description start NUMBER False The first Offer to display, inclusive [Default: 0] end NUMBER False The last Offer to display, exclusive [Default: 10] exclude_my_offers BOOLEAN False If true, don't show Offers that originated from this wallet [Default: false] exclude_taken_offers BOOLEAN False If true, don't show any Offers with a status of CONFIRMED [Default: false] include_completed BOOLEAN False If true, show completed Offers [Default: false] sort_key STRING False Optionally change the sort order of the results, sort_keys members [Default: confirmed_at_height] reverse BOOLEAN False If true, reverse the results [Default: false] file_contents BOOLEAN False If true, return a summary for the Offer. If false, only return the Offer's basic metadata [Default: false] Example Show the first Offer: chia rpc wallet get_all_offers '{\"start\": 0, \"end\": 1}' Response: { \"offers\": null, \"success\": true, \"trade_records\": [ { \"accepted_at_time\": null, \"coins_of_interest\": [ { \"amount\": 1, \"parent_coin_info\": \"0xe2824e6ce7df1fc29aeba24ee7d4d3bfadad2360430391f249a0ed50f745d547\", \"puzzle_hash\": \"0xffdea0260e14e73ab4489772c63b75d65b5b070da5c260b2682bfd83d2ca0d6c\" } ], \"confirmed_at_index\": 0, \"created_at_time\": 1676509124, \"is_my_offer\": true, \"pending\": { \"afefeea01a615487ccfc2e3d70db69eceb5b715a81deba9e6b72b78067e61de6\": 1 }, \"sent\": 0, \"sent_to\": [], \"status\": \"PENDING_ACCEPT\", \"summary\": { \"fees\": 0, \"infos\": { \"afefeea01a615487ccfc2e3d70db69eceb5b715a81deba9e6b72b78067e61de6\": { \"also\": { \"also\": { \"owner\": \"()\", \"transfer_program\": { \"launcher_id\": \"0xafefeea01a615487ccfc2e3d70db69eceb5b715a81deba9e6b72b78067e61de6\", \"royalty_address\": \"0xb185af1a299b92ac0f5de04d12e86d3e08dac37af59565f45d1555d8941b6e82\", \"royalty_percentage\": \"200\", \"type\": \"royalty transfer program\" }, \"type\": \"ownership\" }, \"metadata\": \"((117 \\\"https://nftstorage.link/ipfs/bafybeiciasr5ifxl73lq6mv5otyaukrvb6326nk6cgcsny2x4wcjxxis3q/356.gif\\\" \\\"ipfs://bafybeiciasr5ifxl73lq6mv5otyaukrvb6326nk6cgcsny2x4wcjxxis3q/356.gif\\\") (104 . 0x7b4981aba8d8e9dd25c40d6c696cb32eb7e281cb5629b29af64a2dd36495beb1) (28021 \\\"https://nftstorage.link/ipfs/bafybeiciasr5ifxl73lq6mv5otyaukrvb6326nk6cgcsny2x4wcjxxis3q/356.json\\\" \\\"ipfs://bafybeiciasr5ifxl73lq6mv5otyaukrvb6326nk6cgcsny2x4wcjxxis3q/356.json\\\") (27765 \\\"https://nftstorage.link/ipfs/bafybeidgtm4uobrog5kc7pn7bsmusdasf5w3drzqiitdjb3wragqrb7ola/LICENSE%20AGREEMENT.png\\\") (29550 . 1) (29556 . 1) (28008 . 0x9b40e3ed1d6b767886e6e8841aa1f6b60f8dc02cb98b2b876576c8dffc41995b) (27752 . 0x8e20454114197f82c7f50324df80170951fa3dfffd3b8860290207fb1e73743e))\", \"type\": \"metadata\", \"updater_hash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"launcher_id\": \"0xafefeea01a615487ccfc2e3d70db69eceb5b715a81deba9e6b72b78067e61de6\", \"launcher_ph\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"type\": \"singleton\" } }, \"offered\": { \"afefeea01a615487ccfc2e3d70db69eceb5b715a81deba9e6b72b78067e61de6\": 1 }, \"requested\": { \"xch\": 2000000000000 } }, \"taken_offer\": null, \"trade_id\": \"0x039492f84708b8a585ddaa0dd44fa8db1a6afdad799b0900e37dfc9097f1f351\" } ] }","s":"get_all_offers","u":"/offer-rpc/","h":"#get_all_offers","p":2637},{"i":2651,"t":"Functionality: Get the details of an Offer Usage: chia rpc wallet [OPTIONS] get_offer [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description trade_id STRING True The trade_id of the Offer file_contents BOOLEAN False If true, return a summary for the Offer. If false, only return the Offer's basic metadata [Default: false] Example chia rpc wallet get_offer '{\"trade_id\": \"0x0958db8393a63dab6b2afa78abbfe91a0487e5b06e25174ec8c49d383f18afc0\"}' Response: { \"offer\": null, \"success\": true, \"trade_record\": { \"accepted_at_time\": 1678342997, \"coins_of_interest\": [ { \"amount\": 1, \"parent_coin_info\": \"0xc1d5924830950190008ec498deb7d1809c9203ed8f00e68a5097e2d0f2bdd41d\", \"puzzle_hash\": \"0x4ffb6a0a459b3229b1b399922d70c0a9283aaad4c86401d4ee277fba31b31ee8\" }, { \"amount\": 6848692931, \"parent_coin_info\": \"0xe9e107f7df52376652a92ea4c136e9ac179e09d81550d6a430fa3cf7490f47cd\", \"puzzle_hash\": \"0x9aaeae85798cbc29c7c63a325db036613ea2949546869556d94b0a59a236e398\" } ], \"confirmed_at_index\": 3353481, \"created_at_time\": 1678342997, \"is_my_offer\": false, \"pending\": { \"87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\": 1 }, \"sent\": 0, \"sent_to\": [], \"status\": \"CONFIRMED\", \"summary\": { \"fees\": 0, \"infos\": { \"87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\": { \"also\": { \"also\": { \"owner\": \"0x700b5276a6ea93aeb290763ca90902a85e51287d468661961e425f3f95129a94\", \"transfer_program\": { \"launcher_id\": \"0x87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\", \"royalty_address\": \"0xea0a501540d9c0ec351e91dd124e29e86af834acd7d79e76d1e9202b2a414b58\", \"royalty_percentage\": \"300\", \"type\": \"royalty transfer program\" }, \"type\": \"ownership\" }, \"metadata\": \"((117 \\\"https://bafkreies6esf3tjdnhbdpwe535b3ozb2wykje2myyunmavaafxyggq7yyq.ipfs.nftstorage.link\\\") (104 . 0x92f1245dcd2369c237d89ddf43b7643ab614926998c51ac054002df06343f8c4) (28021 \\\"https://bafkreie7izsags3k33lermoyl2bzeylso3dto5ri7elqatzunzlut3jgyi.ipfs.nftstorage.link\\\") (27765 \\\"https://bafybeihpnxv5xiahxnxaxf4zefbnyrs7krri5slcnqon7nmywlpnppt6xe.ipfs.nftstorage.link/Froggy%20NFT%20License%20Agreement.pdf\\\") (29550 . 1) (29556 . 1) (28008 . 0x9f4664034b6aded648b1d85e8392617276c7377628f917004f346e5749ed26c2))\", \"type\": \"metadata\", \"updater_hash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"launcher_id\": \"0x87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\", \"launcher_ph\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"type\": \"singleton\" } }, \"offered\": { \"87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\": 1 }, \"requested\": { \"xch\": 6600000000 } }, \"taken_offer\": \"0x000000020000000000000000000000000000000000000000000000000000000000000000cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e70000000000000000ff02ffff01ff02ff0affff04ff02ffff04ff03ff80808080ffff04ffff01ffff333effff02ffff03ff05ffff01ff04ffff04ff0cffff04ffff02ff1effff04ff02ffff04ff09ff80808080ff808080ffff02ff16ffff04ff02ffff04ff19ffff04ffff02ff0affff04ff02ffff04ff0dff80808080ff808080808080ff8080ff0180ffff02ffff03ff05ffff01ff02ffff03ffff15ff29ff8080ffff01ff04ffff04ff08ff0980ffff02ff16ffff04ff02ffff04ff0dffff04ff0bff808080808080ffff01ff088080ff0180ffff010b80ff0180ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff1effff04ff02ffff04ff09ff80808080ffff02ff1effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffffa01c16c8d75a4758c9f9ceaeefb15d882224d72d3b14d57310299583bf9a80bb13ffffa056b40242ba5961c0624a20cbdb36f7e60f8d5749a8d61a6faff899bb6559c5caff850189640200ff80808080c1d5924830950190008ec498deb7d1809c9203ed8f00e68a5097e2d0f2bdd41d4ffb6a0a459b3229b1b399922d70c0a9283aaad4c86401d4ee277fba31b31ee80000000000000001ff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa087db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff04ff2cff8080808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a0a04d9f57764f54a43e4030befb4d80026e870519aaa66334aef8304f5d0393c2ffff04ffff01ffff75ffc05868747470733a2f2f6261666b72656965733665736633746a646e68626470776535333562336f7a623277796b6a65326d7979756e6d61766161667879676771377979712e697066732e6e667473746f726167652e6c696e6b80ffff68a092f1245dcd2369c237d89ddf43b7643ab614926998c51ac054002df06343f8c4ffff826d75ffc05868747470733a2f2f6261666b7265696537697a73616773336b33336c65726d6f796c32627a65796c736f3364746f35726937656c7161747a756e7a6c7574336a6779692e697066732e6e667473746f726167652e6c696e6b80ffff826c75ffc07f68747470733a2f2f6261667962656968706e78763578696168786e78617866347a6566626e797273376b72726935736c636e716f6e376e6d79776c706e7070743678652e697066732e6e667473746f726167652e6c696e6b2f46726f6767792532304e46542532304c6963656e736525323041677265656d656e742e70646680ffff82736e01ffff82737401ffff826d68a09f4664034b6aded648b1d85e8392617276c7377628f917004f346e5749ed26c280ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff17ffff04ff0bffff04ffff02ff2fff5f80ff80808080808080ffff04ffff01ffffff82ad4cff0233ffff3e04ff81f601ffffff0102ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff32ffff0bff3cff3480ffff0bff32ffff0bff32ffff0bff3cff2280ff0980ffff0bff32ff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ff04ffff04ff38ffff04ffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ffff02ff2effff04ff02ffff04ffff02ffff03ff81afffff0181afffff010b80ff0180ff80808080ffff04ffff0bff3cff4f80ffff04ffff0bff3cff0580ff8080808080808080ff378080ff82016f80ffffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff2fffff01ff80ff808080808080808080ff0bff32ffff0bff3cff2880ffff0bff32ffff0bff32ffff0bff3cff2280ff0580ffff0bff32ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff5fffff01ff02ffff03ffff09ff82011fff3880ffff01ff02ffff03ffff09ffff18ff82059f80ff3c80ffff01ff02ffff03ffff20ff81bf80ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff82019fffff04ff82017fff80808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff0180ffff01ff02ffff03ffff09ff82011fff2c80ffff01ff02ffff03ffff20ff82017f80ffff01ff04ffff04ff24ffff04ffff0eff10ffff02ff2effff04ff02ffff04ff82019fff8080808080ff808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ffff02ff0bffff04ff17ffff04ff2fffff04ff82019fff8080808080ff8080808080808080808080ffff01ff088080ff0180ffff01ff02ffff03ffff09ff82011fff2480ffff01ff02ffff03ffff20ffff02ffff03ffff09ffff0122ffff0dff82029f8080ffff01ff02ffff03ffff09ffff0cff82029fff80ffff010280ff1080ffff01ff0101ff8080ff0180ff8080ff018080ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff8080808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff018080ff018080ff0180ffff01ff02ff3affff04ff02ffff04ff05ffff04ff0bffff04ff81bfffff04ffff02ffff03ff82017fffff0182017fffff01ff02ff0bffff04ff17ffff04ff2fffff01ff808080808080ff0180ff8080808080808080ff0180ff018080ffff04ffff01a0c5abea79afaa001b5427dfa0c8cf42ca6f38f5841b78f9b3c252733eb2de2726ffff04ffff01a0700b5276a6ea93aeb290763ca90902a85e51287d468661961e425f3f95129a94ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff04ff82013fffff04ff80ffff04ffff02ffff03ffff22ff82013fffff20ffff09ff82013fff2f808080ffff01ff04ffff04ff10ffff04ffff0bffff02ff2effff04ff02ffff04ff09ffff04ff8205bfffff04ffff02ff3effff04ff02ffff04ffff04ff09ffff04ff82013fff1d8080ff80808080ff808080808080ff1580ff808080ffff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ffff01ff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ff0180ff80808080ffff01ff04ff2fffff01ff80ff80808080ff0180ffff04ffff01ffffff3f02ff04ff0101ffff822710ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff2cff1480ffff0bff2affff0bff2affff0bff2cff3c80ff0980ffff0bff2aff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ff17ffff01ff04ffff04ff10ffff04ffff0bff81a7ffff02ff3effff04ff02ffff04ffff04ff2fffff04ffff04ff05ffff04ffff05ffff14ffff12ff47ff0b80ff128080ffff04ffff04ff05ff8080ff80808080ff808080ff8080808080ff808080ffff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fff8080808080808080ff8080ff0180ffff0bff2affff0bff2cff1880ffff0bff2affff0bff2affff0bff2cff3c80ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa087db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a0ea0a501540d9c0ec351e91dd124e29e86af834acd7d79e76d1e9202b2a414b58ffff04ffff0182012cff0180808080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0915d5ba6e9d72fd792e02c28fc6be7cb6f73ddb34a1df9caae8585f26a73c72a88d14f5e7ceae20434f5311a48d530b0ff018080ff018080808080ff018080808080ff01808080ffffa0dd4daf660c3c05c2c233a1c27f06c0872eea9b22280d9f0e5e5028df63a5ea68ffa0669c0b472769c2c84f8ede0ce01a5a556537bed023d2a98ed26f6c182986ab49ff0180ff01ffffffff80ffff01ffff81f6ff80ffffff850189640200ffa0cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e78080ff8080ffff33ffa0cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e7ff01ffffa0cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e78080ffff3fffa033cb40ac40c0391d2831bc08c1954a4bf429740ac648b5850fca7f478a58ccdc8080ff8080808080878ce79554fe049e8bb6a58bafb91ca12abb78aa04ac551b15db778f89973f6912729c9ee4a80c08788125274a0787ce0027b5af8aaf12ee0e0a6e749daaec28441a59418c58e04ebdef02780961242d76aa1679a4276a431b67245cd2597672\", \"trade_id\": \"0x0958db8393a63dab6b2afa78abbfe91a0487e5b06e25174ec8c49d383f18afc0\" } }","s":"get_offer","u":"/offer-rpc/","h":"#get_offer","p":2637},{"i":2653,"t":"Functionality: Obtain a count of the number of offers created and taken with this wallet Usage: chia rpc wallet [OPTIONS] get_offers_count [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: None Example chia rpc wallet get_offers_count Response: { \"my_offers_count\": 2, \"success\": true, \"taken_offers_count\": 0, \"total\": 2 }","s":"get_offers_count","u":"/offer-rpc/","h":"#get_offers_count","p":2637},{"i":2655,"t":"Functionality: Returns the summary of a specific Offer. Works for Offers in any state Usage: chia rpc wallet [OPTIONS] get_offer_summary [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description offer STRING True The text of the Offer to summarize advanced BOOLEAN False Show advanced information, including expiration time [Default: false] Example 1 The offer parameter is the pasted contents of an Offer file: chia rpc wallet get_offer_summary '{\"offer\": \"offer1qqr83wcuu2rykcmqvpsxzgqq4gnsn0v2w6gchlaawrmeju4af4arrwu5s2kvce6at3nhmsa4v03kvgvc8furkat55swhlsmpwjj86a9ylhljq8mfs7jw6p044wxg9a7lhhuwphnff6my6aujm3m37wvl6q0kzy3tde6nh7w9j6d0nlchdsgk628m7aktm6jfqa47hwwnj705chexjdkhufx3fd9zegkcwhfknvg9auleg2neqcjpcj8mjehmfeks7gazhwlz4ffam6ukt3wwddlya3qah92s4wgqhr73797a5fyq68clmcfmhc85auqtzmuvure07v84jch8vzcwldm0qdf4uwatuj4xtjfxadlp37x8xf8nupxtz7jl7reyvj2fg9q5t057kfe95e2jdftx5etj2f6k2kjfdx48zmjwdx55j4jfwf4xzj24295hnxd7gfz425j72x99jc2kf9py56dxtxu62an2g4lxzkvwsegk5s27hed9j52f0eqhykn206h9vnnxt66mtqvw3ft85cqam9935q4wlmd45q9u7t5t86dl3g37vrrghz8aelwgga99mg3e0uylklaume8alal4xtksxxynga2v2echu8ksx4xnjsym2f5xv56wveex5hn34f0yzzkgadxu27dqvx4wyyssnxdmzcyn5tlsl0v0tnsalqhlwgly708udd0n9ee5q0lqnhm7hul7m8e6cxn3he9u3sz546dwmxtualtc0h5f89knj34tdmkrrvknf0pzat0ju7hm3a7hz7raqqkfalm408a6jtm6xn9a0lhchxu5z4dhf7wandtdah3qjdh844tjanauwj73kjap8ga08qujwarxwljxvalq3w88ll5vcra379zflxglfrvhwa844090t2cc53pafme08pcaa625hmzaw9hf320ekrc9zhdkmw484cr9zp3tclgr4fdrxv52xvegsdlqdefln5a47zuzfu7t8hh7f3y0fd5dcqktrt57ntn30xm6nja58d8kfh8rsct4lypkfyq0npsh2sxwddqvkk4rqdk03c5jz90yfs4glll3w888k40ml09v39n6xhpdhlz85lm9mcdjlsujrck85alr6lceqjgl0etsp9tv98mq48hkmvulalxn9vgn0nht9k6sayee0mdwyfp0wd67ewknh64pxsppf3gprjxwmgsdmrfj4l8ejtukh846a43sh036d6a3e80gkmjdmf3nfu0qr50vxrg0nmezadj5hkku0srmhefz57xxw5re2na6pku46t5neaaq5fzkda9kwcrqzramre95yeayjwnvk7cgqrw7kzddne7778jslravahl4ua8v2tklam7v9x0yc63l7mu7j8xkeu7t4unqs72l9q0th3npxakcgeynt8uaksf2edgpjtc07techllaakccnazlwm9ehu4wc08dhk7ufjn576jkwzem9m88jlhl3l3wtelltvvnvhvgvd5zq543hprajzagvtsamxaxn2vt4lzn83aagcvw8rt65l57a88ua4a0ls70tekewukd805hq9xeuwj9uy89pvgf4zyq053kluthp3d4z7h8vaa4nv75tmwlc5y3duk7l4aylcmwaqrdljzl4gjm62nuxdgftl0lqh9m7xmeaha0t7dc0tp3wrwah94w7xaltkvnq460f8l09atlnd0vueveq3glt7mka5xk28fas8hawnqamaa80nfhdr7jna5qvldunsnhh70ra78ze5ycatyhplvmlhc0xf8skk4fklj2pkwtxh30xwr03qr9ckmz7r97dwe8hlaajk0t6664dahv6y78anx29pmgxkdzmk3zj57am2ngdh05u699ce8k0qrrp5f3eccrkarcssjm4950tv63cfmf8dnh5nl9vp8w7hagjjuwm6udnftt24le2wnd79kadf4jxxrmuh5myxte6vh2sky9vlvnc3j2wjm079msdng0uan048n0t09lmsnn0mfl2teylev3avfgdupa32x57tjxe6t86phk6ypgrk4e2x92kasy447ds0te305gdsrrdvl9d8vurct22gqel9z8dh2pg2y3zdxjpa9t4ga98agazj4s3grz5g2cldpq5zez2jpdevdc7p28mfzrkru7nsk9vgdv9x7jmn9edtf5fn69xw84sxjaacjdemhdfsqaxu49dlzm0aq4rk0ptpxclwncekuk4yu29tgakdl53uwfdkaavr8dnmweljt66csujmjkeeznhecn9cx5aaw9du02wkkp09qkd8kmjyqtqqv6yzy7lk89vq\"}' Response: { \"id\": \"0x7cd4ea3988ffe67388b7a12facff0499059000f99b0f9cb8b343c821b422ced9\", \"success\": true, \"summary\": { \"fees\": 10000, \"infos\": { \"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\": { \"also\": { \"also\": { \"owner\": \"()\", \"transfer_program\": { \"launcher_id\": \"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"royalty_address\": \"0x53c8e63bb7e61215db3c109a168a8c7ce7d1828c438b542abe9368c83ad3f0ff\", \"royalty_percentage\": \"300\", \"type\": \"royalty transfer program\" }, \"type\": \"ownership\" }, \"metadata\": \"((117 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.gif\\\") (104 . 0x7a6eedd652d0e6d315e691e87f5098e858bfe646122d1a8759a40fcf3efb024b) (28021 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/880.json\\\") (27765 \\\"https://bafybeigzcazxeu7epmm4vtkuadrvysv74lbzzbl2evphtae6k57yhgynp4.ipfs.nftstorage.link/license.pdf\\\") (29550 . 1) (29556 . 1) (28008 . 0xb2214ff82ef10a57f653fd09e761c3fabe630996300f90f6fbefcb4f65904c8b) (27752 . 0x2267456bd2cef8ebc2f22a42947b068bc3b138284a587feda2edfe07a3577f50))\", \"type\": \"metadata\", \"updater_hash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"launcher_id\": \"0xb4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\", \"launcher_ph\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"type\": \"singleton\" } }, \"offered\": { \"xch\": 100000000000 }, \"requested\": { \"b4158076fee6af25c9403b3b9d97a7c967a61c6b37c4614a1a16587345b2cb16\": 1 } } } Example 2: with advanced details This example will show the Offer's expiration timestamp (max_time): chia rpc wallet get_offer_summary '{\"advanced\": true, \"offer\": \"offer1qqr83wcuu2rykcmqvpsxvgqqemhmlaekcenaz02ma6hs5w600dhjlvfjn477nkwz369h88kll73h37fefnwk3qqnz8s0lle0xp70k7vrwmdq0sfnsf7jns276kh4lah7ark8fkc5kmjeav0nkkmyms8jvnq5t0mqjhhtmddtm6wfqwm7gh2wda5rqa3f0g4h032gk0asdrxcu0tal8lakxz7t3vj4sqqkmrn5a57k967jggwe5hkk0j5p057lh4qld7lw6mxmwnl08k4lew2xg982gg0j5m6vw8tej4md8jc74je0uyhjlevt8kdnd9xm0lqcrx7q56un76qw9nnm6c58nlyvkm05wkm05wkmd5wkmd57krfa8jxtdhlg6aasy9lwp0xlvlz00rtd56dud3hxf4y9m53trr02q0xw0tsd3hdpnkd5hfr4d2s24fkwx260q0avh2lxrv6vlufu05uwk7wlvrd3fk0y4j7ac2ezp4n3gvheg24q4eq2duuzlsczrw7kzumd38rd205a6dvdaq4vtt0h79l77dlfadjfk62u65gvcz9g0fuxt2tqwp4hm4frmamfd45a65dsymm8hvqqtkgqzctnl6rl7m6gnhznvqwgx8ltaq2sx0c8ljn7c29p5gt8f32eydemw0xzvarkcvaux8mknp9rv9d8gswruexuks4437uuank67a07twkkd8va720tqsus0ymlu9ng07kac4ksv4u6nm78azt4x9u7lm0nda90zwttpmt4r5puryk70d35rusr7llpv6p4e6dhw57scwdl8u0hfecjumddflnlh3g8a798kww7ljcheefh6qyfqh0n0lqvzpe4nudkq0fxmfhpaymwd89xrkttmewh877ejqmq6857ye00vafl74lcrvutkrgw8efrmd88yza2du78raets0vl66xtem04el94udjlhsh5wgxjra57vf5l303pdfq6n6d0vnmqk808wgjfe7lyek7h4jwkl8elx26vt8m5ac9tmm7ng8tfr2s70kl7qjzp5ufsmwynpjm3jl60nu46afk2msjn9spmw337afw0f0adnl74nalmuvf7wpdcq3xc8xqypg9c72pt7f8ndv6vudt7m5k20rakamlmjlhlun4szfn2lrjs0w7r54te607lx36zxtkt58mhsh8na7tsnw803f5au03ff8gl9glrf3596mxgs4qpku4vfe5aa67resljmh8j53jh73ztm0l3g40h94hw3fdf03a0knmwdjpjkanfaelahjmldadjht064yv0cs7xk2ue6y082kecstq4kgqcp7vrtk8kylmulya2hr0257l43jw0p0xehayllkz6r8hjmcak08m6x7e3z0h074as89ralq5pafxlad3sejvs0nqpdanrd6aj4n3hnmf7yq7cca0xr8tr0m30m5tq3ngftl4vtllj6k37vw2q2kmlu97a0w6r6a5alk3k8h2a9dnkd6ljd2mv6kmthhh9zl0f67p2z5at5kkx8swqknd77s5uegxeufarnelr58my9t5vskrc7hm4t3lhsrtkw0m7yqv4hu82jwze8ek47dr9y9ltmzzy70ezwxg28alnnr7eaj7yl36j0t7juawpfat8au3glr8m7dkc2xatk74z2tkfnuktnpktgeea7sfssn03a8uwrflqqk0v5jh9kt2e7\"}' Response: { \"id\": \"0xd630d959269906f89ced378dc5402e3c3aa1c472e97bb5492e7ce37744187a2d\", \"success\": true, \"summary\": { \"fees\": 10000000, \"infos\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": { \"tail\": \"0x91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\", \"type\": \"CAT\" } }, \"offered\": { \"91aa49303fd325cf8029cc0ee5e19ac78ec33d641d63b50d0ba859309a73004d\": 100 }, \"requested\": { \"xch\": 1000000000000 }, \"valid_times\": { \"max_height\": null, \"max_time\": 1704070800, \"min_height\": null, \"min_time\": null } } }","s":"get_offer_summary","u":"/offer-rpc/","h":"#get_offer_summary","p":2637},{"i":2657,"t":"Functionality: Takes (accepts) a specific Offer, with a given fee Usage: chia rpc wallet [OPTIONS] take_offer [REQUEST] Options: Short Command Long Command Type Required Description -j --json-file TEXT False Instead of REQUEST, provide a json file containing the request data -h --help None False Show a help message and exit Request Parameters: Flag Type Required Description offer FILE PATH True The text of the Offer to take (must be in the PENDING_ACCEPT state) fee NUMBER False An optional fee (in mojos) to include with the Offer [Default: 0] Example To take an Offer, paste its contents in the RPC call: chia rpc wallet take_offer '{\"offer\": \"offer1qqr83wcuu2rykcmqvpsxygqqemhmlaekcenaz02ma6hs5w600dhjlvfjn477nkwz369h88kll73h37fefnwk3qqnz8s0lle0jqgnkufaeg779ex0w04aumuva4g99wdwdvkh9d2cgpek4ul7tyxmhq24e6ptqt2vf6ajyyc0y3ujn897dhm06xtld7uw0znt2tu7kl7vmjw357056nl4d3kwzsnqdvp4q7h5au3snr9r3qdpalygc77m9umvexwyljmflc2e2lq0g3ch8mkm6ghtluachjm4k6g7d3kdxvn7j9sutz5krd02e2y3f33tal2wkaced6t8kqvd84r93appphuc6n55338fflqln55pnqsnykgtf0dq0624ru87hvt3lhpmehymd62wjta7ugl8z0azxnrzckkkufalmpfr8lllstmdh2g2fa6rkwn0hmx6442678kk8u7xa82lcyhelw2pmam246fa7t4eur7cw539e7qggqmfmlegm4sutf0xwe2ht366577aj29uhlykns7k3wcjdg2h9cf38g758xcyxqar6vmu5anuqzt7cypdl70pvhlzzjlvrsx0dl0kd4sv56m8j4wt2txevnws7qlltrnvnpmqlx30flup3zxf9y5zvg4hmldycj6wegk5en2x9v75ug6w8y4vjj7gefy5ste9g5mr6vjw8l92yj3l9jhv43228hx2etftehxyktzvfdy2et60gshnet9y90wvs26x90dukjfw9yhu5tz0g49annxtcm9qtvepvn864qf8k43e7wg0nrde77wm0f6cd5fen9peuw5dfqgsqmwsljww8780el7ljj9u6y0xn92utz0fchrdn3kx8x55tw0ej5u5vj244x2nn30ecc5jt7dxgkv7d2feskyj24d9092nnff9cev7n9vehqwdr9qrkjspajvze2jdfnyvs27g5vkn3txvfry2hj9vfz35jw4dfd9yhn92ychnaj32ynxnu2wwf0xzls7080xuetefeq4us2pp9vu22jkpd69mzhj60f6h4gdpn79es5qyn87vun2tecj5yr9nr0fgx56nwdd0gjhjqfgduj8wy0xs0p3hzzvgenx4svxl9kzajwltmc6clrfhu2dzwfgkj5wnwt7nlq5uacr0jgt7a72ka5gzcthlw4ulh2f00g6vh4l7lzumjs24ka8emkd4dhk7yzfku7k4wtk0h36t6x6tcyun5wv8jgl5vfl8gcn7wz9cull73equk8c5f87f89ydjam57k4u4adtrzjy84809uu8rhhf2jlvt4ckax9flxc0q52akmd657hqv42kcqw4fdhv6hj8txexjnv6eerytgg302z3a0tfvwzdec5aul426zkzjky2erg5nvx3fxc2zvqf760uu8dsqkhmsqjyr4hpu7rr9gmlrt5snlnghtqlye46uhul2am0rfvzk6t2xdmydgpe3gt4gr8gxwcs944smkmd99sgxd6v3jx4aahjhtl02jg0ws60uepl87w47lrhkwt7en6nadd9k0m9z50a064caq040ul2zx9uj46r9x86kpsmvzjkvqe27hlllq4mhm4ax7rvtq836vj70z5fam2qh002hk22r270870zqg6wufe00k2lzl6pmgwxual4e3pj0l8mamcneyy2pfxnthmhg8ua9j47f0unjy56dk4nmsfwqwxnaqgap3ktaqgckpcm6pvycewzzkgpmz8j82qjvsurr3hakllmls8cknp34pcrj6ep4pnm8q8yaa0jl639nsn4e33kk2ll49a00t5gxdmkqwdkhhnln4ys0uk08w4h9hk4a06nv6sadm5225kxks49g4he0amhf6mu79p2nge7ljg2r68g53j4w5hldannpn49h4mh45th4378j4tnya74rvx3022gc70gspm7000nx4tsy64w394dz244eg57u5kfmtsjwv5m9tqgqqetra9fvjhn79\", \"fee\": 1}' Response: { \"success\": true, \"trade_record\": { \"accepted_at_time\": 1678342997, \"coins_of_interest\": [ { \"amount\": 1, \"parent_coin_info\": \"0xc1d5924830950190008ec498deb7d1809c9203ed8f00e68a5097e2d0f2bdd41d\", \"puzzle_hash\": \"0x4ffb6a0a459b3229b1b399922d70c0a9283aaad4c86401d4ee277fba31b31ee8\" }, { \"amount\": 6848692931, \"parent_coin_info\": \"0xe9e107f7df52376652a92ea4c136e9ac179e09d81550d6a430fa3cf7490f47cd\", \"puzzle_hash\": \"0x9aaeae85798cbc29c7c63a325db036613ea2949546869556d94b0a59a236e398\" } ], \"confirmed_at_index\": 0, \"created_at_time\": 1678342997, \"is_my_offer\": false, \"pending\": { \"87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\": 1 }, \"sent\": 0, \"sent_to\": [], \"status\": \"PENDING_CONFIRM\", \"summary\": { \"fees\": 0, \"infos\": { \"87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\": { \"also\": { \"also\": { \"owner\": \"0x700b5276a6ea93aeb290763ca90902a85e51287d468661961e425f3f95129a94\", \"transfer_program\": { \"launcher_id\": \"0x87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\", \"royalty_address\": \"0xea0a501540d9c0ec351e91dd124e29e86af834acd7d79e76d1e9202b2a414b58\", \"royalty_percentage\": \"300\", \"type\": \"royalty transfer program\" }, \"type\": \"ownership\" }, \"metadata\": \"((117 \\\"https://bafkreies6esf3tjdnhbdpwe535b3ozb2wykje2myyunmavaafxyggq7yyq.ipfs.nftstorage.link\\\") (104 . 0x92f1245dcd2369c237d89ddf43b7643ab614926998c51ac054002df06343f8c4) (28021 \\\"https://bafkreie7izsags3k33lermoyl2bzeylso3dto5ri7elqatzunzlut3jgyi.ipfs.nftstorage.link\\\") (27765 \\\"https://bafybeihpnxv5xiahxnxaxf4zefbnyrs7krri5slcnqon7nmywlpnppt6xe.ipfs.nftstorage.link/Froggy%20NFT%20License%20Agreement.pdf\\\") (29550 . 1) (29556 . 1) (28008 . 0x9f4664034b6aded648b1d85e8392617276c7377628f917004f346e5749ed26c2))\", \"type\": \"metadata\", \"updater_hash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"launcher_id\": \"0x87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\", \"launcher_ph\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"type\": \"singleton\" } }, \"offered\": { \"87db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719\": 1 }, \"requested\": { \"xch\": 6600000000 } }, \"taken_offer\": \"0x000000020000000000000000000000000000000000000000000000000000000000000000cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e70000000000000000ff02ffff01ff02ff0affff04ff02ffff04ff03ff80808080ffff04ffff01ffff333effff02ffff03ff05ffff01ff04ffff04ff0cffff04ffff02ff1effff04ff02ffff04ff09ff80808080ff808080ffff02ff16ffff04ff02ffff04ff19ffff04ffff02ff0affff04ff02ffff04ff0dff80808080ff808080808080ff8080ff0180ffff02ffff03ff05ffff01ff02ffff03ffff15ff29ff8080ffff01ff04ffff04ff08ff0980ffff02ff16ffff04ff02ffff04ff0dffff04ff0bff808080808080ffff01ff088080ff0180ffff010b80ff0180ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff1effff04ff02ffff04ff09ff80808080ffff02ff1effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffffa01c16c8d75a4758c9f9ceaeefb15d882224d72d3b14d57310299583bf9a80bb13ffffa056b40242ba5961c0624a20cbdb36f7e60f8d5749a8d61a6faff899bb6559c5caff850189640200ff80808080c1d5924830950190008ec498deb7d1809c9203ed8f00e68a5097e2d0f2bdd41d4ffb6a0a459b3229b1b399922d70c0a9283aaad4c86401d4ee277fba31b31ee80000000000000001ff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa087db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff04ff2cff8080808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a0a04d9f57764f54a43e4030befb4d80026e870519aaa66334aef8304f5d0393c2ffff04ffff01ffff75ffc05868747470733a2f2f6261666b72656965733665736633746a646e68626470776535333562336f7a623277796b6a65326d7979756e6d61766161667879676771377979712e697066732e6e667473746f726167652e6c696e6b80ffff68a092f1245dcd2369c237d89ddf43b7643ab614926998c51ac054002df06343f8c4ffff826d75ffc05868747470733a2f2f6261666b7265696537697a73616773336b33336c65726d6f796c32627a65796c736f3364746f35726937656c7161747a756e7a6c7574336a6779692e697066732e6e667473746f726167652e6c696e6b80ffff826c75ffc07f68747470733a2f2f6261667962656968706e78763578696168786e78617866347a6566626e797273376b72726935736c636e716f6e376e6d79776c706e7070743678652e697066732e6e667473746f726167652e6c696e6b2f46726f6767792532304e46542532304c6963656e736525323041677265656d656e742e70646680ffff82736e01ffff82737401ffff826d68a09f4664034b6aded648b1d85e8392617276c7377628f917004f346e5749ed26c280ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff17ffff04ff0bffff04ffff02ff2fff5f80ff80808080808080ffff04ffff01ffffff82ad4cff0233ffff3e04ff81f601ffffff0102ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff32ffff0bff3cff3480ffff0bff32ffff0bff32ffff0bff3cff2280ff0980ffff0bff32ff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ff04ffff04ff38ffff04ffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ffff02ff2effff04ff02ffff04ffff02ffff03ff81afffff0181afffff010b80ff0180ff80808080ffff04ffff0bff3cff4f80ffff04ffff0bff3cff0580ff8080808080808080ff378080ff82016f80ffffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff2fffff01ff80ff808080808080808080ff0bff32ffff0bff3cff2880ffff0bff32ffff0bff32ffff0bff3cff2280ff0580ffff0bff32ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff5fffff01ff02ffff03ffff09ff82011fff3880ffff01ff02ffff03ffff09ffff18ff82059f80ff3c80ffff01ff02ffff03ffff20ff81bf80ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff82019fffff04ff82017fff80808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff0180ffff01ff02ffff03ffff09ff82011fff2c80ffff01ff02ffff03ffff20ff82017f80ffff01ff04ffff04ff24ffff04ffff0eff10ffff02ff2effff04ff02ffff04ff82019fff8080808080ff808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ffff02ff0bffff04ff17ffff04ff2fffff04ff82019fff8080808080ff8080808080808080808080ffff01ff088080ff0180ffff01ff02ffff03ffff09ff82011fff2480ffff01ff02ffff03ffff20ffff02ffff03ffff09ffff0122ffff0dff82029f8080ffff01ff02ffff03ffff09ffff0cff82029fff80ffff010280ff1080ffff01ff0101ff8080ff0180ff8080ff018080ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff8080808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff018080ff018080ff0180ffff01ff02ff3affff04ff02ffff04ff05ffff04ff0bffff04ff81bfffff04ffff02ffff03ff82017fffff0182017fffff01ff02ff0bffff04ff17ffff04ff2fffff01ff808080808080ff0180ff8080808080808080ff0180ff018080ffff04ffff01a0c5abea79afaa001b5427dfa0c8cf42ca6f38f5841b78f9b3c252733eb2de2726ffff04ffff01a0700b5276a6ea93aeb290763ca90902a85e51287d468661961e425f3f95129a94ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff04ff82013fffff04ff80ffff04ffff02ffff03ffff22ff82013fffff20ffff09ff82013fff2f808080ffff01ff04ffff04ff10ffff04ffff0bffff02ff2effff04ff02ffff04ff09ffff04ff8205bfffff04ffff02ff3effff04ff02ffff04ffff04ff09ffff04ff82013fff1d8080ff80808080ff808080808080ff1580ff808080ffff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ffff01ff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ff0180ff80808080ffff01ff04ff2fffff01ff80ff80808080ff0180ffff04ffff01ffffff3f02ff04ff0101ffff822710ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff2cff1480ffff0bff2affff0bff2affff0bff2cff3c80ff0980ffff0bff2aff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ff17ffff01ff04ffff04ff10ffff04ffff0bff81a7ffff02ff3effff04ff02ffff04ffff04ff2fffff04ffff04ff05ffff04ffff05ffff14ffff12ff47ff0b80ff128080ffff04ffff04ff05ff8080ff80808080ff808080ff8080808080ff808080ffff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fff8080808080808080ff8080ff0180ffff0bff2affff0bff2cff1880ffff0bff2affff0bff2affff0bff2cff3c80ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa087db6520e42d8889d9ed6a7d2aa8f6f183b1977b0f186fbe2341bd29ae1fb719a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a0ea0a501540d9c0ec351e91dd124e29e86af834acd7d79e76d1e9202b2a414b58ffff04ffff0182012cff0180808080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0915d5ba6e9d72fd792e02c28fc6be7cb6f73ddb34a1df9caae8585f26a73c72a88d14f5e7ceae20434f5311a48d530b0ff018080ff018080808080ff018080808080ff01808080ffffa0dd4daf660c3c05c2c233a1c27f06c0872eea9b22280d9f0e5e5028df63a5ea68ffa0669c0b472769c2c84f8ede0ce01a5a556537bed023d2a98ed26f6c182986ab49ff0180ff01ffffffff80ffff01ffff81f6ff80ffffff850189640200ffa0cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e78080ff8080ffff33ffa0cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e7ff01ffffa0cfbfdeed5c4ca2de3d0bf520b9cb4bb7743a359bd2e6a188d19ce7dffc21d3e78080ffff3fffa033cb40ac40c0391d2831bc08c1954a4bf429740ac648b5850fca7f478a58ccdc8080ff8080808080878ce79554fe049e8bb6a58bafb91ca12abb78aa04ac551b15db778f89973f6912729c9ee4a80c08788125274a0787ce0027b5af8aaf12ee0e0a6e749daaec28441a59418c58e04ebdef02780961242d76aa1679a4276a431b67245cd2597672\", \"trade_id\": \"0x0958db8393a63dab6b2afa78abbfe91a0487e5b06e25174ec8c49d383f18afc0\" } }","s":"take_offer","u":"/offer-rpc/","h":"#take_offer","p":2637},{"i":2659,"t":"A plot ID is a 32-byte value that is used as a deterministic seed to create an entire plot. In other words, two plots with the same plot ID will create byte-identical plot files. Plot IDs are public values that get put into Proof of Space objects. A plot ID can be generated in one of two ways, depending on the desired farming method of the plot. Farm to pool public key. This method of farming is desirable if solo farming (no pools). To farm a plot like this, we hash together the pool public key and the plot public key (explained later). When successfully farming a block, the pool private key must sign the reward address. The drawback of this method is that if using a pool, the pool cannot be changed, and the plot is tied to the pool forever. Farm to pool contract address. This method of farming is suitable for users who want to farm to a pool, and to be able to change pools in the future. Most farmers will likely use this method. Instead of requiring a signature by the pool, rewards go straight into the puzzle hash (or address), that is encoded into the plot. This address is a smart contract controlled by the user, which specifies the user's current pool. The user can switch pools, with a timeout delay that the pool operator may customize (typically 30 minutes). This approach requires creating a blockchain transaction of at least one mojo before farming. Farmers can get 100 mojos for free from the official faucet. The plot public key is explained in the next section.","s":"Plot IDs","u":"/plot-ids/","h":"","p":2658},{"i":2661,"t":"So, what is the plot public key shown in the previous section? The plot public key can technically be any BLS public key. As long as the correct signatures are included in the block, full nodes will allow it. However, BLS allows us to combine many public keys into one, which allows native N-of-N signatures without full nodes noticing that a multi-signature is used. In the current versions of chia-blockchain, we use this to our advantage to increase security. Please note that these schemes are not consensus critical, and therefore some farmers might use different strategies for generating their public keys. The plot public key is usually generated in one of two ways, the first for OG Plots, and the second for pooled plots.","s":"Plot Public Keys","u":"/plot-public-keys/","h":"","p":2660},{"i":2663,"t":"The plot public key is a 2/2 BLS aggregate public key, which is generated by combining the farmer public key with the local public key. The local public key is a random key that is created for each plot, and put into the plot. They are not children of any BLS keys, and therefore are totally independent between plots. The farmer key is a key that the farmer machine stores.","s":"OG Plots","u":"/plot-public-keys/","h":"#og-plots","p":2660},{"i":2665,"t":"For plots which are generated for use with the Plot NFT pooling protocol, an additional \"taproot\" secret key is used, making the aggregate key a 3-of-3. This 3rd key can be derived from public information of the other 2 keys, and it ensures that an attacker cannot create two new keys k1 and k2 such that they both add up to the original aggregate key. The taproot private key is defined as: taproot_sk = BLSKeyGen(sha256(bytes(local_pk + farmer_pk) + bytes(local_pk) + bytes(farmer_pk))) Each block requires a signature from the plot key. This means that we need to combine two (or three) signatures: from the local secret key (generated by the harvester) from the farmer secret key (generated by the farmer) (optional) from the taproot key (generated by the farmer) The farmer combines all the signatures to generate the plot signature, which will look like a normal 1-of-1 BLS signature to the rest of the network. Note that signatures from both the local secret key and the farmer secret key are required for the block to be valid. A pool operator cannot derive the farmer secret key if they gain access to the local secret key.","s":"Pooled Plots","u":"/plot-public-keys/","h":"#pooled-plots","p":2660},{"i":2667,"t":"The plot format depends on whether \"farm to public key\" or \"farm to contract address\" is being used. If farming to a contract address, the puzzle hash (address) is directly encoded into the plot. Otherwise, the pool public key is directly encoded into the plot. note This is not the exact plot format, there are a few more details that are left out here. The important thing is that the harvester is only storing their local key in the plot, but no other keys are required from the harvester. This key alone is not enough to do anything, since it must be combined with the farmer's key. Therefore, compromising the harvester does not allow an attacker to redirect rewards.","s":"Plot format","u":"/plot-public-keys/","h":"#plot-format","p":2660},{"i":2669,"t":"Peer protocol source This protocol is a bidirectional protocol for communication between full nodes in the Chia system. The sender is the full node sending the message, and the recipient is the full node that is receiving the message.","s":"Peer Protocol","u":"/peer-protocol/","h":"","p":2668},{"i":2671,"t":"Sent to peers whenever our node's peak weight advances (whenever the blockchain moves forward). The fork point allows peers to detect how deep of a reorg happened, and fetch the correct blocks. The unfinished reward block hash allows the receiving peer to use their cache for unfinished blocks, since they most likely already have the unfinished version of the same block, and therefore don't need to re-request the block transactions generator. Usually, during normal operation, peers will ask for just the latest block, or ignore this message if they have already received it from another peer. If we are a few blocks behind, blocks are fetched one by one in reverse order up to the fork. If we are far behind this peak, we will start a batch sync (download a few tens of blocks in batches) or a long sync, where we download a weight proof and then download many blocks in batches. class NewPeak(Streamable): header_hash: bytes32 # header_hash of new block height: uint32 # height of new block weight: uint128 # weight of new block fork_point_with_previous_peak: uint32 unfinished_reward_block_hash: bytes32","s":"new_peak","u":"/peer-protocol/","h":"#new_peak","p":2668},{"i":2673,"t":"Sent to peers when a new spend bundle has been added to the mempool. The receiving peer can then choose to ignore it, or request the whole transaction. class NewTransaction(Streamable): transaction_id: bytes32 # hash of the spend bundle cost: uint64 # cost of the transaction, used to see if fees are sufficient for mempool inclusion fees: uint64 # fees in mojo of transaction, used to see if fees are sufficient for mempool inclusion","s":"new_transaction","u":"/peer-protocol/","h":"#new_transaction","p":2668},{"i":2675,"t":"Request for a full transaction (spend bundle) from a peer by its id. If a peer does not respond, other peers are contacted for the same transaction. class RequestTransaction(Streamable): transaction_id: bytes32 # hash of the spendbundle","s":"request_transaction","u":"/peer-protocol/","h":"#request_transaction","p":2668},{"i":2677,"t":"Response for a request_transaction message. Sends a spend bundle to a peer. To see the contents of a SpendBundle, see the Spend Bundles page. class RespondTransaction(Streamable): transaction: SpendBundle","s":"respond_transaction","u":"/peer-protocol/","h":"#respond_transaction","p":2668},{"i":2679,"t":"Request a weight proof from a peer. This is done right before starting a long sync. The weight proof allows our node to validate whether a new_peak that we received from a peer corresponds to an actual valid blockchain. It is proof that a certain amount of \"weight\", or space and time, has been used on that blockchain. class RequestProofOfWeight(Streamable): total_number_of_blocks: uint32 # Height of the peak block tip: bytes32 # The header_hash of the peak block","s":"request_proof_of_weight","u":"/peer-protocol/","h":"#request_proof_of_weight","p":2668},{"i":2681,"t":"Response to a request_proof_of_weight message. Note that weight proofs can be quite large, in the tens of MB range. If the chain VDFs are compressed (aka blueboxed), then they weight proofs will be smaller. This is the V1 version of weight proofs, more efficient versions might be added in the future. class RespondProofOfWeight(Streamable): wp: WeightProof tip: bytes32","s":"respond_proof_of_weight","u":"/peer-protocol/","h":"#respond_proof_of_weight","p":2668},{"i":2683,"t":"Request for a block at a certain height from a peer. Called after receiving a new_peak message. class RequestBlock(Streamable): height: uint32 # Height of the block to request include_transaction_block: bool # Whether to include transaction data","s":"request_block","u":"/peer-protocol/","h":"#request_block","p":2668},{"i":2685,"t":"Response to a request_block message. class RespondBlock(Streamable): block: FullBlock","s":"respond_block","u":"/peer-protocol/","h":"#respond_block","p":2668},{"i":2687,"t":"Rejection to a request_block message. class RejectBlock(Streamable): height: uint32","s":"reject_block","u":"/peer-protocol/","h":"#reject_block","p":2668},{"i":2689,"t":"Request multiple blocks at once from a peer. class RequestBlocks(Streamable): start_height: uint32 end_height: uint32 # Inclusive include_transaction_block: bool # Whether to include transaction data","s":"request_blocks","u":"/peer-protocol/","h":"#request_blocks","p":2668},{"i":2691,"t":"Response to a request_blocks message. class RespondBlocks(Streamable): start_height: uint32 end_height: uint32 blocks: List[FullBlock]","s":"respond_blocks","u":"/peer-protocol/","h":"#respond_blocks","p":2668},{"i":2693,"t":"Rejection to a request_blocks message. class RejectBlocks(Streamable): start_height: uint32 end_height: uint32","s":"reject_blocks","u":"/peer-protocol/","h":"#reject_blocks","p":2668},{"i":2695,"t":"Notification to another peer that a new unfinished block was added to the cache. These unfinished blocks are kept around temporarily, until the infusion point VDF is released, and the block can be \"finished\" and added to the blockchain. class NewUnfinishedBlock(Streamable): unfinished_reward_hash: bytes32","s":"new_unfinished_block","u":"/peer-protocol/","h":"#new_unfinished_block","p":2668},{"i":2697,"t":"Request for an unfinished block from a peer. class RequestUnfinishedBlock(Streamable): unfinished_reward_hash: bytes32","s":"request_unfinished_block","u":"/peer-protocol/","h":"#request_unfinished_block","p":2668},{"i":2699,"t":"Response to a request_unfinished_block message. class RespondUnfinishedBlock(Streamable): unfinished_block: UnfinishedBlock","s":"respond_unfinished_block","u":"/peer-protocol/","h":"#respond_unfinished_block","p":2668},{"i":2701,"t":"Sent when the node adds a new signage point or a new end of sub slot to the full node store. The receiver can choose to request the object, or potentially request the previous sub slot, if they are far behind. For example, recently synced up to the peak of the blockchain. class NewSignagePointOrEndOfSubSlot(Streamable): prev_challenge_hash: Optional[bytes32] # Challenge hash at the start of the previous sub slot, if present challenge_hash: bytes32 # Challenge hash at the start of the sub slot index_from_challenge: uint8 # Index from the start, 0 for end of sub slot last_rc_infusion: bytes32 # Last reward chain infusion hash","s":"new_signage_point_or_end_of_sub_slot","u":"/peer-protocol/","h":"#new_signage_point_or_end_of_sub_slot","p":2668},{"i":2703,"t":"Request for a signage point or end of slot. class RequestSignagePointOrEndOfSubSlot(Streamable): challenge_hash: bytes32 index_from_challenge: uint8 last_rc_infusion: bytes32","s":"request_signage_point_or_end_of_sub_slot","u":"/peer-protocol/","h":"#request_signage_point_or_end_of_sub_slot","p":2668},{"i":2705,"t":"Response for request_signage_point_or_end_of_sub_slot. After receiving this message, the recipient will check that all VDFs are correct, and forward it to other full nodes and potentially farmers. class RespondSignagePoint(Streamable): index_from_challenge: uint8 # Which index out of the 64 signage points, cannot be 0 since that is the EOS challenge_chain_vdf: VDFInfo challenge_chain_proof: VDFProof reward_chain_vdf: VDFInfo reward_chain_proof: VDFProof","s":"respond_signage_point","u":"/peer-protocol/","h":"#respond_signage_point","p":2668},{"i":2707,"t":"Another response for request_signage_point_or_end_of_sub_slot in the case where index_from_challenge is zero. This is also verified and forwarded by the full node, similar to signage points. class RespondEndOfSubSlot(Streamable): end_of_slot_bundle: EndOfSubSlotBundle","s":"respond_end_of_sub_slot","u":"/peer-protocol/","h":"#respond_end_of_sub_slot","p":2668},{"i":2709,"t":"This is a request for transactions in the mempool. The filter corresponds to a BIP158 Compact Block Filter, which allows the recipient to see what transactions the sender already has (with some small chance for false positives), without sending all transaction IDs. The recipient can then respond using respond_transaction directly, but should not send a very large number of transactions, to not overwhelm the original sending peer. class RequestMempoolTransactions(Streamable): filter: bytes","s":"request_mempool_transactions","u":"/peer-protocol/","h":"#request_mempool_transactions","p":2668},{"i":2711,"t":"A notification to a peer that a new compact VDF has been added to the blockchain. Compact VDFs are smaller versions of VDF proofs present in blocks. They do not change the block itself, they just compress the block data to keep the DB smaller and sync time lower. The actual proof class NewCompactVDF(Streamable): height: uint32 # Height of the block which has a new VDF header_hash: bytes32 # Header hash of that block field_vdf: uint8 # Which VDF in that block was updated (blocks have multiple VDFs) vdf_info: VDFInfo # Info of the VDF that was updated","s":"new_compact_vdf","u":"/peer-protocol/","h":"#new_compact_vdf","p":2668},{"i":2713,"t":"A request to a peer for a compact VDf. class RequestCompactVDF(Streamable): height: uint32 header_hash: bytes32 field_vdf: uint8 vdf_info: VDFInfo","s":"request_compact_vdf","u":"/peer-protocol/","h":"#request_compact_vdf","p":2668},{"i":2715,"t":"A response to a peer that requested a compact VDF. class RespondCompactVDF(Streamable): height: uint32 header_hash: bytes32 field_vdf: uint8 vdf_info: VDFInfo vdf_proof: VDFProof","s":"respond_compact_vdf","u":"/peer-protocol/","h":"#respond_compact_vdf","p":2668},{"i":2717,"t":"Request a list of peers. There is no body in this message. This is usually sent when connecting to a peer. class RequestPeers(Streamable): \"\"\" Return full list of peers \"\"\"","s":"request_peers","u":"/peer-protocol/","h":"#request_peers","p":2668},{"i":2719,"t":"A response to request_peers, containing a list of ip and port for each peer. Must be no larger than 1000. The timestamp corresponds to the last time this peer's record was updated, based on the peer DB update rules. class RespondPeers(Streamable): peer_list: List[TimestampedPeerInfo]","s":"respond_peers","u":"/peer-protocol/","h":"#respond_peers","p":2668},{"i":2721,"t":"note The Beginner's Guide to Farming will walk you through the steps required to install Chia and create your first plot. You are recommended to follow it prior to getting into the concepts introduced in this section, reviewing our plotting basics helps guide users from a high level perspective. At the center of every Chia farm is a farmer, as well as at least one harvester. Each harvester keeps track of one or more plots on the same computer. This section will give an overview of plots: what they are, how to create them, how to maintain them, etc. Later we'll delve deeper into the details. info The full node, farmer, and harvester processes can all be run from the same computer. This is the recommended setup for those new to Chia farming. Later, plots can be added or moved to remote harvesters as needed.","s":"Plotting Basics","u":"/plotting-basics/","h":"","p":2720},{"i":2723,"t":"Plots are files that consist almost entirely of cryptographic data. These files prove to the network that a computer is storing data, as part of Chia's Proof of Space consensus. The plotting process is computationally intensive. Depending on a number of factors, the plotting computer, CPU, GPU, RAM, and/or storage devices (such as SSDs) are heavily utilized. However, this process is only performed when creating a plot. Afterward, plots can typically be farmed for many years, during which the farming computer, as well as the HDDs that store the plots, will remain mostly idle. While it is possible to run a Chia farm from a high-end plotting machine, many farmers choose to use low-end systems in order to save money on electricity. For example, the minimum spec hardware to run a Chia farm is a Raspberry Pi 4 with 4 GB of RAM. As a result of these low requirements, Chia consumes less than 1% as much energy as Bitcoin, while preserving the same level of security. For more details, see chiapower.org. info It is possible to run a node without any plots. Your node will validate the network, but it will not be eligible to win any rewards. On the other hand, with a single plot, you can join a pool and collect regular (albeit small) rewards.","s":"Description","u":"/plotting-basics/","h":"#description","p":2720},{"i":2725,"t":"In 2023, some major changes were made to the plotting process, mostly due to the introduction of \"compressed\" plots. info Technically, all Chia plots are compressed -- they consist almost entirely of random cryptographic data, so they cannot be made much smaller using lossless techniques. However, in order to simplify the descriptions, we'll use the following terms for the different types of plots: Uncompressed -- Plots that are complete upon being created. Software capable of creating uncompressed plots includes the original ChiaPos, madMAx, and BladeBit RAM and disk. Nearly all plots created prior to 2023 are uncompressed. Compressed -- Plots that are incomplete upon being created. Software capable of creating compressed plots includes BladeBit CUDA and GigaHorse. Compressed plots were introduced to the official Chia software in version 2.0.","s":"Compressed plots","u":"/plotting-basics/","h":"#compressed-plots","p":2720},{"i":2727,"t":"Chia plots consist of seven tables, the format of which was defined in mid-2020. The reference plotter included with version 1.0 was ChiaPoS, which only used one CPU core, and which produced uncompressed plots. When Chia's mainnet was launched in March 2021, all Chia plots were created with the ChiaPoS plotter. Later in 2021, the madMAx and BladeBit plotters were developed independently. These plotters fully utilized a plotting machine's resources, so they were significantly faster than the ChiaPoS plotter. For the first time, it became possible to create a plot entirely in RAM, thus eliminating the need for an enterprise SSD. However, these second-generation plotters still exclusively created uncompressed plots. By the end of 2022, it had become apparent that a form of \"lossy\" plot compression was possible. A few different competing techniques were being devised that involved omitting one or two tables, or some data held within, during the plotting process. The result was an incomplete plot, where the missing data could be added during the farming process. These techniques allowed plots to be 20-30% smaller than their uncompressed brethren, depending on how much data was omitted at the time of plotting. info There are two basic types of compression -- lossless and lossy. For a brief overview of the differences, see this article. While compressed Chia plots don't actually use lossy compression, it still can serve as a useful analogy to how it works. Plot \"compression\" is possible because the data contained within a plot is deterministic. A plot's ID -- a 32-byte hash -- is all that is needed to determine the entirety of its contents. In other words, if you use the same ID (and k-value, as will be discussed later) to create plots on two different computers, the plots will be identical. It is therefore possible to generate any missing data on the fly. This, combined with other techniques such as brute-forcing a small number of bits, results in the plots being smaller. By mid-2023, most new Chia plots were being created using these \"compression\" techniques. Each individual plot earns the same rewards as an equivalent uncompressed plot. However, because the compressed plots are smaller, more of them fit on each disk. Farmers therefore earn extra income compared with using uncompressed plots. In 2024, we proposed a new proof format that would make it much more difficult to compress plots. This is an ongoing project, which will not be complete until the end of 2026 according to current estimates. For more info, see our section dedicated to the new proof format.","s":"History","u":"/plotting-basics/","h":"#history","p":2720},{"i":2729,"t":"As with most technologies, compressed plots come with tradeoffs. The fact that they are left incomplete upon being created means that they require more energy to be \"completed\" while farming. Luckily, the lower levels of compression only require a small amount of extra energy, while yielding 15% more rewards. On the other hand, plots using the highest levels of compression require more compute while farming, thus necessitating the use of a GPU. Chia's plot format was designed such that higher compression levels would yield linear gains in size, at a cost of an exponential increase in required computational power. Because of this tradeoff, it is unlikely that better techniques will emerge to compress plots by more than a few percent beyond their current levels. For deeper levels of compression to become viable, another table would need to be omitted. At that point, it would take longer for a farmer to finish a compressed plot than it would for a plotter to create an entire uncompressed plot.","s":"Tradeoffs","u":"/plotting-basics/","h":"#tradeoffs","p":2720},{"i":2731,"t":"k, as detailed in the plotting section, is a constant value that describes the size of each plot. The minimum k value for Chia is 32, which corresponds to 108.8 GB (101.4 GiB) for uncompressed plots. With each increase in k, the plot size is approximately doubled, as are the resources required for creating the plot. For this reason, k32 is the most common size on the network, accounting for 98% of the netspace. info k32 is the minimum plot size eligible for farming on Chia's mainnet. If you want to test plotting and/or farming on a testnet, then it is also possible to use k25. These plots are only around 660 MB apiece, so they can be created quickly on a laptop. Although not required, plots larger than k32 may be created. There is not a great benefit to using larger plot sizes as the chance of winning is proportional to plot file size. For example, a k33 plot is twice as large as a k32 plot, and it wins twice as many rewards. There are advanced tactics to using a larger k value to reduce unused storage space or optimize drive idle states, but these won't be highly beneficial for the majority of people.","s":"K Sizes","u":"/plotting-basics/","h":"#k-sizes","p":2720},{"i":2733,"t":"The level of compression you choose will be highly dependent on your farming setup. The good news is that even those using a Raspberry Pi for their harvesters will be able to take advantage of the lower levels of compression. Additionally, each step up in compression level requires an exponential increase in computing power, while yielding a linear decrease in plot size. For these reasons, those who are farming with a Raspberry Pi can yield 20% higher rewards by using compressed plots, while those using the most powerful GPUs will see a modest increase over the benefits obtained by the Pi. Namely, C9 plots yield 35% higher rewards than C0 plots. The next page will detail the various types of hardware that can be used for creating Chia plots. Later, we'll discuss the specific compression levels, including the hardware required to yield each increase in farming rewards and the actual file sizes broken down by k-size with compression levels.","s":"Compression Levels","u":"/plotting-basics/","h":"#compression-levels","p":2720},{"i":2735,"t":"If you are stumped about some aspect of plotting, farming, or Chia generally, we're here to help! Get help on CNI's official Discord, in the #farming-and-plotting and #support channels. Get more questions answered in the plotting FAQ.","s":"How to Get Help","u":"/plotting-basics/","h":"#how-to-get-help","p":2720},{"i":2737,"t":"This document is a comprehensive listing of CLI commands for creating plots from within Chia.","s":"Plotters","u":"/plotters-cli/","h":"","p":2736},{"i":2740,"t":"Functionality: Use the chiapos plotter Usage: chia plotters chiapos [OPTIONS] Options: Short Command Long Command Type Required Description -t --tmp_dir TEXT True Temporary directory 1 (where most of the plots temp data will be stored) -2 --tmp_dir2 TEXT False Temporary directory 2 [Default: same as tmp_dir] -k --size INTEGER False K value [Default: 32] -m --memo TEXT False Memo variable -i --id TEXT False Plot ID [Default: generate a random ID] -b --buffer INTEGER False Size of the buffer, in MB [Default: 4608] -u --buckets INTEGER False Number of buckets [Default: 64] -s --stripes INTEGER False Stripe size [Default: 65536] -r --threads INTEGER False Num threads [Default: 2] -e --nobitfield None False Disable bitfield [Default: bitfield is enabled] --override-k None False Force size smaller than 32 (only needed where -k is less than 32 [Default: disabled] -a --alt_fingerprint INTEGER False Enter the alternative fingerprint of the key you want to use -c --contract TEXT False Pool Contract Address (64 chars) [Default: none] -f --farmerkey TEXT False Farmer Public Key (48 bytes) [Default: use the key from the current wallet] -p --pool-key TEXT False Pool Public Key (48 bytes) [Default: use the key from the current wallet (self-pooling)] -n --count INTEGER False Number of plots to create [Default: 1] -x --exclude_final_dir None False Skips adding [final dir] to harvester for farming [Default: copy to final dir is enabled] -d --final_dir TEXT True Final directory after plot has been created --compress INTEGER False Compression level [Default: 0 (not compressed)] -h --help None False Show a help message and exit","s":"chiapos","u":"/plotters-cli/","h":"#chiapos","p":2736},{"i":2742,"t":"Functionality: Use the madMAx plotter Usage: chia plotters madmax [OPTIONS] Options: Short Command Long Command Type Required Description -k --size INTEGER False K value [Default: 32] -n --count INTEGER False Number of plots to create [Default: 1] -r --threads INTEGER False Num threads [Default: 4] -u --buckets INTEGER False Number of buckets [Default: 256] -v --buckets3 INTEGER False Number of buckets for phases 3 and 4 [Default: 256] -t --tmp_dir TEXT True Temporary directory 1 (where most of the plots temp data will be stored) -2 --tmp_dir2 TEXT False Temporary directory 2 [Default: same as tmp_dir] -w --waitforcopy None False Wait for the plot to finish copying before starting the next plot [Default: don't wait] -p --pool-key TEXT False Pool Public Key (48 bytes) [Default: use the key from the current wallet (self-pooling)] -f --farmerkey TEXT False Farmer Public Key (48 bytes) [Default: use the key from the current wallet] -c --contract TEXT False Pool Contract Address (64 chars) [Default: none] -G --tmptoggle None False Alternate tmpdir/tmpdir2 [Default: disabled] -K --rmulti2 INTEGER False Thread multiplier for P2 [Default: 1] -d --final_dir TEXT True Final directory after plot has been created -h --help None False Show a help message and exit","s":"madmax","u":"/plotters-cli/","h":"#madmax","p":2736},{"i":2744,"t":"Functionality: Use one of the BladeBit plotters Usage: chia plotters bladebit [cudaplot | ramplot | diskplot] [OPTIONS]","s":"bladebit","u":"/plotters-cli/","h":"#bladebit","p":2736},{"i":2746,"t":"Functionality: Use the BladeBit CUDA plotter Usage: chia plotters bladebit cudaplot [OPTIONS] Options: Short Command Long Command Type Required Description -r --threads INTEGER False Num threads [Default: 12] -n --count INTEGER False Number of plots to create [Default: 1] -f --farmerkey TEXT False Farmer Public Key (48 bytes) [Default: use the key from the current wallet] -p --pool-key TEXT False Pool Public Key (48 bytes) [Default: use the key from the current wallet (self-pooling)] -c --contract TEXT False Pool Contract Address (64 chars) [Default: none] -t --tmp_dir TEXT False Temporary directory 1 (where most of the plot's temp data will be stored) [Default: in memory] -2 --tmp_dir2 TEXT False Temporary directory 2 [Default: same as tmp_dir] -i --id TEXT False Plot ID [Default: generate a random ID] -w --warmstart None False Set to enable warm start [Default: disabled] --nonuma None False Set to disable numa [Default: enabled] --no-cpu-affinity None False Set to disable assigning automatic thread affinity [Default: enabled] -v --verbose None False Set to enable verbose output [Default: disabled] -d --final_dir TEXT True Final directory after plot has been created --compress INTEGER False Compression level, 0-9 are accepted [Default: 1] --device INTEGER False The CUDA device index (typically 0 or 1), set if more than one GPU is installed [Default: 0] --disk-128 None False Enable hybrid disk plotting, requires 128 GB of system RAM [Default: disabled] --disk-16* None False Enable hybrid disk plotting, requires at least 16 GB of system RAM [Default: disabled] *SEE WARNING BELOW -h --help None False Show a help message and exit warning A few notes about the disk-16 option: As of BladeBit 3.0.1 (Chia 2.1.0), disk-16 is experimental. This option has been disabled in the Chia 2.1.0 release. It is currently only available from the standalone version of BladeBit. Plots created with this option on Linux with direct I/O disabled appear to work, but more testing is still needed. Plots created with this option on Windows are more likely to encounter issues. Be sure to check all plots created with this option, as they could be invalid even if the plotter appeared to succeed. info Computers with at least 256 GB of system memory should not use either the disk-128 or disk-16 options. They should also not use tmp_dir or tmp_dir2. In this case, plotting will be performed entirely in memory. Computers with at least 128 GB of system memory (but less than 256 GB) should use the disk-128, tmp_dir, and tmp_dir2 options. In this case, most of the plotting will be done in memory, and some will be done on disk. Linux computers with at least 16 GB of system memory (but less than 128 GB) can use the disk-16, tmp_dir, and tmp_dir2 options. However, do so at your own risk. (See the above warning for details.) In this case, as much of the plotting as possible will be done in memory, and the rest will be done on disk.","s":"cudaplot","u":"/plotters-cli/","h":"#cudaplot","p":2736},{"i":2748,"t":"Functionality: Use the BladeBit RAM plotter Usage: chia plotters bladebit ramplot [OPTIONS] Options: Short Command Long Command Type Required Description -r --threads INTEGER False Num threads [Default: 12] -n --count INTEGER False Number of plots to create [Default: 1] -f --farmerkey TEXT False Farmer Public Key (48 bytes) [Default: use the key from the current wallet] -p --pool-key TEXT False Pool Public Key (48 bytes) [Default: use the key from the current wallet (self-pooling)] -c --contract TEXT False Pool Contract Address (64 chars) [Default: none] -i --id TEXT False Plot ID [Default: generate a random ID] -w --warmstart None False Set to enable warm start [Default: disabled] --nonuma None False Set to disable numa [Default: enabled] --no-cpu-affinity None False Set to disable assigning automatic thread affinity [Default: enabled] -v --verbose None False Set to enable verbose output [Default: disabled] -d --final_dir TEXT True Final directory after plot has been created --compress INTEGER False Compression level, 0-9 are accepted [Default: 1] -h --help None False Show a help message and exit","s":"ramplot","u":"/plotters-cli/","h":"#ramplot","p":2736},{"i":2750,"t":"Functionality: Use the BladeBit disk plotter Usage: chia plotters bladebit diskplot [OPTIONS] Options: Short Command Long Command Type Required Description -r --threads INTEGER False Num threads [Default: 12] -n --count INTEGER False Number of plots to create [Default: 1] -f --farmerkey TEXT False Farmer Public Key (48 bytes) [Default: use the key from the current wallet] -p --pool-key TEXT False Pool Public Key (48 bytes) [Default: use the key from the current wallet (self-pooling)] -c --contract TEXT False Pool Contract Address (64 chars) [Default: none] -i --id TEXT False Plot ID [Default: generate a random ID] -w --warmstart None False Set to enable warm start [Default: disabled] --nonuma None False Set to disable numa [Default: enabled] -v --verbose None False Set to enable verbose output [Default: disabled] -d --final_dir TEXT True Final directory after plot has been created --no-cpu-affinity None False Set to disable assigning automatic thread affinity [Default: enabled] --cache INTEGER False Size of cache to reserve for I/O --f1-threads INTEGER False Override the default thread count (12) for F1 generation --fp-threads INTEGER False Override the default thread count (12) for forward propagation --c-threads INTEGER False Override the default thread count (12) for C table processing --p2-threads INTEGER False Override the default thread count (12) for Phase 2 --p3-threads INTEGER False Override the default thread count (12) for Phase 3 --alternate None False Set to halve the temp2 cache size requirements by alternating bucket writing methods between tables -t --tmp_dir TEXT True Temporary directory 1 (where most of the plot's temp data will be stored) -2 --tmp_dir2 TEXT False Temporary directory 2 [Default: same as tmp_dir] -u --buckets INTEGER False Number of buckets [Default: 256] -m --memo TEXT False Memo variable --no-t1-direct None False Set to disable direct I/O on the temp 1 directory --no-t2-direct None False Set to disable direct I/O on the temp 2 directory --compress INTEGER False Compression level, 0-9 are accepted [Default: 1] -h --help None False Show a help message and exit","s":"diskplot","u":"/plotters-cli/","h":"#diskplot","p":2736},{"i":2752,"t":"Functionality: Determine your farm's maximum capacity; this command is only avaible with the standalone version of BladeBit. Usage: bladebit simulate [OPTIONS] Options: Short Command Long Command Type Required Description -n --iterations INTEGER False The number of iterations to run [Default: 100] -p --parallel INTEGER False The number of instances to run in parallel [Default: 1] -l --lookup FLOAT False Maximum allowed time per proof lookup, in seconds [Default: 8.00] -f --filter INTEGER False Plot filter bit count [Default: 512] --partials INTEGER False Partials per-day simulation [Default: 300] --power INTEGER False Time in seconds to run power simulation. -n is set automatically in this mode. -s --size INTEGER False Size of farm. Only used when --power is set. --seed HEX STRING False 64 char hex string to use as a random seed for challenges --no-cuda None False If set, don't use CUDA for decompression. [Default: not set] -d --device INTEGER False Cuda device index, to be used when more than one device exists [Default: 0] -h --help None False Show a help message and exit","s":"simulate","u":"/plotters-cli/","h":"#simulate","p":2736},{"i":2754,"t":"Functionality: Use the DrPlotter plotter Usage: drplotter [plot | verify] [OPTIONS]","s":"drplotter","u":"/plotters-cli/","h":"#drplotter","p":2736},{"i":2756,"t":"Functionality: Plot with the DrPlotter plotter Usage: drplotter plot [OPTIONS] Options: Short Command Long Command Type Required Description -h --help None False Show a help message and exit -f --farmerkey TEXT True Farmer Public Key (48 bytes, hex encoded) -c --contractkey TEXT True Pool Contract Address (64 chars, hex encoded) -d --outputDirectory TEXT True Final directory after plot has been created --compression TEXT False Set compression mode. Choose between eco3x (68 bits per proof), or pro4x (49 bits per proof) [Default: eco3x] -i --gpu_id INTEGER False GPU ID to use [Default: 0] -n --n_to_plot INTEGER False Number of plots to create [Default: 0, fills directory] -L --gpu_memory_limit INTEGER False GPU memory limit in MB [Default: 0 (disabled)] --min_gpu_ram None False Use min gpu ram","s":"plot","u":"/plotters-cli/","h":"#plot","p":2736},{"i":2758,"t":"Functionality: Verify plots with the DrPlotter plotter Usage: drplotter verify [OPTIONS] Options: Short Command Long Command Type Required Description -h --help None False Show a help message and exit -f --file TEXT False File to read from -d --directory TEXT False Check all files in directory","s":"verify","u":"/plotters-cli/","h":"#verify","p":2736},{"i":2760,"t":"Functionality: Use the DrSolver harvester Usage: drsolver [OPTIONS] Options: Short Command Long Command Type Required Description -h --help None False Show a help message and exit -g --gpu INTEGER True GPU ID to use for solving -v --verbose None False Verbose output -t --token TEXT True Client token to use for registration --generate-token None False Generate a client token --drserver-ip TEXT True Your own DrServer, at IP:PORT, e.g. 192.168.0.1:8080 --ssl BOOLEAN False Use SSL for your solver server [Default: false]","s":"drsolver","u":"/plotters-cli/","h":"#drsolver","p":2736},{"i":2762,"t":"Functionality: Use the DrServer harvester Usage: drserver [OPTIONS] Options: Short Command Long Command Type Required Description -h --help None False Show a help message and exit -p --port INTEGER True Server port -t --token TEXT True Server token","s":"drserver","u":"/plotters-cli/","h":"#drserver","p":2736},{"i":2764,"t":"info In 2024 we proposed a new proof format. Please see our frequently asked questions for the new format. For additional information, see our new proof format section. The questions listed on this page only pertain to the original format.","s":"Plotting FAQ","u":"/plotting-faq/","h":"","p":2763},{"i":2766,"t":"Any plots that were partially made will be invalid. This will likely leave many .tmp files that can be removed. In many cases, temp files will be automatically deleted, but this is one case where you'll likely need to remove the files manually. This does not harm any existing plots that have already been completed.","s":"If power goes out what happens?","u":"/plotting-faq/","h":"#if-power-goes-out-what-happens","p":2763},{"i":2768,"t":"Although the answer is yes, the more practical answer is it depends. Often times, the communication speed is slower than expected, the usb device turns off, or connection is inconsistent. A preferred option for desktops would be to install a PCIe to NVME adapter.","s":"Can I use USB 3.0 cable connected to SSD/NVME running the Temp files?","u":"/plotting-faq/","h":"#can-i-use-usb-30-cable-connected-to-ssdnvme-running-the-temp-files","p":2763},{"i":2770,"t":"No. A plot has a significant number of hashes. If one is used, there is still plenty to last for the upcoming years.","s":"Once a hash is used from a plot does the plot need deleted?","u":"/plotting-faq/","h":"#once-a-hash-is-used-from-a-plot-does-the-plot-need-deleted","p":2763},{"i":2772,"t":"A harvester can be thought of as a node that is an extension of your farmer. The harvester checks the plots and reports the results to the farmer, the farmer then submits the results to the blockchain.","s":"Farmer vs Harvester?","u":"/plotting-faq/","h":"#farmer-vs-harvester","p":2763},{"i":2774,"t":"Every user has copy of the blockchain on their PC and the goal is that everyone is in sync or very close. Click on the Full Node tab, scroll down to see the connected Nodes/PCs. It can take some time on initial start up to collect peers, but if you're not getting peers automatically you'll have no way of getting synced. You can check if you are synced by seeing a synced message in the top right of the wallet or on the full node tab. Additionally, the Peak Height should match closely to that of your peers. You can also confirm against a well-synced block explorer. You can also try to force reload (top menu bar --> Force Reload). This may help get things syncing again after waiting 5-10 minutes. This should not affect your plotting.","s":"How can I Get Synced and stay Synced?","u":"/plotting-faq/","h":"#how-can-i-get-synced-and-stay-synced","p":2763},{"i":2777,"t":"In 2024, we proposed a new proof format. This format will have slightly different hardware requirements for plotting and farming versus the original format. For more info about the new format, see the following resources: plotting requirements farming requirements timeline The rest of this page only pertains to the original proof format.","s":"New proof format","u":"/plotting-hardware/","h":"#new-proof-format","p":2775},{"i":2779,"t":"Plotting requires compute - the more compute, the faster the plot time. With that in mind, it may be tempting to run out and buy the fastest computer you can find for plotting. But first, you should consider a few important points, and answer some related questions: Most computers made within the last decade can be used to create Chia plots. Do you already own a computer that is not being heavily used? Plotting is a one-time activity. What will you do with your plotting machine after you have finished plotting? Farming is a long-term endeavor. If you do buy a plotting computer, will the time saved on plotting justify its cost? Everyone needs to decide for themselves what makes the most economic sense. With plotting, often it comes down a simple tradeoff of either: Spend money on a computer, plot faster, and earn rewards sooner, or Don't spend money, plot slower, and earn rewards later ChiaCalculator.com will help you to understand this tradeoff, along with more nuanced factors. Many farmers find that they will make more money by using the equipment they already own. If you do decide to buy hardware, this page will help you to decide what might work best for your farm. When looking for a plotting machine, the main components to consider are the temporary storage and the processor type (CPU or GPU).","s":"Cost/time tradeoffs","u":"/plotting-hardware/","h":"#costtime-tradeoffs","p":2775},{"i":2781,"t":"While a Chia plot is being created, a significant amount of temporary data must be written, either entirely in memory, or mostly on disk (HDD or SSD). There are tradeoffs to using RAM, HDDs, and SSDs for plotting, including durability, speed, and cost: RAM Doesn't wear out from Chia plotting Faster than SSDs; significantly faster than HDDs Requires a high-end workstation or a server Typically only makes economic sense for large farms (>1 PiB) HDD Doesn't wear out from Chia plotting Significantly slower than RAM and SSDs Works on most computers Cheap and effective for small farms (<100 TiB), but typically too slow for larger farms SSD Does wear out over time; a high-endurance enterprise NVMe SSD is recommended Slower than RAM, but much faster than HDDs Works on most computers A good option for farms of most sizes, especially if it means you don't have to buy a high-end workstation","s":"Temporary storage","u":"/plotting-hardware/","h":"#temporary-storage","p":2775},{"i":2783,"t":"CPUs and GPUs are both supported for plotting, with GPUs typically being faster. The BladeBit CUDA plotter requires an NVIDIA GPU with CUDA capability 5.2 and up, with at least 8GB of vRAM. It is supported on Windows and Linux only. MacOS support may be added in the future, but is not guaranteed. The following table lists the general plotter types, along with their requirements, for creating k32 plots: Processor + Storage Plotter Name(s) Chia Version Comp. Plots Compute Temp Disk (GB) RAM (GB) Plot Times (min.) GPU + RAM BladeBit CUDA 2.0 Yes GPU None 256 1-3 GPU + SSD BladeBit CUDA 2.1 Yes GPU 180 128 3-5 CPU + RAM BladeBit RAM 2.0 Yes CPU None 416 2-5 CPU + SSD Bladebit Disk madMAx ChiaPoS 2.0 No CPU 512 4 15-60 CPU + HDD Bladebit Disk madMAx ChiaPoS 2.0 No CPU 512 4 > 60 note GPU + HDD is not recommended. The HDD is already the bottleneck, even with CPU plotting. Using a GPU with an HDD is not likely to improve plotting speed versus CPU + HDD. info Gigahorse from madMAx is a third-party plotter capable of creating compressed plots. Depending on your setup, it may be a viable option, but do keep in mind that this plotter carries a dev fee, as explained in the link. If you want to create compressed plots, you will need to choose either GPU + RAM, GPU + SSD, or CPU + RAM. At some point, CPU + SSD might become capable of creating compressed plots as well, but for now this is not an option. The rest of this page will list a few decent configurations, depending on your budget and goals.","s":"Processor type","u":"/plotting-hardware/","h":"#processor-type","p":2775},{"i":2786,"t":"The following hardware and software components are required for creating compressed plots: Hardware​ For BladeBit CUDA plotting: NVIDIA GPU with CUDA capability 5.2 and up At least 8GB of vRAM A 64-bit CPU (Intel x86, AMD x86, or arm64) System RAM Experimental RAM + disk plotting: at least 16 GB (only available with the standalone version of BladeBit) Fully supported RAM + disk plotting: at least 128 GB RAM only: at least 256 GB For BladeBit Disk plotting: At least 416 GB of system RAM A 64-bit CPU (Intel x86, AMD x86, or arm64) Software​ 64-bit Linux or Windows (MacOS is not supported)","s":"Required","u":"/plotting-hardware/","h":"#required","p":2775},{"i":2788,"t":"A wide range of hardware and software configurations that meet the above requirements could potentially be used for creating compressed plots. The following setups have received the most testing scruitiny. The further your system strays from these setups, the more likely you are to encounter problems. Unfortunately, we may not be able to offer support if your machine does not fall within these parameters. Operating Systems Ubuntu 20.04.6 LTS Ubuntu 22.04.02 LTS Ubuntu 23.04 RHEL 7.4 RHEL 8.7 RHEL 9.1 Windows 10 version 22H2 Windows 11 version 21H2 Windows 11 version 22H2 Windows Server 2022 Windows Server 2019 (version 1809) Systems Intel x86 AMD x86 arm64 Platforms Desktop Workstation Server GPUs 1060 2060 3060 Ti 3090 4060 Tesla P4 A4000","s":"Most tested","u":"/plotting-hardware/","h":"#most-tested","p":2775},{"i":2790,"t":"JM has created an excellent plotting build guide with advice on which equipment provides the best performance for the money. This guide is well worth a visit if you are interested in creating compressed plots with BladeBit CUDA. We'll also list two recommendations here, which assume you will use pre-owned components wherever possible. eBay and Amazon are good places to shop around.","s":"Recommended plotting systems","u":"/plotting-hardware/","h":"#recommended-plotting-systems","p":2775},{"i":2792,"t":"Model: HPE Z440 CPU: Xeon v4 RAM: 256 GB DDR4 ECC 2133 GPU: 2070 Total Cost: $500-600 Estimated plot times (k32): 170-200 seconds Daily plot capability: 40-50 TB","s":"Budget","u":"/plotting-hardware/","h":"#budget","p":2775},{"i":2794,"t":"Model: Lenovo P620 CPU: Threadripper Pro 5945 WX GPU: 3080 Bus: PCIe 4.0 x 16 RAM: 256 GB DDR4 ECC 3200 Total Cost: $1300-1500 Estimated plot times: 90-150 seconds Daily plot capacity: 60-95 TB","s":"Workstation","u":"/plotting-hardware/","h":"#workstation","p":2775},{"i":2796,"t":"Most Chia farmers will want to create compressed plots. However, some will opt for uncompressed plots, including those who: Intend to keep their farm small Are not be primarily motivated by profit Do not want to spend any money on plotting hardware Pay a high amount for electricity, such that creating compressed plots is not economically justifiable In these cases, and potentially others, most hardware running the ChiaPoS, madMAx, and BladeBit plotters will also work.","s":"Uncompressed plotters","u":"/plotting-hardware/","h":"#uncompressed-plotters","p":2775},{"i":2798,"t":"When it comes to plotting and farming in Chia, there is no one-size-fits-all solution. Hopefully after reading this section, you will have the information to help you make an informed decision about how to set up your farm.","s":"Plotting Setup","u":"/plotting-setup/","h":"","p":2797},{"i":2800,"t":"Welcome to the Chia farming community! You're in good company -- over 100,000 people all over the world are currently farming on Chia. Farms of all sizes are covered, from 1-TB microfarms to multi-PB whales. How big will your farm be? You don't have to answer this question right away. Many farmers start with a single used hard drive and an old laptop or desktop. This is a great way to get started because you don't have to buy any equipment. Once they see how it works, many farmers choose to grow their farms. But it might help to have an idea of how big you want your farm to be before you get started. If you do buy any equipment, it will help to have the most optimal setup.","s":"Farm Size","u":"/plotting-setup/","h":"#farm-size","p":2797},{"i":2802,"t":"As explained previously, most new farmers will choose to create plots with some amount of compression. Even if you choose to farm with C1 or C2 plots, which a Raspberry Pi can handle without issue, your rewards will be 16-18% higher than with uncompressed plots. And there is very little downside to farming with these plots -- they only consume a tiny amount more electricity than C0 (uncompressed) plots. And if you plan to set up a large farm of 1 PiB or more, using compressed plots is a no-brainer. The larger your farm, the higher the benefits of using compressed plots. Of course, if you already have a small farm that is up and running with uncompressed plots, you may not want to go through the trouble of replotting just to increase your rewards by a bit. This is also fine -- uncompressed plots will continue to be supported going forward.","s":"To compress or not to compress","u":"/plotting-setup/","h":"#to-compress-or-not-to-compress","p":2797},{"i":2804,"t":"As discussed previously, plots only need to be created once, after which they can be farmed for many years. But this still leaves the decision of plotting machines and farming machines to use. One thing to keep in mind is that a farming computer only cares about the completed plots. It doesn't care how that plot was created, or how long it took. With that in mind, the following table will give you an idea of what compression level to use, given your farming computer. This assumes you will use the Bladbit plotter that comes prepackaged with Chia installations: Level Size (GiB) Relative Size Reward Increase Farm With C0 101.4 100% 0% Pi 4 C1 87.5 86.3% 15.9% Pi 4 C2 86.0 84.8% 17.9% Pi 4 C3 84.5 83.3% 20.0% Pi 4 C4 82.9 81.8% 22.3% Pi 4 C5 81.3 80.2% 24.7% Fast CPU C6 79.6 78.5% 27.4% Fast CPU C7 78.0 76.9% 29.8% GPU C9 75.2 74.2% 34.8% GPU","s":"Choosing a compression level","u":"/plotting-setup/","h":"#choosing-a-compression-level","p":2797},{"i":2806,"t":"To create plots, you must have: A farmer public key -- created upon creating a new wallet A pool public key -- created upon creating a new wallet A pool contract address -- created upon creating a new plot NFT This page will give a basic overview of how to obtain these values. For a detailed description, see the Beginner's Guide to Farming. If you already have a wallet with a plot NFT, feel free to skip to the section for CLI Plotting or GUI Plotting.","s":"How To Plot","u":"/plotting-how-to/","h":"","p":2805},{"i":2809,"t":"If you do not have a key/wallet, run the following command: chia keys generate You will be prompted to add a human-readable name to your wallet. This name is only used locally (it is not stored on the blockchain). If you do not enter a name, a number called a fingerprint will be used instead. It is possible to change this name later. Example response: Generating private key Enter the label you want to assign to this key (Press Enter to skip): Test Wallet Added private key with public key fingerprint 2225787457 In order to view your farmer public key, run chia keys show, optionally including the -f flag to show only the info for the key you just generated: chia keys show The result will include the farmer public key and the pool public key. Make note of them for the subsequent steps. For example: Showing all public keys derived from your master seed and private key: Label: Test Wallet Fingerprint: 2225787457 Master public key (m): ab895c85aea6e7339f1a021ad14eddfa3f5ef97eb37ccbdf0b30c1c88c593065e9409f7401d409c8efe17b903e7c9be1 Farmer public key (m/12381/8444/0/0): ab9b6fda0bbd7510058559cd3b5ce297de5c009d960862b139104feb49a0fe94faace31075009599943327554574c5fc Pool public key (m/12381/8444/1/0): 894c772c219a6d05dc7b0a51fe05f891849e1e26283387f249d7074ead5dcff2fe779ee69f4570c60d1970f0fda77eac First wallet address: xch12kqlkrgq7mkxwt64j5fsge3q84sg007wqyc8egkptyjflmazp7gqd7gh7c","s":"CLI","u":"/plotting-how-to/","h":"#cli","p":2805},{"i":2811,"t":"If you do not have a key, you will need to create one: You will be presented with a list of twenty-four words. This is your wallet's recovery phrase. These words are all that are needed to recover your wallet on a new computer. Write them down and store them in a safe place. The order of the words is important. You can also choose a custom name for your wallet. Click NEXT when you are finished. warning If someone obtains a copy of these words, they can steal your entire wallet, including all of its funds. Be sure to store your recovery phrase in a safe place. You will be taken to your new wallet. In order to obtain your farmer public key, you will need to log out of the wallet. Click the icon next to the bell icon. Click the three dots in the lower-right corner of your wallet, then click Details. Among other information, your farmer public key and pool public key will be shown. If you plan to plot from the CLI, make note of these keys. If you will stick with the GUI for plotting, these keys will be obtained automatically later.","s":"GUI","u":"/plotting-how-to/","h":"#gui","p":2805},{"i":2813,"t":"In order to obtain a pool contract address, you will need to create a Plot NFT.","s":"Pool Contract Address","u":"/plotting-how-to/","h":"#pool-contract-address","p":2805},{"i":2815,"t":"First, you will need to decide whether to join a pool. For this example, we will use -s pool to join a pool. If you want to solo farm, use -s local instead. (Later, you can change pools, using the plot NFT you are about to create.) If you choose to join a pool, you will need to add the URL by adding the -u flag. For this example, we will join OpenChia, but there are many great pools to choose from. For a list of reputable pools, see Chialinks.com. (Chia Network Inc. does not run a pool, and is not affiliated with OpenChia or Chialinks). Finally, you have the option of adding a blockchain fee with the -m flag. We will add a one-mojo fee for this example, which typically is sufficient to complete your transaction within a few minutes. In order to run this command, you will need to have one mojo in your wallet for the plot NFT, and one mojo for the blockchain fee. For example: chia plotnft create -s pool -u https://pool.openchia.io -m 0.000000000001 Response: ---- Pool parameters fetched from https://pool.openchia.io ---- {'authentication_token_timeout': 5, 'description': 'A pool you can trust. We embrace open source.', 'fee': '0.01', 'logo_url': 'https://www.chia.net/img/chia_logo.svg', 'minimum_difficulty': 1, 'name': 'OpenChia.io Pool', 'protocol_version': 1, 'relative_lock_height': 32, 'target_puzzle_hash': '0x55a2d443901f7655893cecf1c98e4152591e8641c64a2b0294cad1a754d02f89'} ---------------------------------------------------------------- Will create a plot NFT and join pool: https://pool.openchia.io. Transaction submitted to nodes: [{'peer_id': 'b3d9de85d29931c10050b56c7afb91c99141943fc81ff2d1a8425e52be0d08ab', 'inclusion_status': 'SUCCESS', 'error_msg': None}] Run 'chia wallet get_transaction -f 782655656 -tx 0x7e6f64d1858263378a66869aefee7bb27ffc2bf3cccb3cc1d89a522d24559654' to get status After the transaction has completed, you can obtain the plot NFT's information by running chia plotnft show. For example: chia plotnft show Response: Current state: FARMING_TO_POOL Current state from block height: 4099277 Launcher ID: fc64e39395f60398532545d0e3116398e5edcdbeacd140606ec25fa36243bc9c Target address (not for plotting): xch12k3dgsusram9tzfuancunrjp2fv3apjpce9zkq55etg6w4xs97ysgcrlwh Number of plots: 0 Owner public key: b571502c188db6ee65cafc9fcc9cfdcb2cff06795687a70bf8d76a48e89adb34b2d28e8d93cabc394e5779a8ae65c38e Pool contract address (use ONLY for plotting - do not send money to this address): xch1l6tt70hrhewlyvjs37vc5tvw80c89cy8dcxcnynsqatsyf5466aq63f9mq Current pool URL: https://pool.openchia.io Current difficulty: 1 Points balance: 0 Points found (24h): 0 Percent Successful Points (24h): 0.00% Payout instructions (pool will pay to this address): xch16ycs0t3cmn63wysrn8hpg93dgevy3cw9yt3mmx2anrz52dkuj9nsauzyzt Relative lock height: 32 blocks The pool contract address is listed in the middle of the output. It will begin with \"xch\".","s":"CLI","u":"/plotting-how-to/","h":"#cli-1","p":2805},{"i":2817,"t":"Open your wallet, click the Pooling icon in the lower-left corner, and click JOIN A POOL: Select either option: Self pool -- Select this if you are a solo farmer. Technically, you will be joining a \"pool\" where you are the only member. Connect to pool -- You will need to enter a valid pool URL. We will use OpenChia for this example, but there are many great pools to choose from. For a list of reputable pools, see Chialinks.com. (Chia Network Inc. does not run a pool, and is not affiliated with OpenChia or Chialinks). info Later, you can change pools, using the plot NFT you are about to create. Creating a plot NFT requires an on-chain transaction that will cost one mojo. You are also recommended to enter a blockchain fee. Depending on how busy the network is, a one-mojo fee is typically enough to complete your transaction within a few minutes. If you entered a valid pool URL, the details will pop up. For example, this pool has a fee of 1%. If everything looks acceptable, click CREATE: Your transaction will be pushed to the blockchain. While it is pending, a new screen will appear: After the transaction has been finalized (typically 1-3 minutes), the details of your plot NFT will appear: The pool contract address will be displayed automatically when creating a plot in the GUI.","s":"GUI","u":"/plotting-how-to/","h":"#gui-1","p":2805},{"i":2819,"t":"If you are unsure which plotter to use, the Plotting Software page will help you to decide. The plotters CLI documentation will guide you through using each of the plotters included with Chia. The basic commands to use are as follows: BladeBit CUDA​ Be sure to add --disk-128 if you have at least 128 GB of RAM, but less than 256 GB. See the plotters CLI documentation for more details. info As of Chia 2.1, plotting with at least 16 GB of RAM (but less than 128 GB) is still experimental. A few notes: The --disk-16 option has been disabled in the Chia 2.1.0 release. It is currently only available from the standalone version of BladeBit. Plots created with this option on Linux with direct I/O disabled appear to work, but more testing is still needed. Plots created with this option on Windows are more likely to encounter issues. Be sure to check all plots created with this option, as they could be invalid even if the plotter appeared to succeed. Use --disk-16 at your own risk! chia plotters bladebit cudaplot -d -f -p -c -n --compress BladeBit RAM​ chia plotters bladebit ramplot -d -f -p -c -n --compress BladeBit Disk​ chia plotters bladebit diskplot -t -d -f -p -c -n --compress 0 madMAx​ chia plotters madmax -t -d -f -p -c -k -n ChiaPoS​ chia plotters chiapos -t -d -f -p -c -k -n Regardless of which plotter you choose, it's a good idea to experiment with the optional parameters in order to optimize the plotting process for your hardware.","s":"CLI Plotting","u":"/plotting-how-to/","h":"#cli-plotting","p":2805},{"i":2821,"t":"From the Chia application, click the Farm icon and click ADD A PLOT: Your plot NFT will appear. In this example, it is called \"Harlequin Koala\". The plots you create will be associated with this NFT. It is important that you associate all of your plots to the same NFT because it will allow you to farm to a pool, as well as to change pools easily if desired. As long as your plot NFT shows up here, there is no need to change it: Next, you will need to choose a plotter. If you are unsure which one to use, see the Plotting Software page for guidance. For the Keys section, you typically won't need to change anything (these are the keys you set up previously). Next, you will need to choose a k value and a compression level. Certain plotters only allow one or the other of these options. Depending on which plotter you chose, you may need to select a temporary storage location. The final directory is where the plot will be copied after it has been created. Most farmers will choose to use an HDD as the final directory. You will also need to choose how many plots to create. After you have gone through all of these settings, click CREATE. You will be taken to a progress panel: note Depending on your chosen plotter, there may be many other options you can experiment with. Some of these options can greatly streamline (or slow down) your plotting process, so it's good to try a few different settings.","s":"GUI Plotting","u":"/plotting-how-to/","h":"#gui-plotting","p":2805},{"i":2825,"t":"Functionality: Create an NFT wallet Usage: chia wallet nft create [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -di --did-id TEXT False DID Id to use -n --name TEXT False Set the NFT wallet name -h --help None False Show a help message and exit Example 1 - Create an NFT wallet that is not linked to a DID Create an NFT Wallet: chia wallet nft create Response: Successfully created an NFT wallet with id 3 on key 4288332900 Example 2 - Create an NFT wallet that is linked to a DID, specifying the fingerprint and name chia wallet nft create -f 4288332900 -di did:chia:17jvhl9z8zj6jma2uxk4mqj22p90hfpf29svlvlyalu8ksyefsvpql7f403 -n \"DID-linked NFT Wallet\" Response: Successfully created an NFT wallet with id 4 on key 4288332900 Show both of these NFT wallets chia wallet show Response: Wallet height: 1117958 Sync status: Synced Balances, fingerprint: 4288332900 Chia Wallet: -Total Balance: 0.999989999991 txch (999989999991 mojo) -Pending Total Balance: 0.999989999991 txch (999989999991 mojo) -Spendable: 0.999989999991 txch (999989999991 mojo) -Type: STANDARD_WALLET -Wallet ID: 1 New Name: -Total Balance: 1.0 -Pending Total Balance: 1.0 -Spendable: 1.0 -Type: DECENTRALIZED_ID -DID ID: did:chia:17jvhl9z8zj6jma2uxk4mqj22p90hfpf29svlvlyalu8ksyefsvpql7f403 -Wallet ID: 2 NFT Wallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -Wallet ID: 3 DID-linked NFT Wallet: -Total Balance: 0.0 -Pending Total Balance: 0.0 -Spendable: 0.0 -Type: NFT -DID ID: did:chia:17jvhl9z8zj6jma2uxk4mqj22p90hfpf29svlvlyalu8ksyefsvpql7f403 -Wallet ID: 4","s":"create","u":"/nft-cli/","h":"#create","p":2822},{"i":2827,"t":"Functionality: Mint an NFT Usage: chia wallet nft mint [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True Id of the NFT wallet to use -u --uris TEXT True Comma separated list of content URIs -nh --hash TEXT True NFT content hash -mu --metadata-uris TEXT False Comma separated list of metadata URIs -mh --metadata-hash TEXT False NFT metadata hash -lu --license-uris TEXT False Comma separated list of license URIs -lh --license-hash TEXT False NFT license hash -ra --royalty-address TEXT False Royalty address -rp --royalty-percentage-fraction INTEGER False NFT royalty percentage fraction in basis points. Example: 175 would represent 1.75% [default: 0] -ta --target-address TEXT False Target address -en --edition-number INTEGER False NFT edition number [default: 1] -et --edition-total INTEGER False NFT edition total number [default: 1] -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] --no-did-ownership None False Disable DID ownership support. If this flag is not set, then DID ownership is supported by default -h --help None False Show a help message and exit Example 1 - Mint an NFT that is not associated with a DID chia wallet nft mint -i 3 -u https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg -nh 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Response: NFT minted Successfully with spend bundle: { 'aggregated_signature': '0x955e7af8daabdc133b403e6339aaf8db62547bb248b506cedaa66caba69878b93db40297b92ea33d793eb966da7bb9fb0a962830d9cb979c8f92380f29208fd5db9ffb6074945df165ef59aa8910f1f1aa2dba874cfe98bfa7991e10e80a2935', 'coin_solutions': [{ 'coin': { 'amount': 999989999991, 'parent_coin_info': '0x544366ddf25f8422c0e369eebdf7d0c06b9319c66a3225fcd59d8daed7647a5d' 'puzzle_hash': '0x05dd4fb123b88ee430282e76beec1f486a0323d69be8dc6f0980de8675df8bb9' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b08fd89a87f712de13cc48ebe15ab7fe57975e61900924b32cb83895b990836bacec7cf331a51ff0c03a97f10c92f9722aff018080', 'solution': '0xff80ffff01ffff33ffa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff0180ffff33ffa0ff408b795e816dcef40ca081b10aa0e1cff7ff34313455e9d71be9097809582bff8600e8d40c797680ffff3cffa04b296555bd48d1b50d02982ba9b1bcabff474fb6171955f932b50951048424e980ffff3dffa0014a582b02e9f7e3edbf99707b18d155c7348d3a84e87492271f435f923cd9be8080ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xab48568ee3b109a71d1bb097da77a3c4c5eee7e9add00dee779bf62323598cc7', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, 'puzzle_reveal': '0xff02ffff01ff04ffff04ff04ffff04ff05ffff04ff0bff80808080ffff04ffff04ff0affff04ffff02ff0effff04ff02ffff04ffff04ff05ffff04ff0bffff04ff17ff80808080ff80808080ff808080ff808080ffff04ffff01ff33ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080', 'solution': '0xffa084d00d38505206aba8b1658ab6502b6364ff8c39ab05c3d5f25984302fb1e176ff01ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xe961030a239afe44b11b4fcb89edb98520d32737555e90021e3b0f7ea8d05e8c', 'puzzle_hash': '0x84d00d38505206aba8b1658ab6502b6364ff8c39ab05c3d5f25984302fb1e176' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0e961030a239afe44b11b4fcb89edb98520d32737555e90021e3b0f7ea8d05e8ca0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff01ff0180808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a031f5e810e2ad078817e8b047306c877ad82c77511aa235179c4a98af413f162affff04ffff01ffff75ffc04468747470733a2f2f696d616765732e706578656c732e636f6d2f70686f746f732f31313035333037322f706578656c732d70686f746f2d31313035333037322e6a70656780ffff68a014836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0ffff826d7580ffff826d6800ffff826c7580ffff826c6800ffff82736e01ffff8273740180ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0862ce162a88bbac828dee02d318618d15b1b1d6a8a3f46ad8d5c15fd26e51f4115b3d3f9f9025edb581ce70ca084cda4ff018080ff018080808080ff01808080', 'solution': '0xffffa0ab48568ee3b109a71d1bb097da77a3c4c5eee7e9add00dee779bf62323598cc7ff0180ff01ffffff80ffff01ffff33ffa0ab8ba18db3cf4f3a2b355a71490013f5273372760cbd991886ef3c05e1ff3ef2ff01ffffa0ab8ba18db3cf4f3a2b355a71490013f5273372760cbd991886ef3c05e1ff3ef2808080ff8080ff018080' } ]} Example 2 - Mint an NFT that is associated with a DID. Specify all URLs and hashes, along with a royalty of 3% chia wallet nft mint -f 2522319413 -i 2 -ra txch1r2hc8zaxmqetkwuqz99nspwa7dlhnyx6uuxlt8srrsd2n7pscwfqgjhy7h -ta txch1z456h8t2wyzhrpzz8mf844zd6jc6tf7stlwggdf57hm3f3mh6cmqf2kzv2 -u https://images.pexels.com/photos/12051365/pexels-photo-12051365.jpeg -nh fca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533f -mu https://metadata_example.com -mh 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e -lu https://license_example.com -lh 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 -et 1337 -en 42 -rp 300 Response: NFT minted Successfully with spend bundle: { 'aggregated_signature': '0xb64cc927430004c4ea2a0691a4eaa0095a546d3895bb709f243aeae008585592bdf1bb6a1b8a47d09524969adaa53eda19218391b586302595edcb5245e1de7cb2000a24caf41de5691852d56dc6733edae73e8ee8729aad1a24676f932415e0', 'coin_solutions': [{ 'coin': { 'amount': 989949999979, 'parent_coin_info': '0x360946634ca064b8b5fb7e57700180372026071361844b7f89d4e169ea9338f8', 'puzzle_hash': '0xab14a74b9d5db864e9fd5d0d11f273ac27833aee9ef620ce6645d0fba8af845b' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0990651e1f532086b86f02ee2105835359bb32ecc40c6bea72c7836293ce1987029b8315f46b6ee887eb7897e02555831ff018080', 'solution': '0xff80ffff01ffff33ffa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff0180ffff33ffa09c5ba7cc1bad5775e0c434159bdfc81a1291a079103e061382a0774f862ccd8dff8600e67d9e3b6a80ffff3cffa04e218ac628b8edc5e27eec0c596daf2d7d360a16db1b5b5a69b33b574ecea30280ffff3dffa0e7bf28c408f4099a590a6b9ef00c476053a3706c39021a98505bd754c5ae7fba8080ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0x42318b29a8000f8286f6b4fbb62b50be4f89e4d2717bdbabaad3a25903adb345', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, 'puzzle_reveal': '0xff02ffff01ff04ffff04ff04ffff04ff05ffff04ff0bff80808080ffff04ffff04ff0affff04ffff02ff0effff04ff02ffff04ffff04ff05ffff04ff0bffff04ff17ff80808080ff80808080ff808080ff808080ffff04ffff01ff33ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080', 'solution': '0xffa02b5775837ee7f6c87e16c8e53b9fcaae0b94cb0b7f89fcaef1b539b36e0f528fff01ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0x219966a50132486af9c005352738fedbedd3f8f82f4ae20cb700c0f4d7c50dcc', 'puzzle_hash': '0x2b5775837ee7f6c87e16c8e53b9fcaae0b94cb0b7f89fcaef1b539b36e0f528f' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0219966a50132486af9c005352738fedbedd3f8f82f4ae20cb700c0f4d7c50dcca0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff01ff0180808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a031f5e810e2ad078817e8b047306c877ad82c77511aa235179c4a98af413f162affff04ffff01ffff75ffc04468747470733a2f2f696d616765732e706578656c732e636f6d2f70686f746f732f31323035313336352f706578656c732d70686f746f2d31323035313336352e6a70656780ffff68a0fca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533fffff826d75ff9c68747470733a2f2f6d657461646174615f6578616d706c652e636f6d80ffff826c75ff9b68747470733a2f2f6c6963656e73655f6578616d706c652e636f6d80ffff82736e2affff827374820539ffff826d68a0868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823effff826c68a0358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a8280ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b65abbed758f97032351ac630c6e7c60f60679fd3492074ef4b72e4961b8f933c5bbe05fc9b583a911b35e43df935824ff018080ff018080808080ff01808080', 'solution': '0xffffa042318b29a8000f8286f6b4fbb62b50be4f89e4d2717bdbabaad3a25903adb345ff0180ff01ffffff80ffff01ffff33ffa01569ab9d6a71057184423ed27ad44dd4b1a5a7d05fdc843534f5f714c777d636ff01ffffa01569ab9d6a71057184423ed27ad44dd4b1a5a7d05fdc843534f5f714c777d636808080ff8080ff018080' } ]} Show the results of running Example 2: chia wallet nft list -i 2 Response: NFT identifier: nft1yxvkdfgpxfyx47wqq56jww87m0ka878c9a9wyr9hqrq0f479phxqps7rtf Launcher coin ID: 219966a50132486af9c005352738fedbedd3f8f82f4ae20cb700c0f4d7c50dcc Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: b2084a3d30780b3b02c967135bdee387aaf9e5114ffe70275c81f7f3257157e2 On-chain data/info: ((117 \"https://images.pexels.com/photos/12051365/pexels-photo-12051365.jpeg\") (104 . 0xfca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533f) (28021 \"https://metadata_example.com\") (27765 \"https://license_example.com\") (29550 . 42) (29556 . 1337) (28008 . 0x868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e) (27752 . 0x358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82)) Owner DID: None Royalty percentage: None Royalty puzhash: None NFT content hash: fca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533f Metadata hash: 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e License hash: 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 NFT edition total: 1337 Current NFT edition number: 42 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1126632 Inner puzzle supports DID: False NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/12051365/pexels-photo-12051365.jpeg Metadata URIs: https://metadata_example.com License URIs: https://license_example.com Example 3 - Mint a video NFT that is associated with a DID Here we'll use a direct link to a .webp file: chia wallet nft mint -f 3792481086 -i 5 -ra xch1u0p2yq5nez92l0rajw0699ppgu9da8hw3e8qlvphr756zf5yxn6sllagty -ta xch1yr62k5fmpj386rf0ljp3n8p9jzmxuv7axmqpmmkeuucktetummqsvqy4vw -u https://img.starstorm.io/sol3.webp -nh 186ffc3d5694c199c3d970e724d959e7ca2e13d8e7dd26e77c4bb0ddbea13dac -mu \"https://pastebin.com/raw/jfuGnCMD\" -mh a5b69e5875389f82f57be37ceb28972a5b7a93877982d4a62ce377a62f303159 -lu https://raw.githubusercontent.com/Chia-Network/chia-blockchain/main/LICENSE -lh 30a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc6 -rp 300 -m 0.000615 Response: NFT minted Successfully with spend bundle: { 'aggregated_signature': '0x960d4d884a8d79bef02c04cba5eee28c8003e86812b3c061be546d54a5fa8eedd3adfdbcfc5b1d0d1b9e7e2e7cb8dc0c15f3b3d90e364d604376509d3c085a61ce35080b79aa54e2d36275d39995e38096b4f1f81d2262d5ca63a6e49053c783', 'coin_solutions': [ { 'coin': { 'amount': 1, 'parent_coin_info': '0x5353f6bfde64e24706ac698bf920bab1cb608f52f81d6dfbe8ea6283c9d357ea', 'puzzle_hash': '0xb225c8b019a6136f60cdfb00d2be02608bee62a3fbc4fe0739f6b1f7ad5f4e01' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa05353f6bfde64e24706ac698bf920bab1cb608f52f81d6dfbe8ea6283c9d357eaa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff04ff2cff8080808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a0a04d9f57764f54a43e4030befb4d80026e870519aaa66334aef8304f5d0393c2ffff04ffff01ffff75ffa268747470733a2f2f696d672e7374617273746f726d2e696f2f736f6c332e7765627080ffff68a0186ffc3d5694c199c3d970e724d959e7ca2e13d8e7dd26e77c4bb0ddbea13dacffff826d75ffa168747470733a2f2f706173746562696e2e636f6d2f7261772f6a6675476e434d4480ffff826c75ffc04b68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f436869612d4e6574776f726b2f636869612d626c6f636b636861696e2f6d61696e2f4c4943454e534580ffff82736e01ffff82737401ffff826d68a0a5b69e5875389f82f57be37ceb28972a5b7a93877982d4a62ce377a62f303159ffff826c68a030a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc680ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff17ffff04ff0bffff04ffff02ff2fff5f80ff80808080808080ffff04ffff01ffffff82ad4cff0233ffff3e04ff81f601ffffff0102ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff32ffff0bff3cff3480ffff0bff32ffff0bff32ffff0bff3cff2280ff0980ffff0bff32ff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ff04ffff04ff38ffff04ffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ffff02ff2effff04ff02ffff04ffff02ffff03ff81afffff0181afffff010b80ff0180ff80808080ffff04ffff0bff3cff4f80ffff04ffff0bff3cff0580ff8080808080808080ff378080ff82016f80ffffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff2fffff01ff80ff808080808080808080ff0bff32ffff0bff3cff2880ffff0bff32ffff0bff32ffff0bff3cff2280ff0580ffff0bff32ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff5fffff01ff02ffff03ffff09ff82011fff3880ffff01ff02ffff03ffff09ffff18ff82059f80ff3c80ffff01ff02ffff03ffff20ff81bf80ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff82019fffff04ff82017fff80808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff0180ffff01ff02ffff03ffff09ff82011fff2c80ffff01ff02ffff03ffff20ff82017f80ffff01ff04ffff04ff24ffff04ffff0eff10ffff02ff2effff04ff02ffff04ff82019fff8080808080ff808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ffff02ff0bffff04ff17ffff04ff2fffff04ff82019fff8080808080ff8080808080808080808080ffff01ff088080ff0180ffff01ff02ffff03ffff09ff82011fff2480ffff01ff02ffff03ffff20ffff02ffff03ffff09ffff0122ffff0dff82029f8080ffff01ff02ffff03ffff09ffff0cff82029fff80ffff010280ff1080ffff01ff0101ff8080ff0180ff8080ff018080ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff8080808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff018080ff018080ff0180ffff01ff02ff3affff04ff02ffff04ff05ffff04ff0bffff04ff81bfffff04ffff02ffff03ff82017fffff0182017fffff01ff02ff0bffff04ff17ffff04ff2fffff01ff808080808080ff0180ff8080808080808080ff0180ff018080ffff04ffff01a0c5abea79afaa001b5427dfa0c8cf42ca6f38f5841b78f9b3c252733eb2de2726ffff04ffff0180ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff04ff82013fffff04ff80ffff04ffff02ffff03ffff22ff82013fffff20ffff09ff82013fff2f808080ffff01ff04ffff04ff10ffff04ffff0bffff02ff2effff04ff02ffff04ff09ffff04ff8205bfffff04ffff02ff3effff04ff02ffff04ffff04ff09ffff04ff82013fff1d8080ff80808080ff808080808080ff1580ff808080ffff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ffff01ff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ff0180ff80808080ffff01ff04ff2fffff01ff80ff80808080ff0180ffff04ffff01ffffff3f02ff04ff0101ffff822710ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff2cff1480ffff0bff2affff0bff2affff0bff2cff3c80ff0980ffff0bff2aff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ff17ffff01ff04ffff04ff10ffff04ffff0bff81a7ffff02ff3effff04ff02ffff04ffff04ff2fffff04ffff04ff05ffff04ffff05ffff14ffff12ff47ff0b80ff128080ffff04ffff04ff05ff8080ff80808080ff808080ff8080808080ff808080ffff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fff8080808080808080ff8080ff0180ffff0bff2affff0bff2cff1880ffff0bff2affff0bff2affff0bff2cff3c80ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa05353f6bfde64e24706ac698bf920bab1cb608f52f81d6dfbe8ea6283c9d357eaa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a0e3c2a20293c88aafbc7d939fa29421470ade9eee8e4e0fb0371fa9a1268434f5ffff04ffff0182012cff0180808080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b099b5094c03d5b43a0361c5fad9918bfe52ed120b0732b9a0ae19387bc07772afedb2ad3804963b948a8817218671df67ff018080ff018080808080ff018080808080ff01808080', 'solution': '0xffffa0fa5ea9623319a1d69ec45ea5c05bf17b299afacc250bca7a73e9e41a15ea6710ff0180ff01ffffffff80ffff01ffff81f6ffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83ff80ffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe808280ffff33ffa020f4ab513b0ca27d0d2ffc83199c2590b66e33dd36c01deed9e73165e57cdec1ff01ffffa020f4ab513b0ca27d0d2ffc83199c2590b66e33dd36c01deed9e73165e57cdec1ffa020f4ab513b0ca27d0d2ffc83199c2590b66e33dd36c01deed9e73165e57cdec1808080ff8080808080' }, { 'coin': { 'amount': 64428799996, 'parent_coin_info': '0x329fcd88f889e7c36455960ec3b5b1e96bb70c85f60737381b4991030878c56a', 'puzzle_hash': '0xdb30018910a67bf20b702e4f97e754c75781f57727ac2e91e595fbacb133777d' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0813e0edff6ed8951954b31bd69755ca576df4e786ec7f99148d38fc357a9b8f35082d862c95107f8fac3ec1c10dd524cff018080', 'solution': '0xff80ffff01ffff33ffa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ff0180ffff33ffa0d5ce3fb2ffffd883c20a6dda284036603e102f509f18d99e7e8c75ac8c4d914cff850edb99503b80ffff34ff8424a827c080ffff3cffa0d972ec444a34cd446cf3eca415e682fadaf37a3e720ceba514547275bb53a65980ffff3dffa0d0c9b5213d779b6c8588e3defcfc2464da971c302b5dc7e4745950ca26fe50b28080ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xfa5ea9623319a1d69ec45ea5c05bf17b299afacc250bca7a73e9e41a15ea6710', 'puzzle_hash': '0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9' }, 'puzzle_reveal': '0xff02ffff01ff04ffff04ff04ffff04ff05ffff04ff0bff80808080ffff04ffff04ff0affff04ffff02ff0effff04ff02ffff04ffff04ff05ffff04ff0bffff04ff17ff80808080ff80808080ff808080ff808080ffff04ffff01ff33ff3cff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff0effff04ff02ffff04ff09ff80808080ffff02ff0effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080', 'solution': '0xffa0b225c8b019a6136f60cdfb00d2be02608bee62a3fbc4fe0739f6b1f7ad5f4e01ff01ff8080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0x51f92f08fa0ea0b8f4f69d97e8661df327a24176fc5ad093be0d2960923c470f', 'puzzle_hash': '0x50f90b0ff7cdd672953ccfe8b90c2543673bc8aa56981dd7ccee1c41746f6e72' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a03bd712b40b706102ffb9a70612bfbb7ce3aa30c81a988e3993e1cdfcc652f43d454904f483151b73abcc996fa7c02eff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa04776fa38a6bb7157e96f8bbc50c17eb8ef08e88ef3f3647aed819886c3cf8d83a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080', 'solution': '0xffffa04e2e84217422393f61f62d02762e4e543b05eabd08dea30117a5e57313a550f8ffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082ff0180ff01ffff01ffff80ffff01ffff33ffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe8082ff01ffffa056e33fc1fe1a970cbdedb90559097186587fdd4d484b4fef2d96bd4f3afe80828080ffff3effa05353f6bfde64e24706ac698bf920bab1cb608f52f81d6dfbe8ea6283c9d357ea8080ff80808080' } ] }","s":"mint","u":"/nft-cli/","h":"#mint","p":2822},{"i":2829,"t":"Functionality: Set the DID associated with an NFT Usage: chia wallet nft set_did [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True Id of the NFT wallet to use -di --did-id TEXT True DID ID to set on the NFT -ni --nft-coin-id TEXT True Coin ID of the NFT coin to set the DID on -m --fee TEXT False Set the fees per transaction, in XCH [default: 0] -h --help None False Show a help message and exit Example Set the DID on an NFT in wallet 2 and include a 1-mojo fee: chia wallet nft set_did -f 590161281 -i 2 -di did:chia:1cxw5dqug4gavvgylx88zfkmqv235ryr6j9tvyjwwuga0pa52wjvqavdyar -ni 0xf3450f0cc18e1ded3615eb2ce52bc67be8550ff03fa128f4515b49d157a3d9ad -m 0.000000000001 Response: Transaction to set DID on NFT has been initiated with: {'aggregated_signature': '0x9925e60697330c525c9a2ba03fa923a10d49c00a37caaecfb6d298fb5ff0eb73c05278ea02f9c90a0399c24a548fbe61002c38988e8d9af0bef4b137b086beee393d547ca70de3b19cc7e698bd8bb89b21ecd0cad23437e0a736db5a6c0ef712', 'coin_solutions': [{'coin': {'amount': 1, 'parent_coin_info': '0xac2e92501afd2c4e9f5ac2dd9d1b997b01fec0f3f40ac2cb3c2d7472f0f3555d', 'puzzle_hash': '0x1a2e7976000f4775ff9d81cd8f6033c9e02e252195632a2da30e3d9e12e55eef'}, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa05353f6bfde64e24706ac698bf920bab1cb608f52f81d6dfbe8ea6283c9d357eaa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff04ff2cff8080808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a0a04d9f57764f54a43e4030befb4d80026e870519aaa66334aef8304f5d0393c2ffff04ffff01ffff75ffa268747470733a2f2f696d672e7374617273746f726d2e696f2f736f6c332e7765627080ffff68a0186ffc3d5694c199c3d970e724d959e7ca2e13d8e7dd26e77c4bb0ddbea13dacffff826d75ffa168747470733a2f2f706173746562696e2e636f6d2f7261772f6a6675476e434d4480ffff826c75ffc04b68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f436869612d4e6574776f726b2f636869612d626c6f636b636861696e2f6d61696e2f4c4943454e534580ffff82736e01ffff82737401ffff826d68a0a5b69e5875389f82f57be37ceb28972a5b7a93877982d4a62ce377a62f303159ffff826c68a030a358857da6b49f57cfe819c1ca43bfe007f528eb784df5da5cb64577e0ffc680ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff17ffff04ff0bffff04ffff02ff2fff5f80ff80808080808080ffff04ffff01ffffff82ad4cff0233ffff3e04ff81f601ffffff0102ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff32ffff0bff3cff3480ffff0bff32ffff0bff32ffff0bff3cff2280ff0980ffff0bff32ff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ff04ffff04ff38ffff04ffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ffff02ff2effff04ff02ffff04ffff02ffff03ff81afffff0181afffff010b80ff0180ff80808080ffff04ffff0bff3cff4f80ffff04ffff0bff3cff0580ff8080808080808080ff378080ff82016f80ffffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff2fffff01ff80ff808080808080808080ff0bff32ffff0bff3cff2880ffff0bff32ffff0bff32ffff0bff3cff2280ff0580ffff0bff32ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff5fffff01ff02ffff03ffff09ff82011fff3880ffff01ff02ffff03ffff09ffff18ff82059f80ff3c80ffff01ff02ffff03ffff20ff81bf80ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff82019fffff04ff82017fff80808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff0180ffff01ff02ffff03ffff09ff82011fff2c80ffff01ff02ffff03ffff20ff82017f80ffff01ff04ffff04ff24ffff04ffff0eff10ffff02ff2effff04ff02ffff04ff82019fff8080808080ff808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ffff02ff0bffff04ff17ffff04ff2fffff04ff82019fff8080808080ff8080808080808080808080ffff01ff088080ff0180ffff01ff02ffff03ffff09ff82011fff2480ffff01ff02ffff03ffff20ffff02ffff03ffff09ffff0122ffff0dff82029f8080ffff01ff02ffff03ffff09ffff0cff82029fff80ffff010280ff1080ffff01ff0101ff8080ff0180ff8080ff018080ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff8080808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff018080ff018080ff0180ffff01ff02ff3affff04ff02ffff04ff05ffff04ff0bffff04ff81bfffff04ffff02ffff03ff82017fffff0182017fffff01ff02ff0bffff04ff17ffff04ff2fffff01ff808080808080ff0180ff8080808080808080ff0180ff018080ffff04ffff01a0c5abea79afaa001b5427dfa0c8cf42ca6f38f5841b78f9b3c252733eb2de2726ffff04ffff0180ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff04ff82013fffff04ff80ffff04ffff02ffff03ffff22ff82013fffff20ffff09ff82013fff2f808080ffff01ff04ffff04ff10ffff04ffff0bffff02ff2effff04ff02ffff04ff09ffff04ff8205bfffff04ffff02ff3effff04ff02ffff04ffff04ff09ffff04ff82013fff1d8080ff80808080ff808080808080ff1580ff808080ffff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ffff01ff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff8202bfffff04ff15ff8080808080808080ff0180ff80808080ffff01ff04ff2fffff01ff80ff80808080ff0180ffff04ffff01ffffff3f02ff04ff0101ffff822710ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff2cff1480ffff0bff2affff0bff2affff0bff2cff3c80ff0980ffff0bff2aff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ff17ffff01ff04ffff04ff10ffff04ffff0bff81a7ffff02ff3effff04ff02ffff04ffff04ff2fffff04ffff04ff05ffff04ffff05ffff14ffff12ff47ff0b80ff128080ffff04ffff04ff05ff8080ff80808080ff808080ff8080808080ff808080ffff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fff8080808080808080ff8080ff0180ffff0bff2affff0bff2cff1880ffff0bff2affff0bff2affff0bff2cff3c80ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa05353f6bfde64e24706ac698bf920bab1cb608f52f81d6dfbe8ea6283c9d357eaa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a0e3c2a20293c88aafbc7d939fa29421470ade9eee8e4e0fb0371fa9a1268434f5ffff04ffff0182012cff0180808080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a5b35d3370745ae7634022ddd970379b4ed4acdd2d34622f1dfdf2b9923b16ac6e8b317abcf1cc8beb1e882d341e4458ff018080ff018080808080ff018080808080ff01808080', 'solution': '0xffffa0473da488ddc642669776c16b532efa460a48978b108e25b0a2f8e98ee8ab0290ffa0849e6585823e5b86aadf1950c8d910c361861c88cbfc3ae2552e5ba485d22ba5ff0180ff01ffffffff80ffff01ffff81f6ffa0c19d468388aa3ac6209f31ce24db6062a341907a9156c249cee23af0f68a7498ff80ffa0d58b4b9af7ef78eb649e45cc07b7aa502425639da56cae73560d5cd34cf8c93c80ffff33ffa0c6effdca80227b7e5aa836b666f37d92ada01bdc207af232263675e31148b2c9ff01ffffa0c6effdca80227b7e5aa836b666f37d92ada01bdc207af232263675e31148b2c98080ffff3cffa0f3450f0cc18e1ded3615eb2ce52bc67be8550ff03fa128f4515b49d157a3d9ad8080ff8080808080'}, {'coin': {'amount': 1, 'parent_coin_info': '0xb9d3d05020ebbd6279923377abf33a2cf9714e153f8f283b7b39b7417d1f72ef', 'puzzle_hash': '0x38d332b735c5b1a94b239a4019b9d7b6de4e5846b1d29bc174940e2fbbec7f8f'}, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3480ffff01ff04ffff04ff20ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff02ff2affff04ff02ffff04ff27ffff04ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff04ffff02ffff03ff77ffff0181b7ffff015780ff0180ff808080808080ffff04ff77ff808080808080ffff02ff3affff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffffff4947ff0233ffff0401ff0102ffffff20ff02ffff03ff05ffff01ff02ff32ffff04ff02ffff04ff0dffff04ffff0bff3cffff0bff34ff2480ffff0bff3cffff0bff3cffff0bff34ff2c80ff0980ffff0bff3cff0bffff0bff34ff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ffff22ffff09ffff0dff0580ff2280ffff09ffff0dff0b80ff2280ffff15ff17ffff0181ff8080ffff01ff0bff05ff0bff1780ffff01ff088080ff0180ff02ffff03ff0bffff01ff02ffff03ffff02ff26ffff04ff02ffff04ff13ff80808080ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff34ff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff3affff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ffffff02ffff03ffff09ff09ff3880ffff01ff02ffff03ffff18ff2dffff010180ffff01ff0101ff8080ff0180ff8080ff0180ff0bff3cffff0bff34ff2880ffff0bff3cffff0bff3cffff0bff34ff2c80ff0580ffff0bff3cffff02ff32ffff04ff02ffff04ff07ffff04ffff0bff34ff3480ff8080808080ffff0bff34ff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff30ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0c19d468388aa3ac6209f31ce24db6062a341907a9156c249cee23af0f68a7498a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b478c6a0ef7410679831d616d06e9fca856f6e08b8a6f13f344cc9aa20981ab7fe287663584e2fc53e2ac14edab883caff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa07faa3253bfddd1e0decb0906b2dc6247bbc4cf608f58345d173adb63e8b47c9fffa0c19d468388aa3ac6209f31ce24db6062a341907a9156c249cee23af0f68a7498a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080', 'solution': '0xffffa0867f36aff7b70937076b33d6d1ed6851583d009571a664a260f2f0ac6a429c40ffa0d58b4b9af7ef78eb649e45cc07b7aa502425639da56cae73560d5cd34cf8c93cff0180ff01ffff01ffff80ffff01ffff33ffa0d58b4b9af7ef78eb649e45cc07b7aa502425639da56cae73560d5cd34cf8c93cff01ffffa02c3d72acbdb2cc5930bb2f4b5d4f79ca9e8ec0217a9e17eac515a1f1344f9ac88080ffff3effa05353f6bfde64e24706ac698bf920bab1cb608f52f81d6dfbe8ea6283c9d357ea8080ff80808080'}, {'coin': {'amount': 1, 'parent_coin_info': '0x2fb76e4abf88c1bb6033690a9748a873383774690265cbe19eff01970c8cde1a', 'puzzle_hash': '0x9e5ee1d992073324d0b008d17c6258d7bc878296cb03c11791567fac8414e097'}, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b083e11f56edd8a9983dd41ea03c11637cacb98fda9148947c58357c2fb7bae53b626396972fef4d7850c30221dd89eb75ff018080', 'solution': '0xff80ffff01ffff34ff0180ffff3cffa0c2bb979a83aaa27152aec128b6cf6f8ec56519fea8d51f021779bb05afad14c380ffff3dffa04e1c8e72798000467d29eece739a92e24edf34dc7cc099a0517b3f8b0c29c6678080ff8080'}]}","s":"set_did","u":"/nft-cli/","h":"#set_did","p":2822},{"i":2831,"t":"Functionality: Sign a message using a specified NFT ID. This command does not modify the blockchain. Usage: chia wallet nft sign_message [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --nft_id TEXT True NFT ID you want to use for signing -m --hex_message TEXT True The message you want to sign -h --help None False Show a help message and exit Example 1: Basic signing chia wallet nft sign_message -f 590161281 -i nft12dfld077vn3ywp4vdx9ljg96k89kpr6jlqwkm7lgaf3g8jwn2l4q6eytqs -m \"This is a test message.\" Response: Message: This is a test message. Public Key: a5b35d3370745ae7634022ddd970379b4ed4acdd2d34622f1dfdf2b9923b16ac6e8b317abcf1cc8beb1e882d341e4458 Signature: 88eb8bacdc6b19614aa7744c3b3809e3c0ff76ba398fe6eebb7eaeb2fcb35452243edf85f31c92bdc17422511cc529fc16c95d62d91b58ec2b01986d6d768fe2a332edab95057b5ed2c1682d5817b2fc6694a6f1ebd3ee9040d5760c4a230c0d Example 2: Obtain and validate a signature This example was created on the testnet. For applying these instructions to mainnet, the only material difference is in the prefix of the address (txch/xch). Start by signing a message: chia wallet nft sign_message -f 52772570 -i nft1srnr973dl9hqlswfl9wz5f2xap27ue8057yf6hw2erav2tf987vs4ql9y2 -m 'happy happy joy joy' Response: Message: happy happy joy joy Public Key: a563d59587cb79ca4ecd544733955f869e9f0f41d0707bc3ada31058917566defd4a1560b528b2bd6849b7c7f29de308 Signature: 8b7b6fa8cd7689313df0900a726309f40100020f9a1e6ffdf8c0fd043057c383dbbec76cb091b5943330c215831225570be2bf966a148a334e17d8fc888f36a7a08e71faf4ffb3418a0b18a965fbed4208fa83da02071c7c192a80c8ceb8f2b6 Signing Mode: BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_AUG:CHIP-0002_ Next, let's say you want to verify whether the above signature came from a specific NFT. Start by obtaining the NFT's information: chia rpc wallet nft_get_info '{\"coin_id\":\"nft1srnr973dl9hqlswfl9wz5f2xap27ue8057yf6hw2erav2tf987vs4ql9y2\"}' Note the p2_address in the response: { \"nft_info\": { \"chain_info\": \"((117 \\\"https://bafybeibhw4np3amsybmddqohgkkxgcbsl3x7lc2pagckc6u422zhz6liai.ipfs.nftstorage.link/8.png\\\") (104 . 0x57bab753284cad6800460fddfca94f916a0d98a8b5329318075472a31fa22a74) (28021 \\\"https://bafybeibhw4np3amsybmddqohgkkxgcbsl3x7lc2pagckc6u422zhz6liai.ipfs.nftstorage.link/8.json\\\") (27765) (29550 . 1) (29556 . 1) (28008 . 0xf1ae0cd509485cfe8f273163ba6dfdd4a7465de3cd2cc912265c420f3768338a))\", \"data_hash\": \"0x57bab753284cad6800460fddfca94f916a0d98a8b5329318075472a31fa22a74\", \"data_uris\": [ \"https://bafybeibhw4np3amsybmddqohgkkxgcbsl3x7lc2pagckc6u422zhz6liai.ipfs.nftstorage.link/8.png\" ], \"edition_number\": 1, \"edition_total\": 1, \"launcher_id\": \"0x80e632fa2df96e0fc1c9f95c2a2546e855ee64efa7889d5dcac8fac52d253f99\", \"launcher_puzhash\": \"0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9\", \"license_hash\": \"0x\", \"license_uris\": [], \"metadata_hash\": \"0xf1ae0cd509485cfe8f273163ba6dfdd4a7465de3cd2cc912265c420f3768338a\", \"metadata_uris\": [ \"https://bafybeibhw4np3amsybmddqohgkkxgcbsl3x7lc2pagckc6u422zhz6liai.ipfs.nftstorage.link/8.json\" ], \"mint_height\": 2130045, \"minter_did\": null, \"nft_coin_id\": \"0x6cd6c98916e8fcb6ad8c0fcf28cd2ed8b65c8163f7072bf491366a99f26770ce\", \"off_chain_metadata\": null, \"owner_did\": null, \"p2_address\": \"0x56eaa066a0d202ffa30cf6a9ecc6d13002c32cc16d9507ef83ae9b8972a9700a\", \"pending_transaction\": false, \"royalty_percentage\": null, \"royalty_puzzle_hash\": null, \"supports_did\": false, \"updater_puzhash\": \"0xfe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b\" }, \"success\": true } Next, convert the p2_address to an address. Spacescan.io has a tool that will perform this conversion. It is also possible to do this conversion from the command line with the chia-dev-tools repo, as shown here: cdv encode --prefix txch 0x56eaa066a0d202ffa30cf6a9ecc6d13002c32cc16d9507ef83ae9b8972a9700a Note that the --prefix flag is only needed if you are not running on mainnet. In this case, the resulting address begins with txch: txch12m42qe4q6gp0lgcv7657e3k3xqpvxtxpdk2s0mur46dcju4fwq9qx5g0vx Finally, call the verify_signature wallet RPC and pass in the address you just obtained: chia rpc wallet verify_signature '{ \"pubkey\": \"a563d59587cb79ca4ecd544733955f869e9f0f41d0707bc3ada31058917566defd4a1560b528b2bd6849b7c7f29de308\", \"signature\": \"8b7b6fa8cd7689313df0900a726309f40100020f9a1e6ffdf8c0fd043057c383dbbec76cb091b5943330c215831225570be2bf966a148a334e17d8fc888f36a7a08e71faf4ffb3418a0b18a965fbed4208fa83da02071c7c192a80c8ceb8f2b6\", \"signing_mode\": \"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_AUG:CHIP-0002_\", \"message\": \"happy happy joy joy\", \"address\": \"txch12m42qe4q6gp0lgcv7657e3k3xqpvxtxpdk2s0mur46dcju4fwq9qx5g0vx\" }' The result shows that the signature is valid: { \"isValid\": true, \"success\": true }","s":"sign_message","u":"/nft-cli/","h":"#sign_message","p":2822},{"i":2833,"t":"Functionality: List the current NFTs Usage: chia wallet nft list [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True Id of the NFT wallet to use --num INTEGER False Number of NFTs to return --start-index INTEGER False Which starting index to start listing NFTs from -h --help None False Show a help message and exit Example 1 - Show NFTs from a wallet that is not associated with a DID chia wallet nft list -i 2 Response: NFT identifier: nft1yxvkdfgpxfyx47wqq56jww87m0ka878c9a9wyr9hqrq0f479phxqps7rtf Launcher coin ID: 219966a50132486af9c005352738fedbedd3f8f82f4ae20cb700c0f4d7c50dcc Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: b2084a3d30780b3b02c967135bdee387aaf9e5114ffe70275c81f7f3257157e2 On-chain data/info: ((117 \"https://images.pexels.com/photos/12051365/pexels-photo-12051365.jpeg\") (104 . 0xfca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533f) (28021 \"https://metadata_example.com\") (27765 \"https://license_example.com\") (29550 . 42) (29556 . 1337) (28008 . 0x868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e) (27752 . 0x358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82)) Owner DID: None Royalty percentage: None Royalty puzhash: None NFT content hash: fca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533f Metadata hash: 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e License hash: 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 NFT edition total: 1337 Current NFT edition number: 42 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1126632 Inner puzzle supports DID: False NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/12051365/pexels-photo-12051365.jpeg Metadata URIs: https://metadata_example.com License URIs: https://license_example.com Example 2 - Show NFTs from a wallet that is associated with a DID chia wallet nft list -i 4 Response: NFT identifier: nft1s5hlcv0q3edg5vf33dkzrg0z35dnhch5tszntcma0zc7mcrpqurqlhwceh Launcher coin ID: 852ffc31e08e5a8a31318b6c21a1e28d1b3be2f45c0535e37d78b1ede0610706 Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: 48e92b64a0a5b7f4c7b6d9df1d1766901785ef26970113eb01c64f3444c5c56d On-chain data/info: ((117 \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\") (104 . 0x14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0) (28021 \"https://metadata_example.com\") (27765 \"https://license_example.com\") (29550 . 42) (29556 . 1337) (28008 . 0x868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e) (27752 . 0x358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82)) Owner DID: did:chia:16kgxghw80cjlytl7x7zxuuux32v308fnmcgkfrh652rtcdqexm4q7gsarr Royalty percentage: 300 Royalty puzhash: 1aaf838ba6d832bb3b80114b3805ddf37f7990dae70df59e031c1aa9f830c392 NFT content hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata hash: 868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823e License hash: 358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a82 NFT edition total: 1337 Current NFT edition number: 42 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1126708 Inner puzzle supports DID: True NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Metadata URIs: https://metadata_example.com License URIs: https://license_example.com","s":"list","u":"/nft-cli/","h":"#list","p":2822},{"i":2835,"t":"Functionality: Get info about an NFT Usage: chia wallet nft get_info [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -ni --nft-coin-id TEXT True Id of the NFT coin for which to show info -h --help None False Show a help message and exit Example Get coin info by NFT Coin ID: chia wallet nft get_info -ni 1338537ad709b6b99430216519780dbee187a3057ce1130ef750d28ccb97e14a Response: NFT identifier: nft1hf22udrkfvpykwm6fu826e0xdeflha2d99tr7zdnvzuh36leahcsu7h2c3 Launcher coin ID: ba54ae34764b024b3b7a4f0ead65e66e53fbf54d29563f09b360b978ebf9edf1 Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: 1338537ad709b6b99430216519780dbee187a3057ce1130ef750d28ccb97e14a On-chain data/info: ((117 \"https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg\") (104 . 0x14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0) (28021) (27765) (29550 . 1) (29556 . 1)) Owner DID: None Royalty percentage: None Royalty puzhash: None NFT content hash: 14836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0 Metadata hash: License hash: NFT edition total: 1 Current NFT edition number: 1 Metadata updater puzhash: fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78b NFT minting block height: 1127233 Inner puzzle supports DID: False NFT is pending for a transaction: False URIs: https://images.pexels.com/photos/11053072/pexels-photo-11053072.jpeg Metadata URIs: License URIs:","s":"get_info","u":"/nft-cli/","h":"#get_info","p":2822},{"i":2837,"t":"Functionality: Transfer an NFT Usage: chia wallet nft transfer [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True Id of the NFT wallet to use -ni --nft-coin-id TEXT True Id of the NFT coin to transfer -ta --target-address TEXT True Target recipient wallet address -m --fee TEXT False Set the fees per transaction, in XCH. [default: 0] -h --help None False Show a help message and exit Example 1 - Send an NFT from a wallet not associated with a DID This recipient in this example will be a common burn address (an address for which nobody has the private key): chia wallet nft transfer -i 2 -ni 889b12b6d4585bb63f51cf9b4e6ac138c2042330c0f3d386d40be6a4a42b9a4a -ta txch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ksh7qddh Response: NFT transferred successfully with spend bundle: { 'aggregated_signature': '0x86f5ca73687ac07518d933f8994b7e6dd73c0359b5266aab7fa744931082bd1220421a65c32900f0a20c66febfb599ba025b45119f5f3312b7abfcb2ae12dfd634b8ad206e227a877782d6c89ed25e7e543af07d31b49650214084add93960f3', 'coin_solutions': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0x0520b0fb4e64341a1eac44ef5f3e7da59650e5d525dce445d3e081783998ce98', 'puzzle_hash': '0x1c6cbebe36eb2bf3c90e819feeea0c35ad6ead5b10773e10a87821f50acf9ba1' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0e961030a239afe44b11b4fcb89edb98520d32737555e90021e3b0f7ea8d05e8ca0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff01ff0180808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a031f5e810e2ad078817e8b047306c877ad82c77511aa235179c4a98af413f162affff04ffff01ffff75ffc04468747470733a2f2f696d616765732e706578656c732e636f6d2f70686f746f732f31313035333037322f706578656c732d70686f746f2d31313035333037322e6a70656780ffff68a014836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0ffff826d7580ffff826d6800ffff826c7580ffff826c6800ffff82736e01ffff8273740180ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b080379d4ac3535dba586bcd0d6e14b87ff1e4a17451c22c68e174ec505e680fc87ff485c08f13021a9e205ee29020ed04ff018080ff018080808080ff01808080', 'solution': '0xffffa0e961030a239afe44b11b4fcb89edb98520d32737555e90021e3b0f7ea8d05e8cffa0fc75102a5cf3cda8ffa0f8fc2474e4ca464ed1c129b58cc3c1a0fdf721b35d45ff0180ff01ffffff80ffff01ffff33ffa0000000000000000000000000000000000000000000000000000000000000deadff01ffffa0000000000000000000000000000000000000000000000000000000000000dead808080ff80808080' } ]} Example 2 - Send an NFT from a wallet associated with a DID This recipient in this example will be a common burn address (an address for which nobody has the private key): chia wallet nft transfer -i 3 -ni 8daa6ce105509c65a7e72e74ed5fa7c46dfbd96987727c85a9808fcf7d4d98a0 -ta txch1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm6ksh7qddh Response: NFT transferred successfully with spend bundle: { 'aggregated_signature': '0xa91bb34bccb51344e09a0a8ced2ef205f95e59ddd1118d54b30b2c9bd36673061ec71fef4b5018fc5538a0b1798f168e065283929f355272ee8443f8553e68d9545f260629e374ea84603fae52d98140703b5480888e0b67101df3934765dac7', 'coin_solutions': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0x6064cdebf09a8ef51666fbbac40f6ab64321bd473b0098965d8f0486b98bdc6b', 'puzzle_hash': '0xd56eb24bccec23d6d91cb2adb292f824c770543a242dc6be8f02e18a3e151a80' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0ebfab91ca3950beb014142f2ea0e1606e0ce11cfcd670931ff9a7009e0f2eddfa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff01ff0180808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a031f5e810e2ad078817e8b047306c877ad82c77511aa235179c4a98af413f162affff04ffff01ffff75ffc04468747470733a2f2f696d616765732e706578656c732e636f6d2f70686f746f732f31323035313336352f706578656c732d70686f746f2d31323035313336352e6a70656780ffff68a0fca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533fffff826d7580ffff826d6800ffff826c7580ffff826c6800ffff82736e2affff82737482053980ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff17ffff04ff0bffff04ffff02ff2fff5f80ff80808080808080ffff04ffff01ffffff88ad4cd55cf7ad6414ff0233ffff3e04ff81f601ffffff0102ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff32ffff0bff3cff3480ffff0bff32ffff0bff32ffff0bff3cff2280ff0980ffff0bff32ff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ff04ffff04ff38ffff04ffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ffff02ff2effff04ff02ffff04ffff02ffff03ff81afffff0181afffff010b80ff0180ff80808080ffff04ffff0bff3cff4f80ffff04ffff0bff3cff0580ff8080808080808080ff378080ff82016f80ffffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff2fffff01ff80ff80ff80ff80ff808080808080808080ff0bff32ffff0bff3cff2880ffff0bff32ffff0bff32ffff0bff3cff2280ff0580ffff0bff32ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff5fffff01ff02ffff03ffff09ff82011fff3880ffff01ff02ffff03ffff09ffff18ff82059f80ff3c80ffff01ff02ffff03ffff20ff81bf80ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff82019fffff04ff82017fff80808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff0180ffff01ff02ffff03ffff09ff82011fff2c80ffff01ff02ffff03ffff20ff82017f80ffff01ff04ffff04ff24ffff04ffff0eff10ffff02ff2effff04ff02ffff04ff82019fff8080808080ff808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ffff02ff0bffff04ff17ffff04ff2fffff04ff82019fff8080808080ff8080808080808080808080ffff01ff088080ff0180ffff01ff02ffff03ffff09ff82011fff2480ffff01ff02ffff03ffff22ffff20ffff09ffff0cff82029fff80ffff010880ff108080ffff09ffff0128ffff0dff82029f808080ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff8080808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff018080ff018080ff0180ffff01ff02ffff03ff81bfffff01ff02ff3affff04ff02ffff04ff05ffff04ff0bffff04ff81bfffff04ffff02ffff03ff82017fffff0182017fffff01ff02ff0bffff04ff17ffff04ff2fffff01ff808080808080ff0180ff80808080808080ffff01ff088080ff018080ff0180ff018080ffff04ffff01a0dacf3308015a4dd77e45a3f79c8b3cea7ec637d05554894c3eb5f779b17f379bffff04ffff01a0f4997f944714b52df55c35abb0494a095f74852a2c19f67c9dff0f6813298302ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff8202ffffff01ff04ff8204ffffff04ff80ffff04ffff02ffff03ffff22ff8204ffffff20ffff09ff8204ffff81bf808080ffff01ff04ffff04ff10ffff04ffff0bffff02ff2effff04ff02ffff04ff09ffff04ff8216ffffff04ffff02ff3effff04ff02ffff04ffff04ff09ffff04ff8204ffff1d8080ff80808080ff808080808080ff1580ff808080ffff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff820affffff04ff15ff80808080808080808080ffff01ff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff820affffff04ff15ff80808080808080808080ff0180ff80808080ffff01ff04ff81bfffff01ff80ff80808080ff0180ffff04ffff01ffffff3f02ff04ff0101ffff822710ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff2cff1480ffff0bff2affff0bff2affff0bff2cff3c80ff0980ffff0bff2aff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ff5fffff01ff04ffff04ff10ffff04ffff0bffff02ffff03ff82019fffff01ff02ff2effff04ff02ffff04ff2fffff04ff17ffff04ffff0bff2cff82029f80ffff04ffff0bff2cff2f80ff80808080808080ffff011780ff0180ffff02ff3effff04ff02ffff04ffff04ff81bfffff04ffff04ff05ffff04ffff05ffff14ffff12ff82011fff0b80ff128080ffff04ffff04ff05ff8080ff80808080ff808080ff8080808080ff808080ffff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfff80808080808080808080ff8080ff0180ffff0bff2affff0bff2cff1880ffff0bff2affff0bff2affff0bff2cff3c80ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bff2cff058080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0ebfab91ca3950beb014142f2ea0e1606e0ce11cfcd670931ff9a7009e0f2eddfa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a0c0d54c575f6193a6cc3d2e64f975a93ff0b37e13b2bcc449a36dc8ba01645eecffff04ffff0182012cffff04ffff01a0bae24162efbd568f89bc7a340798a6118df0189eb9e3f8697bcea27af99f8f79ffff04ffff01a072dec062874cd4d3aab892a0906688a1ae412b0109982e1797a170add88bdcdcff01808080808080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b08fd89a87f712de13cc48ebe15ab7fe57975e61900924b32cb83895b990836bacec7cf331a51ff0c03a97f10c92f9722aff018080ff018080808080ff018080808080ff01808080', 'solution': '0xffffa0ebfab91ca3950beb014142f2ea0e1606e0ce11cfcd670931ff9a7009e0f2eddfffa0eddf1957208ba252fcc100721f38704ed82f4de63549564ac20824290795c7c1ff0180ff01ffffffff80ffff01ffff81f6ff80ff80ff8080ffff33ffa0000000000000000000000000000000000000000000000000000000000000deadff01ffffa0000000000000000000000000000000000000000000000000000000000000dead808080ff8080808080' } ]}","s":"transfer","u":"/nft-cli/","h":"#transfer","p":2822},{"i":2839,"t":"Functionality: Add a data URI to an NFT Usage: chia wallet nft add_uri [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True Id of the NFT wallet to use -ni --nft-coin-id TEXT True Id of the NFT coin to update -u --uri TEXT True (see INFO) Data URI to add to the NFT -mu --metadata-uri TEXT True (see INFO) Metadata URI to add to the NFT -lu --license-uri TEXT True (see INFO) License URI to add to the NFT -m --fee TEXT False Set the fees per transaction, in XCH. [default: 0] -h --help None False Show a help message and exit Example Add a URI to an NFT by NFT coin ID: chia wallet nft add_uri -i 3 -ni 254e54c6c8f2ecec8f4f5ec8291dab47b4042b350b6f1e1852212d194fc61537 -u https://sample.uri Response: URI added successfully with spend bundle: { 'aggregated_signature': '0xb605edf55dd94da2a22c9eafc1e18ba07740d4e2f36712a15cb17cf425f22dce38a02be75f263bf8227aca3e0649a5731650c068e58dd59571825e5310cc682894284381f6751420cd783dafc7ee044319ea14c1f0a6b3f3f6fabc2bc33d72d4', 'coin_solutions': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0xf08bc1510b7f293724692f546e1437c5b81bf81048ffa4980218919f260d1df8', 'puzzle_hash': '0x62b893778a69b217e4392a490c169fa1099d9710e2c273015de98f3e4be5d198' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0aada32f5ab98fa1fa007e793bf77bea2182cac7c3b700ae7a51f71133536ad85a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff01ff0180808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a031f5e810e2ad078817e8b047306c877ad82c77511aa235179c4a98af413f162affff04ffff01ffff75ffc04468747470733a2f2f696d616765732e706578656c732e636f6d2f70686f746f732f31323035313336352f706578656c732d70686f746f2d31323035313336352e6a70656780ffff68a0fca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533fffff826d7580ffff826d6800ffff826c7580ffff826c6800ffff82736e2affff82737482053980ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff17ffff04ff0bffff04ffff02ff2fff5f80ff80808080808080ffff04ffff01ffffff88ad4cd55cf7ad6414ff0233ffff3e04ff81f601ffffff0102ffff02ffff03ff05ffff01ff02ff2affff04ff02ffff04ff0dffff04ffff0bff32ffff0bff3cff3480ffff0bff32ffff0bff32ffff0bff3cff2280ff0980ffff0bff32ff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ff04ffff04ff38ffff04ffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ffff02ff2effff04ff02ffff04ffff02ffff03ff81afffff0181afffff010b80ff0180ff80808080ffff04ffff0bff3cff4f80ffff04ffff0bff3cff0580ff8080808080808080ff378080ff82016f80ffffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff2fffff01ff80ff80ff80ff80ff808080808080808080ff0bff32ffff0bff3cff2880ffff0bff32ffff0bff32ffff0bff3cff2280ff0580ffff0bff32ffff02ff2affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff5fffff01ff02ffff03ffff09ff82011fff3880ffff01ff02ffff03ffff09ffff18ff82059f80ff3c80ffff01ff02ffff03ffff20ff81bf80ffff01ff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff82019fffff04ff82017fff80808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff0180ffff01ff02ffff03ffff09ff82011fff2c80ffff01ff02ffff03ffff20ff82017f80ffff01ff04ffff04ff24ffff04ffff0eff10ffff02ff2effff04ff02ffff04ff82019fff8080808080ff808080ffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ffff02ff0bffff04ff17ffff04ff2fffff04ff82019fff8080808080ff8080808080808080808080ffff01ff088080ff0180ffff01ff02ffff03ffff09ff82011fff2480ffff01ff02ffff03ffff22ffff20ffff09ffff0cff82029fff80ffff010880ff108080ffff09ffff0128ffff0dff82029f808080ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff8080808080808080808080ffff01ff088080ff0180ffff01ff04ff819fffff02ff3effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfffff04ff82017fff808080808080808080808080ff018080ff018080ff0180ffff01ff02ffff03ff81bfffff01ff02ff3affff04ff02ffff04ff05ffff04ff0bffff04ff81bfffff04ffff02ffff03ff82017fffff0182017fffff01ff02ff0bffff04ff17ffff04ff2fffff01ff808080808080ff0180ff80808080808080ffff01ff088080ff018080ff0180ff018080ffff04ffff01a0dacf3308015a4dd77e45a3f79c8b3cea7ec637d05554894c3eb5f779b17f379bffff04ffff01a0f4997f944714b52df55c35abb0494a095f74852a2c19f67c9dff0f6813298302ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff8202ffffff01ff04ff8204ffffff04ff80ffff04ffff02ffff03ffff22ff8204ffffff20ffff09ff8204ffff81bf808080ffff01ff04ffff04ff10ffff04ffff0bffff02ff2effff04ff02ffff04ff09ffff04ff8216ffffff04ffff02ff3effff04ff02ffff04ffff04ff09ffff04ff8204ffff1d8080ff80808080ff808080808080ff1580ff808080ffff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff820affffff04ff15ff80808080808080808080ffff01ff02ff16ffff04ff02ffff04ff0bffff04ff17ffff04ff2fffff04ff5fffff04ff820affffff04ff15ff80808080808080808080ff0180ff80808080ffff01ff04ff81bfffff01ff80ff80808080ff0180ffff04ffff01ffffff3f02ff04ff0101ffff822710ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff2cff1480ffff0bff2affff0bff2affff0bff2cff3c80ff0980ffff0bff2aff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff02ffff03ff5fffff01ff04ffff04ff10ffff04ffff0bffff02ffff03ff82019fffff01ff02ff2effff04ff02ffff04ff2fffff04ff17ffff04ffff0bff2cff82029f80ffff04ffff0bff2cff2f80ff80808080808080ffff011780ff0180ffff02ff3effff04ff02ffff04ffff04ff81bfffff04ffff04ff05ffff04ffff05ffff14ffff12ff82011fff0b80ff128080ffff04ffff04ff05ff8080ff80808080ff808080ff8080808080ff808080ffff02ff16ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff2fffff04ff81dfffff04ff81bfff80808080808080808080ff8080ff0180ffff0bff2affff0bff2cff1880ffff0bff2affff0bff2affff0bff2cff3c80ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff3effff04ff02ffff04ff09ff80808080ffff02ff3effff04ff02ffff04ff0dff8080808080ffff01ff0bff2cff058080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0aada32f5ab98fa1fa007e793bf77bea2182cac7c3b700ae7a51f71133536ad85a0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01a0c0d54c575f6193a6cc3d2e64f975a93ff0b37e13b2bcc449a36dc8ba01645eecffff04ffff0182012cffff04ffff01a0bae24162efbd568f89bc7a340798a6118df0189eb9e3f8697bcea27af99f8f79ffff04ffff01a072dec062874cd4d3aab892a0906688a1ae412b0109982e1797a170add88bdcdcff01808080808080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b08fd89a87f712de13cc48ebe15ab7fe57975e61900924b32cb83895b990836bacec7cf331a51ff0c03a97f10c92f9722aff018080ff018080808080ff018080808080ff01808080', 'solution': '0xffffa0aada32f5ab98fa1fa007e793bf77bea2182cac7c3b700ae7a51f71133536ad85ffa0c55f3fa2c44b8fb25157acff215284af585ead5eb2946c73f4dea8dab52ba836ff0180ff01ffffffff80ffff01ffff33ffa005dd4fb123b88ee430282e76beec1f486a0323d69be8dc6f0980de8675df8bb9ff01ffffa005dd4fb123b88ee430282e76beec1f486a0323d69be8dc6f0980de8675df8bb98080ffff81e8ffff02ffff01ff04ffff04ffff02ffff03ffff22ff27ff3780ffff01ff02ffff03ffff21ffff09ff27ffff01826d7580ffff09ff27ffff01826c7580ffff09ff27ffff01758080ffff01ff02ff02ffff04ff02ffff04ff05ffff04ff27ffff04ff37ff808080808080ffff010580ff0180ffff010580ff0180ffff04ff0bff808080ffff01ff808080ffff04ffff01ff02ffff03ff05ffff01ff02ffff03ffff09ff11ff0b80ffff01ff04ffff04ff0bffff04ff17ff198080ff0d80ffff01ff04ff09ffff02ff02ffff04ff02ffff04ff0dffff04ff0bffff04ff17ff8080808080808080ff0180ff8080ff0180ff018080ffff759268747470733a2f2f73616d706c652e75726980ffff81f6ff80ff80ff808080ff8080808080' } ]} Get new NFT info by Wallet ID: chia wallet nft list -i 3 Response: NFT identifier: nft14tdr9adtnraplgq8u7fm7aa75gvzetru8dcq4ea9rac3xdfk4kzsm47vr5 Launcher coin ID: aada32f5ab98fa1fa007e793bf77bea2182cac7c3b700ae7a51f71133536ad85 Launcher puzhash: eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9 Current NFT coin ID: 02de32c2c18c5a1049cfd5192021a9a8b08388e1ecd9e915468724fe91e4669b On-chain data/info: ((117 \"https://sample.uri\" \"https://images.pexels.com/photos/12051365/pexels-photo-12051365.jpeg\") (104 . 0xfca3e8ddae9bf8dc7d4100f36d15395744650b3751420cc647fcf973243b533f) (28021) (28008 . 0x00) (27765) (27752 . 0x00) (29550 . 42) (29556 . 1337))","s":"add_uri","u":"/nft-cli/","h":"#add_uri","p":2822},{"i":2841,"t":"Functionality: Set a DID on an NFT Usage: chia wallet nft set_did [OPTIONS] Options: Short Command Long Command Type Required Description -wp --wallet-rpc-port INTEGER False Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml -f --fingerprint INTEGER False Set the fingerprint to specify which wallet to use -i --id INTEGER True Id of the NFT wallet to use -di --did-id TEXT True DID Id to set on the NFT -ni --nft-coin-id TEXT True Id of the NFT coin on which to set the DID -m --fee TEXT False Set the fees per transaction, in XCH. [default: 0] -h --help None False Show a help message and exit Example chia wallet nft set_did -i 2 -di did:chia:16kgxghw80cjlytl7x7zxuuux32v308fnmcgkfrh652rtcdqexm4q7gsarr -ni 6052a11829c20e9fb9c8fd66b38565e1fcfdedae3d3b410dfb6caef363fb22d8 Response: Transaction to set DID on NFT has been initiated with: { 'aggregated_signature': '0x85b31b9cab5f943e8aee056869abe5b83cf6f4ba82abf0818eb235f29776c1413980e97944dd305c11bd936b1412324e19cc5a7dbff3be62f1ed0b8fe6b7dffec019036882cc09988c76ca978164767f31af5e95f4ea919f5c7c9ec8d1fc21cc', 'coin_solutions': [{ 'coin': { 'amount': 1, 'parent_coin_info': '0xf3c16450c3bda3f913ebcb9ad8291e8bd658d3c0e166d745203106e1149df51b', 'puzzle_hash': '0xccd5da42dd88885494d6a8fa7863310565eec33961d7425554bfeaa23d16a563' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa049285cc9f2b0990f874e1319fe26ad749f15eb89cb5fd16bd75a1bb5c2a05a0ba0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ff3effff04ff02ffff04ff05ffff04ffff02ff2fff5f80ffff04ff80ffff04ffff04ffff04ff0bffff04ff17ff808080ffff01ff808080ffff01ff8080808080808080ffff04ffff01ffffff0233ff04ff0101ffff02ff02ffff03ff05ffff01ff02ff1affff04ff02ffff04ff0dffff04ffff0bff12ffff0bff2cff1480ffff0bff12ffff0bff12ffff0bff2cff3c80ff0980ffff0bff12ff0bffff0bff2cff8080808080ff8080808080ffff010b80ff0180ffff0bff12ffff0bff2cff1080ffff0bff12ffff0bff12ffff0bff2cff3c80ff0580ffff0bff12ffff02ff1affff04ff02ffff04ff07ffff04ffff0bff2cff2c80ff8080808080ffff0bff2cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff02ffff03ff0bffff01ff02ffff03ffff09ff23ff1880ffff01ff02ffff03ffff18ff81b3ff2c80ffff01ff02ffff03ffff20ff1780ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff33ffff04ff2fffff04ff5fff8080808080808080ffff01ff088080ff0180ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff0180ffff01ff02ffff03ffff09ff23ffff0181e880ffff01ff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ffff02ffff03ffff22ffff09ffff02ff2effff04ff02ffff04ff53ff80808080ff82014f80ffff20ff5f8080ffff01ff02ff53ffff04ff818fffff04ff82014fffff04ff81b3ff8080808080ffff01ff088080ff0180ffff01ff0180808080808080ffff01ff04ff13ffff02ff3effff04ff02ffff04ff05ffff04ff1bffff04ff17ffff04ff2fffff04ff5fff80808080808080808080ff018080ff0180ffff01ff04ffff04ff18ffff04ffff02ff16ffff04ff02ffff04ff05ffff04ff27ffff04ffff0bff2cff82014f80ffff04ffff02ff2effff04ff02ffff04ff818fff80808080ffff04ffff0bff2cff0580ff8080808080808080ff378080ff81af8080ff0180ff018080ffff04ffff01a031f5e810e2ad078817e8b047306c877ad82c77511aa235179c4a98af413f162affff04ffff01ffff75ffc04468747470733a2f2f696d616765732e706578656c732e636f6d2f70686f746f732f31313035333037322f706578656c732d70686f746f2d31313035333037322e6a70656780ffff68a014836b86a48e1b2b5e857213af97534704475b4c155d34b2cb83ed4b7cba2bb0ffff826d75ff9c68747470733a2f2f6d657461646174615f6578616d706c652e636f6d80ffff826c75ff9b68747470733a2f2f6c6963656e73655f6578616d706c652e636f6d80ffff82736e2affff827374820539ffff826d68a0868463c2ae6f8a9585156c9ad9f4b9b01eeacc56fec82aa629c97135ff21823effff826c68a0358d4eb4aedefbec22824036299eff24216d213a95c8f986f862f0a89a250a8280ffff04ffff01a0fe8a4b4e27a2e29a4d3fc7ce9d527adbcaccbab6ada3903ccf3ba9a769d2d78bffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0b905b9eb2b50c70016c7851f9f089bfc2ce28fb86106a10324408db18a401d5ae89b2f49ecbdec8c28bd23a7b9851337ff018080ff018080808080ff01808080', 'solution': '0xffffa049285cc9f2b0990f874e1319fe26ad749f15eb89cb5fd16bd75a1bb5c2a05a0bffa093d60f351de47e725af74e1f610b9414025bd5bb22b2c1309eacdae760efb8abff0180ff01ffffff80ffff01ffff33ffa01569ab9d6a71057184423ed27ad44dd4b1a5a7d05fdc843534f5f714c777d636ff01ffffa01569ab9d6a71057184423ed27ad44dd4b1a5a7d05fdc843534f5f714c777d636808080ff80808080' }, { 'coin': { 'amount': 1, 'parent_coin_info': '0xdaefa89b6346915a8925a3c825201d21ea2b5f655766fbc9b244d5cdf0b6d3e4', 'puzzle_hash': '0xe28652b116337599961cb6d138091bbced075a0cee2b8307360ec98c62f7e2d8' }, 'puzzle_reveal': '0xff02ffff01ff02ffff01ff02ffff03ffff18ff2fff3c80ffff01ff04ffff04ff10ffff04ff2fff808080ffff04ffff02ff3effff04ff02ffff04ff05ffff04ffff0bff27ffff02ffff03ff77ffff01ff02ff36ffff04ff02ffff04ff09ffff04ff57ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ffff011d80ff0180ffff02ffff03ff77ffff0181b7ffff015780ff018080ffff04ff77ff808080808080ffff02ff26ffff04ff02ffff04ff05ffff04ffff02ff0bff5f80ffff01ff8080808080808080ffff01ff088080ff0180ffff04ffff01ffffff49ff4702ff33ff0401ffff01ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff3cff2c80ffff0bff2affff0bff2affff0bff3cff1280ff0980ffff0bff2aff0bffff0bff3cff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff0bffff01ff02ffff03ffff02ffff03ffff09ff23ff1480ffff01ff02ffff03ffff18ff81b3ff3c80ffff01ff0101ff8080ff0180ff8080ff0180ffff01ff02ffff03ffff20ff1780ffff01ff02ffff03ffff09ff81b3ffff01818f80ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff808080808080ffff01ff04ffff04ff23ffff04ffff02ff36ffff04ff02ffff04ff09ffff04ff53ffff04ffff02ff2effff04ff02ffff04ff05ff80808080ff808080808080ff738080ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff3cff8080808080808080ff0180ffff01ff088080ff0180ffff01ff04ff13ffff02ff26ffff04ff02ffff04ff05ffff04ff1bffff04ff17ff8080808080808080ff0180ffff01ff02ffff03ff17ff80ffff01ff088080ff018080ff0180ff0bff2affff0bff3cff3880ffff0bff2affff0bff2affff0bff3cff1280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff3cff3c80ff8080808080ffff0bff3cff8080808080ffff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff2effff04ff02ffff04ff09ff80808080ffff02ff2effff04ff02ffff04ff0dff8080808080ffff01ff0bff3cff058080ff0180ff02ffff03ffff21ff17ffff09ff0bff158080ffff01ff04ff28ffff04ff0bff808080ffff01ff088080ff0180ff018080ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0d590645dc77e25f22ffe37846e73868a99179d33de11648efaa286bc341936eaa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff81bfffff01ff02ff05ff82017f80ffff01ff02ffff03ffff22ffff09ffff02ff7effff04ff02ffff04ff8217ffff80808080ff0b80ffff15ff17ff808080ffff01ff04ffff04ff28ffff04ff82017fff808080ffff04ffff04ff34ffff04ff8202ffffff04ff82017fffff04ffff04ff8202ffff8080ff8080808080ffff04ffff04ff38ffff04ff822fffff808080ffff02ff26ffff04ff02ffff04ff2fffff04ff17ffff04ff8217ffffff04ff822fffffff04ff8202ffffff04ff8205ffffff04ff820bffffff01ff8080808080808080808080808080ffff01ff088080ff018080ff0180ffff04ffff01ffffffff313dff4946ffff0233ff3c04ffffff0101ff02ff02ffff03ff05ffff01ff02ff3affff04ff02ffff04ff0dffff04ffff0bff2affff0bff22ff3c80ffff0bff2affff0bff2affff0bff22ff3280ff0980ffff0bff2aff0bffff0bff22ff8080808080ff8080808080ffff010b80ff0180ffffff02ffff03ff17ffff01ff02ffff03ff82013fffff01ff04ffff04ff30ffff04ffff0bffff0bffff02ff36ffff04ff02ffff04ff05ffff04ff27ffff04ff82023fffff04ff82053fffff04ff820b3fff8080808080808080ffff02ff7effff04ff02ffff04ffff02ff2effff04ff02ffff04ff2fffff04ff5fffff04ff82017fff808080808080ff8080808080ff2f80ff808080ffff02ff26ffff04ff02ffff04ff05ffff04ff0bffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ffff10ff8202ffffff010180ff808080808080808080808080ffff01ff02ff26ffff04ff02ffff04ff05ffff04ff37ffff04ff2fffff04ff5fffff04ff8201bfffff04ff82017fffff04ff8202ffff8080808080808080808080ff0180ffff01ff02ffff03ffff15ff8202ffffff11ff0bffff01018080ffff01ff04ffff04ff20ffff04ff82017fffff04ff5fff80808080ff8080ffff01ff088080ff018080ff0180ff0bff17ffff02ff5effff04ff02ffff04ff09ffff04ff2fffff04ffff02ff7effff04ff02ffff04ffff04ff09ffff04ff0bff1d8080ff80808080ff808080808080ff5f80ffff04ffff0101ffff04ffff04ff2cffff04ff05ff808080ffff04ffff04ff20ffff04ff17ffff04ff0bff80808080ff80808080ffff0bff2affff0bff22ff2480ffff0bff2affff0bff2affff0bff22ff3280ff0580ffff0bff2affff02ff3affff04ff02ffff04ff07ffff04ffff0bff22ff2280ff8080808080ffff0bff22ff8080808080ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff7effff04ff02ffff04ff09ff80808080ffff02ff7effff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b091f4a1811c7ccdf84207e433bc470ef9aaed1f141960017918fc3427b5e3bbff3513c3023b43a2f8a66d37df12c0aaddff018080ffff04ffff01a04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459affff04ffff0180ffff04ffff01ffa0f1e8350cec62f8204aaf867cc3c12cae369f619258206616108c6cfd7be760b3ffa0d590645dc77e25f22ffe37846e73868a99179d33de11648efaa286bc341936eaa0eff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9ffff04ffff0180ff01808080808080ff01808080', 'solution': '0xffffa0729faa60d6708cf6dd20af3c87419b8fb527b16b0510f14c50d76356f213e088ffa078a56af36aa6b98edf7a05b7bbb94d1afbb7e9640dfdbeeefba3c67f8d24c97cff0180ff01ffff01ffff80ffff01ffff33ffa078a56af36aa6b98edf7a05b7bbb94d1afbb7e9640dfdbeeefba3c67f8d24c97cff01ffffa078a56af36aa6b98edf7a05b7bbb94d1afbb7e9640dfdbeeefba3c67f8d24c97c8080ffff3effa049285cc9f2b0990f874e1319fe26ad749f15eb89cb5fd16bd75a1bb5c2a05a0b8080ff80808080' } ]}","s":"set_did","u":"/nft-cli/","h":"#set_did-1","p":2822},{"i":2843,"t":"Several Chia plotters are now available. The output (a plot) will be nearly identical for a given k-value and compression level. However, the hardware requirements are different for each plotter. The four families of plotters include: BladeBit -- developed by Chia Network Inc. DrPlotter -- developed by DrNick and supported by Chia Network Inc. madMAx -- developed external to CNI ChiaPoS -- the original plotter, developed by CNI This page provides details about the plotters that exist within each of these families.","s":"Plotting Software","u":"/plotting-software/","h":"","p":2842},{"i":2846,"t":"A GPU plotter, included with Chia 2.0​ Plot capabilities Type: Compressed or uncompressed Size: k32 only (larger sizes to be added later) Requirements OS: Windows 11 or Debian/Ubuntu Linux (MacOS and other flavors of Linux will likely be supported in the future) Memory: For 100% in-memory plotting: 256 GB of DRAM For RAM + disk plotting: 16 GB (experimental) or 128 GB (only available on linux) Temporary Disk: Not used for 256 GB version SSD required for <= 128 GB of RAM GPU: CUDA capability 5.2 (NVIDIA 10 series GPU or higher) with 8GB of GPU VRAM Software: CUDA toolkit version 11.8 or later More info The newest BladeBit plotter, designed to work with CUDA-class GPUs Creates compressed plots, up to C9 (75.2 GB) The fastest Chia plotter for most hardware architectures that meet the minimum specs The 256 GB version creates plots entirely in memory, so no temp disk is needed Open-source, freely available, no dev fee Can also be installed as a standalone build A detailed analysis of BladeBit CUDA's performance was undertaken by scienceofmining.com CLI documentation Example command The following command will create a single plot with a compression level of 7. It will use the specified keys and contract address in case the farmer is located on a different machine. It will use the defaults for the remaining parameters: chia plotters bladebit cudaplot -d -f -p -c -n 1 --compress 7","s":"BladeBit CUDA","u":"/plotting-software/","h":"#bladebit-cuda","p":2842},{"i":2848,"t":"An all-memory CPU plotter, included with Chia 2.0​ Plot capabilities Type: Compressed or uncompressed Size: k32 only (larger sizes to be added later) More info Requirements OS: Windows, Mac, or Linux OS (64-bit is required); Intel and ARM (Apple Silicon) are both supported. Memory: 416 GB of available RAM Temporary Disk: Not used GPU: Not used More info Designed to be used in high-memory servers that don't have a GPU Creates compressed plots, up to C9 (75.2 GiB) Creates plots entirely in memory, so no temp disk is needed Typically not as fast as BladeBit CUDA Open-source, freely available, no dev fee Can also be installed as a standalone build CLI documentation Example command The following command will create a single plot with a compression level of 7. It will use the specified keys and contract address in case the farmer is located on a different machine. It will use the defaults for the remaining parameters: chia plotters bladebit ramplot -d -f -p -c -n 1 --compress 7","s":"BladeBit RAM","u":"/plotting-software/","h":"#bladebit-ram","p":2842},{"i":2850,"t":"A disk-based (HDD or SSD) CPU plotter, included with Chia 2.0​ Plot capabilities Type: Uncompressed only in Chia 2.0, Compressed beginning in 2.1 Size: k32 only Requirements OS: Windows, Mac, or Linux OS (64-bit is required); Intel and ARM (Apple Silicon) are both supported. Memory: Minimum 2 GB of available RAM, with lower bucket counts requiring up to 12 GB Temporary Disk: 480 GB in default mode, or 390 GB with --alternate mode enabled; can be HDD or SSD: SSD: fast (NVMe is supported) but consumer-grade SSDs wear out over time, enterprise-grade is recommended HDD: slow, but won't wear out; can plot directly to the final disk GPU: Not used More info Designed to be used in embedded or entry-level systems Can only create uncompressed plots (C0, 101.4 GiB) in Chia version 2.0 The use of temporary HDD or SSD storage makes it accessible to the majority of farmers Sequential writes can better take advantage of SSD burst performance and reduce SSD wear by reducing write amplification factor Can use DRAM write cache to significantly reduce SSD writes and can take advantage of any extra increments (no minimum required) Takes full advantage of increased disk bandwidth from PCIe 4.0 Pipelined performance to max out CPU Can also be installed as a standalone build CLI documentation Example command The following command will create a single uncompressed plot (plot compression is disabled in Chia version 2.0.0). It will use the specified keys and contract address in case the farmer is located on a different machine. It will allocate 32 GB of DRAM cache, and it will use the specified temporary drive (typically an SSD) and destination drive. It will use the defaults for the remaining parameters: chia plotters bladebit diskplot -t -d -f -p -c --cache 32G -n 1 --compress 0","s":"Bladebit Disk","u":"/plotting-software/","h":"#bladebit-disk","p":2842},{"i":2852,"t":"A standalone GPU plotter and harvester​ Plot capabilities Type: Compressed plots Size: k32 only Requirements DrPlotter Minimum Requirements: 24GB nvidia 3090 / A5000 / 4090 128GB DDR4 RAM motherboard with a PCIE 4.0 x 16 slot 64 bit processor (onboard GPU a bonus) Ubuntu / Debian based system DrSolver Minimum Requirements: 24GB nvidia 3090 Ubuntu / Debian based system DrChia Harvester Minimum Requirements: ~4GB RAM for every 1PiB of raw disk space Ubuntu / Debian based system More info Up to +413% Rewards: Two compression modes offer a balance between optimal efficiency and optimal cost per eTB for maximum ROI. Enhanced Security: Relies solely on public farmer keys, letting you safeguard your private keys. Effortless Remote GPU Use: Enjoy a streamlined process for submitting proofs and the flexibility to use your GPU remotely with ease. Supporting the Chia Ecosystem: By seamlessly integrating with the official Chia Farmers, DrPlotter plays a part in keeping the Chia network strong and decentralized. Getting started CLI documentation Introduction to DrPlotter Complete instructions for downloading and installing DrPlotter are available on the DrPlotter GitHub page. Abbreviated installation instructions Download the latest DrPlotter software Install the software (this will install drplotter, drsolver, and drchia for the harvester in the /usr/bin/ directory): sudo dpkg -i drplotter_0.12.0_amd64.deb After the installation has completed, the drplotter command will be available. For example, to obtain a list of options, run: drplotter -h Example command The following plotting command will fill the directory with plots. While plotting, you'll see progress and when plots complete: drplotter plot -f -c -d /your/hdd/directory/ --compression In addition to installing and plotting with DrPlotter you will need to: Set your client token Run your DrSolvers Setup and run your DrChia harvester with your existing chia farmer. To ensure proofs are being submitted you can follow this guide","s":"DrPlotter","u":"/plotting-software/","h":"#drplotter","p":2842},{"i":2854,"t":"A third-party GPU plotter, available as a standalone download​ Plot capabilities Type: Compressed or uncompressed Size: k30-34 More info Designed to work with CUDA-class GPUs Creates compressed plots Closed source, has dev fee depending on compression and whether CPU or GPU is used for farming","s":"Gigahorse","u":"/plotting-software/","h":"#gigahorse","p":2842},{"i":2856,"t":"A third-party CPU plotter, included with Chia 2.0​ Plot capabilities Type: Uncompressed only Size: Any Requirements OS: Windows, Mac, or Linux OS (64-bit is required); Intel and ARM (Apple Silicon) are both supported. Memory: Depends on setup, minimum 0.5 GB if single-threaded Temporary Disk: SSD and HDD are supported SSD: fast (NVMe is supported) but consumer-grade SSDs wear out over time, enterprise-grade is recommended HDD: slow, but won't wear out; can plot directly to the final disk GPU: Not used More info Designed to be used in embedded or entry-level systems Can only create uncompressed plots (C0, 101.4 GiB) The use of temporary HDD or SSD storage makes it accessible to the majority of farmers Pipelined performance to max out CPU CLI documentation Example command chia plotters madmax -t -d -f -p -c -k -n ","s":"madMAx","u":"/plotting-software/","h":"#madmax","p":2842},{"i":2858,"t":"The original Chia CPU-based plotter​ Plot capabilities Type: Uncompressed only Size: Any Requirements OS: Windows, Mac, or Linux OS (64-bit is required); Intel and ARM (Apple Silicon) are both supported. Memory: 2 GB min Temporary Disk: SSD and HDD are supported SSD: fast (NVMe is supported) but consumer-grade SSDs wear out over time, enterprise-grade is recommended HDD: slow, but won't wear out; can plot directly to the final disk GPU: Not used More info Originally released pre mainnet, mostly supplanted by newer plotters Slow, single-threaded plotting; parallel plotting and staggering are recommended Designed to be used in embedded or entry-level systems Can only create uncompressed plots (C0, 101.4 GiB) The use of temporary HDD or SSD storage makes it accessible to the majority of farmers Not optimized for performance CLI documentation Example command chia plotters chiapos -t -d -f -p -c -k -n ","s":"ChiaPoS","u":"/plotting-software/","h":"#chiapos","p":2842},{"i":2860,"t":"While BladeBit does come installed with Chia version 2.0, there are a few reasons you might want to run the standalone version instead: You want to run the simulate command, to determine your farm's maximum size You want to test features that have not yet been released in the embedded version Complete instructions for downloading and installing BladeBit are available on the BladeBit GitHub page. Abbreviated installation instructions: Install cmake Clone BladeBit: git clone https://github.com/Chia-Network/bladebit.git && cd bladebit Create and enter a build directory: mkdir -p build && cd build Generate config files: cmake .. Build BladeBit: cmake --build . --target bladebit --config Release After the installation has completed, the bladebit command will be available from the Release directory. For example, to obtain a list of options, run: ./Release/bladebit -h","s":"BladeBit (standalone)","u":"/plotting-software/","h":"#bladebit-standalone","p":2842},{"i":2862,"t":"With so many plotters available, the decision of which one to choose may seem daunting. However, your hardware setup will often make the choice for you. If you have: At least 256 GB of RAM and a CUDA-class GPU with at least 8 GB of VRAM You will likely want BladeBit CUDA Gigahorse will also work Other plotters will under-perform At least 16 GB of RAM (experimental) or at least 128 GB, but less than 256 GB and a CUDA-class GPU with at least 8 GB of VRAM, and a 256 GB or larger SSD (ideally enterprise NVMe) You will likely want BladeBit CUDA Gigahorse will also work Other plotters will under-perform 416 GB of RAM but no GPU BladeBit RAM is easily your best choice Less than 16 GB of RAM and don't mind creating uncompressed plots BladeBit Disk and madMAx are both good options It is always possible, and indeed recommended, to create a plot with a few different plotters to understand how well your system will perform. Once you have a feel for using the different plotters, you can begin plotting in earnest.","s":"Choosing a plotter","u":"/plotting-software/","h":"#choosing-a-plotter","p":2842},{"i":2864,"t":"There is a new chia command for creating plots called plotters. For compatibility, the original command for creating plots chia plots create remains in place, however, this will always use the reference ChiaPoS plotter. In order to use the other plotters, you must use the new chia plotters command. Command line options differ with each plotter, so be sure to check the available options using chia plotters -h or by reading the online CLI documentation. Available plotter values include \"chiapos\", \"bladebit\", and \"madmax\". The UI also has new functionality to support selecting a plotter. Note: Not all features are available for every plotter.","s":"CLI usage","u":"/plotting-software/","h":"#cli-usage","p":2842},{"i":2866,"t":"Pools allow farmers to smooth out their rewards by earning based on proof of space partials, as opposed to winning blocks. Pools require the use of portable plots. These plots are tied to a plot NFT that the farmer must create. This NFT sits on Chia's blockchain, and it allows users to switch between pools. Pools create and spend coinbase transactions, but in Chia's pool protocol they do not actually choose the contents of blocks. This gives more power to farmers and thus decreases the influence of centralized pools. Farmers periodically send partials, which contain a proof of space and a signature, to pools. The pools use these partial proofs to determine how much space the farmers have dedicated, which in turn determines the farmer's portion of the reward when the pool wins a block. When a farmer who is a member of a pool wins a block, 7/8 of the reward goes to the pool, which is later distributed to the participants. The farmer keeps the other 1/8 of the reward. This was an intentional design decision. If a farmer didn't receive a direct reward for creating a block, the operator of a competing pool might have had a financial incentive to join a pool (that they didn't run) with a large number of plots, and neglect to create a block when they found a valid proof, thereby spoiling the competing pool. info For more info, see our Pool Farming page, as well as this site's Pool Protocol page page.","s":"Pools","u":"/pool-architecture/","h":"","p":2865},{"i":2868,"t":"The Chia pool protocol has been designed for security and decentralization. It does not rely on any 3rd party, closed code, or trusted behavior. Some of the protocol's highlights: The farmer can never steal from the pool by double farming. The farmer does not need collateral to join a pool. They only need a wallet with one mojo (and potentially a transaction fee) to create a singleton. The farmer can easily and securely change pools. The farmer can run a full node (increasing decentralization) on low-end hardware, such as a Raspberry Pi 4. The farmer can start a new full node, using only their 24-word seed phrase to log in to Chia's software, and the pooling configuration is detected, without requiring a central server. The farmer chooses which transactions to include from their full node and creates transaction blocks in a decentralized way.","s":"Summary","u":"/pool-protocol/","h":"","p":2867},{"i":2870,"t":"Several things can be customized by pool operators, while still adhering to the protocol. These include: How long the timeout is for leaving the pool How difficulty adjustment happens Fees to take, and how much to pay in blockchain fees How farmers' points are counted when paying (PPS, PPLNS, etc) How farmers receive payouts (XCH, BTC, ETH, etc), and how often What store (DB) is used - by default it's an SQLite db. Users can use their own store implementations, based on AbstractPoolStore, by supplying them to pool_server.start_pool_server What happens (in terms of response) after a successful login The backend architecture of the pool However, some things cannot be changed. These are described in our pool specification, and mostly relate to validation, protocol, and the singleton format for smart coins.","s":"Customization","u":"/pool-protocol/","h":"#customization","p":2867},{"i":2872,"t":"When not pooling, farmers receive signage points from full nodes every 9 seconds, and send these signage points to the harvester. info See the Signage and Infusion Points page for more details. Each signage point is sent along with the sub_slot_iters and difficulty, two network-wide parameters which are adjusted every 4608 blocks (~24 hours). The sub_slot_iters is the number of VDF iterations performed in 10 minutes for the fastest VDF in the network. This increases if the fastest timelord's speed increases. The difficulty is similarly affected by timelord speed (it goes up when timelord speed increases, since blocks come faster), but it's also affected by the total amount of space in the network. These two parameters determine how difficult it is to \"win\" a block and find a proof. info See the Challenges page for more details. Since only about one farmer worldwide finds a proof every 18.75 seconds (two signage points), this means the chances of finding one are tiny, with the default difficulty and sub_slot_iters. For pooling, we increase the sub_slot_iters to a constant, but very high number: 37,600,000,000 (37.6 billion), and then we decrease the difficulty to an artificially lower one, so that proofs can be found more frequently. The farmer communicates with one or several pools through an HTTPS protocol, and sets their own local difficulty for each pool. Then, when sending signage points to the harvester, the pool difficulty and sub_slot_iters are used. This means that the farmer can find proofs very often, perhaps every 10 minutes, even for small farms. These \"partial\" proofs, however, are not sent to the full node to create a block. They are instead only sent to the pool. This means that the other full nodes in the network do not have to see and validate everyone else's proofs, and the network can scale to millions of farmers, as long as the pool scales properly. Only one of a given pool's farmers needs to win a block for the entire pool to be rewarded proportionally to their space. The pool then keeps track of how many proofs (partials) each farmer sends, weighing them by difficulty. Occasionally (for example every three days), the pool can perform a payout to farmers based on how many partials they submitted. Farmers with more space, and thus more points, will get linearly more rewards. Instead of farmers using a pool_public_key when plotting, they now use a puzzle hash, referred to as the p2_singleton_puzzle_hash, also known as the pool_contract_address. These values go into the plot itself, and cannot be changed after creating the plot, since they are hashed into the plot_id. The pool contract address is the address of a chialisp contract called a singleton or plot NFT. The farmer must first create a singleton on the blockchain, which stores the pool information of the pool that that singleton is assigned to. When making a plot, the address of that singleton is used, and therefore that plot is tied to that singleton forever. When a block is found by the farmer, 7/8 of the block reward (the pool portion) go into the singleton. When the farmer claims these funds they are sent directly to the pool's target address. The other 1/8 of the reward, plus transaction fees, are sent directly to the farmer. info The block reward's payout amount will change according to the halving cycle, detailed in the Block Rewards page. However, the 7/8 - 1/8 ratio will always remain the same. The farmer can also configure their payout instructions, so that the pool knows where to send the occasional rewards to. Optionally a farmer can opt out of a pool by updating the singleton and then claiming future rewards for themselves.","s":"Pool Protocol Summary","u":"/pool-protocol/","h":"#pool-protocol-summary","p":2867},{"i":2874,"t":"A partial is a proof of space with some additional metadata and authentication info from the farmer, which meets certain minimum difficulty requirements. Partials must be real proofs of space responding to blockchain signage points, and they must be submitted within the blockchain time window (~28 seconds after the signage point). The pool server: receives partials from the users validates that the partials are correct and correspond to a valid signage point on the blockchain Adds the partials to a queue. A few minutes later, the pool pulls from the queue, and checks that the signage point for that partial is still in the blockchain. If everything is good, the partial is counted as valid, and the points are added for that farmer.","s":"Receiving partials","u":"/pool-protocol/","h":"#receiving-partials","p":2867},{"i":2876,"t":"The pool periodically searches the blockchain for new pool rewards (according to the rewards schedule) that go to the various p2_singleton_puzzle_hashes of each of the farmers. These coins are locked, and can only be spent along with the singleton that they correspond to. The singleton is also locked to a target_puzzle_hash. Anyone can spend the singleton and the p2_singleton_puzzle_hash coin, as long as it's a block reward, and all conditions are met. Some of these conditions require that the singleton always create exactly one new child singleton with the same launcher ID, and that the coinbase funds are sent to the target_puzzle_hash.","s":"Collecting pool rewards","u":"/pool-protocol/","h":"#collecting-pool-rewards","p":2867},{"i":2878,"t":"Periodically (for example once a day), the pool executes a payment loop, going through the recent partials that have been submitted by farmers, and making payouts to some, or all farmers. The exact method for computing balance and payout logic can be customized by the pool operator.","s":"Calculating farmer rewards","u":"/pool-protocol/","h":"#calculating-farmer-rewards","p":2867},{"i":2880,"t":"Note that the coinbase rewards in Chia are divided into two coins: the farmer coin and the pool coin. The farmer coin (1/8 of the reward, plus transaction fees) only goes to the puzzle hash signed by the farmer private key, while the pool coin (7/8 of the reward) goes to the pool. This split of 7/8 - 1/8 exists to deter attacks where one pool tries to destroy another by farming partials, but never submitting winning blocks. If a farmer is not a member of a pool, the farmer coin and the pool coin are both sent directly to the farmer.","s":"1/8 vs 7/8","u":"/pool-protocol/","h":"#18-vs-78","p":2867},{"i":2882,"t":"The difficulty allows the pool operator to control how many partials per day they are receiving from each farmer. The difficulty can be adjusted separately for each farmer. A reasonable target would be 300 partials per day, to ensure frequent feedback to the farmer, and low variability. A difficulty of 1 results in approximately 10 partials per day per k32 plot. This is the minimum difficulty that V1 of the protocol supports. However, a pool may set a higher minimum difficulty for efficiency. When calculating whether a proof is high-quality enough for being awarded points, the pool should use sub_slot_iters=37600000000. If the farmer submits a proof that is not good enough for the current difficulty, the pool should respond by setting the current_difficulty in the response.","s":"Difficulty","u":"/pool-protocol/","h":"#difficulty","p":2867},{"i":2884,"t":"X points are awarded for submitting a partial with difficulty X, which means that points scale linearly with difficulty. For example, 100 TiB of space should yield approximately 10,000 points per day, whether the difficulty is set to 100 or 200. It should not matter what difficulty is set for a farmer, as long as they are consistently submitting partials. The specification does not require pools to pay out proportionally by points, but the payout scheme should be clear to farmers, and points should be acknowledged and accumulated points returned in the response.","s":"Points","u":"/pool-protocol/","h":"#points","p":2867},{"i":2886,"t":"The following is a simple difficulty adjustment algorithm executed by the pool, provided in the reference implementation: Obtain the last successful partial for this launcher id If > 6 hours, divide difficulty by 5 If > 45 minutes < 6 hours, divide difficulty by 1.5 If < 45 minutes: If have < 300 partials at this difficulty, maintain same difficulty Else, multiply the difficulty by (24 * 3600 / (time taken for 300 partials)) Notes: 6 hours is used to handle rare cases where a farmer's storage drops dramatically. The 45 minutes is similar, but for less extreme cases. Finally, the last case of < 45 minutes should properly handle users with increasing space, or slightly decreasing space. This algorithm targets 300 partials per day, but different numbers can be used based on performance and user preference. The pool can also improve this algorithm or change it however they wish. For example the farmer can provide their own suggested_difficulty, and the pool can decide whether to update that farmer's difficulty. The pool should be careful to only accept the latest authentication_public_key when setting difficulty or pool payout info. The initial reference client and pool do not use the suggested_difficulty.","s":"Difficulty adjustment algorithm","u":"/pool-protocol/","h":"#difficulty-adjustment-algorithm","p":2867},{"i":2888,"t":"Note that the payout info can be changed through PUT /farmer. The user can choose where rewards are paid out to, and this does not have to be an XCH address. The pool should ONLY update the payout info for successful partials with the latest seen authentication key for that launcher_id.","s":"Making payments","u":"/pool-protocol/","h":"#making-payments","p":2867},{"i":2890,"t":"Due to the increasing network space (netspace), winning blocks in Chia is a very difficult task, and can take months even years for users with multiple hard drives farming Chia. Pooling can allow you to win consistently, in small amounts. For example, a user earning 2XCH per 20 weeks while solo farming, can instead earn 0.1XCH per week, in a much more consistent schedule. The Chia pooling protocol allows you to assign plots to a \"Plot NFT\", which is kind of like a contract on the blockchain which you control, and in which you can set your currently assigned pool. You can also change the pool that the Plot NFT is assigned to at any time. With the pooling protocol, your farmer will communicate with a specific pool server, and send proofs of space very often to that pool, in order to prove how much plotted space you have. Therefore the pool can keep track of the space of each of its members (the farmers), and whenever one of the members wins a block, the pool can distribute rewards proportional to the amount of space that each farmer contributed. Therefore, pooling is kind of like lottery insurance: all of the members participate in the Chia \"lottery\", and whenever one member wins, the pool gets the reward and distributes it to all of the members, minus a small fee. The reward is divided into two tranches: 7/8 is split among the pool members, and the other 1/8 goes directly to the farmer who won the block.","s":"Pool Farming","u":"/pool-farming/","h":"","p":2889},{"i":2892,"t":"note The official pooling protocol was introduced in verion 1.2 in mid-2021. All plots created before this point, as well as newer plots created with following the pooling protocol, are not eligible for pooling. If you have any of these \"OG\" plots, you can either recreate them using a plot NFT, or co-farm them on the same machine as your official pool plots.","s":"How to Start Pooling in 6 Steps","u":"/pool-farming/","h":"#how-to-start-pooling-in-6-steps","p":2889},{"i":2894,"t":"In order to set up your farm for pooling, you need to have a synced full node and wallet. In the upper-right corner of your wallet, you should see green icons next to FUll NODE and WALLET: info If you want to avoid syncing from genesis, you can download a database checkpoint. For more info, see our blog post on this subject.","s":"Step 1: Sync your full node and wallet","u":"/pool-farming/","h":"#step-1-sync-your-full-node-and-wallet","p":2889},{"i":2896,"t":"To start pooling, you first need a tiny amount of Chia in your wallet. You can ask your friends to send you some mojos (1 mojo is 0.000000000001 XCH), or get some using https://faucet.chia.net/. You can use the receive address on the Tokens page, and you can also create new receive addresses. Any of the receive addresses can be used; they are all part of the same wallet.","s":"Step 2: Receive some XCH","u":"/pool-farming/","h":"#step-2-receive-some-xch","p":2889},{"i":2898,"t":"Once you have some XCH in your wallet, go to the pool tab, and click on \"Add a Plot NFT\". Using the CLI​ You now have two options: Self pooling: this plot NFT will not be connected to any pools, and the 1.75 XCH will go directly into your wallet. This is different than OG (original) plots, since OG plots are locked in to self farming forever. From CLI: chia plotnft create -s local Connect to pool: join a pool, and immediately start pooling, as soon as you make some plots. From CLI: chia plotnft create -s pool -u https://bar.examplepool.org Note that even if you choose 1, you can join a pool later, and you can switch your pool at any moment. If you decide to join a pool, enter the url (must start with https://), and look at the description. If you agree, create the Plot NFT, and wait for it to be confirmed (click only once). It can take several minutes for it to be confirmed and to show up in the Pools tab. You only need 1 plot NFT. Using the GUI​ Click the Pooling icon on the left side of your wallet, and click JOIN A POOL: Select Connect to pool. You will need to enter a valid pool URL. For a list of Chia pools, see chialinks.com. Creating a plot NFT requires an on-chain transaction that will cost one mojo. You are also recommended to enter a blockchain fee. Depending on how busy the network is, a one-mojo fee is typically enough to complete your transaction within a few minutes. If you entered a valid pool URL, the details will pop up. If everything looks acceptable, click CREATE: Your transaction will be pushed to the blockchain. While it is pending, a new screen will appear: After the transaction has been finalized (typically 1-3 minutes), the details of your plot NFT will appear. info A two-word name will automatically be assigned to your plot NFT.","s":"Step 3: Create Plot NFT","u":"/pool-farming/","h":"#step-3-create-plot-nft","p":2889},{"i":2900,"t":"You can now start creating plots for this Plot NFT, which means these plots will be \"pooling\" and can earn rewards more often. Detailed instructions can be found in the \"How to Plot\" page: Plotting from the CLI Plotting from the GUI","s":"Step 4: Add Plots","u":"/pool-farming/","h":"#step-4-add-plots","p":2889},{"i":2902,"t":"You should see your plots in the Pooling dialog. The status should say Pooling. From here, you can see your difficulty, the number of points earned, and how many points the pool thinks you have (points balance). The difficulty is a value that is different for each plot NFT, which determines how hard it is to find a proof for those plots. This will get set automatically so that your plots find proofs very often (every few minutes or hours). Each proof found will award you with difficulty points. Farmers with many plots will have a higher difficulty, to keep disk usage low. Points are a way to count how many proofs your plots found. Each k32 plot will get on average 10 points per day, independent of what the difficulty is. Points are NOT the same as Chia (XCH). Points are just a value that reflects how much farming you have done. Think of it as an accounting tool. It is the responsibility of the pool to periodically reward you with XCH based on how many points you obtain, and then reset your points back to 0. To change pools, click on the CHANGE POOL button and enter the new pool URL. Note that changing pools has a waiting period that can be from a few minutes to an hour or so. Please do not shut down your application while this is happening. You can change pools as many times as you want, and there is no penalty or registration required for doing so. Be aware that if you change pools, your old pool is not obligated to pay you anymore, more than they already have. You should ensure that your points found in the last 24h are accurate. You should be obtaining around 10 points per day per k32, so if you have 100 k32 plots, you should be getting around 1000 points per day. Make sure your points balance is going up. After you get paid, the points balance will reset to zero. Points will come at random times, since finding proofs is still random. Therefore expect a lot of variability and times of both good and bad luck.","s":"Step 5: Manage your Plot NFT","u":"/pool-farming/","h":"#step-5-manage-your-plot-nft","p":2889},{"i":2904,"t":"You are now done. If your points balance is increasing, you are properly pooling, and you should check your pool to see how often payouts happen, and to optionally log in to a pool interface.","s":"Step 6: Wait for Payouts","u":"/pool-farming/","h":"#step-6-wait-for-payouts","p":2889},{"i":2907,"t":"You can have multiple plot NFTs on the same key, and they can all be farmed at the same time. You can also farm original (OG) plots as well.","s":"Multiple Plot NFTs","u":"/pool-farming/","h":"#multiple-plot-nfts","p":2889},{"i":2909,"t":"You can take your 24-word seed phrase and enter it into a different computer, and when it is synched, the current Plot NFTs and pool information will be automatically downloaded from the blockchain. All information about your pool, plot NFTs, and smart contract addresses is completely backed up on the blockchain, and can be recovered using the seed phrase.","s":"Multiple Computers","u":"/pool-farming/","h":"#multiple-computers","p":2889},{"i":2911,"t":"You can also have multiple keys farming at the same time, but be careful with this. Each key has to sync separately, and if you change pools in one computer (computer A), then you must sync up your wallet on computer B in order to farm it separately. If computer B has multiple keys, make sure to sync each key up to the latest changes in the Plot NFT.","s":"Multiple Keys","u":"/pool-farming/","h":"#multiple-keys","p":2889},{"i":2913,"t":"Pool fees refer to the small cut that pools take when they distribute rewards to farmers. Each pool can set their own fee structure.","s":"Pool Fees","u":"/pool-farming/","h":"#pool-fees","p":2889},{"i":2915,"t":"Blockchain fees are paid to the creator of the block (farmers), to incentivize them to include your transaction. If the blockchain is busy, you might have to pay small a small fee to get your transaction included. (Creating a plot NFT and changing pools both require an on-chain transaction.)","s":"Blockchain Fees","u":"/pool-farming/","h":"#blockchain-fees","p":2889},{"i":2917,"t":"If you enter into an invalid state, you need to re-join or change to self-pooling again. This can happen if you close the GUI before a pool switching operation has finalized. Please click \"change pool\", and re-enter the pool URL, or switch to self pooling. Sometimes you might need to wait a bit for the pool switching timeout to finish.","s":"Invalid State","u":"/pool-farming/","h":"#invalid-state","p":2889},{"i":2919,"t":"The block reward is divided into two components, the pool portion (7/8 of the total reward) and the farmer portion (1/8). The pool portion gets paid out to the pool, which will pay you according to their payout schedule. This is configurable in the Pool tab of the GUI: Click the three dots on the upper-right corner of your plot NFT and click \"Edit Payout Instructions.\" This is also configurable in config.yaml in the pool_list section under payout_instructions. The farmer portion will go to your farmer target address. This is configurable in the Farm tab of the GUI, or in config.yaml under farmer.xch_target_address.","s":"Payout addresses","u":"/pool-farming/","h":"#payout-addresses","p":2889},{"i":2921,"t":"If you are self-pooling, you will additionally need to claim your rewards after winning a block. This can be done from the GUI or CLI as well. There is no time limit for this, but if you do not claim your rewards before switching to a pool, the pool will be able to claim those rewards, and you will lose these funds.","s":"Self Pooling","u":"/pool-farming/","h":"#self-pooling","p":2889},{"i":2923,"t":"Remote harvesters work the same way as always. They do not need to have any keys, and you can plot directly on another machine with the -f and -c arguments. The farmer machine needs to have the private key for the -f key, and the private key for the wallet that created the plot NFT. Your harvesters will find proofs more often when pooling, since the difficulty is lower. Remote harvester plots will now be visible by doing chia farm summary.","s":"Remote Harvesters","u":"/pool-farming/","h":"#remote-harvesters","p":2889},{"i":2925,"t":"Using the CLI, you can perform the same operations as with the GUI. There is a new command, called chia plotnft. Type chia plotnft -h to see all the available sub-commands: » chia plotnft -h Usage: chia plotnft [OPTIONS] COMMAND [ARGS]... Options: -h, --help Show this message and exit. Commands: claim Claim rewards from a plot NFT create Create a plot NFT get_login_link Create a login link for a pool. To get the launcher id, use plotnft show. inspect Get Detailed plotnft information as JSON join Join a plot NFT to a Pool leave Leave a pool and return to self-farming show Show plotnft information To create a Plot NFT, run: chia plotnft create -u Be sure to change to the URL of the pool you want to use. To create a plot NFT in self-farming mode, run: chia plotnft create -s local To switch pools, you can run: chia plotnft join To leave a pool (switch to self farming), run: chia plotnft leave To view the status of your Plot NFT, run: chia plotnft show","s":"Command Line Interface","u":"/pool-farming/","h":"#command-line-interface","p":2889},{"i":2928,"t":"A plot NFT (Non Fungible Token), is a smart coin or token on the blockchain, which allows a user to manage their membership in a pool. Users can assign the plot NFT to any pool they want, at any point. When plotting, a plot NFT can be selected, and the plot will be tied to that plot NFT forever. NFTs are \"non-fungible\" because they are not interchangeable; each plot NFT represents a unique pool contract.","s":"What is a plot NFT?","u":"/pool-farming/","h":"#what-is-a-plot-nft","p":2889},{"i":2930,"t":"Each plot NFT you create will require 1 mojo (1 trillionth of a XCH) + transaction fee. For switching pools, you need to pay only a transaction fee. For those who don't have any XCH, you can get 100 mojos from Chia's official faucet: https://faucet.chia.net/","s":"Will I need pay XCH to create a plot NFT or switch pools?","u":"/pool-farming/","h":"#will-i-need-pay-xch-to-create-a-plot-nft-or-switch-pools","p":2889},{"i":2932,"t":"Yes. The farmer will support both OG plots and portable plots on one machine. The OG plots will not be affected in any way by the plot NFTs or new plots that you create.","s":"Can I farm with both OG (original) plots and portable plots?","u":"/pool-farming/","h":"#can-i-farm-with-both-og-original-plots-and-portable-plots","p":2889},{"i":2934,"t":"First you will create a Plot NFT (devs call this singleton in their code) in the new pools tab in the GUI. When you create a new portable plot, you must assign it a specific Plot NFT (for those using CLI, this replaces the Pool Public Key -p with a Pool Contract Address -c). All plots created with the same Plot NFT can then be assigned to a pool for farming. You can have many plot NFTs on the same key.","s":"How do I assign portable plots to a pool?","u":"/pool-farming/","h":"#how-do-i-assign-portable-plots-to-a-pool","p":2889},{"i":2936,"t":"A user can have one or more keys on a machine running Chia. A key is represented by the private information (24 words) and the public identifier called the fingerprint. When using the GUI or the CLI, you can only log in to one key at a time. Each key must be synced separately, and you can check if it is synced by clicking on the \"wallet\" tab. Each key can also have 1 or more wallets associated with it. The standard wallet, which controls your Chia, is created by default. You can also create as many Plot NFTs as you want, which are also wallets, and each have their own \"wallet id\" as well, and they are tied to the key that you used to create them. In the CLI, you use both fingerprint and wallet_id to perform operations on Plot NFTs, which represent the key and wallet ID for that Plot NFT.","s":"What is the difference between a \"Key\" and a \"Wallet\" in the Chia GUI and CLI?","u":"/pool-farming/","h":"#what-is-the-difference-between-a-key-and-a-wallet-in-the-chia-gui-and-cli","p":2889},{"i":2938,"t":"Chia has three major differences from most other crypto pooling protocol: Joining pools is permissionless. You do not need to sign up to an account on a pool server before joining. Farmers receive 1/8 of the block reward plus transaction fees, while the pool receives 7/8 of the reward to redistribute (minus pool fees) amongst all pool participants. The farmer with the winning proof will farm the block, not the pool server.","s":"How is Chia pooling different from other cryptos?","u":"/pool-farming/","h":"#how-is-chia-pooling-different-from-other-cryptos","p":2889},{"i":2940,"t":"If you have experience writing pool server code for another crypto, adapting that pool code with Chia's reference pool code will be straight forward. We only recommend people who have good OPSEC and business experience to run public pool servers. Depending what country you operate your pooling business, you may be subject to tax, AML and KYC laws specific to your jurisdiction. All pools will be targeted by hackers due to the profitability of XCH and you may be legally liable if you have any losses.","s":"How can I start my own pool?","u":"/pool-farming/","h":"#how-can-i-start-my-own-pool","p":2889},{"i":2942,"t":"A crypto community site lists all upcoming Chia pools: https://miningpoolstats.stream/chia","s":"Where can I find a list of Chia pools?","u":"/pool-farming/","h":"#where-can-i-find-a-list-of-chia-pools","p":2889},{"i":2944,"t":"You can only advertise your pool in Discord #Promote-community-projects once a day. If you're spammy, mods will warn you and then ban you if you persist.","s":"Can I advertise my pool in Discord?","u":"/pool-farming/","h":"#can-i-advertise-my-pool-in-discord","p":2889},{"i":2946,"t":"We want there to be a healthy ecosystem of competing pools with no privileged official one having an unfair advantage over the others.","s":"Why doesn't Chia run their own official pool?","u":"/pool-farming/","h":"#why-doesnt-chia-run-their-own-official-pool","p":2889},{"i":2948,"t":"We are not going to allow pools to use \"Chia\" as the first word or its equivalent (the Chia pool). You can say things like \"a Chia pool\" though that will probably need a free and easy to get license. Go to https://www.chia.net/terms/ to get more information on obtaining a license.","s":"Can I name my pool chiapool.com?","u":"/pool-farming/","h":"#can-i-name-my-pool-chiapoolcom","p":2889},{"i":2950,"t":"No, Chia's pooling protocol is designed where the blocks are farmed by individual farmer, but the pooling rewards go to the pool operator's wallet. This ensures that even if a pool has 51% netspace, they would also need to control ALL of the farmer nodes (with the 51% netspace) to do any malicious activity. This will be very difficult unless ALL the farmers (with the 51% netspace) downloaded the same malicious Chia client programmed by a Bram like level genius.","s":"If a pool gets 51% of netspace, can they take over the network?","u":"/pool-farming/","h":"#if-a-pool-gets-51-of-netspace-can-they-take-over-the-network","p":2889},{"i":2952,"t":"Join our dedicated Discord Friendly reminder: do NOT at @ or Direct Message (DM) developers or mods. Just post your questions in Discord and we will answer when we have a moment.","s":"I have more questions, where do I ask?","u":"/pool-farming/","h":"#i-have-more-questions-where-do-i-ask","p":2889},{"i":2955,"t":"You can find it here: https://github.com/Chia-Network/pool-reference. The README contains an explanation of how it works, and the specification contains details of how to implement it.","s":"Where can I see the Chia Pool Reference Code?","u":"/pool-farming/","h":"#where-can-i-see-the-chia-pool-reference-code","p":2889},{"i":2957,"t":"Python","s":"What programming language is the reference pool code written in?","u":"/pool-farming/","h":"#what-programming-language-is-the-reference-pool-code-written-in","p":2889},{"i":2959,"t":"If you've written pool code before, the reference pool code will be easy to understand. It's just replacing PoW concepts with Chia's method of evaluating each farmer's participation via PoST and adapting collection and distribution of XCH using Chia's smart contracts.","s":"How hard is it to adapt Chia's reference pool code to my pool code?","u":"/pool-farming/","h":"#how-hard-is-it-to-adapt-chias-reference-pool-code-to-my-pool-code","p":2889},{"i":2961,"t":"If it's your first time writing pool code, we recommend you look at established BTC or ETH pools source code and features they provide users. You are likely going to compete with big time pool operators from those crypto communities who will provide feature rich pools for Chia on day one. Examples of features: leaderboards, wallet explorer, random prizes, tiered pool fees, etc.","s":"I am a programmer, but never wrote pool code, will I be able to run a pool with Chia's reference pool code?","u":"/pool-farming/","h":"#i-am-a-programmer-but-never-wrote-pool-code-will-i-be-able-to-run-a-pool-with-chias-reference-pool-code","p":2889},{"i":2963,"t":"puzzle_hash: an address but in a different format. Addresses are human readable. singleton: a smart coin (contract) that guaranteed to be unique and controlled by the user. launcher_id: unique ID of the singleton. points: represent the amount of farming that a farmer has done. It is calculated by number of proofs submitted, weighted by difficulty. One k32 farms 10 points per day. To accumulate 1000 points you need 10 TiB farming for a day. This is equivalent to shares in PoW pools.","s":"Variable names used in pooling code","u":"/pool-farming/","h":"#variable-names-used-in-pooling-code","p":2889},{"i":2965,"t":"A farmer's space can be estimated by the number of points submitted over each unit of time, or points/second. Each k32 gets on average 10 points per day. So 10 / 86400 = 0.0001157 points/second for each plot. Per byte, that is L = 0.0001157 / 108884400275 = 1.06259482265 * 10^-15. To calculate total space S, take the total number of points found P, and the time period in seconds T and do S = P / (L*T). For example for 340 points in 6 hours, use P=340, T=21600, L=1.06259482265e-15, S = 340/(21600*1.06259482265e-15) = 14,813,492,786,900 bytes. Dividing by 1024^4 we get 13.4727932044 TiB. info Note that this calculation is based on the new constant space factor estimation of 0.78005, as detailed in the space factor table.","s":"How does one calculate a farmer's space?","u":"/pool-farming/","h":"#how-does-one-calculate-a-farmers-space","p":2889},{"i":2967,"t":"As difficulty goes up, a farmer does less lookups and finds less proofs, but does not receive more points per unit of time. Imagine this scenario: Obtaining 10 proofs a day with difficulty 1 for a k32, is equivalent to obtaining 1 proof a day with difficulty 10. As a pool server, you prefer to receive 1 proof a day per K32 with difficulty 10. This is why we allow pool servers to set a minimum difficulty level to reduce the number of proofs each farmer needs to send to prove their space.","s":"How does difficulty affect farmer's space calculation?","u":"/pool-farming/","h":"#how-does-difficulty-affect-farmers-space-calculation","p":2889},{"i":2969,"t":"The farmer will provide their launcher_id which is the ID of that farmer's pool group. The pool also verifies the proof of space and the farmer's signature, to make sure that only real farmers are compensated.","s":"How do you identify the farmer that submitted partial proofs?","u":"/pool-farming/","h":"#how-do-you-identify-the-farmer-that-submitted-partial-proofs","p":2889},{"i":2971,"t":"Yes, the pool operator will need to write code to keep track of all farmers and their share of rewards. Chia's pool protocol assumes no registration is needed to join a pool, so every launcher_id that submits a valid partial proof needs to be tracked by the pool server.","s":"Will pool servers need to keep track of all farmers and their share of rewards?","u":"/pool-farming/","h":"#will-pool-servers-need-to-keep-track-of-all-farmers-and-their-share-of-rewards","p":2889},{"i":2973,"t":"There are a few things you can do to the singleton: Change pool (needs owner signature) Escape pool, this is announcing that you will change pool (needs owner signature) Claim rewards (does not need any signature, it goes to the specified address in the singleton)","s":"What actions can singleton take?","u":"/pool-farming/","h":"#what-actions-can-singleton-take","p":2889},{"i":2975,"t":"Farmer joins a pool, they will assign their singleton to the pool_puzzle_hash. When a farmer wins a block, the pool rewards will be sent to the p2_singleton_puzzle_hash. Pool will scan blockchain to find new rewards sent to Farmer's singletons. The pool will send a request to claim rewards to the winning Farmer's singleton. Farmer's singleton will send pool rewards XCH to pool_puzzle_hash. Pool will periodically distribute rewards to farmers that have points","s":"How do pools collect rewards?","u":"/pool-farming/","h":"#how-do-pools-collect-rewards","p":2889},{"i":2977,"t":"The number of partials received is the only thing the pool is aware of, the pool does not know the exact total space of the farmer. The space can be computed using the fact that each k32 plot will earn on average 10 points a day, on mainnet. That means if the difficulty is set to 1, that's 10 partials per day, if the difficulty is 10, 1 partial per day per k32 plot.","s":"How can I tell if the server is receiving enough partials from a particular client?","u":"/pool-farming/","h":"#how-can-i-tell-if-the-server-is-receiving-enough-partials-from-a-particular-client","p":2889},{"i":2979,"t":"The 10 points per day per k32 plot only applies to mainnet, which has a DIFFICULTY_CONSTANT_FACTOR of 2^67. To get the points per day per k32 on testnet, divide 2^67 by the testnet DIFFICULTY_CONSTANT_FACTOR, found in config.yaml, and multiply by 10. This allows participating easily with k25s on testnet.","s":"Why am I receiving more points in testnet than mainnet?","u":"/pool-farming/","h":"#why-am-i-receiving-more-points-in-testnet-than-mainnet","p":2889},{"i":2981,"t":"Look at the file win_simulation.py on this repo. This uses the function _expected_plot_size from chia-blockchain, which uses the formula: ((2 * k) + 1) * (2 ** (k - 1)) to compute plot size. Plug in your k values and divide.","s":"What is the expected ratio between a k32 and a k25?","u":"/pool-farming/","h":"#what-is-the-expected-ratio-between-a-k32-and-a-k25","p":2889},{"i":2983,"t":"Look at the win_simulation.py file.","s":"How to calculate how many partials with X difficulty a certain plot with Y size can get in Z time?","u":"/pool-farming/","h":"#how-to-calculate-how-many-partials-with-x-difficulty-a-certain-plot-with-y-size-can-get-in-z-time","p":2889},{"i":2985,"t":"No, you can only use plots created for mainnet in mainnet, and same for testnet.","s":"Can I use testnet pooling plots on mainnet?","u":"/pool-farming/","h":"#can-i-use-testnet-pooling-plots-on-mainnet","p":2889},{"i":2987,"t":"Forks of Chia can easily use these pooling plots by sending the 1.75XCH to the farmer target address, making them all solo plots. If the alternate blockchain wants to do pooling as well, they need to create a special transaction which reserves a singleton by providing the launcher_id, and launcher spend (including owner signature). Then the code can automatically assign this singleton to the user who submitted it.","s":"Does that mean that forks of Chia cannot use these pooling plots?","u":"/pool-farming/","h":"#does-that-mean-that-forks-of-chia-cannot-use-these-pooling-plots","p":2889},{"i":2989,"t":"Generally, speaking, yes, because the payment system is managed by the pool operator, not the blockchain. We recommend pool operators new to this space opt for something less risky, such a PPLNS, however on a technical level you can leverage any payment system you want, as the code to do so is managed on your side (this is assuming you are extensively adding on to the reference code or building your own from the ground up as is suggested). However, if you want to opt for something like FPPS/PPS, you need to be aware of the fact that something like a \"dead weight\" attack, (which is possible on other chain protocols as well), can be executed in Chia by a malicious actor willing to sacrifice large sums of revenue in favor of harming your pool's variance ratio against vs standardized payout plan, potentially running you into the red. It is for this reason we advise against FPPS/PPS systems, unless you have extensive experience running these pools and how to build mitigations around it to help ensure your stability against variance.","s":"Does the pooling system support all of the various payment methods used in other blockchain pools?","u":"/pool-farming/","h":"#does-the-pooling-system-support-all-of-the-various-payment-methods-used-in-other-blockchain-pools","p":2889},{"i":2991,"t":"There are a few API methods that a pool needs to support. They are documented here: https://github.com/Chia-Network/pool-reference/blob/main/SPECIFICATION.md","s":"What are the API methods a pool server needs to support Chia clients?","u":"/pool-farming/","h":"#what-are-the-api-methods-a-pool-server-needs-to-support-chia-clients","p":2889},{"i":2993,"t":"For those interested in the Chia Pools for Pool Operators video and presentation, you can find it here: https://youtu.be/XzSZwxowPzw https://www.chia.net/assets/presentations/2021-06-02_Pooling_for_Pool_Operators.pdf","s":"Where can I see the video Technical Q&A on Chia Pooling:","u":"/pool-farming/","h":"#where-can-i-see-the-video-technical-qa-on-chia-pooling","p":2889},{"i":2995,"t":"In this lesson, we review the Pooling protocol, and how it can benefit a Farmer starting out.","s":"Pools","u":"/pools/","h":"","p":2994},{"i":2997,"t":"Benefits of Pooling: Understand the benefits of participating in a Pool. Reward Splitting: Understand how the rewards are split among pool participants.","s":"Learning objectives","u":"/pools/","h":"#learning-objectives","p":2994},{"i":3000,"t":"Expand for the full script 0:00 Pools are a great way to get started with Farming. Pooling allows farmers to smooth out their rewards by earning based on proof of space partials, as opposed to winning blocks. 0:20 A Proof of Space partial contains some additional metadata about the farmer that lets the Pool distribute shared rewards based on relative farm size. The more valid partials a farmer generates, the larger their share of the reward. When a submitted proof of space wins, the farmer that generated it still retains the right to farm the block, and processes it themselves. 0:40 In return, they receive 1/8 the value of the reward, while the remaining 7/8 is distributed to the rest of the pool, based on valid partials. Because the block is still farmed by an individual farmer, the network remains sufficiently decentralized. 1:00 The overall reward earned is largely the same over time for average sized farms, so Pooling is a great choice to get started.","s":"Script","u":"/pools/","h":"#script","p":2994},{"i":3002,"t":"Farming size still matters: The size of a Farm directly relates to how many valid partials are generated, and partials determine a farmers share of the pool reward (7/8). This means there is still a benefit to large farms joining a pool.","s":"Common gotchas","u":"/pools/","h":"#common-gotchas","p":2994},{"i":3004,"t":"Question 1 - Reward Split What is the reward split between the Farmer and the Pool? Answer (expand when ready to see the answer) 1/8 goes to the Farmer who won the challenge, 7/8 goes to the pool to be distributed Question 2 - Decentralized Pooling How does the protocol maintain decentralization? Answer (expand when ready to see the answer) By letting the Farmers process and author blocks, the network remains decentralized. Since the pool has no way of knowing which Farmer will win, and does not have a say on which transactions will be included in the block.","s":"Knowledge check","u":"/pools/","h":"#knowledge-check","p":2994},{"i":3007,"t":"More farming basics: overviews of plotting, pooling, and rewards. In depth architecture overview: describing the interactions between Farmers, Harvesters, Wallets, etc. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/pools/","h":"#links","p":2994},{"i":3009,"t":"In this lesson, we talk about what a primitive is, and how it can be used.","s":"Primitives Overview","u":"/primitives-overview/","h":"","p":3008},{"i":3011,"t":"Primitives: Recognize the basic Chia primitives. Open-Source: Understand how open-source improves Chia through community involvement.","s":"Learning objectives","u":"/primitives-overview/","h":"#learning-objectives","p":3008},{"i":3014,"t":"Expand for the full script 0:00 Primitives are what we call commonly used structures in Chialisp. They are essentially features that are specifically supported with native methods in our various libraries, and have defined structures to ensure compatibility. 0:20 These Primitives include features commonly found in other blockchains such as NFTs and DIDs, but also include unique features such as CATs, Offers, Clawback, and Verifiable Credentials. These primitives are the building blocks to creating efficient blockchain powered applications. 0:40 Each primitive represents a Chialisp puzzle that adheres to the current standard for that feature. These standards are submitted and can be modified by the community through the CHIP process, whereby new features, or modifications to existing primitives can be submitted and reviewed by community members, in keeping with the open-source nature of the Chia Blockchain. 1:00 Many of our unique primitives have come out of this process and it ensures that as development matures, the blockchain will evolve to satisfy the needs of developers in a multitude of use-cases.","s":"Script","u":"/primitives-overview/","h":"#script","p":3008},{"i":3016,"t":"Primitives as Standards: Primitives are pre-defined features that adhere to certain standards agreed upon by the community. That does not mean that custom bespoke features cannot be developed or used for a specific use-case, even if it is not widely used. Chialisp allows any developer to create custom puzzles that map to their specific use-case, if an existing primitive does not quite fit.","s":"Common gotchas","u":"/primitives-overview/","h":"#common-gotchas","p":3008},{"i":3018,"t":"Question 1 - Features True or False; Primitives are standardized features of the Chia Blockchain. Answer (expand when ready to see the answer) True. Primitives are what we call features that have defined standards, as agreed upon by the community. Question 2 - CHIPs? What does CHIP stand for? Answer (expand when ready to see the answer) CHIP stands for CHia Improvement Proposal. It is a way for the community of developers to propose new features, or changes to existing features. Question 3 - Custom Features True or False; Developers should only use pre-defined primitives. Answer (expand when ready to see the answer) False. Primitives are meant to provide common and useful building blocks that are flexible to cover many use-cases. However, there may be instances where the existing primitives don't provide the needed functionality and a custom puzzle will be needed.","s":"Knowledge check","u":"/primitives-overview/","h":"#knowledge-check","p":3008},{"i":3021,"t":"More about primitives: guides for each primitive, and how to use them. Chialisp detailed documentation: detailed information on all aspects of chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/primitives-overview/","h":"#links","p":3008},{"i":3023,"t":"This is the initial version of the Chia Pool Protocol. It is designed to be simple, and to be extended later. It relies on farmers having smart coins (referred to as plot NFTs in GUI + CLI) which allow them to switch between pools by making transactions on the blockchain. Furthermore, it decreases the reliance on pools for block production, since the protocol only handles distribution of rewards, and it protects against pools or farmers acting maliciously.","s":"11.2 Chia Pool Protocol 1.0 Specification","u":"/pool-protocol-specification/","h":"","p":3022},{"i":3025,"t":"The pool must ensure that partials arrive quickly, faster than the 28-second time limit of inclusion into the blockchain. This allows farmers that have slow setups to detect issues. The Pool server must check that the pool_contract_puzzle_hash a.k.a. p2_singleton_puzzle_hash matches the puzzle that they expect. Otherwise, the pool has no guarantee that users will not attempt to claim block rewards for themselves, and immediately leave the pool, something that the provided smart contract prevents. The Chia client must only connect to the pool configuration URL via HTTPS over TLS >= 1.2. This is to prevent session hijacking, leading to user funds being stolen.","s":"Security considerations","u":"/pool-protocol-specification/","h":"#security-considerations","p":3022},{"i":3027,"t":"The parties involved in the pool protocol are the pool operator and farmers. Each farmer is running a farmer process, and any number of harvester processes connected to that farmer process. The full node can either be run by the farmer (the default in the Chia GUI application), or run by the pool operator. If the farmer does not want to run a full node, they can configure their node to connect to a remote full node. A pool operator can support any number of farmers.","s":"Parties","u":"/pool-protocol-specification/","h":"#parties","p":3022},{"i":3029,"t":"A farmer can be uniquely identified by the identifier of the farmer's singleton on the blockchain, this is what launcher_id refers to. The launcher_id can be used as a primary key in a database. The pool must periodically check the singleton's state on the blockchain to validate that it's farming to the pool, and not leaving or farming to another pool.","s":"Farmer identification","u":"/pool-protocol-specification/","h":"#farmer-identification","p":3022},{"i":3031,"t":"For the farmer to authenticate to the pool the following time based authentication token scheme must be added to the signing messages of some endpoints. authentication_token = current_utc_minutes / authentication_token_timeout Where authentication_token_timeout is a configuration parameter of the pool which is also included in the GET /pool_info response that must be respected by the farmer. Whereas current_utc_minutes is the local UTC timestamp in minutes at the moment of signing. The local clock should ideally be in sync with a time synchronization protocol e.g., NTP. The authentication token is usually included in a signed payload.","s":"Farmer authentication","u":"/pool-protocol-specification/","h":"#farmer-authentication","p":3022},{"i":3033,"t":"The pool protocol consists of several HTTPS endpoints which return JSON responses. The HTTPS server can run on any port, but must be running with TLS enabled (using a CA approved certificate), and with pipelining enabled. All bytes values are encoded as hex with optional 0x in front. Clients are also expected to run with pipelining.","s":"HTTPS Endpoints Summary","u":"/pool-protocol-specification/","h":"#https-endpoints-summary","p":3022},{"i":3035,"t":"A failed endpoint will always return a JSON object with an error code and an english error message as shown below: { \"error_code\": 0, \"error_message\": \"\" } The following errors may occur: Error code Description 0x01 The provided signage point has been reverted 0x02 Received partial too late 0x03 Not found 0x04 Proof of space invalid 0x05 Proof of space not good enough 0x06 Invalid difficulty 0x07 Invalid signature 0x08 Web-Server raised an exception 0x09 Invalid puzzle hash 0x0A Farmer not known 0x0B Farmer already known 0x0C Invalid authentication public key 0x0D Invalid payout instructions 0x0E Invalid singleton 0x0F Delay time too short 0x10 Request failed","s":"Error codes","u":"/pool-protocol-specification/","h":"#error-codes","p":3022},{"i":3037,"t":"Most of the endpoints require signature validation. The validation requires serialization of the endpoints payloads to calculate the message hash which is done like: message_hash = sha256(serialized_payload) The serialized payload must follow the format defined in the Streamable class.","s":"Signature validation","u":"/pool-protocol-specification/","h":"#signature-validation","p":3022},{"i":3039,"t":"The pool URL is the url that farmers use to connect to the pool. The subdomains, port, and path are optional. The client will use 443 if there is no port. Note that the trailing slash must NOT be present. Everything must be lower case. https://subdomain.domain.tld:port/path","s":"Pool URL","u":"/pool-protocol-specification/","h":"#pool-url","p":3022},{"i":3041,"t":"This takes no arguments, and allows clients to fetch information about a pool. It is called right before joining a pool, when the farmer enters the pool URL into the client. This allows the farmer to see information about the pool, and decide whether or not to join. It also allows the farmer to set the correct parameters in their singleton on the blockchain. Warning to client implementers: if displaying any of this information, make sure to account for malicious scripts and JS injections. It returns a JSON response with the following data: { \"description\": \"(example) The Reference Pool allows you to pool with low fees, paying out daily using Chia.\", \"fee\": 0.01, \"logo_url\": \"https://www.chia.net/img/chia_logo.svg\", \"minimum_difficulty\": 10, \"name\": \"The Reference Pool\", \"protocol_version\": 1, \"relative_lock_height\": 100, \"target_puzzle_hash\": \"0x344587cf06a39db471d2cc027504e8688a0a67cce961253500c956c73603fd58\", \"authentication_token_timeout\": 5 } description​ The description is a short paragraph that can be displayed in GUIs when the farmer enters a pool URL. fee​ The fee that the pool charges by default, a number between 0.0 (0.0%) and 1.0 (100.0%). This does not include blockchain transaction fees. logo_url​ A URL for a pool logo that the client can display in the UI. This is optional for v1.0. minimum_difficulty​ The minimum difficulty that the pool supports. This will also be the default that farmers start sending proofs for. name​ Name of the pool, this is only for display purposes and does not go on the blockchain. protocol_version​ The pool protocol version supported by the pool. relative_lock_height​ The number of blocks (confirmations) that a user must wait between the point when they start escaping a pool, and the point at which they can finalize their pool switch. Must be less than 4608 (approximately 24 hours). target_puzzle_hash​ This is the target of where rewards will be sent to from the singleton. Controlled by the pool. authentication_token_timeout​ The time in minutes for an authentication_token to be valid, see Farmer authentication.","s":"GET /pool_info","u":"/pool-protocol-specification/","h":"#get-pool_info","p":3022},{"i":3043,"t":"Get the latest information for a farmer. Request parameter: - launcher_id - authentication_token - signature Example request: https://poolurl.com/farmer/launcher_id=:launcher_id&authentication_token=:token&signature=:signature Successful response: { \"authentication_public_key\": \"0x970e181ae45435ae696508a78012dc80548c334cf29676ea6ade7049eb9d2b9579cc30cb44c3fd68d35a250cfbc69e29\", \"payout_instructions\": \"0xc2b08e41d766da4116e388357ed957d04ad754623a915f3fd65188a8746cf3e8\", \"current_difficulty\": 10, \"current_points\": 10 }","s":"GET /farmer","u":"/pool-protocol-specification/","h":"#get-farmer","p":3022},{"i":3045,"t":"launcher_id​ The unique identifier of the farmer's singleton, see Farmer identification. authentication_token​ See Farmer authentication for the specification of authentication_token. signature​ This is a BLS signature of the hashed serialization of the following data in the given order: Element Type method_name string launcher_id bytes32 target_puzzle_hash bytes32 authentication_token uint64 where method_name must be the serialized string \"get_farmer\", the parameters must be serialized and hashed according to Signature validation and the signature must be signed by the private key of the authentication_public_key using the Augmented Scheme in the BLS IETF spec. where the parameter must be serialized and hashed according to Signature validation and the signature must be signed by the private key of the authentication_public_key using the Augmented Scheme in the BLS IETF spec. Note: The pool MUST return the current points balance, which is the total number of points found since the last payout for that user.","s":"Parameter","u":"/pool-protocol-specification/","h":"#parameter","p":3022},{"i":3047,"t":"Register a farmer with the pool. This is required once before submitting the first partial. Request: { \"payload\": { \"launcher_id\": \"0xae4ef3b9bfe68949691281a015a9c16630fc8f66d48c19ca548fb80768791afa\", \"authentication_token\": 27062279, \"authentication_public_key\": \"0x970e181ae45435ae696508a78012dc80548c334cf29676ea6ade7049eb9d2b9579cc30cb44c3fd68d35a250cfbc69e29\", \"payout_instructions\": \"0xc2b08e41d766da4116e388357ed957d04ad754623a915f3fd65188a8746cf3e8\", \"suggested_difficulty\": 10 }, \"signature\": \"0xa078dc1462bbcdec7cd651c5c3d7584ac6c6a142e049c7790f3b0ee8768ed6326e3a639f949b2293469be561adfa1c57130f64334994f53c1bd12e59579e27127fbabadc5e8793a2ef194a5a22ac832e92dcb6ad9a0d33bd264726f6e8df6aad\" } Successful response: { \"welcome_message\": \"Welcome to the reference pool. Happy farming.\" } A successful response must always contain a welcome message which must be defined by the pool. payload​ payload.launcher_id​ The unique identifier of the farmer's singleton, see Farmer identification. payload.authentication_token​ See Farmer authentication for the specification of authentication_token. payload.authentication_public_key​ The public key of the authentication key, which is a temporary key used by the farmer to sign requests to the pool. It is authorized by the owner_key, so that the owner key can be kept more secure. The pool should reject requests made with outdated authentication_keys. These key can be changed using PUT /farmer, which is signed with the owner key. payload.payout_instructions​ These are the instructions for how the farmer wants to get paid. By default this will be an XCH address, but it can be set to any string with a size of less than 1024 characters, so it can represent another blockchain or payment system identifier. payload.suggested_difficulty​ A request from the farmer to update the difficulty. Can be ignored or respected by the pool. However, this should only be respected if the authentication public key is the most recent one seen for this farmer. See Difficulty for more details about the impact of the difficulty. signature​ This is a BLS signature of the hashed serialization of the payload: sha256(PostFarmerPayload) signed by the private key of the owner_public_key using the Augmented Scheme in the BLS IETF spec. See the streamable class PostFarmerPayload in the pool protocol and Farmer authentication for the specification of authentication_token.","s":"POST /farmer","u":"/pool-protocol-specification/","h":"#post-farmer","p":3022},{"i":3049,"t":"Allows farmers to update their information on the pool. Request: { \"payload\": { \"launcher_id\": \"0xae4ef3b9bfe68949691281a015a9c16630fc8f66d48c19ca548fb80768791afa\", \"authentication_token\": 27062279, \"authentication_public_key\": \"0x970e181ae45435ae696508a78012dc80548c334cf29676ea6ade7049eb9d2b9579cc30cb44c3fd68d35a250cfbc69e29\", \"payout_instructions\": \"0xc2b08e41d766da4116e388357ed957d04ad754623a915f3fd65188a8746cf3e8\", \"suggested_difficulty\": 10 }, \"signature\": \"0xa078dc1462bbcdec7cd651c5c3d7584ac6c6a142e049c7790f3b0ee8768ed6326e3a639f949b2293469be561adfa1c57130f64334994f53c1bd12e59579e27127fbabadc5e8793a2ef194a5a22ac832e92dcb6ad9a0d33bd264726f6e8df6aad\" } For a description of the request body entries see the corresponding keys in POST /farmer. The values provided with the key/value pairs are used to update the existing values on the server. All entries, except launcher_id, are optional but there must be at least one of them. See the streamable class PutFarmerPayload in the pool protocol for details and Farmer authentication for the specification of authentication_token. Successful response: { \"authentication_public_key\": true, \"payout_instructions\": true, \"suggested_difficulty\": true } A successful response must always contain one key/value pair for each entry provided in the request body. The value must be true if the entry has been updated or false if the value was the same as the current value. See below for an example body to only update the authentication key: Example to update authentication_public_key: { \"payload\": { \"launcher_id\": \"0xae4ef3b9bfe68949691281a015a9c16630fc8f66d48c19ca548fb80768791afa\", \"authentication_public_key\": \"0x970e181ae45435ae696508a78012dc80548c334cf29676ea6ade7049eb9d2b9579cc30cb44c3fd68d35a250cfbc69e29\" }, \"signature\": \"0xa078dc1462bbcdec7cd651c5c3d7584ac6c6a142e049c7790f3b0ee8768ed6326e3a639f949b2293469be561adfa1c57130f64334994f53c1bd12e59579e27127fbabadc5e8793a2ef194a5a22ac832e92dcb6ad9a0d33bd264726f6e8df6aad\" }","s":"PUT /farmer","u":"/pool-protocol-specification/","h":"#put-farmer","p":3022},{"i":3051,"t":"This is a partial submission from the farmer to the pool operator. Request: { \"payload\": { \"launcher_id\": \"0xae4ef3b9bfe68949691281a015a9c16630fc8f66d48c19ca548fb80768791afa\", \"authentication_token\": 27062279, \"proof_of_space\": { \"challenge\": \"0xe0e55d45eef8d53a6b68220abeec8f14f57baaa80dbd7b37430e42f9ac6e2c0e\", \"pool_contract_puzzle_hash\": \"0x9e3e9b37b54cf6c7467e277b6e4ca9ab6bdea53cdc1d79c000dc95b6a3908a3b\", \"plot_public_key\": \"0xa7ad70989cc8f18e555e9b698d197cdfc32465e0b99fd6cf5fdbac8aa2da04b0704ba04d2d50d852402f9dd6eec47a4d\", \"size\": 32, \"proof\": \"0xb2cd6374c8db249ad3b638199dbb6eb9eaefe55042cef66c43cf1e31161f4a1280455d8b53c2823c747fd4f8823c44de3a52cc85332431630857c359935660c3403ae3a92728d003dd66ef5966317cd49894d265a3e4c43f0530a1192874ed327e6f35862a25dfb67c5d0d573d078b4b8ba9bfb1cce52fd17939ae9d7033d3aa09d6c449e392ba2472a1fecf992abcc51c3bf5d56a72fef9900e79b8dba88a5afc39e04993325a0cd6b67757355b836f\" }, \"sp_hash\": \"0x4c52796ca4ff775fbcdac90140c12270d26a37724ad77988535d58b376332533\", \"end_of_sub_slot\": false, \"harvester_id\": \"0xb9d8de98ec5c026f1167b0b587715d7137f43b6d1d40b81d9aac6dc8355fde28\" }, \"aggregate_signature\": \"0xa078dc1462bbcdec7cd651c5c3d7584ac6c6a142e049c7790f3b0ee8768ed6326e3a639f949b2293469be561adfa1c57130f64334994f53c1bd12e59579e27127fbabadc5e8793a2ef194a5a22ac832e92dcb6ad9a0d33bd264726f6e8df6aad\" } Successful response: { \"new_difficulty\": 10 } A successful response must always contain the new difficulty which must be respected by the farmer. payload​ This is the main payload of the partial, which is signed by two keys: authentication_key and plot_key. payload.launcher_id​ The unique identifier of the farmer's singleton, see Farmer identification. payload.authentication_token​ See Farmer authentication for the specification of authentication_token. payload.proof_of_space​ The proof of space in chia-blockchain format. payload.proof_of_space.challenge​ The challenge of the proof of space, computed from the signage point or end of subslot. payload.proof_of_space.pool_contract_puzzle_hash​ The puzzle hash that is encoded in the plots, equivalent to the p2_singleton_puzzle_hash. This is the first address that the 7/8 rewards get paid out to in the blockchain, if this proof wins. This value can be derived from the launcher_id, and must be valid for all partials. payload.proof_of_space.plot_public_key​ Public key associated with the plot. (Can be a 2/2 BLS between plot local key and farmer, but not necessarily). payload.proof_of_space.size​ K size, must be at least 32. payload.proof_of_space.proof​ 64 x values encoding the actual proof of space, must be valid corresponding to the sp_hash. payload.sp_hash​ This is either the hash of the output for the signage point, or the challenge_hash for the sub slot, if it's an end of sub slot challenge. This must be a valid signage point on the blockchain that has not been reverted. The pool must check a few minutes after processing the partial, that it has not been reverted on the blockchain. payload.end_of_sub_slot​ If true, the sp_hash encodes the challenge_hash of the sub slot. aggregate_signature​ This is a 2/2 BLS signature of the hashed serialization of the payload: sha256(PostPartialPayload) signed by the private keys of the following keys using the Augmented Scheme in the BLS IETF spec: plot_public_key authentication_public_key See the streamable class PostPartialPayload in the pool protocol for details and Farmer authentication for the specification of authentication_token. A partial must be completely rejected if the BLS signature does not validate.","s":"POST /partial","u":"/pool-protocol-specification/","h":"#post-partial","p":3022},{"i":3053,"t":"This allows the user to log in to a web interface if the pool supports it, see service flags in GET /pool_info. The farmer software must offer a way to generate and display a login link or provide a button which generates the link and then just opens it in the default browser. The link follows the specification below. Note that there is no explicit account creation. A farmer can log in after making their self known at the pool with POST /farmer. Request parameters: - launcher_id - authentication_token - signature Example request: https://poolurl.com/login?launcher_id=:launcher_id&authentication_token=:token&signature=:signature launcher_id​ The unique identifier of the farmer's singleton, see Farmer identification. authentication_token​ See Farmer authentication for the specification of authentication_token. signature​ This is a BLS signature of the hashed serialization of the following data in the given order: Element Type method_name string launcher_id bytes32 target_puzzle_hash bytes32 authentication_token uint64 where method_name must be the serialized string \"get_login\" and target_puzzle_hash is pool's target puzzle hash (see GET /pool_info). The parameters must be serialized and hashed according to Signature validation and the signature must be signed by the private key of the authentication_public_key using the Augmented Scheme in the BLS IETF spec. where the parameter must be serialized and hashed according to Signature validation and the signature must be signed by the private key of the authentication_public_key using the Augmented Scheme in the BLS IETF spec.","s":"GET /login","u":"/pool-protocol-specification/","h":"#get-login","p":3022},{"i":3055,"t":"The difficulty allows the pool operator to control how many partials per day they are receiving from each farmer. The difficulty can be adjusted separately for each farmer. A reasonable target would be 300 partials per day, to ensure frequent feedback to the farmer, and low variability. A difficulty of 1 results in approximately 10 partials per day per k32 plot. This is the minimum difficulty that the V1 of the protocol supports is 1. However, a pool may set a higher minimum difficulty for efficiency. When calculating whether a proof is high quality enough for being awarded points, the pool should use sub_slot_iters=37600000000. If the farmer submits a proof that is not good enough for the current difficulty, the pool should respond by setting the current_difficulty in the response.","s":"Difficulty","u":"/pool-protocol-specification/","h":"#difficulty","p":3022},{"i":3057,"t":"X points are awarded for submitting a partial with difficulty X, which means that points scale linearly with difficulty. For example, 100 TiB of space should yield approximately 10,000 points per day, whether the difficulty is set to 100 or 200. It should not matter what difficulty is set for a farmer, as long as they are consistently submitting partials. The specification does not require pools to pay out proportionally by points, but the payout scheme should be clear to farmers, and points should be acknowledged and accumulated points returned in the response.","s":"Points","u":"/pool-protocol-specification/","h":"#points","p":3022},{"i":3059,"t":"A Proof of Space protocol is one in which: A Verifier can send a challenge to a Prover. The Prover can demonstrate to the Verifier that the Prover is reserving a specific amount of storage space at that precise time. The Proof of Space protocol has three components: plotting, proving/farming, and verifying. For more info, see our Details of the chiapos specification, and reference implementation.","s":"Proof of Space","u":"/proof-of-space/","h":"","p":3058},{"i":3061,"t":"Plotting is the process by which a Prover, who we refer to as a farmer, initializes a certain amount of space. To become a farmer, one must have at least 101.4 GiB available to reserve on their computer (the minimum spec is a Raspberry Pi 4). There is no upper limit to the size of a Chia farm. Several farmers have multi-PiB farms. As of Chia 1.2.7, a k32 plot can be created in around five minutes with a high-end machine with 400 GiB of RAM, or six hours with a normal commodity machine, or 12 hours with a slow machine using one CPU core and a few GB of RAM. Opportunities still remain for huge speedups. Furthermore, each plot only needs to be created once; a farmer can farm with the same plots for many years. Plot sizes are determined by a k parameter, where space = 780 * k * pow(2, k - 10), with a minimum k of 32 (101.4 GiB). The Proof of Space construction is based on Beyond Hellman, but it is nested six times (thereby creating seven tables), and it contains other heuristics to make it practical. Each of the seven tables in a plot is filled with random-looking data that cannot be compressed. Each table has 2^k entries. Each entry in table i contains two pointers to table i-1 (the previous table). Finally, each table-1 entry contains a pair of integers between 0 and 2^k, called \"x-values.\" A proof of space is a collection of 64 x-values that have a certain mathematical relationship. The actual on-disk structure and the algorithm required to generate it are quite complicated, but this is the general idea. Figure 2: Structure of a plot file. The 64 red x-values represent the proof, the 2 green x-values represent the quality. Once the Prover has initialized 101.4 GiB, they are ready to receive a challenge and create a proof. One attractive property of this scheme is that it is non-interactive unless the farmer chooses plot NFT style pooling: no registration or online connection is required to create a plot using the original plot format. Nothing hits the blockchain until a reward is won, similar to PoW. For pool portable plots, a farmer only needs a few mojos to create a plot NFT before plotting and then everything has the same characteristics from there. See the Plotting FAQ page for more info.","s":"Plotting","u":"/proof-of-space/","h":"#plotting","p":3058},{"i":3063,"t":"Farming is the process by which a farmer receives a sequence of 256-bit challenges to prove that they have legitimately put aside a defined amount of storage. In response to each challenge, the farmer checks their plots, generates a proof, and submits any winning proofs to the network for verification. For each eligible plot (explained later), a farmer uses the following procedure to generate a full proof of space. Keep in mind that a plot consists of 7 tables (T1-T7) of approximately the same size, as well as 3 checkpoint tables (C1-C3), which are much smaller: The farmer receives a challenge from the VDF For each eligible plot, extract a k-sized value from the challenge, where k denotes the size of the plot (k32, k33, etc) Look in the C2 table for a location at which to start scanning the C1 table Scan the C1 table for the location at which to start scanning the C3 table Read either one or two C3 parks. The number of parks to read depends on the index and value calculated from the C1 table. This requires an average of 5000 reads (the maximum is 10 000). These are sequential reads of 4 bytes (for an average total of 20 KiB) Grab all the f7 entries matching the challenge value (which can be 0 or more), along with the index in the table at which they were found For each matching f7 value, read T7 at the same index where the f7 value was found in its own table, and grab that entry, which is an index into T6 The T6 index contains one line point with two back pointers to T5, four to T4, eight to T3, sixteen to T2 and thirty-two to T1. Each back pointer requires 1 read, so a total of 64 disk reads (1 index from T7, 63 back pointers) are performed to fetch the whole tree of 64 x-values. Since most proofs generated by this process are not good enough (as discussed in the Signage and Infusion Points page) to be submitted to the network for verification, we can optimize this process by only checking one branch of the tree. This branch will return two of the 64 x-values. The position of the x-values will always be consecutive and will depend on the signage point (eg x0 and x1... or x34 and x35). We hash these x-values to produce a random 256-bit \"quality string.\" This is combined with the difficulty and the plot size to generate the required_iterations. If the required_iterations is less than a certain number, the proof can be included in the blockchain. At this point, we look up the whole proof of space. By only looking up one branch to determine the quality string, we can rule out most proofs. This optimization requires only around 7-9 disk seeks and reads, or about 70-90 ms on a slow hard drive. info Throughout this website, we'll make a simple assumption that a single disk seek requires 10ms. In reality, this is typically 5-10ms, so we're using a conservative estimate. The 10ms estimate also takes into account the time required to transfer data after the seek. While storage industry specs typically assume that large files are being transferred, this does not hold true for Chia farming, where proof lookups only require a tiny amount of data to be transferred. Therefore, for this website, it's safe to assume the transfer is almost instant. Chia also uses a further optimization to disqualify a certain proportion of plots from eligibility for each challenge. This is referred to as the plot filter. The current requirement is that the hash of the plot ID, challenge, and signage point starts with 9 zeros. This excludes 511 out of every 512 plots. The filter hurts everyone equally (except for replotting attackers), and is therefore fair. The plot filter is discussed in greater detail in the Signage and Infusion Points page. The plot filter effectively reduces the amount of resources required for farming by 512x -- each plot only requires a few disk reads every few minutes. A farmer with 1 PiB of storage (10,000 plots) will only have an average of 20 plots that pass the filter for each challenge. Even if these plots all are stored on slow HDDs, and connected to a single Raspberry Pi, the average time required to respond to each challenge will be less than two seconds. This is well within the limits to avoid missing out on any challenges. Each plot file has its own unique private key called a plot key. The plot ID is generated by hashing the plot public key, the farmer public key, and either the pool public key (for OG plots) or the pool contract puzzle hash (for pooled plots). The requirements for signing a proof of space depend on the type of plots being used. See the Plot Public Keys page for details on the keys used for plot construction. In practice, the plot key is a 2/2 BLS aggregate public key between a local key stored in the plot and a key stored by the farmer software. For security and efficiency, a farmer may run on one server using this key and signature scheme. This server can then be connected to one or more harvester machines that store the actual plots. Farming requires the farmer key and the local key, but it does not require the pool key, since the pool's signature can be cached and reused for many blocks.","s":"Farming","u":"/proof-of-space/","h":"#farming","p":3058},{"i":3065,"t":"After the farmer has successfully created a proof of space, the proof can be verified by performing a few hashes and making comparisons between the x-values in the proof. Recall that the proof is a list of 64 x-values, where each x-value is k bits long. For a k32 this is 256 bytes (2048 bits), and is therefore very compact. Verification is very fast, but not quite fast enough to be verified in Solidity on Ethereum (something that would enable trustless transfers between chains), since this verification requires blake3 and chacha8 operations.","s":"Verifying","u":"/proof-of-space/","h":"#verifying","p":3058},{"i":3067,"t":"A Verifiable Delay Function, also referred to as a Proof of Time or VDF, is a proof that a sequential function was executed a certain number of times. Verifiable: This means that after performing the computation (which takes time), the Prover can create a very small proof in a very short time, and the Verifier can verify this proof without having to redo the whole computation. Delay: This means that the Prover actually spent a real amount of time (although we don't know exactly how much) to compute the function. Function: This means it's deterministic: computing a VDF on an input x always yields the same result y. The key word here is \"sequential\", like hashing a number many times: hash(hash(hash(a))), etc. This means the prover cannot just add more machines to make the function execute faster. Therefore we can assume that computing a VDF requires real (wall-clock) time. The construction that we use is repeated squaring. The Prover must square a challenge x T times. This requires time ϴ(T). The Prover also must create a proof that this was performed properly. Figure 3: The Verifier (blockchain) sends a challenge to the Prover (timelord) and the Prover computes the output and proof. Although the following details are not very important for understanding the consensus algorithm, the choice of what VDF to use is relevant, because if an attacker succeeds in obtaining a much faster machine, some attacks become possible. The VDF used by Chia is repeated squaring in a class group of unknown order. There are two main ways to generate a large group that has an unknown order: Use an RSA modulus, and use the integers mod N as a group. The order of the group is unknown if you can generate your modulus with many participating parties using an MPC ceremony. An easier approach is to use classgroups with a large prime discriminant, which are groups of unknown order. This does not require any complex or trusted setup, so we chose this option for Chia. To create one of these groups, one just needs a large, random, prime number. The drawbacks are that classgroup code is less tested in real life, and optimizations are less well-known than in RSA groups. We use the same initial element for the squaring (a=2, b=1 classgroup element), and instead use the challenge to generate a new random prime number for each VDF, which is used as the discriminant. The discriminant has a size of 1024 bits, which means the proof sizes are around 1024 bits. We use the Wesolowski scheme split into n (1<=n<=64) phases so that creating the proofs is very fast. Since the n-wesolowski proofs can be large, we replace them with 1-wesolowski proofs as soon as they are available. These are smaller, but require more time to make. The proofs themselves are not committed to on-chain, so they are replaceable.","s":"Proof of Time (VDFs)","u":"/proof-of-time/","h":"","p":3066},{"i":3069,"t":"As a recap, VDFs take in an input, called a challenge, and produce an output, together with a proof that certifies that the function was evaluated correctly. A value, in this context, can be thought of as a block with a proof of space. The value is combined with an output of a VDF, to generate a new value, which is used as the input/challenge for the next VDF. This is known as an infusion of a value into a VDF. Therefore, we are chaining VDFs, but committing to a new value in between. This is used so that we have a linear progression of blocks, alternating proofs of space with proofs of time.","s":"Infusion","u":"/proof-of-time/","h":"#infusion","p":3066},{"i":3072,"t":"The easiest way to get started in Chia is by attaching a USB hard drive to a desktop computer, or installing a SATA hard drive. The minimum amount of storage needed to farm is only a single plot! Beginners should start with a few drives to make it worth running the farm, and earn a few dollars per month. You can you use your desktop computer to create the plots (see plotting). There are companies like Evergreen that make it one step easier and remove the plotting step by offering a pre-plotted drive and a mobile app. Plotting is going to be the limiting factor for curious farmers because their desktop or laptop may not have enough compute and temporary SSD storage that is suitable for plotting, but filling up a single drive with plots is fairly easy even for beginners.","s":"Curious","u":"/reference-farming-hardware/","h":"#curious","p":3070},{"i":3074,"t":"Once you get to a few hundred terabytes, think about a dedicated desktop computer for Chia farming, a NAS, or an external storage enclosure. A general rule of thumb is to look at the cost per slot (per drive) attached so you don’t end up spending more money to store the disks than the disks themselves!","s":"Hobbyist","u":"/reference-farming-hardware/","h":"#hobbyist","p":3070},{"i":3076,"t":"A NAS, or networked attached storage, is a device dedicated to having hard drives included in a backplane and a lightweight CPU and DRAM. NAS serves storage through the network (as opposed to DAS, or direct-attached storage). NAS have a high number of drives in small space, and are extremely power efficient. The only downside is they tend to be more expensive than raw enclosures since they are made for consumer storage and applications.","s":"NAS","u":"/reference-farming-hardware/","h":"#nas","p":3070},{"i":3078,"t":"External storage bays that use USB can attach 5-8 drives with a single USB cable, and have integrated power and cooling (fans). These are great for a hobbyist to expand with their current computer hardware.","s":"External Storage (USB) for multiple drives","u":"/reference-farming-hardware/","h":"#external-storage-usb-for-multiple-drives","p":3070},{"i":3080,"t":"A standard full tower desktop can hold 8-12 3.5in HDDs. These cases are user friendly for anyone who has built a standard desktop PC, and installing HDDs with SATA cables and ATX power supplies doesn’t require a ton of specialized computer experience.","s":"Desktops with high amount of drive count","u":"/reference-farming-hardware/","h":"#desktops-with-high-amount-of-drive-count","p":3070},{"i":3082,"t":"Pros are shooting for over a petabyte of storage, where more advanced tactics come into play. These can include GPU plotting, HBAs (host bus adapters), and used enterprise storage servers. Used enterprise storage gear is a great place to start, since servers with high drive count can be found inexpensively on eBay and other used markets. Older JBODs that house 24-45 drives can be found for a few hundred dollars used. While these are cost-effective, they do require the farmer to learn about enterprise storage protocols and infrastructure like SAS. Pros generally mix consumer and enterprise gear to be ruthlessly cost-efficient with their purchases.","s":"Pro","u":"/reference-farming-hardware/","h":"#pro","p":3070},{"i":3084,"t":"Serious Chia farmers that are going for multiple petabytes will start having to enter the world of server racks. Thankfully, data centers around the world have already engineered the best way to store an extremely large amount of storage in server racks. A serious farmer will be using JBODs. A JBOD, or \"Just a bunch of disks\" is a device dedicated to housing a large number of hard disk drives, and does not contain any integrated compute resources. A JBOD is typically made up of an enclosure, enclosure slots that identify each drive individually, a SAS expander and backplane, fans, and power supplies. All the disks in a JBOD can be accessed by a single SAS cable connected to a host server or desktop through a HBA (host bus adapter) which converts a PCIe slot to SAS. Serious farmers will put many of these JBODs in a rack to get extremely dense storage, which can achieve over 10 petabytes in a single rack using modern JBODs and high-capacity HDDs.","s":"Serious","u":"/reference-farming-hardware/","h":"#serious","p":3070},{"i":3086,"t":"In §2 we discussed how costless simulation opens attack vectors for double spending in longest-chain blockchains and how these are addressed in Chia\\textrm{{\\sf Chia}}Chia. To show security we assumed that a sufficient fraction of the resource is controlled by honest parties who follow the protocol rules. In reality it's unrealistic to assume that parties will behave altruistically, instead we need to argue that it's rational for parties to follow the protocol rules. Unfortunately costless simulation also makes this task much more challenging than in a PoW based system. In analogy to selfish mining in Bitcoin, we refer to strategies by which a party gets more rewards than they would by following the protocol rules as selfish farming. To argue that rational parties will behave honestly it's necessary to bound the efficacy of selfish mining/farming strategies. In §3.1 below we first discuss selfish mining and why we don't observe it in Bitcoin even though it's possible in principle. As directly analyzing the security of a longest-chain protocol against selfish mining/farming is very challenging we take a modular approach. In §3.2 we first identify two properties – no slowdown and delayed gratification illustrated in Figure 5 – which are satisfied by Bitcoin, and then show in §3.3 that they imply robustness against selfish mining (through the notion of chain quality) of the level as achieved by Bitcoin. In §3.4 and §3.5 we then sketch how those notions are achieved in Chia\\textrm{{\\sf Chia}}Chia.","s":"3 - Rational Attackers","u":"/rational-attackers/","h":"","p":3085},{"i":3088,"t":"While Bitcoin prevents double spending assuming a majority of the hashing power is controlled by miners who altruistically follow the protocol, it allows for selfish mining [ES18] by which a miner with a α<0.5\\alpha<0.5α<0.5 fraction of the hashing power can create more than an α\\alphaα fraction of the blocks and thus gets an unfair share of the block rewards. In some settings this fraction can be as large as α/(1−α)\\alpha/(1-\\alpha)α/(1−α) (e.g. a 0.330.330.33 fraction for α=0.25\\alpha=0.25α=0.25).1 Selfish mining has not been observed in Bitcoin, and there are various reasons why this is the case selfish mining requires either a fairly large fraction of the hashing power or very good control of the network (cf. Footnote 1) to be profitable the attack would be easily detected and delayed gratification as defined below.","s":"3.1 Selfish Mining in Bitcoin","u":"/rational-attackers/","h":"#31-selfish-mining-in-bitcoin","p":3085},{"i":3090,"t":"The Bitcoin blockchain is split in epochs, each with a targeted duration of two weeks, and only at the end of an epoch the difficulty is reset to accommodate for the variation of the hashing power. Assuming the network is reliable, within an epoch, a selfish miner cannot create more blocks than they would get by honest mining. This follows from a crucial property of proofs of work: there's no way to find more proofs of a given difficulty (and thus blocks) in a given time window than simply following the protocol and always working on the known longest chain. The only thing selfish mining does in Bitcoin is to make honest parties waste their hashing power, so after the next difficulty reset (which only happens every 2 weeks) the difficulty is lower than it should be, and only at this point the selfish miner makes some extra profit. Another property of PoW based chains like Bitcoin is that an adversary cannot slow down chain growth. We capture these two desirable properties separately below. Delayed Gratification: A chain where an adversary cannot increase the number of blocks they find in expectation within an epoch of same difficulty by deviating from the honest strategy is said to have the delayed gratification property. In Chia\\textrm{{\\sf Chia}}Chia, by \"not deviating\" we mean that the adversary simply runs an honest farmer using its available space, and additionally, should the adversary control VDFs that are faster than the fastest honest time lord, they are also assumed to run a time lord. Intuitively, delayed gratification is a good deterrent to selfish mining by itself as it limits selfish mining to adversaries who follow a \"long term\" agenda. No Slowdown: A chain where an adversary (no matter what fraction of the resource they control) cannot slow down the expected block arrival time by interacting with the chain is said to have the no slowdown property.","s":"3.2 Delayed Gratification and No Slowdown","u":"/rational-attackers/","h":"#32-delayed-gratification-and-no-slowdown","p":3085},{"i":3092,"t":"A longest-chain blockchain is said to have chain quality ρ\\rhoρ if the fraction of blocks mined by honest miners is at least ρ\\rhoρ (with high probability and considering a sufficiently large number of blocks). Chain quality was introduced in [GKL15] as a metric to quantify how susceptible a chain is to selfish mining. Ideally, assuming an adversarial miner who controls an α\\alphaα fraction of the resource, the chain quality should be ρ=1−α\\rho=1-\\alphaρ=1−α as this means that the adversary cannot increase its fraction of blocks by deviating. By the Proposition below delayed gratification and the no slowdown property imply a bound on chain quality which matches the bound proven for Bitcoin (when ignoring network delays). Proposition 1 (Delayed Gratification and No Slowdown implies Chain Quality). Consider a longest-chain protocol which has the delayed gratification and no slowdown property against an adversary who controls an α\\alphaα fraction of the global resource, then the chain quality is 1−α1−α1-\\frac{\\alpha}{1-\\alpha}1−1−αα​ (compared to the ideal 1−α1-\\alpha1−α). Proof. Consider an adversarial miner A{\\cal A}A with an α\\alphaα fraction of the resource and let ℓ\\ellℓ denote the (expected) number of blocks to be found if everyone would mine honestly. By the no slowdown property, no matter what A{\\cal A}A does the number of blocks found is at least ℓ′≥(1−α)⋅ℓ\\ell'\\ge (1-\\alpha)\\cdot\\ellℓ′≥(1−α)⋅ℓ. By delayed gratification, at most α⋅ℓ\\alpha\\cdot\\ellα⋅ℓ of those blocks were created by A{\\cal A}A, we get a chain quality of chain quality=honest blockstotal blocks=ℓ′−α⋅ℓℓ′=1−α⋅ℓℓ′≥1−α⋅ℓ(1−α)⋅ℓ=1−α1−α□\\begin{aligned} \\textit{chain quality}&=\\frac{\\text{honest blocks}}{\\text{total blocks}}\\\\ &=\\frac{\\ell' - \\alpha \\cdot \\ell}{\\ell'}\\\\ &=1-\\frac{\\alpha\\cdot\\ell}{\\ell'}\\\\ &\\ge 1-\\frac{\\alpha\\cdot\\ell}{(1-\\alpha)\\cdot \\ell}\\\\ &=1-\\frac{\\alpha}{1-\\alpha} \\hspace{10em}\\square \\end{aligned}chain quality​=total blockshonest blocks​=ℓ′ℓ′−α⋅ℓ​=1−ℓ′α⋅ℓ​≥1−(1−α)⋅ℓα⋅ℓ​=1−1−αα​□​","s":"3.3 Chain Quality","u":"/rational-attackers/","h":"#33-chain-quality","p":3085},{"i":3094,"t":"Having motivated why the no slowdown and delayed gratification properties are useful, in this and the next section we will sketch how they are achieved in Chia. Recall that delayed gratification means a selfish farmer cannot add more blocks into the chain than he could by honestly following the protocol. To achieve this in Chia\\textrm{{\\sf Chia}}Chia we ensure that Objective 1: Unpredictable and Immutable Challenges (a) a challenge is revealed as late as possible. (b)) once it's revealed, it's almost certainly too late for a selfish farmer to influence it in any way. (c)) whether a plot can produce a block for a challenge only depends on the plot and the challenge (and not say, on what other plots exist). These properties imply delayed gratification as a selfish farmer cannot do anything to influence challenges in a controlled way due to (a) & (b), and cannot do anything to increase its number of winning blocks for a given challenge due to (c). We will sketch how properties (a)-(c) are achieved in Chia\\textsf{Chia}Chia next. To follow the arguments the reader might want to recap the high level outline in §1.7 and illustration in Figure 1 (a) The only reason for the infused challenge chain iCC{\\sf i}{\\cal CC}iCC is to make sure that the challenge becomes known as late as possible, in particular when considering an adversary with a faster VDF than the fastest honest time lord. (b) We infuse the first block of each slot into the challenge chain CC{\\cal CC}CC, this way making sure that this block is buried deep in the chain (by 313131 blocks on average) once revealed, and thus almost impossible to revert. (c) We use a variation on the correlated randomness technique from [BDK+19], where we let the challenge depend on every kkkth challenge on average, rather than exactly. This way only the challenge determines whether a plot can produce a winning block, irrespective of what other plots exist.","s":"3.4 Delayed Gratification in Chia","u":"/rational-attackers/","h":"#34-delayed-gratification-in-chia","p":3085},{"i":3096,"t":"Recall that the no slowdown property requires that no adversary can slow down the block arrival time by participating.","s":"3.5 No-Slowdown of Chia and other Constructions {#s:nschia}","u":"/rational-attackers/","h":"#s","p":3085},{"i":3098,"t":"In Bitcoin no slowdown holds as whenever an honest miner finds a block, all the honest miners will switch to a heavier chain. An adversary can still kick out this block and replace it with one of his own (and that's what selfish mining is exploiting), but not slow down the growth. Of course here we assume a reliable network, a network level attacker who can increase the latency or even split the network can of course delay chain growth.","s":"3.5.1 No-Slowdown in Bitcoin","u":"/rational-attackers/","h":"#351-no-slowdown-in-bitcoin","p":3085},{"i":3100,"t":"One might assume that the no-slowdown property would be achieved by any \"natural\" longest-chain blockchain even if based on efficient proof systems. Unfortunately this intuition is wrong. A design for which no-slowdown fails to hold is the proof of stake based chain of Fan and Zhou [FZ17]. Their chain mimics Bitcoin's Nakamoto consensus using proofs of stake, but to harden the design against (what in this writeup is called) double dipping attacks [FZ17] suggest the miners not only extend the longest chain, but instead follow the \"ggg-greedy rule\": a miner should try to extend all forks they see which are at most ggg blocks shorter than the longest chain they've seen so far. The rationale behind this rule is that by letting the honest miners do double-dipping to some extent, the advantage an adversary can get by double dipping shrinks.2 As shown in [BDK+19], this design has some serious issues as an adversary with relatively small resources can with high probability prevent the chain reaching consensus by strategically releasing blocks and this way keep two forks alive for a long time. An illustration of their attack is in Figure 5. Interestingly (citing [BDK+19]) \"..the efficacy (of the attack) is primarily achieved by slowing down the growth rate of the honest strategy.\" Figure 5: Illustration of the balancing attack against [FZ17] taken from [BDK+19]","s":"3.5.2 A Non-Example, the G-Greedy-Rule","u":"/rational-attackers/","h":"#352-a-non-example-the-g-greedy-rule","p":3085},{"i":3102,"t":"The lesson from the example above is that the no-slowdown property is not easy to achieve in longest-chain protocols using efficient proof systems. Moreover the absence of this property can lead to various security issues, not just selfish mining opportunities, but even prevent consensus almost indefinitely as in the example above. Similar attacks were also proposed for BFT type protocol, most notably Ethereum [SNM+21]. Naïve Emulation of Bitcoin​ There are longest-chain blockchains from efficient proof systems which do have the no-slowdown property. The simplest is to just emulate Bitcoin by replacing PoW with PoSpace or PoStake. While satisfying no-slowdown, this basic construction has all the security issues discussed in §2. Fixing bootstrapping and grinding as outlined in §2 will preserve the no-slowdown property. The challenge is to find a good countermeasure to double-dipping without losing the no-slowdown property and introducing new attack vectors. DDD-Distance Greedy​ Bagaria et al. [BDK+19] not only prove that ggg-greedy does not have the no-slowdown property, but also suggest a different rule of a similar flavour they call \"DDD-distance greedy\", for which the no-slowdown property does hold [BDK+19 Lemma 12]. This rule reduces the double-dipping advantage factor towards 111 as DDD increases, but already for moderately large DDD it becomes computationally infeasible for the miners to even determine which chain to follow. Old Chia\\textsf{Chia}Chia​ The first Chia greenpaper [CP19] has a very simple rule where honest farmers try to extend the first k>1k>1k>1 (k=3k=3k=3 was suggested) chain of any given length they become aware of. For this simple construction the advantage factor of double-dipping goes to 111 as kkk increases while it does achieve no-slowdown [CP19 Lemma 4]. Chia\\textsf{Chia}Chia​ While the deployed Chia\\textsf{Chia}Chia blockchain has many advantages over the old [CP19] proposal, the no-slowdown property is a much tricker issue in the new design. In particular, we do not yet have an analogue of [CP19 Lemma 4] which basically states that even an unbounded adversary (unlimited space, unlimited number of arbitrary fast VDFs) cannot slow down chain growth. When analyzing the no-slowdown property, it is useful to distinguish the specification of the chain (i.e., what constitutes a valid chain) and its chain selection rule (aka. fork choice rule), which tells the farmers and time lords on which chains to work should competing forks exist. For example the difference in the ggg-greedy and the DDD-distance greedy protocols discussed above (only the latter having the no-slowdown property) is only in the chain selection rule, the specification what constitutes an valid chain is the same. Unlike the chain specification, which can only be changed by a hard fork once the chain is deployed, the chain selection rule can easily be adapted by the farmers and/or time lords even after the launch. Finding a chain-selection rule for the Chia\\textsf{Chia}Chia chain which provably achieves no-slowdown is an interesting open problem. Under the additional assumption that an adversary does not control VDFs which are faster than the fastest honest time lord, a very simple chain selection rule achieving no-slowdown exists: always follow the chain with accumulated most VDF steps. Of course this rule would be terrible in practice as security completely breaks if the adversary has an even slightly faster VDF than the fastest honest time lord. For example, such an adversary could create an \"empty\" chain by refusing to infuse any blocks. A more sensible rule is to simply follow the heaviest fork like in Bitcoin. Unfortunately, unlike in Bitcoin, in Chia\\textsf{Chia}Chia the heaviest fork is not necessarily the fork which will be heaviest in the future assuming all honest parties adapt it: a fork AAA might have one more block infused than some fork BBB, but if BBB is way ahead in the VDF computation extending BBB might give a better chain (in expectation) in the future. Thus, when using this rule, by releasing BBB an adversary might slow down the chain. The currently deployed chain selection rule for farmers and time lords is basically to follow the heaviest fork, but with some heuristics to avoid clear cases where switching to a heavier chain is slowing down growth. Footnotes​ To achieve such a large fraction we must assume that (1) honest miners follow the (original Bitcoin) rule and in case they learn of two longest chains they always try to extend the one they saw first and (2) that once the selfish miner learns about a block mined by the honest miners, they can release a withheld block such that their block reaches most of the honest miners faster than this honest block. If either of these conditions is not met, selfish mining is much less profitable, and only becomes profitable at all for selfish miners who control a fairly large fraction of the resource [SSZ15]. ↩ ↩2 A similar proposal, where the honest parties try to extend the first kkk blocks they see at every depth was proposed in an early proposal for Chia\\textsf{Chia}Chia (with k=3k=3k=3) [CP19]. This variant achieves the no-slowdown property. ↩","s":"3.5.3 Examples of No-Slowdown.","u":"/rational-attackers/","h":"#353-examples-of-no-slowdown","p":3085},{"i":3104,"t":"To achieve such a large fraction we must assume that (1) honest miners follow the (original Bitcoin) rule and in case they learn of two longest chains they always try to extend the one they saw first and (2) that once the selfish miner learns about a block mined by the honest miners, they can release a withheld block such that their block reaches most of the honest miners faster than this honest block. If either of these conditions is not met, selfish mining is much less profitable, and only becomes profitable at all for selfish miners who control a fairly large fraction of the resource [SSZ15]. ↩ ↩2 A similar proposal, where the honest parties try to extend the first kkk blocks they see at every depth was proposed in an early proposal for Chia\\textsf{Chia}Chia (with k=3k=3k=3) [CP19]. This variant achieves the no-slowdown property. ↩","s":"Footnotes","u":"/rational-attackers/","h":"#footnote-label","p":3085},{"i":3106,"t":"In this lesson, we learn the basic security implementations in Chia and how they protect users from bad actors.","s":"Chia Blockchain Security Intro","u":"/security-basics/","h":"","p":3105},{"i":3108,"t":"Decentralization: Understand how a decentralized network enhances security and reduces attack options for bad actors. Coin Signatures: Learn how coin signatures protect the users ability to spend the coins. Chialisp Security: Review the inherent security of Chialisp, the language used for coin puzzles.","s":"Learning objectives","u":"/security-basics/","h":"#learning-objectives","p":3105},{"i":3111,"t":"Expand for the full script 00:00 The Chia blockchain uses several layers of security. 00:10 The first the inherent security that comes from decentralization. By following a consensus method that prioritizes decentralization, 00:20 the network ensures that the new blocks being formed are not manipulated by bad actors. There is no need to have a trusted third party to validate transactions, as the network as a whole will weed out anything non-valid. 00:30 To secure transactions, we use signatures to protect the coins. In order to make sure that a transaction hasn’t been altered, 00:40 every spend bundle (the packet of information about a transaction that gets sent out to nodes) contains an aggregated signature that will only match if the underlying information is unaltered. 00:50 In addition, a common condition included in the coin is a required signature to spend, preventing anyone but the authorized party from using the coin. 01:00 Additionally, the language used to create \"smart coins\" is a custom flavor of Lisp called \"Chialisp\" that is designed to be highly efficient, secure, and easily auditable 01:10 so you can be sure about what exactly a coin is going to do when it is spent. 01:20","s":"Script","u":"/security-basics/","h":"#script","p":3105},{"i":3113,"t":"Decentralization: The true decentralization of Chia greatly increases the economic costs associated with performing various attacks on Chia, protecting it from all scales of bad actors. Coin Signatures: Ensuring that a coins solution requires signing ensures that only the intended user can spend the coin, this is an essential part of securing coins on Chia. Chialisp Security: Chialisp has been developed from Lisp to ensure Chia coins are highly efficient, secure, and easily auditable.","s":"Common gotchas","u":"/security-basics/","h":"#common-gotchas","p":3105},{"i":3115,"t":"Question 1 - Decentralization Does Chia rely on a centralized third party to validate and secure the blockchain? Answer (expand when ready to see the answer) No, Chia is truly decentralized and its network ensures security and block validity through the established consensus mechanism. Question 2 - Coin Signatures Do all coin solutions require signatures to be secure? Answer (expand when ready to see the answer) No, while coin signatures are highly recommended for securing coins they are not required and Chialisp operators provide alternatives for securing coins. Note - if building coin puzzles that do not require signed solutions be very attentive to all possible exploits, some of which are documented here. Question 3 - Chialisp True or False: Chia uses the same on-chain language that is used for Bitcoin. Answer (expand when ready to see the answer) False, a custom-developed flavor of Lisp called Chialisp was developed to be used for the Chia blockchain.","s":"Knowledge check","u":"/security-basics/","h":"#knowledge-check","p":3105},{"i":3118,"t":"General Security Overview: overviews of Chia security and a review of potential attacks. Overview of Coin Signing: reviews the purpose of signing and when it should be used for coins. Chialisp detailed documentation: detailed information on all aspects of Chialisp. Support in discord: for further support join our discord server and ask in the #chialisp or #support channels.","s":"Links","u":"/security-basics/","h":"#links","p":3105},{"i":3121,"t":"chia.net -- Chia's main website chialisp.com -- the official chialisp website Chia's business white paper","s":"Chia Network","u":"/references/","h":"#chia-network","p":3119},{"i":3123,"t":"Chia's green paper -- showcases Proofs of Space and Time Proofs of Space specification BLS Signatures Verifiable Delay Function (VDF) Proofs of Space Binary Quadratic Forms -- a white paper by Lipa Long How to Store a Permutation Compactly by Bram Cohen and Dan Boneh","s":"Chia's Technical Specs","u":"/references/","h":"#chias-technical-specs","p":3119},{"i":3125,"t":"Bram Cohen's 2022 presentation at Off the Chain 22 regarding custody solutions including authorized payee wallets and clawback transactions. Mariano Sorgente's 2019 presentation at MIT on how to achieve Nakamoto consensus with Proof of Space and VDFs Bram Cohen's 2018 presentation at Stanford on Proofs of Space Bram Cohen's 2018 presentation at BPASE on the Beyond Hellman academic paper (slides by Hamza Abusalah) Ben Fisch's 2018 presentation at BPASE 2018 on Verifiable Delay Functions Bram Cohen's 2018 presentation at Berkeley (which starts about 20:00) Bram Cohen's 2017 presentation at BPASE on removing waste with Proofs of Space and Time Bram Cohen's 2015 presentation at SF Bitcoin Devs Seminar about data structures for scaling Bitcoin with slides and Merkle Set code","s":"Video","u":"/references/","h":"#video","p":3119},{"i":3127,"t":"Chia's power consumption BladeBit CUDA Performance Analysis, by scienceofmining.com A Survey of Two Verifiable Delay Functions, by our advisors Dan Boneh, Benedikt Bünz, and Ben Fisch Simple Verifiable Delay Functions, by our advisor Krzysztof Pietrzak History of Cryptography, from Stanford University Beyond Hellman, by Hamza Abusalah, Jo ̈el Alwen, Bram Cohen, Danylo Khilko, Krzysztof Pietrzak, and Leonid Reyzin POS Longest Chain Protocols, by Vivek Bagaria, Amir Dembo, Sreeram Kannan, Sewoong Oh, David Tse, Pramod Viswanath, Xuechao Wang, and Ofer Zeitouni Flyclient paper, by Benedikt Bunz, Lucianna Kiffer, Loi Luu, and Mahdi Zamani PoSAT paper, by Soubhik Deb, Sreeram Kannan, and David Tse PoS security vs predictability, by Vivek Bagaria, Amir Dembo, Sreeram Kannan, Sewoong Oh, David Tse, Pramod Viswanath, Xuechao Wang, and Ofer Zeitouni bech32m -- the address encoding scheme used by Chia x.509 -- the public key certificate used in Chia peer nodes DER -- a data structure used with x.509 certificates BLS-12-381 -- the type of keys Chia uses IETF -- the BLS signature specification EIP-2333 -- a tree structure for deriving BLS keys SLIP-0044 -- registered coin types for BIP-0044","s":"External","u":"/references/","h":"#external","p":3119},{"i":3129,"t":"Serialization in Chia refers to how objects are converted into bytes for uses such as transmitting to other nodes, storing on disk, or hashing objects. For example, a header_hash refers to the sha256 hash of the header of a block, but sha256 takes in bytes, so we need a consistent way to convert objects into bytes.","s":"Serialization Protocol","u":"/serialization-protocol/","h":"","p":3128},{"i":3131,"t":"To prevent consensus issues, the streamable format was designed to be deterministic and easy to implement. All objects in the Chia protocol are transmitted using the streamable format. Furthermore, some database tables use streamable representation as well. The primitives are: Sized ints serialized in big endian format, i.e uint64 Sized bytes serialized in big endian format, i.e bytes32 BLS public keys serialized in bls format (48 bytes) BLS signatures serialized in bls format (96 bytes) bool serialized into 1 byte (0x01 or 0x00) bytes serialized as a 4 byte size prefix and then the bytes. ConditionOpcode is serialized as a 1 byte value. str serialized as a 4 byte size prefix and then the utf-8 representation in bytes. An item is one of: primitive Tuple[item1, .. itemx] List[item1, .. itemx] Optional[item] Custom item A streamable must be a Tuple at the root level. Iters are serialized in the following way: A tuple of x items is serialized by appending the serialization of each item. A List is serialized into a 4-byte prefix (number of items) in big endian followed by the serialization of each item. An Optional is serialized into a 1-byte prefix of 0x00 or 0x01, and if it's one, it's followed by the serialization of the item. A Custom item is serialized by calling the .parse method, passing in the stream of bytes into it. An example is a CLVM program, which has its own serialization format. This format can be implemented very easily, and allows us to hash objects like headers and proofs of space, without complex serialization logic. Note that in the python implementation, we don't use a Tuple at the root level, but instead just use a dataclass with ordered type fields for ease of use. However, it is streamed as a Tuple.","s":"Streamable Format","u":"/serialization-protocol/","h":"#streamable-format","p":3128},{"i":3133,"t":"The streamable specification has been designed to work well with Python using the @streamable decorator available in chia-blockchain, but it can work just as well with other programming languages. A class with the @streamable decorator becomes immutable, and has the __bytes__() and .from_bytes(b) methods.","s":"Examples","u":"/serialization-protocol/","h":"#examples","p":3128},{"i":3135,"t":"@streamable class ProofOfSpace(Streamable): challenge: bytes32 pool_public_key: Optional[G1Element] pool_contract_puzzle_hash: Optional[bytes32] plot_public_key: G1Element size: uint8 proof: bytes","s":"ProofOfSpace type definition","u":"/serialization-protocol/","h":"#proofofspace-type-definition","p":3128},{"i":3137,"t":"from chia.types.blockchain_format.proof_of_space import ProofOfSpace from blspy import G1Element from chia.types.sized_bytes import bytes32 from chia.util.ints import uint8, uint32 pospace = ProofOfSpace(bytes([0xaa]*32), None, bytes32([0xbb]*32), G1Element.generator(), uint8(33), bytes([0xcc]*264)) print(bytes(pospace))","s":"Creating and serializing a proof of space","u":"/serialization-protocol/","h":"#creating-and-serializing-a-proof-of-space","p":3128},{"i":3139,"t":"As you can see, each one of the fields is serialized in order, according to the above specification. The G1 Generator value is serialized in BLS format as: . aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb2100000108cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","s":"Output","u":"/serialization-protocol/","h":"#output","p":3128},{"i":3141,"t":"The Chia node and services come with a JSON RPC API server that allows you to access information and control the services. These are accessible via HTTP, WebSockets, or via client SDKs. The ports can be configured in ~/.chia/mainnet/config/config.yaml. The RPC ports should not be exposed to the internet. TLS certificates are used to secure the communication.","s":"RPC Overview","u":"/rpc/","h":"","p":3140},{"i":3143,"t":"Daemon: 55400 Full Node: 8555 Farmer: 8559 Harvester: 8560 Wallet: 9256 DataLayer: 8562","s":"Default Ports:","u":"/rpc/","h":"#default-ports","p":3140},{"i":3145,"t":"The certificates must be used when calling the RPCs from the command line, make sure to use the correct certificates for the services you are calling. All endpoints are made with POST with JSON data. The response is a JSON dictionary with a success field, which can be true or false.","s":"HTTP/JSON","u":"/rpc/","h":"#httpjson","p":3140},{"i":3147,"t":"If you are using the Websockets API, you can go directly through the daemon, which routes requests. Each WebSocket message contains the following fields: Some examples can be found here: https://github.com/Chia-Mine/chia-agent. { \"command\": \"get_blockchain_state\", \"ack\": false, \"data\": {}, \"request_id\": \"123456\", \"destination\": \"wallet\", \"origin\": \"ui\" } WebSockets Example (courtesy of baerrs)​ import json from datetime import datetime import websocket import ssl # websocket.enableTrace(True) def on_message(ws, message): print('{0}: Got message: {1}'.format(datetime.now(), message)) def on_error(self, error): print('Error in websocket: {0}'.format(error)) def on_close(self, ws, e): print(\"{0]: Websocket closed: {1}\".format(datetime.now(), e)) def on_open(self): print('{0}: Connected to Websocket'.format(datetime.now())) message = {\"destination\": \"daemon\", \"command\": \"register_service\", \"request_id\": \"123456ca\", \"origin\": \"\", \"data\": { \"service\": 'chia_agent'}} on_send_message(self, message) message = {\"destination\": \"daemon\", \"command\": \"register_service\", \"request_id\": \"123456w\", \"origin\": \"\", \"data\": { \"service\": 'wallet_ui'}} on_send_message(self, message) def on_send_message(ws, message): print('{0}: Sent Message: {1}'.format(datetime.now(), message)) wsapp.send(json.dumps(message)) def on_ping(ws, data): print('{0}: Got ping: {1}'.format(datetime.now(), data)) print(\"Starting Something\") wsapp = websocket.WebSocketApp(\"wss://localhost:55400\", on_open=on_open, on_message=on_message, on_error=on_error, on_ping=on_ping) wsapp.run_forever(sslopt={\"cert_reqs\": ssl.CERT_NONE, \"certfile\": \"ssl/daemon/private_daemon.crt\", \"keyfile\": \"ssl/daemon/private_daemon.key\", \"ssl_context.check_hostname\": False}) wsapp.close() WebSockets Example Output​ (Long strings have been replaced with XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.) Starting Something 2022-01-24 21:20:39.782297: Connected to Websocket 2022-01-24 21:20:39.782297: Sent Message: {'destination': 'daemon', 'command': 'register_service', 'request_id': '123456ca', 'origin': '', 'data': {'service': 'chia_agent'}} 2022-01-24 21:20:39.782297: Sent Message: {'destination': 'daemon', 'command': 'register_service', 'request_id': '123456w', 'origin': '', 'data': {'service': 'wallet_ui'}} 2022-01-24 21:20:39.782297: Got message: {\"ack\": true, \"command\": \"register_service\", \"data\": {\"success\": true}, \"destination\": \"\", \"origin\": \"daemon\", \"request_id\": \"123456ca\"} 2022-01-24 21:20:39.782297: Got message: {\"ack\": true, \"command\": \"register_service\", \"data\": {\"success\": true}, \"destination\": \"\", \"origin\": \"daemon\", \"request_id\": \"123456w\"} 2022-01-24 21:20:45.053029: Got message: {\"ack\": false, \"command\": \"get_connections\", \"data\": {\"connections\": [{\"bytes_read\": 3094726, \"bytes_written\": 1545670, \"creation_time\": 1642488338.7817655, \"last_message_time\": 1643077239.4690468, \"local_port\": 8447, \"node_id\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"peer_host\": \"127.0.0.1\", \"peer_port\": 3445, \"peer_server_port\": 8448, \"type\": 2}, {\"bytes_read\": 870298, \"bytes_written\": 51, \"creation_time\": 1642743064.406306, \"last_message_time\": 1643077239.4690468, \"local_port\": 8447, \"node_id\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"peer_host\": \"127.0.0.1\", \"peer_port\": 8444, \"peer_server_port\": 8444, \"type\": 1}], \"success\": true}, \"destination\": \"wallet_ui\", \"origin\": \"chia_farmer\", \"request_id\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"} 2022-01-24 21:20:48.417804: Got message: {\"ack\": false, \"command\": \"new_signage_point\", \"data\": {\"proofs\": [], \"signage_point\": {\"challenge_chain_sp\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"challenge_hash\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"difficulty\": 2672, \"reward_chain_sp\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"signage_point_index\": 8, \"sub_slot_iters\": 135266304}, \"success\": true}, \"destination\": \"wallet_ui\", \"origin\": \"chia_farmer\", \"request_id\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"} 2022-01-24 21:20:48.417804: Got message: {\"ack\": false, \"command\": \"new_farming_info\", \"data\": {\"farming_info\": {\"challenge_hash\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"passed_filter\": 0, \"proofs\": 0, \"signage_point\": \"0x35e9aaf13ebca31660f9720f97cf2c127a01a24440a6a253b5953196da715162\", \"timestamp\": 1643077248, \"total_plots\": 3}, \"success\": true}, \"destination\": \"wallet_ui\", \"origin\": \"chia_farmer\", \"request_id\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"} 2022-01-24 21:20:57.402740: Got message: {\"ack\": false, \"command\": \"new_signage_point\", \"data\": {\"proofs\": [], \"signage_point\": {\"challenge_chain_sp\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"challenge_hash\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"difficulty\": 2672, \"reward_chain_sp\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"signage_point_index\": 9, \"sub_slot_iters\": 135266304}, \"success\": true}, \"destination\": \"wallet_ui\", \"origin\": \"chia_farmer\", \"request_id\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"} 2022-01-24 21:20:57.402740: Got message: {\"ack\": false, \"command\": \"new_farming_info\", \"data\": {\"farming_info\": {\"challenge_hash\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"passed_filter\": 0, \"proofs\": 0, \"signage_point\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", \"timestamp\": 1643077257, \"total_plots\": 3}, \"success\": true}, \"destination\": \"wallet_ui\", \"origin\": \"chia_farmer\", \"request_id\": \"XxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"}","s":"WebSockets","u":"/rpc/","h":"#websockets","p":3140},{"i":3149,"t":"Most of the rpc methods are accessible through the different client objects in chia-blockchain/chia/rpc. For examples of usage, see the command line implementation (chia wallet, chia show, etc). Python Example (courtesy of baerrs)​ import requests import urllib3 import json urllib3.disable_warnings() headers = {'Content-Type': 'application/json'} url = \"https://localhost:8555/get_blockchain_state\" data = '{}' cert = ('ssl/full_node/private_full_node.crt', 'ssl/full_node/private_full_node.key') response = json.loads(requests.post(url, data=data, headers=headers, cert=cert, verify=False).text) print(json.dumps(response, indent=4, sort_keys=True))","s":"Python","u":"/rpc/","h":"#python","p":3140},{"i":3151,"t":"A javascript client can be found here: https://github.com/Chia-Mine/chia-agent. There is also another client here: https://github.com/freddiecoleman/chia-client. C# Example (courtesy of Kryptomine)​ A C# Client can be found on Nuget/Github: https://www.nuget.org/packages/Chia-Client-API using System; using Chia_Client_API.WalletAPI_NS; using CHIA_RPC.General_NS; using CHIA_RPC.Wallet_NS.Wallet_NS; namespace ChiaExamples { internal class Program { private static Wallet_RPC_Client Wallet = new Wallet_RPC_Client(reportResponseErrors: false); public static void Main() { WalletID_RPC walletID_RPC = new WalletID_RPC(1); GetWalletBalance_Response response = Wallet.GetWalletBalance_Sync(walletID_RPC); Console.WriteLine(response.wallet_balance.confirmed_wallet_balance_in_xch); Console.ReadKey(); } } }","s":"Javascript","u":"/rpc/","h":"#javascript","p":3140},{"i":3153,"t":"Service Managed Objects Associated API Associated RPC API FarmerService Farmer FarmerAPI FarmerRpcApi FullNodeService FullNode FullNodeAPI FullNodeRpcApi HarvesterService Harvester HarvesterAPI HarvesterRpcApi IntroducerService Introducer IntroducerAPI FullNodeRpcApi CrawlerService Crawler CrawlerAPI CrawlerRpcApi DataLayerService DataLayer DataLayerAPI DataLayerRpcApi TimelordService Timelord TimelordAPI TimelordRpcApi WalletService WalletNode WalletNodeAPI WalletRpcApi Explanation: Each service is composed of a managed object, an API for control, and an RPC API for remote control. The combination of these into the service is controlled by the service alias types. Service: This column lists the different manager services within the Chia system. Managed Objects: This column details the core entities or components that each service oversees. Associated API: This column specifies the API class associated with each service. This API class defines the interface for interacting with the corresponding managed objects. Associated RPC API: This column lists the RPC API class associated with each service. This RPC API class allows for remote control of the managed objects through Remote Procedure Calls (RPC).","s":"Services","u":"/rpc/","h":"#services","p":3140},{"i":3155,"t":"Each sub-slot in both the challenge chain and the reward chain is divided into 64 smaller VDFs. Between each of these smaller VDFs is a point called a signage point. Timelords publish the VDF output and proof when they reach each signage point. info The challenge and reward chains both have signage points. The infused challenge chain, however, does not. The signage points occur every 9.375 seconds (64 signage points per 600-second sub-slot). The number of iterations between each signage point is sp_interval_iterations, which is equal to sub-slot_iterations / 64. The challenge at the start of the sub-slot is also a valid signage point. As each of the 64 signage points in the sub-slot is reached, those points are broadcast, starting from the fastest timelord's full node, and propagating to every other full node on the network. Farmers receive these signage points and compute a hash for each plot, at each signage point. If the hash starts with nine zeros, the plot passes the filter for that signage point, and can proceed. This disqualifies around 511/512 of all plot files in the network, for that signage point. The formula to compute the filter hash is: plot filter bits = sha256(plot id + sub slot challenge + cc signage point) The proof of space challenge is computed as the hash of the plot filter bits: PoSpace challenge = sha256(plot filter bits) Using this challenge, the farmers fetch quality strings for each plot that made it past the filter. Recall that this process requires around seven random disk seeks, which takes around 70 ms on a slow HDD. The quality string is a hash derived from part of the proof of space (but the whole proof of space has yet to be retrieved). info For both of our previous example, as well as the next example, we'll use the following values: sub-slot_iterations = 100,000,000 sp_interval_iterations = sub-slot_iterations / 64 = 1,562,500 The farmer computes the required_iterations for each proof of space. If the required_iterations < sp_interval_iterations, the proof of space is eligible for inclusion into the blockchain. At this point, the farmer fetches the entire proof of space from disk (which requires 64 disk seeks, or 640 ms on a slow HDD), creates an unfinished block, and broadcasts it to the network. info For the vast majority of eligible plots, required_iterations will be far too high, since on average 32 will qualify for the whole network for each 10-minute sub-slot. This is a random process so it's possible (though unlikely) for a large number of proofs to qualify. Any plot that does meet the required_iterations for a signage point will qualify as there is no rivalry between winning plots. The exact method for required_iterations is the following: sp_quality_string = sha256(quality_string + cc_signage_point) required_iterations = (difficulty * difficulty_constant_factor * int.from_bytes(sp_quality_string, \"big\", signed=False) // pow(2, 256) * expected_plot_size(size)) The difficulty constant factor is based on the initial constants of the blockchain. For Chia, it is 2^67. The difficulty varies per epoch, as explained in Section 3.11 'Section 3.11: Epochs and Difficulty Adjustment'). As you can see, the sp_quality_string is converted into a random number between 0 and 1, by dividing it by 2^256, and then multiplied by the plot size. For consensus purposes, the expected_plot_size is ((2 * k) + 1) * (2 ** (k - 1)), where k>=32<50. The actual plot size is that value times a constant factor, in bytes. This is because each entry in the plot is around k+0.5 bits, and there are around 2 ** k entries. The signage_point_iterations is the number of iterations from the start of the sub-slot to the signage point. The infusion_iterations is the number of iterations from the start of the sub-slot at which the block with at least the required quality can be included into the blockchain. This is calculated as: infusion_iterations = (signage_point_iterations + 3 * sp_interval_iterations + required_iterations) % sub-slot_iterations Therefore, infusion_iterations will be between 3 and 4 signage points after the current signage point. Farmers must submit their proofs and blocks before the infusion point is reached. The modulus is there to allow overflows into the next sub-slot, if the signage point is near the end of the sub-slot. This is expanded on in Section 3.9 'Section 3.9: Overflow Blocks and Weight'). info More information on infusion points is available in the VDFs page. Figure 5: timelords create proofs for both the signage point and the infusion point. But they only infuse (change the VDF classgroup) for the latter. Squares symbolize infusions, where a new VDF is started. Figure 5 shows the infusion point as a green square marked b1. The first and last blocks of the sub-slot are marked r1 and r2, respectively. For this example, the farmer will create the block at the time of the signage point marked with a red arrow, which we'll call b1'. At b1, the farmer's block gets combined with the VDF output for that point. This creates a new input for the VDF from that point on, i.e. we infuse the farmer's block into the VDF. b1 is only fully valid after two events have occurred: infusion_iterations has been reached, and Two VDF proofs have been included: one from r1 to the signage point and one from r1 to b1. (Actually it's more since there are three VDF chains, explained in Section 3.8 'Section 3.8: Three VDF Chains')). In Figure 5, the farmer creates the block at the time of the signage point, b1'. However, b1' is not finished yet, since it needs the infusion point VDF. Once the infusion_iterations VDF has been released, it is added to b1' to form the finished block at b1. Recall that in this example, sub-slot_iterations = 100,000,000 sp_interval_iterations = 1,562,500 For each of the 64 signage points, as they are released to the network every 9.375 seconds, or every 1,562,500 iterations, the farmer computes the plot filter and sees how many plots pass. For each passing plot, the farmer calculates required_iterations. Let's say the farmer calculates required_iterations < 1,562,500 once in the sub-slot. (We'll assume the exact required_iterations = 782,800 in this instance.) Figure 5 shows this happening at the 20th signage point. infusion_iterations is then computed as: infusion_iterations = signage_point_iterations + (3 * sp_interval_iterations) + required_iterations = (signage point * sp_interval_iterations) + (3 * sp_interval_iterations) + required_iterations = (20 * 1,562,500) + (3 * 1,562,600) + 782,700 = 36,722,300 After realizing they have won (at the 20th infusion point), the farmer fetches the whole proof of space, makes a block (optionally including transactions), and broadcasts this to the network. The block has until infusion_iterations (typically a few seconds) to reach timelords, who will infuse the block, creating the infusion point VDFs. With these VDFs, the block can be finished and added to the blockchain by full nodes.","s":"Signage and Infusion Points","u":"/signage-and-infusion-points/","h":"","p":3154},{"i":3157,"t":"Chia's original consensus, which was phased out before the launch of mainnet, used a single signage point per 10-minute subslot. This left the network vulnerable to short-range replotting attacks, where an attacker initiates a plot's creation after a signage point, and completes the plot before the next infusion point. The attacker could always choose a plot that passes the plot filter (because the signage point is hashed with the subslot challenge and the plot ID in calculating the filter) and then delete the plot after the infusion point. For a 512-filter, this would result in the attacker mimicking 512 plots (~51 TiB). In reality, under the original consensus, they would only need to own single computer capable of creating a plot in less than ten minutes. note Technically this isn't an attack because -- even if successful -- the \"attacker\" wouldn't gain an ability to cheat the network. However the \"attacker\" would be using the network in an unintended way, effectively turning Chia into a Proof of Work system. Therefore, Chia's new consensus was intentionally designed to discourage this behavior. The new consensus was introduced during Chia's beta phase. One of the modifications was to increase the number of signage points to 64 per 10-minute subslot, or one every 9.375 (600/64) seconds, on average. The Challenge Chain was also introduced (see the Three VDF Chains page for more info). The maximum distance between a signage point and the next infusion point is now 4 signage points (see the infusion_iterations formula, above), or 37.5 seconds. This is the maximum amount of time for the attack to be possible, but for it to be consistently applied, the minimum time of 28.125 seconds must be applied. Assuming a few extra seconds for network latency and other factors, the attack is now only possible if one can create a new plot in less than 25 seconds. note Keep in mind that this \"attack\" is really mimicking the ownership of around 51 TiB of storage. Even when it does become possible to run the attack consistently, it will likely be much cheaper to use the network as intended, storing plots on non-volatile storage. This begs the question: why not use even more signage points in the consensus? The simple answer is because as the signage points increase, it becomes more difficult for the timelords and nodes to keep up with the network. Sixty-four signage points per subslot was deemed enough to discourage the attack laid out above, while still allowing the timelords and nodes to perform as intended and to stay in sync.","s":"Rationale for choosing 64 signage points","u":"/signage-and-infusion-points/","h":"#rationale-for-choosing-64-signage-points","p":3154},{"i":3159,"t":"Quality string: A small part of the proof of space, 2 x values out of the total 64 x values, which can be retrieved efficiently from disk, and which values_to_fetch is determined by the signage point. sp_quality_string: A hash of the quality string concatenated with the challenge chain's signage point. This hash is what ultimately decides the \"luck\" of a certain proof, using the size of required_iterations sp_interval_iterations: Defined as floor(sub-slot_iterations / 64). Signage points: 64 intermediary points in time within a sub-slot in both the challenge and reward chains, for which VDFs are periodically released. At each signage point, a VDF output is created and broadcast through the network. The first signage point in the sub-slot is the challenge itself. Each block has a signage point such that the proof of space in the block must be eligible for that signage point. required_iterations: A number computed using the quality string, used to choose proofs of space which are eligible to make blocks. The vast majority of proofs of space will have required_iterations which are too high, and thus not eligible for inclusion into the chain. This number is used to compute the infusion point. Infusion point: The point in time at infusion_iterations from the challenge point, for a proof of space with a certain challenge and infusion_iterations. At this point, the farmer's block gets infused into the reward chain VDF. The infusion point of a block is always between 3 and 4 signage points after the signage point of that block. Computed as signage_point_iterations + 3 * sp_interval_iterations + required_iterations. The delay between the signage point and infusion point has many benefits, including defense against orphaning and selfish farming, decreased forks, and no VDF pauses. This delay of around 28 seconds is given so that farmers have enough time to sign without delaying the slot VDF. Well-behaving farmers sign only one signage point with each proof of space, meaning that attackers cannot easily reorg the chain.","s":"Definitions","u":"/signage-and-infusion-points/","h":"#definitions","p":3154},{"i":3161,"t":"If you opt to create compressed plots, you will need to decide on the level of compression. info You can mix and match plots with different compression levels. For example, you could have some C0, C3, and C7 plots on the same machine. Your harvester will handle this without issue. However, most users will likely choose to convert all of their plots to the same compression level. As a reminder, BladeBit CUDA and BladeBit RAM are plotters supported by CNI that are capable of creating compressed plots. Whenever we mention compression levels, we are referring to those defined by BladeBit. (Many people have also used the third-party GigaHorse plotter by madMAx. This plotter uses a similar nomenclature for its compression levels, but they have different definitions.) The next sections list three methods to determine the compression level that will work best for your farm, starting with the most general and ending with the most specific for your own hardware.","s":"Choosing a compression level","u":"/plotting-compression/","h":"","p":3160},{"i":3163,"t":"You can use the following table as a basic guide for choosing a compression level. It assumes BladeBit CUDA was used to create K32 plots: Level Size (GiB) Relative Size Reward Increase Min Spec Harvester C0 101.4 100% 0% Pi 4 C1 87.5 86.3% 15.9% Pi 4 C2 86.0 84.8% 17.9% Pi 4 C3 84.5 83.3% 20.0% Pi 4 C4 82.9 81.8% 22.3% Desktop CPU C5 81.3 80.2% 24.7% Fast CPU C6 79.6 78.5% 27.4% Fast CPU C7 78.0 76.9% 29.8% GPU C9 75.2 74.2% 34.8% GPU The right column (Min Spec Harvester) shows the minimum type of computer required for harvesting at each compression level, where: Pi 4 refers to Chia's minimum spec hardware, the Raspberry Pi 4 with 4 GB of RAM for CLI farming, or 8 GB for GUI farming. Desktop CPU refers to a power-sipping computer such as the ASUS Chromebox. Fast CPU refers to a computer with a higher-end CPU such as an Intel Xeon. GPU refers to a computer with an Nvidia CUDA-class GPU. The minimum amount of DRAM required is around 600-700 MB for C7 harvesting. For example, a GTX 1060 will work. info A few things to keep in mind regarding these recommendations: The above table is meant as a general overview; it therefore assumes that your farm is somewhere from 500-1000 TiB. The more plots your farm has, the higher-end your harvester needs to be, all other factors being equal.","s":"Compression table","u":"/plotting-compression/","h":"#compression-table","p":3160},{"i":3165,"t":"In order to calculate your potential profits from farming at various compression levels, you can use this spreadsheet. Simply make a copy of it, then fill in the constants according to your farm. As you will see from the spreadsheet, the compression level you will ultimately choose will depend on a number of factors, such as electricity cost and the size of your farm.","s":"TCO spreadsheet","u":"/plotting-compression/","h":"#tco-spreadsheet","p":3160},{"i":3167,"t":"The third-party website xch.farm has tables for estimating your farm's maximum capacity depending on your CPU/GPU setup. Be sure to pay attention to the June 2024 column when planning your farm. If your harvester is capable of handling your desired number of plots listed in this column, you should be good to go until 2027 or later.","s":"Max farm size estimator","u":"/plotting-compression/","h":"#max-farm-size-estimator","p":3160},{"i":3169,"t":"The standalone version of BladeBit comes with a simulator that will determine the maximum size of your farm. The basic idea is that you pass in a compressed plot (C1-C9) and it will calculate the maximum number of plots/space your current harvester can handle. See the CLI reference for a list of options using the simulator. info The simulator's default values are typically fine, other than the filter size. For context, starting in June 2024 the plot filter will be reduced from 512 to 256. At this point, twice as many plots will pass the filter, so your harvester's workload will effectively double. You are recommended to use -f 256 with the simulator to prepare for this event. For more information on the plot filter, see our FAQ. note It is a good idea to create plots of various sizes (for example, one C3, one C7, and one C9) and then run the simulator against each of them. This will help you to plan for how many harvesters to use, the type of hardware to acquire, etc. The simulator's default mode will decompress your plot and then extrapolate your farm's maximum size, which should only take a few seconds. Example command using the default mode and a filter size of 256: bladebit simulate -f 256 info The simulator will only work with compressed plots. The simulator can also be configured to run a real-time simulation against a farm of any given size. This will give you a much better idea of how your system will perform on mainnet. To activate this mode, use the following flags: --power