1.0.39 • Published 5 years ago

waves-crypto v1.0.39

Weekly downloads
8
License
MIT
Repository
github
Last release
5 years ago

waves-crypto npm version

Using this library you can easily create and sign binary data for Waves blockchain. It provides all you need on crypto and binary layers. Small and dependency-free.

Includes:

  • Address generation
  • Address validation
  • Key pair generation
  • Bytes signature
  • Signature validation
  • Serialization primitives

Keys and Addresses

const wc = require('waves-crypto')

//Mainnet address
wc.address('seed') //3PGMh3vQekpTbvUAiKwdzhWsLaxoSBEcsFJ

//Testnet address
wc.address('seed', 'T')//3N4Lt6bWndH4yUAkTFge3F93yhT2c2Pmj9z

//Public and private keys from seed
wc.keyPair('seed')

/*{
  public: 'HzSnoJKTVwezUBmo2gh9HYq52F1maKBsvv1ZWrZAHyHV',
  private: '4mmuDf2GQJ6vJrKzVzyKUyGBwv6AfpC5TKpaF3MfEE5w'
}*/

//Public only
wc.publicKey('seed') //HzSnoJKTVwezUBmo2gh9HYq52F1maKBsvv1ZWrZAHyHV

//Private only
wc.privateKey('seed') //4mmuDf2GQJ6vJrKzVzyKUyGBwv6AfpC5TKpaF3MfEE5w

Address validation

const { validateAddress } = require('waves-crypto')

const validationErrors = validateAddress('3P2GVAniTmceyS7LE8HtQg1GEhyoghUZSvn') 
// ['Address checksum is invalid.']

isValid(validationErrors) //false

Signatures and verification

const wc = require('waves-crypto')
const { verifySignature, signBytes, publicKey } = wc

const seed = 'magicseed'
const pubKey = publicKey(seed)

const bytes = Uint8Array.from([1, 2, 3, 4])
const sig = signBytes(bytes, seed)
const isValid = verifySignature(pubKey, bytes, sig) //true

Serialization primitives

const wc = require('waves-crypto')
const { LONG, SHORT, BYTE, STRING, OPTION, BASE58_STRING, LEN } = wc

//Transfer transaction for 1 waves
const tx = {
  version: 1,
  type: 4,
  recipient: '3P6jpTTGxnVYGKpmaDWjCQWZxadYSdeykMP',
  amount: 1 * Math.pow(10, 8),
  fee: 100000,
  senderPublicKey: wc.publicKey('seed'),
  timestamp: Date.now(),
  assetId: null,
  feeAssetId: null,
  attachment: null,
}

const bytes = wc.concat(
  BYTE(tx.type),
  BYTE(tx.version),
  BASE58_STRING(tx.senderPublicKey),
  OPTION(BASE58_STRING)(tx.assetId),
  OPTION(BASE58_STRING)(tx.feeAssetId),
  LONG(tx.timestamp),
  LONG(tx.amount),
  LONG(tx.fee),
  BASE58_STRING(tx.recipient),
  LEN(SHORT)(STRING)(tx.attachment),
)

wc.signBytes(bytes, 'seed') // 5FSwfLir7YRavgRjdzs9Hg2KEv2Pu8szmXMgNbkt6BAm9fAJGURzDp6PiN1QhRfXBUYU1xJghzqijFebFA9yFXyp
1.0.39

5 years ago

1.0.38

6 years ago

1.0.37

6 years ago

1.0.32

6 years ago

1.0.36

6 years ago

1.0.35

6 years ago

1.0.34

6 years ago

1.0.33

6 years ago

1.0.31

6 years ago

1.0.30

6 years ago

1.0.29

6 years ago

1.0.28

6 years ago

1.0.27

6 years ago

1.0.26

6 years ago

1.0.25

6 years ago

1.0.24

6 years ago

1.0.23

6 years ago

1.0.22

6 years ago

1.0.21

6 years ago

1.0.20

6 years ago

1.0.19

6 years ago

1.0.18

6 years ago

1.0.17

6 years ago

1.0.16

6 years ago

1.0.15

6 years ago

1.0.14

6 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago