kohanucha's avatar
kohanucha
kohanucha@siamstr.com
npub1d0gj...0hxg
Back-end developer
kohanucha's avatar
kohanucha 8 months ago
วิธีคร่าว ๆ ถ้าอยาก run bitcoin node docker container โดยให้อยู่หลัง tor ครับ #siamstr 1. Install tor ในเครื่อง server ของเรา ตาม link นี้ 2. ถ้าเอาง่ายสามารถรัน docker container ด้วย network mode host ได้เลยแล้วก็ config tor เหมือนเรา run bitcoin node ในเครื่อง server ได้เลย 3. ถ้าต้องการแยก network ให้สร้าง docker network ขึ้นมาแล้ว config ให้ docker container มาใช้ network ที่เราสร้างเพื่อเชื่อมต่อไปหา tor บน host machine 4. config tor ให้รับ request จาก docker และ authen ด้วย cookie ที่ไฟล์ /etc/tor/torrc ถ้าใช้ docker bridge network ``` SOCKSPort ${DOCKER_HOST_GATEWAY_IP}:9050 ControlPort ${DOCKER_HOST_GATEWAY_IP}:9051 CookieAuthentication 1 CookieAuthFileGroupReadable 1 ``` *** ${DOCKER_HOST_GATEWAY_IP} สามารถดูได้จาก docker network inspect <network-name> ถ้าใช้ network host ``` SOCKSPort 127.0.0.1:9050 ControlPort 127.0.0.1:9051 CookieAuthentication 1 CookieAuthFileGroupReadable 1 ``` 5. config bitcoin node ในไฟล์ bitcoin.conf ให้ใช้ tor (config อาจจะต่างกันในแต่ละ version) ถ้าใช้ docker bridge network ``` debug=tor onlynet=onion proxy=${DOCKER_HOST_GATEWAY_IP}:9050 # where to connect tor SOCKS5 for outgoing connections torcontrol=${DOCKER_HOST_GATEWAY_IP}:9051 # where to connect tor control for hidden bitcoin service bind=0.0.0.0:8334=onion # where to receive incoming peer connections ``` ถ้าใช้ network host ``` debug=tor onlynet=onion proxy=127.0.0.1:9050 torcontrol=127.0.0.1:9051 bind=127.0.0.1:8334=onion ``` 6. เขียน docker-compose.yml file ตัวอย่างผมใช้ image ของ ``` services: bitcoind: container_name: bitcoind image: lncm/bitcoind:v28.0 user: "1000:1000" # run process with user 1000 (bitcoind user in container) group_add: - "${DEBIAN_TOR_GID}" # add user 1000 to debian-tor group (debian-tor group in host machine) to read tor control.authcookie file volumes: - ~/data/bitcoin/:/data/.bitcoin/ # where to store bitcoin data - /run/tor/control.authcookie:/run/tor/control.authcookie:ro # map tor control.authcookie for authentication ports: - "8334:8334" # expose port 8334 to receive incoming peer from tor network networks: - ext_bitcoind_bridge # use external network to prevent ip changing after docker compose down and up again networks: ext_bitcoind_bridge: external: true name: bitcoind_bridge # need to run 'docker network create bitcoind_bridge' before docker compose up ``` 7. docker compose up -d 8. ถ้าใช้ firewall ร่วมด้วยก็ต้องไป allow proxy port กับ control port ของ tor ให้เชื่อมต่อจาก docker network ได้ด้วย
kohanucha's avatar
kohanucha 9 months ago
ChatGPT ยังรู้กำเมียง 5555 แต่ถูกไม่ถูกผมก็ไม่ฮู้นะ #siamstr image
kohanucha's avatar
kohanucha 9 months ago
GM ครับ #siamstr วันนี้การจราจรไม่ติดขัดรวบ transactions กันได้นะครับ image
kohanucha's avatar
kohanucha 9 months ago
It’s a good chit เสียดายเค้าไม่รับ sats #siamstr image
kohanucha's avatar
kohanucha 9 months ago
ลองทำครับ ไม่รู้ว่าถูกมั้ย ฝากตรวจการบ้านด้วยครับ #siamstr #righttech ข้อ 5 สร้าง multisig address แบบ P2SH แบบ 1-of-4 จาก publickey ในอินพุตทั้งสี่ของธุรกรรมนี้ 37d966a263350fe747f1c606b159987545844a493dd38d84b070027a895c4517 1. get raw transaction แล้วหา public key เนื่องจาก address เป็น segwit ให้ดูตรง txinwitness index ที่ 1 ตรงนั้นจะเป็น public key ``` $ bitcoin-cli getrawtransaction 37d966a263350fe747f1c606b159987545844a493dd38d84b070027a895c4517 true { "txid": "37d966a263350fe747f1c606b159987545844a493dd38d84b070027a895c4517", "hash": "e28a0885b6f413e24a89e9c2bac74d4c6f335e17545f0b860da9146caf7ffe39", "version": 2, "size": 666, "vsize": 344, "weight": 1374, "locktime": 818817, "vin": [ { "txid": "c9da5e51de40985b8e29d9ddd11b5d8818250773e3f3129bf065900ee841f6b5", "vout": 0, "scriptSig": { "asm": "", "hex": "" }, "txinwitness": [ "304402200dd758801b40393f68dad8ab57558803efcd2b681ee31eb44fb3cfa9666d2bf90220254d34fa4990e23652bf669053c5e16fd2fbb816bed2eeb44c1f1e6e54143e3e01", "02bbb4ba3f39b5f3258f0014d5e4eab5a6990009e3e1dba6e8eaff10b3832394f7" ], "sequence": 4294967294 }, { "txid": "44fbdaec8b794fa0b6e9ff70d76d4464ada38fe5aeac7285f16fbbaf86894fd5", "vout": 0, "scriptSig": { "asm": "", "hex": "" }, "txinwitness": [ "304402201694761a5749b6a84f71459c04a44cf9d34a36ae8c9044c3af7a3a5514ef2e64022058f61feb92d6d54b71fdea47e7dfcd20f6a5c12e2fbcb15bc44fe95c73f2e80801", "03aaf17b1a7b4108f7e5bc4f7d59c20f7fb1a72dbc74a9a3d6d1f8488df159c760" ], "sequence": 4294967294 }, { "txid": "c5263cf8798dd44f4aeae6421a1b5ab6a26d8623d7294c5487eec3b162305e47", "vout": 0, "scriptSig": { "asm": "", "hex": "" }, "txinwitness": [ "3044022014b65c60f65e62d9dac893e404c8de2a007c7c6b74dbac18e454d8374e159759022012453f69112adadf9495fd3fe288aa5ed9e3d836340da06fa1e82c8e09adef5701", "03a6d919c76d9117c23570a767450013edf31cf6be7d3b5a881c06a9aa1f2c24ce" ], "sequence": 4294967294 }, { "txid": "09f87c09c96058b8b72ed0caefff37fbefd9d4ebe64876d3df93cc2e358763a5", "vout": 0, "scriptSig": { "asm": "", "hex": "" }, "txinwitness": [ "304402203d3b02390803c1d673fa49bd64d4a26fbeb29e3fc152af8f844d776c9409e41302206903a011a04e00a7f4ec606da4320226d2d393f565702cc58cfcef6dca67f84c01", "0383d12258e3e294a6d7754336f6b4baef992ec4b91694d3460bcb022b11da8cd2" ], "sequence": 4294967294 } ], "vout": [ { "value": 0.01000698, "n": 0, "scriptPubKey": { "asm": "0 8070ec3954ecdcbfc210d0117e8d28a19eb84672", "desc": "addr(bc1qspcwcw25anwtlsss6qgharfg5x0ts3njad8uve)#pzjnvw8p", "hex": "00148070ec3954ecdcbfc210d0117e8d28a19eb84672", "address": "bc1qspcwcw25anwtlsss6qgharfg5x0ts3njad8uve", "type": "witness_v0_keyhash" } }, { "value": 0.08230000, "n": 1, "scriptPubKey": { "asm": "0 b5fe46c647353ec9c06374655502094095f0289c", "desc": "addr(bc1qkhlyd3j8x5lvnsrrw3j42qsfgz2lq2yu3cs5lr)#hzcalwww", "hex": "0014b5fe46c647353ec9c06374655502094095f0289c", "address": "bc1qkhlyd3j8x5lvnsrrw3j42qsfgz2lq2yu3cs5lr", "type": "witness_v0_keyhash" } } ], "hex": "02000000000104b5f641e80e9065f09b12f3e373072518885d1bd1ddd9298e5b9840de515edac90000000000feffffffd54f8986afbb6ff18572acaee58fa3ad64446dd770ffe9b6a04f798becdafb440000000000feffffff475e3062b1c3ee87544c29d723866da2b65a1b1a42e6ea4a4fd48d79f83c26c50000000000feffffffa56387352ecc93dfd37648e6ebd4d9effb37ffefcad02eb7b85860c9097cf8090000000000feffffff02fa440f00000000001600148070ec3954ecdcbfc210d0117e8d28a19eb8467270947d0000000000160014b5fe46c647353ec9c06374655502094095f0289c0247304402200dd758801b40393f68dad8ab57558803efcd2b681ee31eb44fb3cfa9666d2bf90220254d34fa4990e23652bf669053c5e16fd2fbb816bed2eeb44c1f1e6e54143e3e012102bbb4ba3f39b5f3258f0014d5e4eab5a6990009e3e1dba6e8eaff10b3832394f70247304402201694761a5749b6a84f71459c04a44cf9d34a36ae8c9044c3af7a3a5514ef2e64022058f61feb92d6d54b71fdea47e7dfcd20f6a5c12e2fbcb15bc44fe95c73f2e808012103aaf17b1a7b4108f7e5bc4f7d59c20f7fb1a72dbc74a9a3d6d1f8488df159c76002473044022014b65c60f65e62d9dac893e404c8de2a007c7c6b74dbac18e454d8374e159759022012453f69112adadf9495fd3fe288aa5ed9e3d836340da06fa1e82c8e09adef57012103a6d919c76d9117c23570a767450013edf31cf6be7d3b5a881c06a9aa1f2c24ce0247304402203d3b02390803c1d673fa49bd64d4a26fbeb29e3fc152af8f844d776c9409e41302206903a011a04e00a7f4ec606da4320226d2d393f565702cc58cfcef6dca67f84c01210383d12258e3e294a6d7754336f6b4baef992ec4b91694d3460bcb022b11da8cd2817e0c00", "blockhash": "000000000000000000024a848a9451143278f60e4c3e73003da60c7b0ef74b62", "confirmations": 70717, "time": 1701158269, "blocktime": 1701158269 } ``` 2. นำ public key ทั้ง 4 อันมาสร้าง multisig address ``` $ bitcoin-cli createmultisig 1 '["'"02bbb4ba3f39b5f3258f0014d5e4eab5a6990009e3e1dba6e8eaff10b3832394f7"'","'"03aaf17b1a7b4108f7e5bc4f7d59c20f7fb1a72dbc74a9a3d6d1f8488df159c760"'","'"03a6d919c76d9117c23570a767450013edf31cf6be7d3b5a881c06a9aa1f2c24ce"'","'"0383d12258e3e294a6d7754336f6b4baef992ec4b91694d3460bcb022b11da8cd2"'"]' { "address": "3GyWg1CCD3RDpbwCbuk9TTRQptkRfczDz8", "redeemScript": "512102bbb4ba3f39b5f3258f0014d5e4eab5a6990009e3e1dba6e8eaff10b3832394f72103aaf17b1a7b4108f7e5bc4f7d59c20f7fb1a72dbc74a9a3d6d1f8488df159c7602103a6d919c76d9117c23570a767450013edf31cf6be7d3b5a881c06a9aa1f2c24ce210383d12258e3e294a6d7754336f6b4baef992ec4b91694d3460bcb022b11da8cd254ae", "descriptor": "sh(multi(1,02bbb4ba3f39b5f3258f0014d5e4eab5a6990009e3e1dba6e8eaff10b3832394f7,03aaf17b1a7b4108f7e5bc4f7d59c20f7fb1a72dbc74a9a3d6d1f8488df159c760,03a6d919c76d9117c23570a767450013edf31cf6be7d3b5a881c06a9aa1f2c24ce,0383d12258e3e294a6d7754336f6b4baef992ec4b91694d3460bcb022b11da8cd2))#0a7gjjjl" } ``` View article →
kohanucha's avatar
kohanucha 9 months ago
ตั้งกลางห้างแถวที่ทำงานเลย ต้องจัดซักวันแล้วแหละ #siamstr #chithole image
kohanucha's avatar
kohanucha 10 months ago
“ที่ครอบครัวกูแม่งจน ไม่ใช่เพราะพ่อกูไม่ขยัน ไม่ใช่เพราะแม่กูไม่ฉลาด แต่เพราะระบบแม่งเหี้ย” #siamstr #เงินเฟ้อคือคดีอาญา
kohanucha's avatar
kohanucha 10 months ago
GM ครับ #siamstr เมื่อวันอาทิตย์ได้รับ Laser eyes จากคุณ @xyzy และ @PIGROCK แล้ว ทดสอบแล้วใช้งานได้ครับผม image
kohanucha's avatar
kohanucha 11 months ago
วันนี้ไฟจะดับเลยปิดคอมไว้ทั้งวัน โดนไปดิ #siamstr image
kohanucha's avatar
kohanucha 11 months ago
ในที่สุดผมก็ย้ายบ้านสำเร็จ หลังจากติดปัญหามาหลายวัน วันนี้ก็เลยอยากมา note ปัญหาที่เจอทิ้งไว้ซักหน่อยครับ 1. M.2 Enclosure ที่ chip เป็นของ ASM236X Series มันไม่ compatible กับ pi5 ตอนแรกผมสั่งของ ORICO LSDT M.2 NVME มา เห็นว่ามันมีพัดลมด้วยก็เลยกะเอามาลองใช้ซักหน่อย พอประกอบร่างแล้วเชื่อมต่อ ปรากฎว่า raspberry pi ไม่เห็น ssd หรือเห็นบ้างไม่เห็นบ้าง ไปหาข้อมูลมาก็เจอว่ามันไม่ compatible ต้องไปใช้ตัวที่เป็น chip ของ JMS58XX แทน ซึ่งผมเคยใช้ของ JEYI แล้วใช้ได้ เลยสั่งขนาด 2280 มาอีกตัวเพราะตัวที่มีมันสำหรับ 2230 ผมสั่งมาจากจีน และระหว่างรอของมาส่ง ก็มีคุณพี่ @Boil Roaming แนะนำ Case ARGON Neo 5 ก็เลยสั่งมาด้วย แต่เคสมาจากไทยเลยถึงก่อน ผมเลยเอามาลองเชื่อมต่อและลอง transfer ข้อมูลดู ก็ยังเจอปัญหาอยู่คือ 2. (อันนี้ไม่แน่ใจว่าจริงมั้ย) แต่ผมคิดว่าว่าปัญหาคือไฟฟ้าที่จ่ายให้กับ SSD ตัวใหม่ผ่าน case นั้นมันไม่พอ เพราะผมลองเอา SSD ตัวใหม่มาลง pi os แล้วลองเอามาใส่ใน case แล้วเปิดดู มันขึ้นว่า pcie link down ตลอดเลย แต่พอลองใช้ SSD ตัวเดิมดัน boot ได้ปกติ กับที่เจออีกอย่างคือตอนผมใช้ SD Card Copier ย้ายข้อมูลจากอันเก่ามาอันใหม่ โดยเอาอันเก่าต่อผ่าน case อันใหม่ต่อผ่าน usb พอเขียนไปได้ซักพักมันจะขึ้น I/O Error ไปหา ๆ อ่านดู ก็เลยเดาว่าน่าจะเพราะเรื่องไฟนี่แหละ เลยไปหาวิธีประหยัดไฟ ก็ไปเจอว่าต้องไปปิด port พวกที่ไม่ได้ใช้งาน เช่น wifi, bluetooth, hdmi อะไรพวกนี้ พอลองปิดแล้วย้ายข้อมูลอีกรอบใช้เวลาไปประมาณครึ่งวันปรากฎว่าย้ายสำเร็จครับ !!!! พอย้ายเสร็จก็ลองเอา SSD อันใหม่มาต่อผ่าน case อีกครั้ง ปรากฎว่า boot ไม่ขึ้น llink down เหมือนเดิม 55555555555 สุดท้ายก็เลยต้องยอมเชื่อมต่อ SSD ผ่าน USB Port เหมือนเดิม ซึ่งตอนนี้ใช้งานได้ปกติแล้วครับ เย่ #siamstr