سلام
به عنوان مثال سایت apirone.com
به ازای 5 تا رمز ارز امکان ایجاد wallet و address رو فراهم کرده (لینک ذیل)
سایت های دیگه ای هم وجود دارند که همچین Api ای ارائه می دن ، ولی خوب مسئله اینه که ارزهایی که به ازاشون قابلیت ساخت wallet و wallet address ارائه می دن محدود هستند
فرضا من می خوام به کاربران سایتم این امکان رو بدم که برای ارزهای پولکادات و تزوس و … هم wallet address، deposit address و … ایجاد کنند
به این نتیجه رسیدم که نمی تونم api مناسب برای همه ارزهای مد نظر م پیدا کنم
حالا سوالم اینه اگه بخوام خودم همچین api ای بنویسم از کجا باید شروع کنم؟
/wallet-as-a-service/wallets/{walletId}/{blockchain}/{network}/addresses
این سایت این امکان رو می ده که به ازای این ارزها
Possible Values : bitcoin bitcoin-cash litecoin dogecoin dash ethereum ethereum-classic xrp zcash binance-smart-chain
deposit address ایجاد بشه و البته مشکل دیگه ای که هست rate limit کمی هم داره
ولی من می خوام فرضا به ازای polkadot، avax و حدود 30 تا ارز دیگه هم این کار انجام بشه
حالا چطور می تونم در واقع کاری که سایت بالا داره انجام می ده رو خودم از base انجام بدم؟
بازم سوال بالاتون رو تکرار کردین
اگر به دنبال ساخت یک چیزی مثل صرافی یا کیف پولدهای حضانتی هستین و نمیخواید نود اجرا کنید توصیه میکنم از الگوریتم شبکه ها برای ساخت جفت کلید خصوصی و عمومی استفاده کنید و کلید خصوصی رو رمزنگاری کنید
فرض کنید یک offline wallet generator دارید که اینجا به شکل خودکار برای هر کاربر یک جفت کلید عمومی و خصوصی میسازه
اما اگر قصدتون چیزی مثل درگاه پرداخت یا مرچنت برای وبسایت فروشگاهی هست ، شبکه های سازگار اتریومی رو بدون نود وپلاگین میتونید web3 و متامسک پیاده کنید
اگر شبکه های دیگه رونیاز دارید که بدون نود باشه یا میتونید از crypto payment gateway ها استفاده کنید ( که در ایران هم داریم ) یا با استفاده از api یا راه اندازی نود ( راه سختتر و پر هزینه ) خودتون بنویسید
کاری که می خواهیم انجام بدیم اینه:
انتقال credit به یک ولت ادرس ولید به ازای هر کاربر
می خواهیم برای هر کاربر یک ولت آدرس جدید بسازیم که با استفاده از اون بتونیم credit مورد نظر رو انتقال بدیم
کاربر با توجه به نیاز خودش می تونه هر رمز ارزی رو که می خواد انتخاب کنه و ما به ازای هر رمز ارز باید براش ولت آدرس ولید generate کنیم
فعلا سایت هایی که پیدا کردم با api key خودشون تعداد رمز ارز محدودی رو ارائه می کنن
خوب فرض کنید من نود اختصاصی هم اجرا بکنم بقیه راه چیه؟
یا نود پروایدری مثل getBlock بخوام کمک بگیرم
لطفا با کد مثال بزنید یا لینکی اگه در این زمینه می شناسید معرفی کنید
الان من کد ذیل رو از روی مستندات خود getblock نوشتم
const Web3 = require('web3');
const apikey = "b1fdacbb-59ea-4598-96ed-......";
const network = 'testnet'; // Change to mainnet for production
const chainId = 97; // 97 is BSC testnet, 95 is BSC mainnet
const node = `https://btc.getblock.io/${network}/?api_key=${apikey}`;
const web3 = new Web3(node);
// Generate new address and private key
const accountTo = web3.eth.accounts.create();
console.log("accountTo",accountTo);
الان آیا این آدرس برای bitcoin قابل استفاده است؟
وقتی با آنلاین ولیدیتورها چک می کنم می گه آدرس ولید بیت کوین نیست
و نکته عجیب دیگه اینه که وقتی node رو غلط می نویسم مثلا به شکل زیر
اجرای نود اختصاصی هزینه و زمان بر هست
از سرویس های شخص ثالث که نود اجرا کنند میتونید استفاده کنید اما روال کار به این شکل هست
شما باید یک جفت کلید خصوصی و عمومی بسازید
برای نمونه شبکه های سازگار با ماشین مجازی اترومروعرض میکنم
مثلا با web3.js یا ethers.js به شکل افلاین میتونید یککیف پولبسازید
حالا باید برای هرکاربر ( با کلیککاربر یا خودکار در زمان ثبت نام ) کیف پولبسازید وبرای امنیتش کلید خصوصی رو رمزنگاری کنید
حالا نیاز دارید که یک تراکنش بسازید
تراکنش های اتریومی معمولا همچین ساختاری دارند
ادرسگیرنده ، مقدار ، نانس ، gas
این مقادیررو از ورودی از کاربر بگیرید و به تابع تراکنش پاس بدید
حالا باید تراکنش توسط کلید خصوصی هر کاربر امضا بشه
تراکنش امضا شده به نودی که شما از provider گرفتین ارسال میشه و توسط اون در شبکه broad cast میشه
نمونه عملی همین روبرای csc مینویسم در همینجا ان شاالله
در واقع شما یک کیفپول حضانتی ساختین که حضانت کیف پولکاربراتون با شماست
برای موردی که با web3.js و متامسک گفتیم درواقع اینطوره که خودش رو در هر صفحه وب inject میکنه
شما میتونید با js به متامسک بگید که تراکنشی با فلان مقدار به فلان ادرس ایجاد کنه ، در اینجا همه چیز client side هست و کلید خصوصی کاربر در رایانه خودش ذخیره میشه
و اینکه خیر این یک ادرس بیت کوینی نیست استاندارد ادرس های بیت کوینی متفاوت هست ادرس های اتریومی با 0x شروع میشند