ایجاد NFT با نرم افزار منبع آزاد و باز

ساخت وبلاگ

یک فرصت آموزشی غیرمعمول در تابستان سال 2021 به مؤسسه حرفه ای لینوکس (LPI) رسید. دو کارور ز-آلکس ، یک دانشجوی روابط عمومی و خودم ، روزیلین ، مطالعه مهندسی برقی و کامپیوتر - برای ایجاد مجموعه ای از NFT ها به عنوان یک تمرین یادگیری. در این مقاله ابزارهای مورد استفاده الکس و من با جزئیات کافی توضیح داده شده است که می توانید خودتان آنها را امتحان کنید.

تا زمانی که کارآموزی خود را شروع نکردیم ، من و الکس بیشتر از آنچه که به طور اتفاقی در مطبوعات خوانده بودیم ، بیشتر از NFT ها نمی دانستیم. هنگامی که ما تصمیم گرفتیم یک پروژه NFT را برای کارآموزی خود انجام دهیم ، مجبور شدیم به سرعت در CryptocUrraces سرعت بگیریم: گرافیکی که می توانند از طریق NFT ها و قراردادهای NFT مجوز بگیرند. در این ارسال ، من فن آوری های مورد استفاده در 1) ایجاد آثار هنری را شرح می دهم ، و 2) یک قرارداد هوشمند بنویسید که می تواند NFTS را برای تصاویر مربوطه نعناع کند.

LPI هیچ برنامه ای برای استفاده یا توزیع این NFT ها در حال حاضر ندارد ، اما تصاویر یک پنگوئن لباس پوشیده شده برای یک پروژه تابستانی جذاب و سرگرم کننده برای کمک به متخصصان جوان فناوری اطلاعات در مورد فن آوری های نوظهور کمک می کند.

روند توسعه

ابزارهای مناسب برای توسعه NFT ها و قراردادهای هوشمند وجود دارد که می تواند توسط افرادی که مهارت فنی محدود دارند استفاده شود. به عنوان مثال ، OpenSea و Rarible باعث ایجاد و بازاریابی NFT ها می شود. در مورد ما ، زیرا هدف اصلی ما یادگیری فناوری بود ، ما تصمیم گرفتیم از ابزارهای منبع باز استفاده کنیم و روند را به صورت دستی انجام دهیم. تا پایان تابستان ، ما:

  • آثار هنری برای LPI بر اساس یک تصویر دارای مجوز CC از پنگوئن محبوب Tux به نمایندگی از لینوکس ایجاد شده است
  • NFT ها با یک قرارداد استحکام سفارشی ایجاد شده است
  • مستقر و تأیید قرارداد در یک شبکه آزمون عمومی (TestNet)
  • nfts های ذوب شده که آزمایش کنندگان ما می توانند در کیف پول خود مدیریت کنند

بقیه این ارسال ها از طریق چگونگی ایجاد یک سری از NFT ها با استفاده از ابزارهای منبع باز کاملاً باز می پردازیم.

ایجاد تصاویر

برای آثار هنری ، ما روش متداول بسیاری از NFT های محبوب موجود (به عنوان مثال ، رمزنگاری ها و cryptokitties) را اتخاذ کردیم: تولید یک ترکیب تصادفی از ویژگی ها برای سفارشی کردن یک تصویر پایه. این فرآیند چندین نوع شخصیت یا موضوع مشترک را در یک سری NFT ایجاد می کند.

الکس تصاویر را برای پایه پایه و ویژگی های اضافی با استفاده از GIMP و GraphicsMagick ایجاد کرد. این تصاویر برای هر منطقه از توکس که الکس سفارشی شده است به دایرکتوری های تعیین شده (شکل 1) سازماندهی شده است: پیراهن ، شلوار ، کلاه ، منقار ، فلیپ و غیره.

Figure 1: Component image layout (partial)

شکل 1: طرح تصویر کامپوننت (جزئی)

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

دستور کامپوزیت GraphicsMagick GM تصاویر را ترکیب کرد. از آنجا که دستور GM با یک تصویر پایه و فقط یک تصویر روکش کار می کند ، اسکریپت ساخته شده تماس های پیچیده شده به دستور را در یک حلقه (شکل 2) انجام می دهد تا تصویر حاصل شامل چندین ویژگی باشد.

Figure 2: Layering process

شکل 2: روند لایه بندی

