IranCoin ️ ایران‌کوین
406 subscribers
167 photos
32 videos
14 files
467 links
ادوات زندگی بیتکوینی...

لینک‌دونی بیت‌کوین:
https://peymanjahani.notion.site/0088293e2c7c42608cba368fa2962110?v=50c3c02f07e642139866891752ed89dc

تماس:
@PeymanJahani

گروه عدم تمرکز برای بحث و سوال:
https://t.me/simorgh_blockchain
Download Telegram
در بیت‌کوین کامپیوترهای شبکه (گره‌ها) و ماینرها که باید کار تایید تراکنش‌ها رو انجام بدن، اطلاعات «حساب‌های» شبکه رو نگه‌داری نمی‌کنن. بلکه «تراکنش‌های» شبکه رو نگه‌داری می‌کنن. به همه‌ی تراکنش‌ها هم نیازی ندارن و می‌تونن فقط «تراکنش‌های خرج نشده» رو نگه دارن.

فرض کنید علی و حسن هر کدوم با تراکنش‌های الف و ب به یکی از حساب‌های پیمان (پ) یک بیت‌کوین واریز کنن. پیمان وقتی وارد کیف پولش میشه می‌بینه که ۲ بیت‌کوین موجودی داره. اما گره‌های شبکه هیچ توجهی به اینکه حساب پ چقدر موجودی داره ندارن و فقط تراکنش‌های الف و ب رو به صورت مستقل (بدون ارتباط دادنشون با هم) نگه‌داری میکنن.
زمانی که پیمان تصمیم میگیره این ۲ بیت‌کوین رو یکجا برای شخص دیگه‌ای ارسال کنه، تراکنشی که باید امضا کنه شامل شناسه تراکنش الف و ب هست و مقداری از سکه‌ها و آدرسی که باید کوین‌ها برای اون ارسال بشن. بنابراین وقتی پیمان می‌خواد سکه‌های خودش رو خرج کنه، نمیتونه بگه که من مالک حساب پ هستم و میخوام از موجودی خودم خرج کنم. بلکه باید دقیقا مشخص کنه که بنا به کدوم تراکنش‌هایی - که هنوز خرجشون نکرده - این مقدار سکه برای من ارسال شده و حالا می‌خوام اون‌ها رو خرج کنم.

همینطور پیمان حق نداره که فقط بخشی از سکه‌های یک تراکنش رو خرج کنه و باید همه‌ی سکه‌های یک تراکنش رو یکجا خرج کنه. مثلا برای ارسال ۱.۵ بیت‌کوین، باید تراکنش‌های الف و ب رو به عنوان ورودی مشخص کنه، مقدار ۱.۵ بیت‌کوین و آدرس مقصد رو به عنوان خروجی مشخص کنه و همینطور یک آدرس دیگه که متعلق به خودش هست رو با مقدار ۰.۵ بیت‌کوین به عنوان خروجی قرار بده که باقی‌مونده‌ی سکه‌ها مجددا به حسابی متعلق به خودش ارسال بشه. (در حقیقت باید مقداری کمتر (مثلا ۰.۴۹ بیت‌کوین) رو به خودش برگردونه تا مقداری که باقی میمونه و در خروجی تعیین تکلیف نشده، به عنوان کارمزد تراکنش لحاظ بشه)

به این نحوه‌ی عملکرد بیت‌کوین مدل خروجی تراکنش خرج نشده (Unspent Transaction Output) یا UTXO گفته می‌شه که می‌تونه به عنوان ورودی در یک تراکنش جدید خرج بشه. در مقابل رمزارز ایتریوم بر مبنای «حساب‌ها» کار میکنه که اینجا توضیحات بیشتری دادم.

#UXTO #BTC
〽️ @irancoin
🔆 اعداد رند

به این تراکنش دقت کنید. مقداری بیت‌کوین از آدرس اول خارج شده و به دو آدرس دیگه انتقال پیدا کرده. می‌تونید تشخیص بدید کوین‌هایی که خرج شده کدوم هست و باقی‌مونده (چنج) کوین‌ها که به کیف پول شخص برگشته کدومه؟

هرچند قطعی نیست ولی احتمالا مبلغ رند 12 بیت‌کوین آدرسی هست که پول بهش ارسال شده و آدرس دیگه مربوط به خود شخص ارسال کننده هست که بقیه‌ی کوین‌هاش رو توی اون دریافت کرده. پس هرجایی که امکانش هست سعی کنید مبلغ رو تا آخرین رقم اعشار به صورت تصادفی وارد کنید تا مشخص نباشه کوین‌ها به چه آدرسی ارسال شده و کدوم آدرس متعلق به شما هست که باقی کوین‌هاتون رو توی اون دریافت کردید.

