Avatar
Khing_T21
e9dc3ce517e3e474544040b26a460089d12749a1a60469f223491b311e672715
A cat from Right Shift @Thailand

ภาคเหนือ-ภาคตะวันออกปลอดภัยกันดีไหมครับ #Siamstr

#Siamstr

#MuMountain

#BlockMountain

ถ้าขายบิตคอยน์แล้วได้กำไร คือ มูลค่าของสิ่งที่แลกเปลี่ยนกับบิตคอยน์นั้นมากกว่าต้นทุนตอนที่ได้บิตคอยน์มา จะถือว่าส่วนกำไรนั้นเป็นเงินได้ตามมาตรา 40(4)(ฌ) ครับ

ยกตัวอย่างเช่น เอาบิตคอยน์ 10,000 sats ไปขายเปลี่ยนเป็นเงินบาทได้ 350 บาท

ซึ่ง 10,000 sats นั้นตอนที่เราได้มันมาก่อนหน้านี้ เราซื้อมาด้วยเงิน 100 บาท

ก็หมายความว่าตอนที่เรากดขาย เราจะเกิดกำไรขึ้น 250 บาท ก็มีหน้าที่ต้องเอาตัวเลข 250 บาท มากรอกในส่วนเงินได้ตามมาตรา 40(4) ในตอนที่ยื่นภาษีเงินได้บุคคลธรรมดาครับ

ส่วนจะเสียกี่ % จาก 250 บาท อันนั้นแล้วแต่ว่าเงินได้สุทธิหลังหักค่าใช้จ่ายและค่าลดหย่อนของเราอยู่บันไดภาษีขั้นไหน

#Siamstr

กำลังไปงานแต่ง

ตั้งแต่เริ่มใส่ซองงานแต่งด้วยบิตคอยน์ ครั้งนี้เป็นครั้งที่สาม ทั้งสามครั้งใส่ครั้งละประมาณ 500 บาท (+ เงินเฟียตอีกจำนวนหนึ่ง)

คู่แรกได้ไป 88,888 sats

คู่ที่สองได้ไป 58,888 sats

คู่นี้กำลังจะได้ไป 15,888 sats

ประเด็นไม่ได้อยู่ที่จำนวน sats

ประเด็นคือการยีดเยียดความเป็นเจ้าของบิตคอยน์ให้คู่บ่าวสาว 555

#Siamstr

Replying to Avatar xyzy

หรืออีกแนวนึงที่เคยได้ยินมา คือมันใส่เหรียญปลอมที่ชื่อ USDT เหมือนกันแต่ไม่ใช่ของจริงไว้ แต่ในกระเป๋าไม่มีเหรียญ native token สำหรับจ่ายค่า gas (เช่น eth หรือ bnb) พอเราโลภอยากได้ USDT เราก็จะโอนเหรียญสำหรับจ่าย gas เข้าไป ฝั่งโน้นจะเห็นเพราะว่าตั้งบอทคอยมอนิเตอร์ไว้ ก็จะสั่งโอนเหรียญที่เราโอนเข้าไปออกทันที

Ready for boating accident!

#Siamstr

ไม่ได้อินกับศาสนาพุทธขนาดนั้น (ไม่ได้มากพอจะแปะป้ายตัวเองว่า 'ฉันเป็นคนพุทธ')

แต่พอเฝ้าสังเกตความสนใจและความรู้สึกคนรอบข้างที่มีต่อบิตคอยน์ตลอดช่วง 2-3 ปีที่ผ่านมา (โดยที่เราเองก็อยู่ในชีวิตพวกเขา ออกตัวแรงว่าเรารู้เรื่องบิตคอยน์นะ ถามได้เสมอ)

นึกคำอธิบายแบบไหนไม่ออกเลยนอกจากคำว่า 'ไม่มีบุญ' พอจะสามารถเข้าใจบิตคอยน์ได้ (อย่างน้อยที่ราคานี้)

"โห นี่ถ้าซื้อไว้สักหมื่นตอนที่มันลงไปแปดแสน ตอนนี้กลายเป็นสี่หมื่นแล้ว รวยไปแล้วเนี่ย"

"..."

...ไว้เจอกันตอนบิตคอยน์ขึ้นไปถึงราคาที่เสมอกับบุญของคุณละกัน...

...ถ้ามีวันนั้นนะ

😮‍💨

ปัญญาอ่อนดีเนอะ

