3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Symbolメモ

Last updated at Posted at 2023-12-24

これは?

私の単なるメモ。

boostがダウンロードできない

本家に変更すればいける。

jenkins/catapult/installDepsLocal.py
	def download_boost_unix(self):
		version = self.versions['boost']
		archive_name = f'boost_{version.replace(".", "_")}'
		tar_filename = f'{archive_name}.tar.gz'
-		tar_source_path = f'https://boostorg.jfrog.io/artifactory/main/release/{version}/source/{tar_filename}'
+		tar_source_path = f'https://archives.boost.io/release/{version}/source/{tar_filename}'

		self.process_manager.dispatch_subprocess(['curl', '-o', tar_filename, '-SL', tar_source_path])
		self.process_manager.dispatch_subprocess(['tar', '-xzf', tar_filename])
		self.process_manager.dispatch_subprocess(['mv', archive_name, 'boost'])

PULL_BLOCKしてみた

> python block.py finnel.harvestasya.com 7900 3191525
(signature: 2973D3877AF5A4FA0BA199346AF97B43C4C2A7F9A63F6422B6AC529139F4A962B4D625FB8A41560E1380C854D5AE160930A127A43A59268B282F80DC86981502, signer_public_key: 6DE2C57BB685D44F7992F67CF231EC6F33DC44AF5B985C15D7C1710DEB503CD8, version: 0x1, network: NetworkType.MAINNET, type_: BlockType.NORMAL, height: 0x000000000030B2E5, timestamp: 0x000000165533A0EC, difficulty: 0x000066455F53239A, generation_hash_proof: (gamma: 41547D6F1B5F92567A33CB7D96E68CB83A884D7581DC2F5E775B79B85DE52851, verification_hash: C4BCBF001319D67385F31B9FA685D354, scalar: 49A4EA5CB03BFBA13A30F237B2249A0B1A95C989F4BF7EF1A9E2BB5E75F21306, ), previous_block_hash: 761572778DC22FBF19B1D8530027222FB3254F3FEDF48A17B8ABBC7D5, version: 0x1, network: NetworkType.MAINNET, type_: TransactionType.TRANSFER, recipient_address: 687E4D36B0D49FD0FA480BFD7176A4CE14B1C53D04A2B739, mosaics: [\'(mosaic_id: 0x6BED913FA20223F8, amount: 0x0000000000007530, )\'], message: 006564303464663034643034643034553246736447566b58313948417a714c4258672f596c516c397a764d51562f4e73784163585342343565384c487664535635523977465a627968644835676351526f616c306d334768436877715a655133794f417956796c687a56555943364667534c505630416375494777634746303931337044674f572f3732573851396e626366304f39462f567147554b7a437565672b7131424549385869724e5746464e2f59704452614f36615a386b4830744867596151425263507a635137436f512f6b524a746e3555706c4b2f4d6d44353845554b4b434e4658685743574a7258544f6e4b63632b734737464774477a2b4c4f6a37635745314d73726d6235302b614a77662f4945334c4948785a30766b57485a466e513d3d, )"], cosignatures: [], )'], )
> python block.py finnel.harvestasya.com 7900 3191538
(signature: 5D435DC9A8A551B06E2426C3739222EB6C969926B867753CDC38F7E1BAC6FCF9E865EFBE569E1FF77D2BFA095C875929E3F520EEA004DA20B2A6A684D2DD0006, signer_public_key: 0A243F7C0291D936FB7EE6701B66AC911D257844FAD4E109E52B7DA25249317D, version: 0x1, network: NetworkType.MAINNET, type_: BlockType.NORMAL, height: 0x000000000030B2F2, timestamp: 0x000000165539AD8F, difficulty: 0x000065D1E71F5761, generation_hash_proof: (gamma: DDE69B31BB30661AE2ADBF843CE9D657162977ED3B20EAF814CEF285746F61E2, verification_hash: 80890173F7F939B2A4F2E57D5E624B9D, scalar: A1B8E0EE75223D55A6284E5DC30EC5648E157739AEEC64A06A9B4072561BB909, ), previous_block_hash: 64C526DA7C3A0A41D92D0D84220E6710B2969CB877CEFFC680B1AA86526535F7, transactions_hash: DE2C3F84ABBBCCD981A1BBF3264A94F23D9ED3521B81CA1E714DD62658C9A512, receipts_hash: 1A07EC158C526E752C55EDE2E0677A387215F4276623617C435E45077BF024C9, state_hash: 18D9F714B63782586DE7DBC21B0A04B27307E460CDCBCF3D5D978BAECA954A41, beneficiary_address: 68B209715508E5CFD3B4EA7CD2B45F714BA9A4C4520A0E74, fee_multiplier: 0x00000057, transactions: ['(signature: 19FD959DC34E403605AE37AEE6867219BBD1758705E642EAD11BE50A194BD6BB8815D309F4880CC9EB2D98D5E33B7EFD3B281B8E13941695407E4E270A356608, signer_public_key: B8245BCB622D5C67623F86F47BA3E530027222FB3254F3FEDF48A17B8ABBC7D5, version: 0x2, network: NetworkType.MAINNET, type_: TransactionType.AGGREGATE_COMPLETE, fee: 0x000000000000EEC0, deadline: 0x0000001655A6FA98, transactions_hash: AAAA890FD6BB59F023358BFEEBB43B7850404683723AD234AD4843CF2B213E75, transactions: [\'(signer_public_key: B8245BCB622D5C67623F86F47BA3E530027222FB3254F3FEDF48A17B8ABBC7D5, version: 0x1, network: NetworkType.MAINNET, type_: TransactionType.SECRET_LOCK, recipient_address: 687E4D36B0D49FD0FA480BFD7176A4CE14B1C53D04A2B739, secret: A4772FD9EF1D7EA62559A880668035935ED97750B72374452ACC598156953CCF, mosaic: (mosaic_id: 0x0BCF7F87A4175ABE, amount: 0x0000000000000001, ), duration: 0x00000000000001A4, hash_algorithm: LockHashAlgorithm.HASH_256, )\', "(signer_public_key: B8245BCB622D5C67623F86F47BA3E530027222FB3254F3FEDF48A17B8ABBC7D5, version: 0x1, network: NetworkType.MAINNET, type_: TransactionType.TRANSFER, recipient_address: 687E4D36B0D49FD0FA480BFD7176A4CE14B1C53D04A2B739, mosaics: [\'(mosaic_id: 0x6BED913FA20223F8, amount: 0x0000000000007530, )\'], message: 006564303464663034643034643034553246736447566b58312f326a6a315a47453979302f437843666a6d38776f584f443753646a7148694c756c6e4832613853556477706b616161794d664c506946304f7632453637725a545367794a644b6979324a6c43664149584b44774c784a706377506566643948424c756b6d6d7a50664e684a5161354b456135476c4c78646b66584d78416d704e374a41463830575578513175474d5668387747726d674f317a34434a32766e695a3569537257767759395272696b4e63433665453676344a585466552f4e763636696371533137753968336d577434615578717a2b556e6b70513264415866394d5a354e416d5662517438444b47537147486c6156582b736a68376b484b77432b392b39346470594849673d3d, )"], cosignatures: [], )'], )

