Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
A REPL tool for Chia that incorporates various chia and crypto utilities in a single, interactive node environment.
A REPL tool for Chia that incorporates various chia and crypto utilities in a single, interactive node environment.
The wiki has more examples and detail.
npm install -g chia-repl
chia-repl
🌿 Welcome to Chia!
🌿
npm install
npm start -w chia-repl
> chia-repl@0.12.3 start
> node index.js
🌿 Welcome to Chia!
🌿
Uses the node repl so the CLI works like node's.
REPL commands always start with .
and are lsited with .help
.
🌿 .help
.break Sometimes you get stuck, this gets you out
.clear Break, and also clear the local context
.connect Opens the websocket connection to the chia daemon using the currently loaded connection
.credits Shows credits for the various tool authors
.disconnect Closes the websocket connection to the chia daemon
.editor Enter editor mode
.exit Exit the REPL
.help Print this help message
.list-connections Displays a list of saved connection names
.listen Opens the websocket connection to the chia daemon and listens for `wallet_ui` messages
.load Load JS from a file into the REPL session
.load-connection Loads a saved connection with an optional name
.more-help Shows more help about using the environment
.save Save all evaluated commands in this REPL session to a file
.save-connection Saves the current connection with an optional name
.save-options Saves the options
.version Shows the version of this application
Press Ctrl+C to abort current expression, Ctrl+D to exit the REPL
🌿
Various global objects and functions are available within the REPL environment and can be listed with .more-help
.
Some of these configure the connection and REPL options, while other enable interaction with the chia node, utility functions, and the clvm.
🌿 .more-help
These global objects are available within the REPL environment
bls BLS signature functions
chia Chia node rpc services. This object is only availble after a successful .connect
All functions on these chia services are async & awaitable: crawler, daemon, farmer, full_node, harvester, wallet, simulator
clvm_tools clvm_tools-js functions (run, brun, opc, opd, read_ir)
clvm clvm-js (Program, SExp etc.)
utils Chia-utils (bech32m and other helpers)
connection Properties of the current connection
options Configurable REPL options
contentHasher A helper to generate NFT compatible hashes for files or remote resources
metadataFactory A helper to generate NFT and Collection metadata
minter The NFT minter. Only availble when connected to the chia daemon
repl.builtinModules
Show other available builtin node modules
These global functions are invocable within the REPL environment
compile(chiaLisp, prefix, ...compileArgs)
Compiles a chialisp program into its address, clvm, puzzle, and puzzle_hash
test(chiaLisp, compileArgs = [], programArgs = []))
Runs a chialisp program and displays its output
The global connection
context object has the host, port, and path to cert files. These properties can be set inside the repl with connection.host = "my-host"
etc.
Once connected to the daemon
each of the service endpoints becomes availalbe as an awaitable context function.
Knowing the chia rpc api will help immensely. All endpoints and data payloads should work. Since it is a full nodejs REPL environment, core modules like fs
and http
are available.
🌿 let dataFileInfo = {
name: 'test-nft-by-you',
type: 'image/jpg',
filepath: 'E:\\nft\\flower.jpg'
};
🌿 let mintingInfo = {
wallet_id: 2,
target_address: 'txch10kn82kl6hqv47qzeh4ugmqjr5mmdcnrlymfx8wl9nrhhkyxnzfkspna7l9',
};
🌿 let collectionMetaData = metadataFactory.createCollectionMetadata('test-nft-collection-by-you');
🌿 let nftMetadata = metadataFactory.createNftMetadata('test-nft-by-you', collectionMetaData);
🌿 await minter.createNftFromFile(dataFileInfo, mintingInfo, nftMetadata);
{
spend_bundle: {
aggregated_signature: '0x99e39df189f009a4679067d212a6845b7bfec05452d9696de79907a861239de3cbd247a27c39b2ca2492740f9f4aab58028ebf035f40597d16ddeee5194f8dfaa8c8ec8e90b6c91fce60944f0e55997b443be63ed8e9dcb9d685a9b473e1b441',
coin_solutions: [ [Object], [Object], [Object] ]
},
success: true,
wallet_id: 2
}
🌿 const {SExp, OPERATOR_LOOKUP, KEYWORD_TO_ATOM, h, t, run_program} = clvm;
🌿 const plus = h(KEYWORD_TO_ATOM["+"]);
🌿 const q = h(KEYWORD_TO_ATOM["q"]);
🌿 const program = SExp.to([plus, 1, t(q, 175)]);
🌿 const env = SExp.to(25);
🌿 const [cost, result] = run_program(program, env, OPERATOR_LOOKUP);
🌿 let isEqual = result.equal_to(SExp.to(25 + 175));
🌿 isEqual = result.as_int() === (25 + 175);
true
🌿 cost
833
🌿 result
SExp { _atom: Bytes { _b: Uint8Array(2) [ 0, 200 ] }, _pair: null }
🌿
🌿 clvm_tools.run("(mod ARGUMENT (+ ARGUMENT 3))")
'(+ 1 (q . 3))'
🌿 clvm_tools.brun(_, '1')
'4'
🌿
🌿 clvm_tools.run('../examples/factorial.clsp')
'(a (q 2 2 (c 2 (c 5 ()))) (c (q 2 (i (= 5 (q . 1)) (q 1 . 1) (q 18 5 (a 2 (c 2 (c (- 5 (q . 1)) ()))))) 1) 1))'
🌿 clvm_tools.brun(_, '(5)')
'120'
🌿
🌿 compile('../examples/piggybank.clsp', 'xch', '-i../examples/include')
{
address: 'tcxh1smq2mvt8mdmulp7q5tvwh8rn8g6u8ykfr5020a3aj3mj3hsha5ns3zea78',
clvm: '(a (q 2 (i (> 11 5) (q 2 (i (> 11 14) (q 4 (c 10 (c 4 (c 11 ()))) (c (c 10 (c 23 (q ()))) ())) (q 4 (c 10 (c 23 (c 11 ()))) ())) 1) (q 8)) 1) (c (q 0xcafef00d 51 . 500) 1))',
puzzle: 'ff02ffff01ff02ffff03ffff15ff0bff0580ffff01ff02ffff03ffff15ff0bff0e80ffff01ff04ffff04ff0affff04ff04ffff04ff0bff80808080ffff04ffff04ff0affff04ff17ffff01ff80808080ff808080ffff01ff04ffff04ff0affff04ff17ffff04ff0bff80808080ff808080ff0180ffff01ff088080ff0180ffff04ffff01ff84cafef00dff338201f4ff018080',
puzzle_hash: '86c0adb167db77cf87c0a2d8eb9c733a35c392c91d1ea7f63d947728de17ed27'
}
🌿 test('(mod ARGUMENT (+ ARGUMENT 3))', [], [ '15' ])
'18'
🌿 .connect
Connecting to wss://localhost:55400...
done
🌿 await chia.full_node.get_network_info()
{ network_name: 'testnet10', network_prefix: 'txch', success: true }
🌿
Since it is a javascript environment, variables can be defined and set, and are preserved through. The special value _
can also be used to chain function calls.
🌿 await chia.full_node.get_blockchain_state()
blockchain_state: {
...
}
🌿 _.blockchain_state.peak.header_hash
'0x098b7fd5768174776eb4a29cedcabffb21c487b592c73f72ac33bc4ffecf6c38'
🌿 await chia.full_node.get_block({ header_hash: _ })
{
block: {
...
}
}
🌿
🌿 chia.daemon.getPayloadDescriptor('is_running')
{
type: 'object',
required: [ 'service' ],
properties: { service: { type: 'string' } }
}
🌿 var p = chia.daemon.makePayload('is_running')
undefined
🌿 p.service = 'chia_fulll_node'
'chia_fulll_node'
🌿 await chia.daemon.is_running(p)
{ is_running: false, service_name: 'chia_fulll_node', success: true }
🌿 var seed = Uint8Array.from([
... 0, 50, 6, 244, 24, 199, 1, 25, 52, 88, 192,
... 19, 18, 12, 89, 6, 220, 18, 102, 58, 209, 82,
... 12, 62, 89, 110, 182, 9, 44, 20, 254, 22
... ]);
undefined
🌿 bls.AugSchemeMPL.keyGen(seed)
$38c91b9e16a98741$export$8f54525b330fd87b {
value: 25076100791286022435148702897030204761993316905161740767284798605189048279853n
}
🌿
chia and its logo are the registered trademark or trademark of Chia Network, Inc. in the United States and worldwide.
FAQs
A REPL tool for Chia that incorporates various chia and crypto utilities in a single, interactive node environment.
We found that chia-repl demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.