แต่ที่เราอยาก secure ก็เพื่อจะได้ทำอะไรปัญญาอ่อนแบบนี้ไม่ใช่หรอ...

nostr:nprofile1qqszgxtge74tpd5jgj8zae9z6lgpmqqal8ga6eamuj9gxu4jnyz6nhsprpmhxue69uhhyetvv9ujuumfv9khxarj9e3k7mf0qyv8wumn8ghj7un9d3shjtnwda6x7umgdyh8w6tw9uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcf5hkxx

#Siamstr

วันนี้มีโอกาสได้ช่วยแก้ปัญหาการใช้งานวอลเล็ตให้กับชาวเราท่านหนึ่ง คิดว่าเป็นข้อผิดพลาดที่อาจจะเกิดขึ้นกับทุกคนได้ จึงขอนำเคสนี้และวิธีแก้ไขมาเล่าต่อครับ

TL;DR

ถ้าต้องการทำ watch-only wallet สำหรับ native segwit ต้องดูให้แน่ใจว่า Xpub ที่เอามาขึ้นต้นด้วย “zpub…” หรือถ้าต้องการใช้ nested segwit ต้องใช้ “ypub…” ไม่อย่างนั้นถ้าเอา “xpub…” มามันจะแผลงร่างไปเป็น legacy

หลังจาก import Xpub เข้า software wallet เพื่อทำ watch-only wallet แล้ว ก่อนจะโอนเงินเข้าโดยใช้ address จาก watch-only wallet นั้นให้เช็คก่อนว่าชุด address ที่ได้จาก watch-only wallet มันตรงกับ wallet ตัวต้นทางไหม

[[[ เริ่มเรื่อง ]]]

เรื่องเริ่มต้นจากเจ้าของเคส (จขค.) generate seed สร้าง wallet ใน sparrow desktop จากนั้นก็สแกน QR code ของ Xpub ด้วยแอป Trezor suit lite เพื่อสร้างเป็น watch-only wallet บนมือถือ

ปัญหาที่เกิดขึ้นก็คือ หากเช็คดู ณ จุดนี้ จะพบว่าชุดของ address ใน sparrow และ Trezor ไม่ตรงกัน!

และความเสียหายจะไม่เกิดขึ้นเลยถ้าเราเช็คเสียก่อนว่าชุดของ address ตรงกันไหมก่อนที่จะโอนเงินเข้าไป (ดังนั้นเพื่อหลีกเลี่ยงปัญหาแต่แรก กรุณาทำตามข้อแนะนำในส่วน TL;DR)

ส่วนสิ่งที่เกิดขึ้นในเคสนี้คือ จขค. โอน BTC เข้าไปใน address ที่ได้จาก trezor และไม่สามารถเอาออกมาได้ เพราะ

trezor เป็น watch-only ไม่มี private key ไม่สามารถ sign ธุรกรรมได้

sparrow ไม่สามารถ sign ธุรกรรมได้ เพราะ address เป็นคนละชุดกัน มองไม่เห็นยอดเงินนั้น

[[[ สาเหตุ ]]]

อันที่จริงแล้วที่เราพูดกันว่า Xpub ซึ่งย่อมาจาก extended public key เนี่ย มันไม่ได้มีแค่ที่ขึ้นต้นด้วยอักษร “xpub…” เท่านั้น แต่ยังมี “ypub…” และ “zpub…” อีกด้วย

“xpub…” ไว้ใช้สำหรับ address ประเภท legacy (bip44 ขึ้นต้นด้วย 1…)

“ypub…” ไว้ใช้สำหรับ address ประเภท nested segwit (bip49 ขึ้นต้นด้วย 3…)

“zpub…” ไว้ใช้สำหรับ address ประเภท native segwit (bip84 ขึ้นต้นด้วย bc1q…)

ซึ่งด้วยเหตุผลใดในด้านการออกแบบที่ไม่ทราบได้ เมื่อ จขค. สร้างกระเป๋าแบบ native segwit ใน sparrow มันกลับแสดง Xpub ในรูปแบบ “xpub…” มาเป็นอันดับแรกแทนที่จะเป็น “zpub…” (คือ zpub… ก็สามารถเรียกให้แสดงขึ้นมาได้ แต่ต้องกดปุ่มลูกศรด้านขวาของช่องที่แสดง Xpub ก่อน)