ابزارهای خط فرمان اصلی مورد استفاده در اسکریپت عبارت بودند از:

  • : با استفاده از گزینه کمی شناخته شده-تصادفی ی ا-R ، این دستور ویژگی ها را در هر دایرکتوری به ترتیب تصادفی برمی گرداند.
  • سر: این دستور اولین تصویر را از لیست قبلی که به طور تصادفی سفارش داده شده است انتخاب می کند.
  • SED: یک ویرایشگر متن جریان ، این دستور پرونده ابرداده را از الگوی (نشان داده شده در زیر) با جایگزینی # ایجاد می کند.#TOKENNUM## و ##TOKENURI## با شماره فعلی و URI برای تصویری که اسکریپت در حال حاضر تولید می کند.

هر NFT با اسناد و مدارک مشخص شده عنوان ، توضیحات و URI تصویر (مشابه یک آدرس) تکمیل می شود. این جزئیات در قرارداد هوشمند ما با استفاده از یک فایل ابرداده مشخص شده در استاندارد ERC-721 JSON برای NFT ها ، همانطور که در نمونه زیر مشاهده می شود ، اجرا شد:

"عنوان": "mytoken" ، "نوع": "شی" ، "خصوصیات": "نام": "نوع": "رشته" ، "توضیحات": "mytoken ###TOKENNUM##">، "توضیحات": "نوع": "رشته" ، "توضیحات": "mytoken ###TOKENNUM##">، "تصویر": "نوع": "رشته" ، "توضیحات": "##TOKENURI##">>>

مثال 1: پرونده ابرداده الگوی NFT برای تبدیل SED برای تبدیل

در حالی که ما تصمیم گرفتیم که پرونده های ابرداده ما صرفاً پایه ای را که توسط استاندارد ERC-721 ارائه شده است ، داشته باشند ، ممکن است بخواهید ویژگی های مختلف و منحصر به فرد را به خود اختصاص دهید.

نوشتن یک قرارداد NFT

قراردادهای هوشمند برنامه های نرم افزاری هستند که در یک شبکه blockchain ذخیره و اجرا می شوند. این نرم افزار برای افزودن ویژگی های اضافی به معاملات استفاده می شود ، مانند اجازه دادن به مجوز برای انتقال NFT به افراد دیگر. قراردادهای هوشمند می توانند طیف گسترده ای از کارکردهای احتمالی ، از جمله تسهیل در ذخیره سازی اطلاعات معامله در شبکه ، تأیید مالکیت و انتقال نشانه ها را ارائه دهند.