トランザクションへの署名で何が変わるか

署名前のトランザクションペイロード

BF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B863173F9E4924CA5EB63BFC13689E27F603C29AD8C82615A10531329BF7A94E00000000019854419C4A00000000000079DB73D6080000009852701708153EB74C71713F0AC7C56F5DE5670E061759540F00010000000000CE8BA0672E21C07240420F00000000000048656C6C6F2C2053796D626F6C21

署名

9F0E247F8C0B71033C2DB64051369F57DC37DAD7D43AEE89964A71F065E45E1EA9D84C3B9BE4FB2C8107702FC7D1D3D58E4C329EDEEB24432D35D5AC8AAA340F

署名後のペイロード

BF000000000000009F0E247F8C0B71033C2DB64051369F57DC37DAD7D43AEE89964A71F065E45E1EA9D84C3B9BE4FB2C8107702FC7D1D3D58E4C329EDEEB24432D35D5AC8AAA340FB863173F9E4924CA5EB63BFC13689E27F603C29AD8C82615A10531329BF7A94E00000000019854419C4A00000000000079DB73D6080000009852701708153EB74C71713F0AC7C56F5DE5670E061759540F00010000000000CE8BA0672E21C07240420F00000000000048656C6C6F2C2053796D626F6C21

ペイロード16バイト後に署名がセットされる。
attachSignatureでJson形式のペイロードが返ってくるが、同時にトランザクションオブジェクトも変更されている。

コンテナからcatapult実行ファイルをホストにコピー

コンテナIDを調べる。

docker ps

Docker上のcatapult実行ファイル群をホストにコピーする。

docker cp <コンテナID>:/usr/catapult/lib .

以下の場合、コンテナIDはf9c5ec94ecc3となる

>docker ps
CONTAINER ID   IMAGE                                      COMMAND                   CREATED              STATUS              PORTS                    NAMES
f9c5ec94ecc3   symbolplatform/symbol-server:gcc-1.0.3.6   "/bin/bash /symbol-c…"   About a minute ago   Up About a minute   0.0.0.0:7900->7900/tcp   node

コピーコマンドは以下のようになる。

docker cp f9c5ec94ecc3:/usr/catapult/lib .

使用容量とネットワーク上にファイルを持って行くなら?

書き込み速度が遅いとbrokerが落ちるので、書き込みがないファイル達なら持って行けるのでは?

target/databases/db

collection-*.wtとかindex-*.wtのファイルがあるディレクトリ。
ノード起動時にcollection、indexともに多数のファイルが更新される。