همینطور ممکنه مبلغ بیت‌کوینی رند نباشه ولی معادل دلاری اون مبلغ رندی باشه که بشه تشخیص داد چه عددی کوین‌های خرج شده هست.

#Privacy #BTC
〽️ @IranCoin
🔆 ارسال به آدرس با نوع اسکریپت متفاوت

مجددا از یک آدرس مقداری بیت‌کوین خرج شده و بخشی هم به عنوان باقی پول به کیف پول شخص در یک آدرس جدید برگشته. می‌تونید تشخیص بدید کدوم آدرس متعلق به خود فرد ارسال کننده هست؟

مشخصا کیف پول شخص از آدرس‌های سگویت که با عدد 3 شروع می‌شن پشتیبانی می‌کنه و آدرسی که شخص بقیه‌ی پولش رو در اون دریافت می‌کنه هم آدرس دوم هست که مجددا با 3 شروع شده. و آدرس که با 1 شروع شده دریافت‌کننده هست و مبلغ متناظرش هم پولی هست که خرج شده.

#Privacy #BTC
〽️ @IranCoin
🔆 ورودی تراکنش بی‌مورد

به مبالغ ورودی و خروجی دقت کنید. ورودی‌ها هر دو بالای یک بیت‌کوین هستن و یک خروجی ۲ بیت‌کوین و خروجی دیگه حدود ۰.۳ بیت‌کوین هست. اگر هدف خرج کردن ۰.۳ بیت‌کوین بود، قاعدتا یکی از ورودهای یک بیت‌کوینی برای این تراکنش کافی بود و نیازی به ورودی دوم نبود. اما چون شخص قصد داشته ۲ بیت‌کوین خرج کنه، کیف پولش مجبور شده از دو تراکنش استفاده کنه.

علاوه بر این نکته، رندم بودن مبلغ خرج شده هم آدرس گیرنده و آدرس چنج فرستنده رو افشا می‌کنه.

#Privacy #BTC
〽️ @IranCoin
🔆 استفاده مجدد اجباری از یک آدرس

برای حفظ حریم خصوصی، باید به هر آدرس بیت‌کوین فقط یک بار پرداخت انجام بگیره و وقتی که موجودی اون آدرس خرج شد، دیگه هیچ موقع ازش استفاده نشه. اینکار با در نظر گرفتن نحوه انجام تراکنش ها در شبکه بیت‌کوین، هیچ هزینه اضافی به شخص تحمیل نمیکنه و انجام ندادنش غیر منطقی هست.

ممکنه شخصی که شما رو تحت نظر داره به یکی از آدرس‌هایی که قبلا ازش استفاده کردید و اون ازش اطلاع داره مقدار کمی بیتکوین ارسال کنه. و کیف پول شما ممکنه بدون اینکه شما متوجه باشید از این مقدار کم در تراکنش‌هایی که بعدا انجام میدید استفاده کنه. به این ترتیب اون شخص میتونه از جزئیات اون تراکنش شما مطلع بشه.

رفتار صحیح کیف پول در این مورد اینه که از آدرس‌هایی که قبلا ازشون خرج شده استفاده نکنه.

#Privacy #BTC
〽️ @IranCoin
🔆 افشای موجودی فرستنده

فرض کنید که ۱۰۰ بیت‌کوین رو در یک تراکنش دریافت کردید و حالا قصد دارید مقدار خیلی کمی از اون رو برای یک نوشیدنی خرج کنید. زمانی که این مقدار خیلی کم رو خرج می‌کنید، چون در آدرس دیگه‌ای پول ندارید، کیف پول شما تراکنشی رو تولید می‌کنه که ورودی اون ۱۰۰ بیت‌کوین هست و خروجی اون نزدیک به ۱۰۰ بیت‌کوینی هست که به آدرس خودتون برمیگرده و مقدار کمی که به فروشنده می‌رسه و بخشی هم که برای کارمزد تراکنش پرداخت می‌شه. از روی این تراکنش، فروشنده نوشیدنی می‌تونه متوجه بشه که شما حداقل ۱۰۰ بیت‌کوین در کیف پولتون داشتید که باهاش بهای این نوشیدنی رو پرداخت کردید. این موضوع می‌تونه برای شما ناخوشایند یا در مواردی حتی خطرناک باشه.

در مثال عکس، شخصی معادل حدود یک میلیون تومان پرداختی داشته ولی گیرنده از روی این تراکنش می‌تونه متوجه بشه که این شخص حداقل حدود ۳۲۰ میلیون تومن در کیف پولش موجودی داره.