ทีนี้ ในเมื่อสากลโลกเค้าเข้าใจตรงกันว่า “xpub…” ไว้ใช้สำหรับ legacy พอ จขค. ใช้ trezor สแกน “xpub…” แอป trezor ก็เข้าใจว่าต้องการใช้ address แบบ legacy จึงจัดแจงเอา “xpub…” นั้นไป derive ด้วยมาตรฐาน bip44 ได้ผลลัพธ์ออกมาเป็น address ประเภท legacy ทั้งเซ็ท

(ลองกับ Blue Wallet แล้วก็เป็นลักษณะเดียวกัน)

สรุปรวบรัดคือ ตอนนี้ trezor suit lite มันเอา Xpub ที่ได้จาก derivation path m/84’ ไปสร้าง address ด้วยมาตรฐาน bip44

และวิธีแก้คือ เราก็จะต้องบังคับให้ sparrow (ซึ่งเป็นที่ที่มี private key ของเราอยู่) ทำท่าพิสดารท่าเดียวกันนี้ เพื่อให้สามารถเซ็นธุรกรรมโอนเงินออกได้

[[[ ปัญหา ]]]

โดยปกติสำหรับ sparrow คุณจะต้องเลือกประเภท address ที่ต้องการจะใช้ (legacy / nested segwit / native segwit / taproot) ก่อนที่จะสร้าง seed, กรอก seed หรือ connect hardware wallet เพราะว่ามันจะไปดึงเอา Xpub ที่สอดคล้องกันมาทำกระเป๋าให้เรา

ถ้าเราบอกมันว่าอยากสร้างแบบ legacy มันจะไปดึง Xpub จาก derivation path m/44’ มา

ถ้าเราบอกมันว่าอยากสร้างแบบ nested segwit มันจะไปดึง Xpub จาก derivation path m/49’ มา

ถ้าเราบอกมันว่าอยากสร้างแบบ native segwit มันจะไปดึง Xpub จาก derivation path m/84’ มา

ถ้าเราบอกมันว่าอยากสร้างแบบ taproot มันจะไปดึง Xpub จาก derivation path m/86’ มา

ในกรณีของ จขค. sparrow ดึง Xpub จาก path m/84’ มาเพื่อเตรียมสร้างกระเป๋า native segwit ตามมาตรฐาน bip84

ถ้าเราพยายามจะเปลี่ยนไปใช้มาตรฐาน bip44 มันจะไล่เราให้ไป import keystore ใหม่ เพราะเอา Xpub อันที่ควรเป็นจาก path m/44’ มาใช้

การเอา Xpub จาก path หนึ่งไปสร้าง address ด้วยอีกมาตรฐานหนึ่งเป็นเรื่องผิดผี ไม่งาม ระบบตรวจสอบใน sparrow ไม่ยอมให้เราทำแบบนั้น (เราจะไม่สามารถกดปุ่ม apply ได้)

แต่เราดันทำแบบนั้นใน trezor ไปแล้วไง!!! เพราะฉะนั้นแกก็ต้องทำด้วย!!! ชั้นจะบีบคอให้แกทำ!!!

[[[ วิธีแก้ ]]]

ในการทำแบบนั้น เราจะต้องปิดระบบป้องกันการทำผิดผี (validate derivation) ของ sparrow โดยการเข้าไปที่เมนู file > preference > general แล้วติ๊กปิด toggle หลังคำว่า validate derivation (หลังจากนั้นเราอาจจะต้องปิดโปรแกรม sparrow และเปิดขึ้นมาให้เพื่อให้ setting ใหม่นี้มีผล)

ในตอนนี้เราสามารถแก้ประเภทกระเป๋าจาก native segwit (bip84) เป็น legacy (bip44) ทั้งที่ยังใช้ Xpub เดิมจาก m/84’ ได้แล้ว สามารถกดปุ่ม apply ได้ เราควรจะพบชุด address เดียวกันกับใน trezor suit lite เห็นยอดเงิน และโอนออกได้ตามปกติ (และควรกลับไปเปิด validate derivation กลับมาด้วย เดี๋ยวจะทำพลาดแบบแปลกๆ อีก)

เอวังด้วยประการฉะนี้ สวัสดีครับ

#Siamstr

#SparrowWallet

#TrezorSuitLite

#WatchOnlyWallet

Vires in numeris = strength in numbers

อยากได้คำแปลของภาษิตนี้เป็นภาษาบาลี

หลังจากคุยกับ Gemini มาครึ่งชั่วโมงรู้สึกว่าน่าจะใช้ "อเนกํ พลํ"

แถวนี้มีใครเชี่ยวชาญบาลีบ้าง ขอความคิดเห็นหน่อย

