Wednesday, August 28, 2019

BitcoinSV generate new address javascript

BitcoinSV는 기존의 Bitcoin Core의 라이브러리인 bitcoinjs-lib(https://github.com/bitcoinjs/bitcoinjs-lib)를 사용할수도 있지만, MoneyButton에서 제공한 bsv(https://github.com/moneybutton/bsv)가 현재로서는 최선의 선택이다. 

다음과 같이 bsv라이브러리를 설치하자.
> npm i -S bsv

그리고 다음과 같이 network에 맞는 코드를 사용해서 address를 생성하자. 
### testnet address 생성
const bsv = require('bsv')const privateKey = bsv.PrivateKey.fromRandom('testnet')

// WIF는 저장해야할 private key의 string이다.
// 콘솔에 출력되는 값을 복사하여 보관하면 된다.
console.log(privateKey.toWIF())

// 마찬가지로 address 문자열을 복사하여 보관하자.
const address = bsv.Address.fromPrivateKey(privateKey, 'testnet')
console.log(address.toString())

### mainnet address 생성
const bsv = require('bsv')const privateKey = bsv.PrivateKey.fromRandom()

// WIF는 저장해야할 private key의 string이다.
// 콘솔에 출력되는 값을 복사하여 보관하면 된다.
console.log(privateKey.toWIF())

// 마찬가지로 address 문자열을 복사하여 보관하자.
const address = bsv.Address.fromPrivateKey(privateKey)
console.log(address.toString())

testnet과 mainnet의 차이는 단순히 fromRandom, fromPrivateKey를 호출할 때 'testnet'이라는 문자열을 추가적으로 전달함으로서 가능하다. 

mainnet은 private key가 K, L로 시작되고 testnet은 c로 시작되는 점이 차이점이다.

Wednesday, August 21, 2019

Node.js destructing typescript


아래와 같이 req.body의 userId, contentId, amount를 destructing을 할때 javascript에서는 다음과 같이 했었다.

const { userId, contentId, amount} = req.body 

그러나 우리는 typescript를 사용할 것이므로 userId 등에 각각 정확한 타입을 기입하고 싶을 때는 아래와 같이 하면된다.

const {
userId, contentId, amount
}: {
userId: string, contentId: string, amount: number
} = req.body

Node.js check top level module environment require.main

Python의 아래와 같이 Node.js의 node에서 바로 실행되는 함수 여부임을 알수 있게 해주는 것이 있다.
if __name__ == "__main__":

다음과 같이 하면 된다.
if (require.main === module) {
}