npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@nervosnetwork/ckb-sdk-utils

v0.109.1

Published

Utils module of @nervosnetwork/ckb-sdk-core

Downloads

4,319

Readme

ckb-sdk-utils

@nervosnetwork/ckb-sdk-utils is the utils module of @nervosnetwork/ckb-sdk-core, which provides necessary methods for the sdk, including encryption, key-pair generation, address generation and so on.

See Full Doc

Most Used Utilities

  • Address

    • utils.AddressPrefix
    • utils.AddressType
    • utils.privateKeyToAddress: get address from private key
    • utils.pubkeyToAddress: get address from public key
    • utils.bech32Address: args to short/full version address
    • utils.fullPayloadToAddress: script to full version address of obselete version, deprecated and use utils.scriptToAddress instead
    • utils.parseAddress: get address payload
    • utils.addressToScript: get lock script from address
    • utils.scriptToAddress: get full address of new version from script
  • Utils

    • utils.blake160
    • utils.bytesToHex
    • utils.hexToBytes
    • utils.toUint16Le
    • utils.toUint32Le
    • utils.toUint64Le
  • System Scripts

Address

/**
 * @description address prefix
 * @see https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0021-ckb-address-format/0021-ckb-address-format.md#wrap-to-address
 */
utils.AddressPrefix
// {
//   Mainnet: 'ckb', // mainnet prefix
//   Testnet: 'ckt', // testnet prefix
// }
/**
 * @description address payload format types
 * @see https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0021-ckb-address-format/0021-ckb-address-format.md#payload-format-types
 */
utils.AddressType
// {
//   HashIdx: '0x01',      // short version address
//   DataCodeHash: '0x02', // full version address with hash type = 'data'
//   TypeCodeHash: '0x04', // full version address with hash type = 'type'
// }
/**
 * @description get short version address by private key
 */
utils.privateKeyToAddress('0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', {
  prefix: utils.AddressPrefix.Mainnet, // prefix is optional, default to 'ckb'
})
// ckb1qyqw975zuu9svtyxgjuq44lv7mspte0n2tmqqm3w53
/**
 * @description get short version address by public key
 */
utils.pubkeyToAddress('0x024a501efd328e062c8675f2365970728c859c592beeefd6be8ead3d901330bc01', {
  prefix: utils.AddressPrefix.Testnet,
})
// ckt1qyqrdsefa43s6m882pcj53m4gdnj4k440axqswmu83
/**
 * @description get short/full version address from args
 */
utils.bech32Address('0x36c329ed630d6ce750712a477543672adab57f4c', {
  prefix: utils.AddressPrefix.Mainnet,
  type: utils.AddressType.HashIdx,
  codeHashOrCodeHashIndex: '0x00',
})
// ckb1qyqrdsefa43s6m882pcj53m4gdnj4k440axqdt9rtd
/**
 * @description get full version address by a lock script
 * @params args - lock.args
 * @params type - utils.AddressType.DataCodeHash if lock.hash_type = 'data'
 *                otherwise utils.AddressType.TypeCodeHash
 * @params prefix - utils.AddressPrefix.Mainnet or utils.AddressPrefix.Testnet
 * @params codeHash - lock.code_hash
 */
utils.fullPayloadToAddress({
  args: '0x36c329ed630d6ce750712a477543672adab57f4c',
  type: utils.AddressType.DataCodeHash,
  prefix: utils.AddressPrefix.Testnet,
  codeHash: '0xa656f172b6b45c245307aeb5a7a37a176f002f6f22e92582c58bf7ba362e4176',
})
// ckt1q2n9dutjk669cfznq7httfar0gtk7qp0du3wjfvzck9l0w3k9eqhvdkr98kkxrtvuag8z2j8w4pkw2k6k4l5czshhac
/**
 * @description parse short version address
 *              the returned value is `type | index | args`,
 *              in this case `01 | 00 | 36...4c`
 */
utils.parseAddress('ckt1qyqrdsefa43s6m882pcj53m4gdnj4k440axqswmu83', 'hex')
// 0x010036c329ed630d6ce750712a477543672adab57f4c

/**
 * @description parse full version address
 *              the returned value is ` type | code hash | args`
 *              in this case `02 | 9b...e8 | b3...64`
 */
utils.parseAddress(
  'ckb1q2da0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xw3vumhs9nvu786dj9p0q5elx66t24n3kxgdwd2q8',
  'hex',
)
// 0x029bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8b39bbc0b3673c7d36450bc14cfcdad2d559c6c64
/**
 * @description restore lock script from a short version address
 */
utils.addressToScript('ckt1qyqrdsefa43s6m882pcj53m4gdnj4k440axqswmu83')
// {
//   codeHash: '0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8',
//   hashType: 'type',
//   args: '0x36c329ed630d6ce750712a477543672adab57f4c'
// }

/**
 * @description restore lock script from a full version address
 */
utils.addressToScript('ckb1qsvf96jqmq4483ncl7yrzfzshwchu9jd0glq4yy5r2jcsw04d7xlydkr98kkxrtvuag8z2j8w4pkw2k6k4l5czfy37k')
// {
//   codeHash: '0x1892ea40d82b53c678ff88312450bbb17e164d7a3e0a90941aa58839f56f8df2',
//   hashType: 'type',
//   args: '0x36c329ed630d6ce750712a477543672adab57f4c'
// }
/**
 * @description generate full address of new version from script, the address conforms to format type 0x00
 * @tutorial https://github.com/nervosnetwork/rfcs/pull/239/
 */
utils.scriptToAddress({
  "codeHash": "0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8",
  "hashType": "type",
  "args":"0xb39bbc0b3673c7d36450bc14cfcdad2d559c6c64"
})
// ckb1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqdnnw7qkdnnclfkg59uzn8umtfd2kwxceqxwquc4

Utils

/**
 * @description get the blake160 digest of a message
 */
utils.blake160(
  new Uint8Array([ 2, 74, 80, 30, 253, 50, 142, 6, 44, 134, 117, 242, 54, 89, 112, 114, 140, 133, 156, 89, 43, 238, 239, 214, 190, 142, 173, 61, 144, 19, 48, 188, 1]),
  'hex',
)
// 36c329ed630d6ce750712a477543672adab57f4c
utils.bytesToHex(new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]))
// 0x48656c6c6f20576f726c64
utils.hexToBytes('0x48656c6c6f20576f726c64')
// Uint8Array [ 72, 101, 108, 108, 111,  32, 87, 111, 114, 108, 100 ]
utils.toUint16Le('0xbcd')
// 0xcd0b
utils.toUint32Le('0x123456')
// 0x56341200
utils.toUint64Le('0x1234567890abcdef')
// 0xefcdab9078563412
utils.parseEpoch('0x2003e80010000200')
// { length: '0x3e8', index: '0x10', number: '0x200' }
utils.serializeEpoch({ length: '0x3e8', index: '0x10', number: '0x200' })
// 0x2003e80010000200
utils.rawTransactionToHash(rawTx)
// tx hash
/**
 * @description get hash of a script
 */
utils.scriptToHash({
  codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
  args: '0x01',
  hashType: 'type',
})
// 0xd39f84d4702f53cf8625da4411be1640b961715cb36816501798fedb70b6e0fb

System Scripts

System Scripts