#Siamstr

คิดถูกไหมเนี่ยที่จองคิวตรวจสุขภาพวันเลือกตั้ง 555

Replying to Avatar minseo

สวัสดีเพื่อน ๆ ชาว #siamstr

.

สลิปนี้ จริงหรือเค้ก? ดูยังไง? เราจะเห็นด้วยตาเปล่าไหม มาพิสูจน์กันกับอีกหนึ่ง session จากงาน #LINEDEVCONF2024 ที่ชื่อว่า “Elevate payment experience by Automate Slip Verification Process through LINE” โดย 2 speaker คุณ Thananut Santatiyanon | LINE Certified Coach for API และคุณ Supakrit Paoliwat | CTO, SlipOK

.

เปิดมาด้วยภาพนี้ ในสลิป 4 อันนี้ มีเพียงหนึ่งเดียวที่เป็นสลิปจริง

ทุก 1000 สลิป มีของปลอม 5 สลิป และมูลค่าที่เสียหายจากสลิปปลอมในปี 2013 ที่ผ่านมาอยู่ที่ 80 ล้านบาท! เป็น pain point ของ user และสร้าง product เพื่อลด pain ตรงนี้ลง

.

แล้วเราจะตรวจสอบสลิปได้อย่างไร? ตัว SlipOK เป็น solution ที่ช่วยเพื่อน ๆ ในการตรวจสลิป โดยการเพิ่มเพื่อน และส่งรูป หรือจะลากเข้า group chat ก็ได้

.

🟢 Slip Verification Mechanic in Line

สลิปที่ทาง SlipOK รองรับ ก็จะมี 2 อย่าง คือ

- จากธนาคารต่าง ๆ อ่านสลิปจาก QR Code ซึ่งเขา appiled ตามแบงค์ชาติ

- ของ TrueMoney ที่ตอนนี้ยังไม่มี QR Code ก่อนอื่น OCR จากรูปก่อน แล้วเรียกใช้ API ในการตรวจสลิป

แล้วผลทั้งหมดที่ได้ ปั้นเป็น Flex Message แล้วส่งออกมา

.

🟢 User journey on LINE

การเอา LIFF มาใช้ ทำให้ UX ไม่เสีย user ไม่ต้องออกแอพแล้วไปเปิด web และไม่ต้องไป login ใหม่ด้วย อีกทั้งมี share target picker ให้แอดมินใช้ระบบร้านของเรา

.

และแน่นอน ใช้ loading animation เพื่อไม่ต้องให้ user รู้สึกว่ารอนาน ๆ มันอาจจะบั่นทอนหัวใจ บอทตุยเย่หรือยัง ทำไมยังไม่ตอบเราเลย

.

output ที่เป็น Flex Message นั้นมี 5 แบบที่สื่อสารกับ user ด้วยกัน

- สีเขียว: success

- สีเหลือง: warning อาจจะได้รับ response ช้ากว่าปกติ อาจจะให้เขาลองส่งใหม่ดู

- สีแดง: take action ทันที จะมีโอนผิด ส่ง slip ซํ้า และสลิปปลอม

.

LINE OA มี SlipOKWebhook เอาไป connect ได้ ส่งในนาม OA นั้น ๆ

.

use case: webhook ผูก OA ได้อันเดียว จึงมี gateway 1:1 ส่งต่อไปอันอื่น หรือใช้ partner webhook อย่าง Oho หรือ Chatcore ก็ได้

.

มี API ให้เอาไปใช้งานได้ ส่งเป็นรูป หรือ url ของรูป แล้ว return เป็น json ออกมา และมี plug-in กับ website ด้วย

.

แล้วอันไหนเป็นสลิป ให้เพื่อน ๆ มาเดากันดีกว่า เดี๋ยวมาเฉลย

nostr:nprofile1qqsqxapvypwtdjxcvqcujw7y4xearpyycvkgv43lcr3p3yg29hu65hgpz3mhxw309akx7cmpd35x7um58g6rsd3e9uq3yamnwvaz7tmwveex2mrp0yhxzurs9uqsuamnwvaz7tmwdaejumr0dshs0ymp24 เราสามารถใช้สิ่งนี้เพื่อทำ service ในการขาย sat ได้มะคับ

ตื่นแล้วครับ #TBC2024

ใช่ครับ พี่จะรับตำแหน่งประธานไหม หรืออยากเป็นแค่กรรมการ 😂