base on A Command Line Wallet to Send/Receive BTC and NOTE Tokens # NOTE Wallet (Community Version) The wallet is a simple CLI tool to manage Bitcoin and NOTE crypto assets. ## Installation install nodejs and npm or yarn or pnpm, first. then install the dependencies. ``` pnpm i ``` ## Setup rename `.env.example` to `.env`, and fill in the required information. Setup your wallet WALLET_MNEMONIC in `.env`, if you keep empty, the tool will generate a new one. backup your mnemonic, it's your only chance to recover your wallet. ## Start ``` pnpm run start ``` ## Choose Network ``` use BTClivenet ``` or ``` use BTCtestnet ``` ## Upgrade Token to bind UTXOs ``` tokenlist ``` When you possess a 'needUpgrade' flag token, it's essential to upgrade it in order to bind the UTXO within the specified version. ``` up [token name] ``` ex. ``` up NOTE ``` ## Show Balance ``` balance ``` Charge some satoshis to `mainAddress`, then check the balance of `mainAddress` with 'balance' command. ## Show Token List and Balance ``` tokenlist ``` ## Send tokens to tokenAddress of others ``` sendtoken [token address] [tick] [amount] ``` a donate example ``` sendtoken bc1pcuh2nlk4zld8ljklal64ks4hznh7q94lxkguzrsk55dg84qgrt6qswzywl NOTE 1000000 ``` amount is with decimal point, 1 NOTE = 100,000,000 sats. the example amount 1,000,000 sats = 0.01 NOTE. ## Check Token Balance Wait some minutes for the transaction to be confirmed, then check the balance of N20 Tokens with 'balance' and 'tokenlist' command. ``` balance tokenlist ``` ## Send BTC Satoshis to others ``` send [other address] [satoshis] ``` # Developmet We offer several example programs for developers to publish their own contracts, deploy tokens, and provide mining programs. The code is in `publish.ts` and `mint.ts`. You need to understand the code and write your own program logic. Feel free to follow us on [Twitter](https://x.com/NoteProtocol) and join our [Discord](https://discord.gg/tGBHKDPkF5) to interact with other builders. ## Publish Smart Contract ``` publish [contract name] ``` ## Deploy Token ``` deploy ``` ## Mint Token ``` mint ``` ### Test Case Switch to the testnet ``` use BTCtestnet ``` Use the `info` command to get the main address, then obtain test tokens via the faucet. ``` info ``` #### Testnet4 Faucet https://testnet4.anyone.eu.org/ https://mempool.space/testnet4/faucet and send them to the main address. Finally, you can try using the `mint` command ``` mint ``` # Notice Please thoroughly test on the testnet before deploying to the mainnet. No one is responsible for the accuracy of protocols, indexers, or contract codes, nor does anyone guarantee the value of assets. Write smart contracts entirely at your own risk. ", Assign "at most 3 tags" to the expected json: {"id":"8060","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"