NEM2(Catapult)라면 네임스페이스에서 모자이크까지 한 번에 만들 수 있는 이야기
14234 단어 catapultBlockchainNEM
현재 NEM 모자이크 발행
현재 NEM에서 예를 들어 nemket.2018:ticket
라는 모자이크를 게시하려고 하면 다음 세 가지 트랜잭션이 발생해야 합니다.
nemket
만들기 트랜잭션 2018
를 만드는 트랜잭션 ticket
만들기 트랜잭션 그리고이 모자이크를 발행하기 위해 부모 네임 스페이스를 만드는 트랜잭션이 블록에 캡처 될 때까지 기다리고 자식 네임 스페이스를 만들고 블록에 캡처 될 때까지 기다리십시오 ... 그리고 모자이크 만들기 위해 3 블록을 기다려야합니다.
이게 뭐가 귀찮지 않니?
이것이, NEM2(Catapult)가 되면 1트랜잭션으로 작성할 수 있습니다! 예, 집계 트랜잭션을 사용하십시오.
NEM2 (Catapult) 모자이크 발행
NEM2(Catapult)로 nemket.2018:ticket
라는 모자이크를 발행할 때는 AggregateCompleteTransaction
로 다음의 트랜잭션을 1 정리해 보낼 수 있습니다.
nemket
만들기 트랜잭션 2018
를 만드는 트랜잭션 ticket
만들기 트랜잭션 ticket
공급량을 설정하는 트랜잭션 ※ NEM2의 경우, 모자이크 작성시에는 모자이크의 이름·프로퍼티를 설정하는 트랜잭션과 공급량을 설정하는 트랜잭션은 별도로 되어 있으며, 이 시점에서 집계 트랜잭션을 사용하고 있습니다.
소스 코드
※
TransactionHttp('http://localhost:9000')
는 nem2-camel 을 시작하고 연결import { Account, NetworkType, TransactionHttp, NamespaceId, RegisterNamespaceTransaction, Deadline, UInt64, AggregateTransaction, MosaicDefinitionTransaction, MosaicProperties, MosaicSupplyChangeTransaction, MosaicSupplyType } from 'nem2-sdk';
const privateKey = 'YOUR_PRIVATE_KEY';
const account = Account.createFromPrivateKey(privateKey, NetworkType.MIJIN_TEST);
const syncTransactionHttp = new TransactionHttp('http://localhost:9000');
const rootNamespaceName = 'nemket';
const subNamespaceName = '2018';
const mosaicNamespace = rootNamespaceName + '.' + subNamespaceName
const mosaicName = 'ticket';
const registerNamespaceTransaction = RegisterNamespaceTransaction.createRootNamespace(
Deadline.create(),
rootNamespaceName,
UInt64.fromUint(1000),
NetworkType.MIJIN_TEST
);
const registerSubNamespaceTransaction = RegisterNamespaceTransaction.createSubNamespace(
Deadline.create(),
subNamespaceName,
rootNamespaceName,
NetworkType.MIJIN_TEST
);
const mosaicDefinitionTransaction = MosaicDefinitionTransaction.create(
Deadline.create(),
mosaicName,
mosaicNamespace,
MosaicProperties.create({
supplyMutable: true,
transferable: true,
levyMutable: false,
divisibility: 0,
duration: UInt64.fromUint(1000)
}
),
NetworkType.MIJIN_TEST
);
const mosaicSupplyChangeTransaction = MosaicSupplyChangeTransaction.create(
Deadline.create(),
mosaicDefinitionTransaction.mosaicId,
MosaicSupplyType.Increase,
UInt64.fromUint(100000),
NetworkType.MIJIN_TEST
);
const aggregateTransaction = AggregateTransaction.createComplete(
Deadline.create(),
[
registerNamespaceTransaction.toAggregate(account.publicAccount),
registerSubNamespaceTransaction.toAggregate(account.publicAccount),
mosaicDefinitionTransaction.toAggregate(account.publicAccount),
mosaicSupplyChangeTransaction.toAggregate(account.publicAccount)
],
NetworkType.MIJIN_TEST,
[]
);
const signedTransaction = account.sign(aggregateTransaction);
syncTransactionHttp.announceSync(signedTransaction).subscribe(
x => console.log(x),
err => console.error(err)
);
응답
AggregateTransaction {
type: 16705,
networkType: 144,
version: 2,
deadline: Deadline { value: LocalDateTime { _date: [Object], _time: [Object] } },
fee: UInt64 { lower: 0, higher: 0 },
signature: '981D92E100937EBDD75B3D3EE45AA8BA6F9EA8CEEC74A155EFB0620DB87C955D7C7A10282DDE706401D431E30C0EECC79EAC19FAD00AAA4EEDB5AD38B9B49706',
signer:
PublicAccount {
publicKey: '60ED1F0F598C9429963243BFAB09E87A0836BEAB3F47CBF7F3244C57AD4CEB53',
address:
Address {
address: 'SAYWGBK3ELERVSKTSOX4X35RSHHQXAYPXG2FDHK6',
networkType: 144 } },
transactionInfo:
TransactionInfo {
height: UInt64 { lower: 0, higher: 0 },
index: undefined,
id: undefined,
hash: 'A2D0ACB12F235F1108F4ACADA8CE58C5A099FBEC1C499741E43FE6076E29644C',
merkleComponentHash: 'A2D0ACB12F235F1108F4ACADA8CE58C5A099FBEC1C499741E43FE6076E29644C' },
innerTransactions:
[ RegisterNamespaceTransaction {
type: 16718,
networkType: 144,
version: 2,
deadline: [Object],
fee: [Object],
signature: '981D92E100937EBDD75B3D3EE45AA8BA6F9EA8CEEC74A155EFB0620DB87C955D7C7A10282DDE706401D431E30C0EECC79EAC19FAD00AAA4EEDB5AD38B9B49706',
signer: [Object],
transactionInfo: undefined,
namespaceType: 0,
namespaceName: 'nemket',
namespaceId: [Object],
duration: [Object],
parentId: undefined },
RegisterNamespaceTransaction {
type: 16718,
networkType: 144,
version: 2,
deadline: [Object],
fee: [Object],
signature: '981D92E100937EBDD75B3D3EE45AA8BA6F9EA8CEEC74A155EFB0620DB87C955D7C7A10282DDE706401D431E30C0EECC79EAC19FAD00AAA4EEDB5AD38B9B49706',
signer: [Object],
transactionInfo: undefined,
namespaceType: 1,
namespaceName: '2018',
namespaceId: [Object],
duration: undefined,
parentId: [Object] },
MosaicDefinitionTransaction {
type: 16717,
networkType: 144,
version: 2,
deadline: [Object],
fee: [Object],
signature: '981D92E100937EBDD75B3D3EE45AA8BA6F9EA8CEEC74A155EFB0620DB87C955D7C7A10282DDE706401D431E30C0EECC79EAC19FAD00AAA4EEDB5AD38B9B49706',
signer: [Object],
transactionInfo: undefined,
parentId: [Object],
mosaicId: [Object],
mosaicName: 'ticket',
mosaicProperties: [Object] },
MosaicSupplyChangeTransaction {
type: 16973,
networkType: 144,
version: 2,
deadline: [Object],
fee: [Object],
signature: '981D92E100937EBDD75B3D3EE45AA8BA6F9EA8CEEC74A155EFB0620DB87C955D7C7A10282DDE706401D431E30C0EECC79EAC19FAD00AAA4EEDB5AD38B9B49706',
signer: [Object],
transactionInfo: undefined,
mosaicId: [Object],
direction: 1,
delta: [Object] } ],
cosignatures: [] }
블록 탐색기에서 확인
※ 익스플로러에 결함이 있는지 InnterTransaction이 3 개 밖에 없다 ...
요약
복수의 거래를 일괄 정리하는 문맥으로 말해지는 경우가 많은 어그리게이트트랜잭션입니다만, 네임스페이스로부터 모자이크의 작성까지를 1회로 실시할 수 있도록(듯이), 전송 트랜잭션 이외의 트랜잭션도 정리할 수 있습니다.
이렇게하면 현재 NEM에서 트랜잭션을 보내고 캡처되기를 기다리는 번거로운 일을하지 않아도 UX를 개선 할 수 있습니다.
Reference
이 문제에 관하여(NEM2(Catapult)라면 네임스페이스에서 모자이크까지 한 번에 만들 수 있는 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daoka/items/d77564a041fa3b77bdd1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(NEM2(Catapult)라면 네임스페이스에서 모자이크까지 한 번에 만들 수 있는 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daoka/items/d77564a041fa3b77bdd1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)