nem-sdk를 사용하여 응용 프로그램을 신속하게 만듭니다.

8135 단어 BlockchainNEM
어드벤트 캘린더 전혀 늦지 않는 맨이므로, 서둘러 어플리케이션을 만들었습니다.



우선 움직이는 곳까지 만들었을 뿐이므로, react 로서는 빌어 먹을 적당한 실장이 되고 있습니다. 주말 redux 넣어 청소합니다.

him0/nem-joya: 미안해

아직 완성되지 않았기 때문에 연말까지 낸다.

환경



NodeJS (v8.9.0)
create-react-app (1.4.3)
yarn (1.3.2)

Webpack을 사용하면 앞에서 제대로 움직일 것입니다.


$ mkdir nem-application
$ create-react-app nem-application
$ yarn add nem-sdk

ES6에서 NEM-SDK를 사용하는 경우 지금 느낌으로 가져와 사용
import nem from 'nem-sdk';

Web API 로부터 블록 높이를 취득하는 것은 이런 느낌이 된다.

Web API를 이용하는 경우는, port 지정으로, nem.model.nodes.defaultPort 를 지정한다.
const objects = nem.model.objects.create('endpoint');
const apiEndpoint = objects(nem.model.nodes.defaultMainnet, nem.model.nodes.defaultPort);

nem.com.requests.chain.height(apiEndpoint).then(response => {
  this.setState({ blockHeight: response['height'] });
});

Websocket에서 블록 높이를 스트리밍으로 가져옵니다.

Websocket 을 이용하는 경우는, port 지정으로, nem.model.nodes.websocketPort 를 지정한다.

Websocket이 연결되고 새로운 블록이 올 때 callback이 실행됩니다.

address 의 지정은, transaction 의 스트리밍을 할 때에, 지정한 주소에 관련되는 트랜잭션(transaction)만을 취득하기 위해서 지정할 필요가 있다 (부하 대책?).
const address = 'NBBNC2K72UDIN5HMRAEUWJ4F22RZPQL2LYONUDET';
const websocketsEndpoint = objects(nem.model.nodes.defaultMainnet, nem.model.nodes.websocketPort);
const websockets = nem.com.websockets;
const connector = websockets.connector.create(websocketsEndpoint, address);

connector.connect().then(() => {
  websockets.subscribe.chain.blocks(connector, response => callback);
});

초기값은 API로 업데이트는 Websocket으로 하는 것이 좋을 것 같다



스트리밍의 API가 흘러 오는 것은, 새로운 블록이 확정했을 때이므로, 우선은, Web API 쪽이 취득 -> Websocket 로 흘러 오면, 갱신한다고 하는 방침이 좋을 것 같다.

블록 높이 취득하고 있는 구현을 참고로 해 주면 좋을지도.

Websocket으로 트랜잭션 감지



2017-12-18의 시점에서 websocket에서 unfonfirmed의 스트리밍에 연결해 보았지만 전혀 흐르는 기색이 없었다
(NIS 의 소스 코드가 공개되어 있지 않기 때문에 이런 경우에 추론이 되어 버리는 것이, NEM 의 좋지 않은 곳).
connector.connect().then(() => {
  websockets.subscribe.account.transactions.recent(connector,  response => callback);
  websockets.subscribe.account.transactions.unconfirmed(connector, response => callback));
});

이번은, 블록에 받아들여진 트랜잭션을 알면 좋았기 때문에, chain/heigh 의 스트림에 포함되는, transaction 를 보는 느낌으로 대응했다.
websockets.subscribe.chain.blocks(connector, response => {
  if (response['transactions'].some(tx => tx['recipient'] === this.address)) {
  // いろいろ
  }
});

웹 서버에 스테이트리스로 만드는 궁리하면 블록체인에서 하는 의미가 조금 나온다



서버에서 정보를 유지하고자 한다면 스스로 스토리지 준비하거나 AWS인지 뭔가에 돈을 쓰게 됩니다. . 게다가 영구적으로 사라지지 않는 스토리지라는 점도 좋네요.

최종적으로는, 앞으로 몇 번 두드리면 108회인지 카운트하고 싶지만, 그 근처를 DB로 대응하는 것이 아니라, nem의 블록 체인으로 카운트하고 싶다. 구체적으로는, 지정된 블록 이후에 몇번 트랜잭션이 있었는지를 그 카운트에 베이스로 하고 싶다.

모자이크에서 움직이는 XXX는 나오고 있지만 ...



결국 거래의 내용을 보면 좋은 이야기입니다.

개발하고 있는 사람은 알겠다고 생각하지만, 결국 블록 고취하는 것과 특정의 주소의 모자이크의 소지 상태 취득하는 것과 같은 난이도로, 의미없구나-라고 생각하면 동기가 아니다.

그렇다면 종을 치면 받을 수있는 108 개의 토큰을 만들고 나눌 수 있습니까? 요망 있다면 합니다만, 어떨까.

그렇다면 서버 측에서도 블록 체인을 모니터링하는 형태입니다.

늦어서 미안해.



연말까지는, 체재 정돈해 놀 수 있도록 해 둡니다. 번뇌를 지워라.

구현 갱신하면 속편 씁니다.

좋은 웹페이지 즐겨찾기