#Privacy #BTC
〽️ @IranCoin
🔆 تراکنش‌های چند امضایی

اکثر تراکنش‌هایی که در شبکه بیت‌کوین انجام می‌گیرن از نوع تک امضایی هستن. اگه حساب شما چند امضایی (مثلا مشابه عکس ۳ امضا از ۴ امضا) هست، احتمالا مثل یک گاو پیشونی سفید توی شبکه، با هرکسی که تراکنشی انجام می‌دید یا هرکسی که به نحوی یکی از آدرس‌های شما رو به دست میاره، می‌تونه تاریخچه تراکنش‌هاتون رو در شبکه تشخیص بده.

#Privacy #BTC
〽️ @IranCoin
🔆 نقص کیف پول

توی بعضی از کیف پول‌ها، آدرس چنج همیشه آخرین گیرنده تراکنش هست و اینطوری آدرس فرستنده و گیرنده تراکنش مشخص می‌شه.

#Privacy #BTC
〽️ @IranCoin
کتاب کوچک بیتکوین
🔆 نسخه صوتی فارسی کتاب کوچک بیت‌کوین

🔹نسخه متنی

#BTC *
〽️ @IranCoin
ketabe-koochake-bitcoin-farsi.pdf
1.7 MB
🔆 نسخه متنی فارسی کتاب کوچک بیت‌کوین

🔹 نسخه صوتی

#BTC *
〽️ @IranCoin
🔅 مقایسه‌ی بیتکوین، طلا و فیات

#BTC 🔗
〽️ @IranCoin
🔅 تبدیل واحدهای بیتکوین، ساتوشی، تومان و دلار به هم

عددی به بیتکوین، ساتوشی، تومان یا دلار ورودی داده میشه و خروجی رو بر حسب مابقیشون به دست میاد. بر حسب ورودی که ثابت میمونه، مابقی واحدها هر چند ثانیه با قیمت‌های جدید به روز میشن.

#BTC 🔗
〽️ @IranCoin
ساخت آدرس با یه سری حروف دلخواه رو یه بررسی داشتم، محاسبات انجام ندادم ولی ظاهرا (با توجه به آدرس‌هایی که ساخته شدن) اگه ۶ کاراکتر رو آزاد بزاریم، مابقی رو میشه دلخواه انتخاب کرد (غیر حرف اول که مثلا ۱ فیکس هست). یه کدی هم براش زدم که امروز بالاخره ازش جواب گرفتم. (۵ کاراکتر رو کد بررسی میکرد، کاراکتر ششم رو هم خودم دستی تغییر میدادم)

# Bitcoin/address Validation
# https://rosettacode.org/wiki/Bitcoin/address_validation#Python
from hashlib import sha256
digits58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
def decode_base58(bc, length):
n = 0
for char in bc:
n = n * 58 + digits58.index(char)
return n.to_bytes(length, 'big')
def check_bc(bc):
try:
bcbytes = decode_base58(bc, 25)
return bcbytes[-4:] == sha256(sha256(bcbytes[:-4]).digest()).digest()[:4]
except Exception:
return False


# Valid Address Checker
# https://cointools.org/valid-address-checker/


# My Script
address_length = 34


def check_valid_chars(address):
return set(address) <= set(digits58)


def generate_address(inital_address):
if (len(inital_address)<address_length):
for char in digits58:
new_address = inital_address + char
generate_address(new_address)
else:
check_address(inital_address)




def check_address(address):
if(check_bc(address)):
print(address)


print(check_bc('1AGNa15ZQXAZUgFiqJ3i7Z2DPU2J6hW62a')) # False Address
print(check_bc('17NdbrSGoUotzeGCcMMCqnFkEvLymoou9j')) # True Address
print(check_bc('1WhyHaveYouDoneThis111111112LuRDJ')) # True Address
# 1WhyHaveYouDoneThis111111112LuRDJ
# 1AnywayBTCinNotAProof2111112kC2W3
# 1isBTCsentWhatMatters1111113DCY25
# 1HiFromFinanciaLEngineers111zKsxt


# 1Peyman1111111111111111111116Ed7aU
address = '1Peyman111111111111111111111611111' # Desired Address Format
initial_address = address[:-5] # Remove 5 chars from address


print(initial_address)
if (check_valid_chars(initial_address)):
generate_address(initial_address)
else:
print('Wrong Characters in address format')
print('END')
Output:
False
True
True
1Peyman1111111111111111111116
1Peyman1111111111111111111116Ed7aU
END


#BTC
〽️ @irancoin