ابزارها و منابعی که من برای ایجاد قراردادها استفاده کردم عبارتند از:

  • : در وب سایت Zeppelin به عنوان "یک چارچوب منبع باز برای ایجاد قراردادهای هوشمند امن" ، این پروژه مستندات ، کتابخانه ها و پشتیبانی از ساخت قراردادهای هوشمند در شبکه های blockchain غیرمتمرکز ارائه می دهد.: توسط من برای ایجاد قراردادهای هوشمند ما استفاده می شود ، این زبان برنامه نویسی برای هر دو نمونه کار و جادوگر قراردادهای OpenZeppelin است. همچنین معمولاً به دلیل استفاده کتبی و اجرای قراردادهای هوشمند به طور کلی شناخته شده است.: به عنوان "blockchain شخصی برای توسعه Ethereum که می توانید برای استقرار قراردادها ، توسعه برنامه های خود و اجرای آزمایشات استفاده کنید" توصیف شده است ، ترافل یک محیط جدا شده را برای آزمایش قراردادهای هوشمند قبل از استقرار در یک blockchain فعال فراهم می کند. می توانید از ترافل برای کامپایل ، استقرار و تعامل با نرم افزار خود در سیستم محلی خود استفاده کنید.: زیر مجموعه ای از اکوسیستم ترافل ، این یک محیط توسعه دهنده و ابزار خط فرمان است که در توسعه ، آزمایش و استقرار قراردادهای هوشمند ایمن (یعنی ایمن) در یک شبکه blockchain محلی (شخصی) کمک می کند. توسعه دهندگان با استفاده از Ganache ، مزایای اضافی را که نیازی به آزمایش شخصی یا اتر واقعی (ETH) ندارند ، به دست می آورند ، رمزنگاری مورد استفاده در blockchain Ethereum. اجتناب از اتر به دلایلی که در بخش های بعدی بیان شده است مناسب است.: این یک تست اتریوم عمومی است. ما از آن در مرحله آزمایش نهایی خود استفاده کردیم ، زیرا نزدیکترین شباهت به Ethereum Maiet را دارد. Ropsten تنها اثبات کار TestNet است. این امر به توسعه دهندگان نیاز دارد تا رمزنگاری تست شخصی داشته باشند.: این یک موتور جستجو است که به شما امکان می دهد قراردادها ، نشانه ها ، حساب ها ، معاملات و بلوک های ذخیره شده در Ethereum Maiet یا TestNets را مشاهده کنید. از آنجا که اترسان می تواند قراردادهای هوشمند را جستجو کند ، می تواند پس از استقرار خود شما مورد استفاده قرار گیرد تا تأیید کند که این قرارداد با موفقیت فعال شده است.: یک کیف پول blockchain - مانند مواردی که در زندگی واقعی است - که به عنوان ذخیره دیجیتال برای اطلاعاتی که دسترسی به دارایی ها را فراهم می کند عمل می کند (خود دارایی ها در یک blockchain ذخیره می شوند). Metamask یک کیف پول است که برای blockchain Ethereum به شکل افزونه مرورگر و برنامه موبایل مشخص شده است که به کاربران امکان می دهد دارایی ها را مشاهده یا انتقال دهند (و مبادله کنند.

ایجاد و تعامل با یک قرارداد هوشمند برای NFT با استفاده از مستندات قراردادهای هوشمند OpenZeppellin و جادوگر قرارداد ، با یا بدون آگاهی از استحکام بسیار قابل کنترل است. با این حال ، با دانش کار از استحکام ، یک برنامه نویس می تواند به راحتی سفارشی سازی های خود را به قراردادهای تولید شده اضافه کند.

به عنوان مثال ، کد تولید شده توسط جادوگر برای یک قرارداد شامل تابعی برای استخراج نشانه ها ، Safemint است. عملکرد فقط یک نشانه را در یک زمان نعناع می کند. بنابراین ، برای نعناع 10،000 توکن ، شما باید 10،000 بار عملکرد نعناع را صدا کنید. من کد زیر را به یک قرارداد اضافه کردم تا چندین نعناع را به طور همزمان اداره کنم:

تابع mintmany (uint256 num ، آدرس به) OnloWowner عمومی برای (uint256 i = 0 ؛ i>

مثال 2: نمونه اولیه عملکرد قرارداد سفارشی

یکی از مهمترین ویژگی های توجه به جادوگر قرارداد ، انتخاب استاندارد توکن قرارداد شماست. استانداردهایی برای نشانه ها ایجاد شده است تا قراردادهای خود را با یکدیگر سازگار نگه دارند و اطمینان حاصل کنند که آنها عملکرد اصلی را ارائه می دهند (مثال ، مالکیت ، مالکیت ، انتقال ، ردیابی و غیره). ERC-721 رابط استاندارد هنگام ایجاد نشانه های غیر قابل تغییر است-یعنی نشانه هایی که نمی توانند به صورت متناوب مورد استفاده قرار گیرند اما هر یک منحصر به فرد هستند-و همان چیزی بود که ما هنگام ایجاد قرارداد با جادوگر انتخاب کردیم.

معاملات در یک شبکه blockchain در یک رمزنگاری معین هزینه مرتبط دارد. این هزینه معمولاً به عنوان گاز گفته می شود. برای blockchain Ethereum ، اتر ارز است که برای پرداخت هزینه گاز در واحد GWEI ، معادل 10E-9 اتر استفاده می شود.

با ارزش فعلی بازار اتر (ETH ، سکه مورد استفاده در blockchain Ethereum) ، استقرار قراردادها نسبتاً گران است. بنابراین وقتی این کار را در Maiet Ethereum انجام می دهید ، می خواهید مطمئن باشید که هیچ مشکلی یا خطایی وجود ندارد که باعث شود شما مجبور شوید یک معامله را دوباره انجام دهید. شما گاز را پرداخت می کنید که آیا معامله موفقیت آمیز است یا خیر.

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

بنابراین ، به منظور آزمایش ، ابتدا اصول استقرار و تعامل با نمونه قراردادهای ارائه شده توسط Openzeppellin در Ganache ، یک شبکه محلی و شخصی را آموختیم. سپس ، پس از برخی از تمرین ها ، ما به Ropsten ، یک شبکه آزمایش عمومی نقل مکان کردیم.

از آنجا که تست انتخاب ما Ropsten بود ، ما به ارز برای استفاده در شبکه نیاز داشتیم - در این حالت ، Ropsten Ether (Reth). بر خلاف ETH عادی ، Reth را می توان به صورت رایگان با استفاده از شیر آب به دست آورد. این شیرها به شما امکان می دهند آدرس مورد نظر خود را برای انتقال اتر ، به طور معمول هر 24 ساعت یک بار وارد کنید. این تأخیر بخشی از چیزی است که باعث می شود شبکه منتظر Ganache برای آزمایش اولیه ایده آل باشد. شیر آب های مختلفی وجود دارد که در فواصل زمانی مختلف مقادیر مختلفی را می چسباند. شیرهای مورد استفاده ما عبارت بودند از:

  • : می تواند 0. 01 روپستنت را به هر حال که دوست دارید درخواست کنید: می توانید هر 24 ساعت 5 نفر را درخواست کنید: می تواند هر 24 ساعت 1 را درخواست کند

بعد از اینکه اتر آزمایش خود را برای پوشش قیمت گاز انجام دادید ، می توانید با استقرار به تست عمومی انتخابی خود ادامه دهید. برای جستجوی قرارداد خود می توانید با استفاده از آدرس قرارداد از رسید استقرار ، کار خود را با استفاده از Etherscan و MetaMask با استفاده از آدرس قرارداد از رسید استقرار تأیید کرده و ببینید.).

Deploying ‘MyToken’ - - - - - - - -> transaction hash: 0x1b2f67de68204ae3c137985379103ce8435a51a45452f624487e13b182ab2052> Blocks: 1 Seconds: 18> contract address: 0x3dd50Bcb9E125f1B7537f257fB6f4C165a02cB0f> block number: 10822250> block timestamp: 1628784232> account: 0x6dfA9B40F8a6AC500BcD0F09Bfa7709c6bD74dBC> balance: 16.44630489> gas used: 3171561 (0x3064e9)> gas price: 20 gwei> value sent: 0 ETH>هزینه کل: 0. 06343122 ETH

> Saving artifacts - - - - - - - - - - - - - - - - - - - - ->هزینه کل: 0. 06343122 ETH

مثال 3: خروجی JS (رسید استقرار) از استقرار قرارداد MyToken

Figure 3: MyToken Contract on Etherscan

شکل 3: قرارداد MyToken در مورد اترسان

Figure 4: Test NFT called MyToken (MTK), viewed in a MetaMask wallet

شکل 4: آزمایش NFT به نام MyToken (MTK) ، که در یک کیف پول Metamask مشاهده شده است

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

Truffle Run تأیی د-شبکه

تأیید قرارداد شما باعث می شود کد در Etherscan عمومی شود ، شفافیت با کاربران را فراهم می کند و به آنها امکان پرس و جو و نوشتن در توابع عمومی در دسترس را می دهد. اگرچه کارکردهای مختلفی برای دسترسی عمومی به قرارداد هوشمند شما وجود دارد ، تنها کاری که ما در قرارداد تست خود گنجانده ایم این بود که غیر صاحبان بتوانند NFT خود را منتقل کنند.

در حین آزمایش ، اولین راهی که برای انتقال یک نشانه از یک مالک به دیگری پیدا کردیم ، اتصال به Web3 ، از طریق Metamask یا WalletCoect (هر دو کیف پول Web3) ، در Etherscan و استفاده از عملکرد Safetransferfrom با شماره حساب کیف پول صاحب NFT بود. حساب برای انتقال به و شناسه NFT. ما با استفاده از این روش با موفقیت یک توکن MTK (پس از هزینه گاز 0. 00010114 Reth) را منتقل کردیم.

یک روش جایگزین ، که به طور بالقوه کاربر پسند تر است ، ویژگی "ارسال" خود Metamask است. با توجه به اینکه این عملکرد در حال حاضر فقط در برنامه تلفن همراه در دسترس است و نه پسوند.

ما با این نگرانی خاطرنشان كردیم كه كاركردهایی كه فقط برای صاحب قرارداد قابل استفاده باشند ، توابع در دسترس عموم بودند - به ویژه مالکیت و كاركردهای مینینگ. در حالی که همه کارکردها می توانند و باید برای شفافیت قابل مشاهده باشند ، فقط صاحب NFT باید به کارکردهای ممتاز دسترسی داشته باشد. بنابراین من سعی کردم از عملکرد Mintmany که قبلاً گفته شد با یک حساب کاربری که صاحب قرارداد نبود ، استفاده کنم و به طور مناسب ، معامله موفقیت آمیز نبود. به اعتبار خود ، متاماسك توصیه كرد كه در تلاش برای انجام معامله ، هشدار دهد ، "انتظار می رود این معامله با شکست روبرو شود. انتظار می رود که تلاش برای اجرای آن گران باشد اما شکست بخورد و توصیه نمی شود. "بعد از اینکه به هر حال ادامه دادیم ، معامله در واقع "شکست با خطا" را گزارش کرد: تماس گیرنده مالک نیست ".

نتیجه

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

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

درباره روزلین مارکو:

Rozilyn Marco

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

استراتژی های مؤثر فارکس...
ما را در سایت استراتژی های مؤثر فارکس دنبال می کنید

برچسب : نویسنده : توران میرهادی بازدید : <-PostHit-> تاريخ : سه شنبه 26 ارديبهشت 1402 ساعت: 17:31