collection、indexもブロック生成に応じて更新されるので、ネットワークに持って行くには向いていない。圧縮されるのか容量は比較的控えめ。

target/nodes/node/data

ブロックデータが格納されるディレクトリ。容量の大部分はココ。
00000などの数字ディレクトリにブロックデータが格納されている?
過去ブロックは更新されない。

が、本当に使用しているのはstatedb/AccountStateCacheディレクトリ。中のファイルは何かのタイミングで更新される。ネットワーク上に持って行くのは不向きか?

SDK使わずにサブスクリブ

NodeJSのwscatを使用する場合。

npm install -g wscat

接続するとuidが返ってくるので、これを付けて subscribe を登録する。

>wscat -c ws://2.dusanjp.com:3000/ws
Connected (press CTRL+C to quit)
< {"uid": "BM2ZVPV4JU2LF536WLCI7AT66HGSZNHU"}
> {"uid": "BM2ZVPV4JU2LF536WLCI7AT66HGSZNHU", "subscribe": "block"}

unsubscribe にすると該当のサブスクリブが解除される。

例えば新しいブロックを検知するのは、以下の通り。

>wscat -c ws://2.dusanjp.com:3000/ws
Connected (press CTRL+C to quit)
< {"uid": "BM2ZVPV4JU2LF536WLCI7AT66HGSZNHU"}
> {"uid": "BM2ZVPV4JU2LF536WLCI7AT66HGSZNHU", "subscribe": "block"}
< {"topic":"block","data":{"block":{"signature":"BBD61DE00F2DC4876913F729C88CD35EE0906C0293CF60D14731BD2DF33BAD42F624E2EE82A5D82C0838E72FA74BF497D3DEF8BD9F5ECD080C6765DA1A5B6E02","signerPublicKey":"B8C83E30D74736E90D3318551998016446CF68C98D0932B688FD1463AAE6D125","version":1,"network":152,"type":33091,"height":"1073075","timestamp":"36148970963","difficulty":"10000000000000","proofGamma":"568423A28379B91AF15C86248C639B699FD54476B2E7FAB5BA9C57C99C4A5806","proofVerificationHash":"0362315A6C172D10A53626F51DED8B16","proofScalar":"B1D6B12DD02D07598C591B27AC84276D2566E72B2318A6C6AA7D948FF736BA0E","previousBlockHash":"068B38469F5BF3B2C1971AC28C49EA05C820F01FD75584477B7009A4A2D8AFFD","transactionsHash":"0000000000000000000000000000000000000000000000000000000000000000","receiptsHash":"FA6F6C53C94C1991568551E57469F39A7BCE0D0DB4E47F31ACCD21D3F26C9456","stateHash":"C4CF8A98E88BF786E80350789D41E359628B6BB3FDCB9DA4A77B044DD3FE45F0","beneficiaryAddress":"987CCA1A46DDD5D1C4341EA0332FEC10EAF05FA99E53A705","feeMultiplier":0},"meta":{"hash":"6CF8B5E50F225A467B0B48932B798A745196DB98B30012205DCA459B58A0869A","generationHash":"CFA764BF6CE8BFAB423D5C29ED0FF6C1C3F62B0E1B32DFFDFA44F3143A7481DB"}}}

他、こんなものがあります。

{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "block"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "finalizedBlock"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "confirmedAdded"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "unconfirmedAdded"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "unconfirmedRemoved"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "partialAdded"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "partialRemoved"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "cosignature"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "modifyMultisigAccount"}
{"uid": "JADUTIC3Z5GACNVIHXRPLXQ4ACNOZQOP", "subscribe": "status"}

dual と api ノードの違い

当たり前だけど、アセンブリが違う。

config-node.properties
# dualノード
assembly: dual
# apiノード
assembly: api

peer ないので harvesting エクステンションが無効になる。
syncsource エクステンションも無効になる。ブロック情報をプル/プッシュしたりしてるエクステンション。

config-extensions-server.properties
# dualノード
extension.harvesting = true
extension.syncsource = true
# apiノード
extension.harvesting = false
extension.syncsource = false

ソケット通信でリジェクトされる

新規にノード証明書を作成して接続する場合、一番信頼度の低い 1.となるため。
連続して接続するとリジェクトされる。1, 2 分程を開けると接続可能。

1. 一度も同期したことのないアカウントからの接続
2. 同期したことのあるアカウントからの接続
3. 初期接続リストに載っているアカウントからの接続
4. ローカル接続

設定の localNetworks に追記すればローカル判定してくれるかも(未確認)

config-node.properties
localNetworks = 127.0.0.1, 172.20.0.25

1 から同期させるときの設定

ブロックディスラプターが不足するので適当に増やす。
10 べぇはやり過ぎか…

my-preset.yml
blockDisruptorSlotCount: 40960
blockDisruptorMaxMemorySize: 3000MB

同期終わる前に harvesters.dat リストアしたら?

同期済のブロックより未来に委任するアカウントが消える。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?