| /** |
| *برای تأیید در Etherscan. io در تاریخ 2017-11-28 ارسال شده است |
| */ |
| // https://cn. etherscan.com/address/0xdac17f958d2ee523a220620620620694597c13d831ec7#code |
| پراگما استحکام ^ 0. 4. 17 ؛ |
| /** |
| * title safemath |
| * Dev ریاضی با بررسی های ایمنی که خطا می کنند |
| */ |
| کتابخانه کتابخانه |
| عملکرد MUL (UINT256 A ، UINT256 B) بازده خالص داخلی (UINT256) |
| if (a == 0) |
| بازگشت 0 ؛ |
| > |
| uint256 c = a * b ؛ |
| ادعا (c / a == b) ؛ |
| بازگشت c ؛ |
| > |
| عملکرد DIV (UINT256 A ، UINT256 B) بازده خالص داخلی (UINT256) |
| // assert(b>0) ؛// استحکام هنگام تقسیم 0 به طور خودکار پرتاب می کند |
| uint256 c = a / b ؛ |
| // ادعا (a == b * c + a ٪ b) ؛// موردی وجود ندارد که این امر در آن نگه ندارد |
| بازگشت c ؛ |
| > |
| عملکرد زیر (UINT256 A ، UINT256 B) بازده خالص داخلی (UINT256) |
| ادعا کنید (ب |
| بازگشت A - B ؛ |
| > |
| عملکرد اضافه (uint256 a ، uint256 b) بازده خالص داخلی (UINT256) |
| uint256 c = a + b ؛ |
| assert (c>= الف) ؛ |
| بازگشت c ؛ |
| > |
| > |
| /** |
| * title متعلق به |
| * dev قرارداد قابل خود دارای آدرس مالک است و کنترل مجوز اساسی را ارائه می دهد |
| * توابع ، این امر اجرای "مجوزهای کاربر" را ساده می کند. |
| */ |
| قرارداد قابل قرارداد |
| آدرس مالک عمومی ؛ |
| /** |
| * Dev سازنده خود "مالک اصلی" قرارداد را به فرستنده تعیین می کند |
| * حساب. |
| */ |
| عملکرد خود () عمومی |
| مالک = msg. فرستنده ؛ |
| > |
| /** |
| * Dev اگر به هر حساب غیر از مالک فراخوانده شود ، پرتاب می کند. |
| */ |
| فقط OnlyWowner () |
| نیاز (msg. sender == مالک) ؛ |
| _; |
| > |
| /** |
| * Dev به مالک فعلی اجازه می دهد کنترل قرارداد را به یک نیوونر منتقل کند. |
| * Param NewOwner آدرس انتقال مالکیت به. |
| */ |
| عملکرد Transfeownership (آدرس NewOwner) OnloWner عمومی |
| if (newowner! = آدرس (0)) |
| مالک = نیوونر ؛ |
| > |
| > |
| > |
| /** |
| * title erc20basic |
| * نسخه ساده تر رابط ERC20 |
| * dev به https://github.com/ethereum/eips/issues/20 مراجعه کنید |
| */ |
| قرارداد ERC20Basic |
| Uint Public _totalSupply ؛ |
| عملکرد TotalSupply () بازده ثابت عمومی (UINT) ؛ |
| عملکرد تعادل (آدرس WHO) بازده ثابت عمومی (UINT) ؛ |
| انتقال عملکرد (آدرس به ، ارزش UINT) عمومی ؛ |
| انتقال رویداد (آدرس فهرست شده از ، آدرس فهرست شده به ، مقدار UINT) ؛ |
| > |
| /** |
| * رابط Title ERC20 |
| * dev به https://github.com/ethereum/eips/issues/20 مراجعه کنید |
| */ |
| قرارداد ERC20 ERC20Basic است |
| کمک هزینه عملکرد (مالک آدرس ، آدرس اسپندر) بازده ثابت عمومی (UINT) ؛ |
| عملکرد انتقال از (آدرس ، آدرس به ، ارزش UINT) عمومی ؛ |
| تأیید عملکرد (آدرس اسپندر ، ارزش UINT) عمومی ؛ |
| تصویب رویداد (مالک فهرست شده آدرس ، آدرس شاخص آدرس ، ارزش UINT) ؛ |
| > |
| /** |
| * Title Basic Token |
| * Dev نسخه اصلی StandardToken ، بدون کمک هزینه. |
| */ |
| قرارداد basickoken قابل خود است ، ERC20Basic |
| استفاده از Safemath برای UINT ؛ |
| mapping ( address =>UINT) تعادل عمومی ؛ |
| // متغیرهای اضافی برای استفاده در صورت لزوم هزینه های معامله |
| UINT Public BusyPointSrate = 0 ؛ |
| UINT PUBLIC MAXIMEFEE = 0 ؛ |
| /** |
| * Dev برای حمله به آدرس کوتاه ERC20 رفع کنید. |
| */ |
| اصلاح کننده فقط PayloadSize (اندازه UINT) |
| نیاز (! (msg. data. طول |
| _; |
| > |
| /** |
| * dev انتقال برای یک آدرس مشخص |
| * param _to آدرس برای انتقال به. |
| * param _Value مبلغی که باید منتقل شود. |
| */ |
| انتقال تابع (آدرس _to ، uint _value) عمومی فقط پرداخت بار (2 * 32) |
| هزینه UINT = (_Value. MUL (BasidypointSrate)). DIV (10000) ؛ |
| if (fee>Maximfefe) |
| هزینه = MaximumFee ؛ |
| > |
| uint sendamount = _value. زیر (هزینه) ؛ |
| تعادل [msg. فرستنده] = تعادل [msg. فرستنده ]. زیر (_Value) ؛ |
| تعادل [_to] = توازن [_to]. اضافه کردن (SendAmount) ؛ |
| if (fee>0) |
| تعادل [مالک] = مانده [مالک]. اضافه کردن (هزینه) ؛ |
| انتقال (فرستنده ، صاحب ، هزینه) ؛ |
| > |
| انتقال (msg. فرستنده ، _to ، sendamount) ؛ |
| > |
| /** |
| * dev تعادل آدرس مشخص شده را دریافت می کند. |
| * param _owner آدرس را برای پرس و جو از تعادل. |
| * retu یک UINT که مبلغ متعلق به آدرس منتقل شده را نشان می دهد. |
| */ |
| تعادل عملکرد (آدرس _owner) بازده ثابت عمومی (تعادل UINT) |
| تعادل بازگشت [_owner] ؛ |
| > |
| > |
| /** |
| * Title Standard ERC20 Token |
| * |
| * Dev اجرای نشانه استاندارد پایه. |
| * dev https://github.com/ethereum/eips/issues/20 |
| * dev بر اساس آن کد توسط FirstBlood: https://github.com/firstbloodio/token/blob/master/smart_contract/firstbloodtoken. sol |
| */ |
| قرارداد StandardToken basictoken ، ERC20 است |
| mapping ( address => mapping ( address =>uint)) عمومی مجاز است. |
| uint عمومی ثابت max_uint = 2 ** 256 - 1 ؛ |
| /** |
| * dev توکن ها را از یک آدرس به آدرس دیگر منتقل کنید |
| * param _ از آدرس آدرس که می خواهید توکن ها را از آن ارسال کنید |
| * param _to آدرس آدرس را که می خواهید به آن منتقل کنید |
| * param _value مقدار نشانه های منتقل شده |
| */ |
| تابع انتقال (آدرس _FROM ، آدرس _to ، uint _value) فقط Public PayloadSize (3 * 32) |
| var _allowance = مجاز [_from] [msg. فرستنده ]؛ |
| // بررسی لازم نیست زیرا اگر این شرط برآورده نشود، sub(_allowance, _value) قبلاً پرتاب می شود |
| // if (_value>_Allowance) پرتاب; |
| هزینه UINT = (_Value. MUL (BasidypointSrate)). DIV (10000) ؛ |
| if (fee>Maximfefe) |
| هزینه = MaximumFee ؛ |
| > |
| اگر (_Allowance |
| مجاز[_from][ پیام . فرستنده ] = _ کمک هزینه. زیر (_value); |
| > |
| uint sendamount = _value. زیر (هزینه) ؛ |
| تعادل[_from] = موجودی[_from]. زیر (_value); |
| تعادل [_to] = توازن [_to]. اضافه کردن (SendAmount) ؛ |
| if (fee>0) |
| تعادل [مالک] = مانده [مالک]. اضافه کردن (هزینه) ؛ |
| انتقال (_از، مالک، هزینه)؛ |
| > |
| انتقال (_from, _to, sendAmount)؛ |
| > |
| /** |
| * @dev آدرس ارسال شده را برای خرج کردن مقدار مشخص شده توکن از طرف msg. sender تأیید کنید. |
| * @param _spender آدرسی که وجوه را خرج می کند. |
| * @param _value مقدار توکن هایی که باید خرج شود. |
| */ |
| تابع تایید (آدرس _spender، uint _value) public onlyPayloadSize (2 * 32) |
| // برای تغییر مقدار تایید، ابتدا باید آدرس ها را کاهش دهید |
| // با فراخوانی «approve(_spender, 0)» در صورتی که اینطور نیست، به صفر برسد |
| // در حال حاضر 0 برای کاهش شرایط مسابقه شرح داده شده در اینجا: |
| // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 |
| نیاز (! ((_value != 0 ) && (مجاز[ msg. sender ][_spender] != 0 ))); |
| مجاز[پیام. فرستنده ][_spender] = _value; |
| تأیید (پیام فرستنده، _اسپاندر، _value); |
| > |
| /** |
| * @dev تابعی برای بررسی میزان توکن هایی که مالک مجاز به مصرف کننده است. |
| * @param _owner address آدرس مالک وجوه. |
| * @param _spender آدرس آدرسی که وجوه را خرج می کند. |
| * @retu یک uint که مقدار توکن هایی را که هنوز برای خرج کننده موجود است مشخص می کند. |
| */ |
| کمک هزینه تابع (آدرس _owner، آدرس _spender) بازده ثابت عمومی (Uint باقی مانده) |
| بازگشت مجاز است[_owner][_spender]; |
| > |
| > |
| /** |
| * @title قابل مکث |
| * قرارداد پایه @dev که به کودکان اجازه می دهد مکانیسم توقف اضطراری را اجرا کنند. |
| */ |
| قرارداد Pausable Ownable است |
| رویداد مکث (); |
| رویداد لغو مکث (); |
| bool public paused = false ; |
| /** |
| * @dev Modifier برای فراخوانی یک تابع فقط زمانی که قرارداد متوقف نشده باشد. |
| */ |
| اصلاح کننده WhenNotPaused () |
| نیاز (! مکث)؛ |
| _; |
| > |
| /** |
| * @dev Modifier برای فراخوانی یک تابع فقط زمانی که قرارداد متوقف شده باشد. |
| */ |
| اصلاح کننده در هنگام مکث () |
| نیاز (مکث)؛ |
| _; |
| > |
| /** |
| * @dev توسط مالک برای مکث فراخوانی شده است، باعث توقف حالت می شود |
| */ |
| تابع مکث () onlyOwner whenNotPaused public |
| مکث = درست ; |
| مکث (); |
| > |
| /** |
| * @dev توسط مالک برای لغو مکث فراخوانده شده است، به حالت عادی باز می گردد |
| */ |
| تابع unpause () onlyOwner whenPaused public |
| مکث = نادرست ; |
| لغو مکث (); |
| > |
| > |
| قرارداد سیاه لیست Ownable است، BasicToken |
| //////// گیرنده ها برای اجازه استفاده از لیست سیاه یکسان نیز توسط سایر قراردادها (از جمله تثبیت ارتقا یافته) /////// استفاده می شود. |
| عملکرد GetBlackListStatus (آدرس _maker) بازده ثابت خارجی (BOOL) |
| بازگشت isblacklisted [_maker] ؛ |
| > |
| عملکرد getowner () بازده ثابت خارجی (آدرس) |
| صاحب بازگشت ؛ |
| > |
| mapping ( address =>BOOL) ISBlacklisted عمومی ؛ |
| تابع addBlackList (آدرس _eviluser) تنها مالک عمومی |
| isblacklisted [_eviluser] = true ؛ |
| اضافه شده blacklist (_eviluser) ؛ |
| > |
| تابع حذف blacklist (آدرس _ cleareduser) تنها مالک عمومی |
| isblacklisted [_cleareduser] = false ؛ |
| relovedBlackList (_cleareduser) ؛ |
| > |
| تابع DestroyblackFunds (آدرس _BlackListedUser) OnlyOwner Public |
| نیاز (iSblacklisted [_blackListedUser]) ؛ |
| uint dirtyfunds = تعادل (_BlackListedUser) ؛ |
| تعادل [_BlackListedUser] = 0 ؛ |
| _totalSupply -= DirtyFunds ؛ |
| DestroyedBlackFunds (_BlackListedUser ، DirtyFunds) ؛ |
| > |
| رویداد DestrodedBlackFunds (آدرس _blacklisteduser ، uint _balance) ؛ |
| رویداد اضافه شده blacklist (آدرس _user) ؛ |
| رویداد حذف شده blacklist (آدرس _user) ؛ |
| > |
| قرارداد به روز شده StandardToken StandardToken است |
| // این روش ها توسط قرارداد میراث خوانده می شوند |
| // و آنها باید اطمینان حاصل کنند که msg. sender آدرس قرارداد است |
| عملکرد TransferbyLegacy (آدرس ، آدرس به ، ارزش UINT) عمومی ؛ |
| عملکرد انتقال frombylegacy (ارسال کننده آدرس ، آدرس از ، آدرس spender ، ارزش uint) عمومی ؛ |
| تابع تأیید bylegacy (آدرس از ، آدرس spender ، ارزش uint) عمومی ؛ |
| > |
| قرارداد tethertoken قابل مکث ، استاندارد ، لیست سیاه است |
| نام عمومی رشته ؛ |
| نماد عمومی رشته ؛ |
| اعشار عمومی UINT ؛ |
| آدرس دهی عمومی به روزرسانی ؛ |
| BOOL Public Exprecated ؛ |
| // قرارداد را می توان با تعدادی از نشانه ها آغاز کرد |
| // تمام نشانه ها به آدرس مالک واریز می شوند |
| // |
| // PARAM _BALANCE عرضه اولیه قرارداد |
| // param _name name name |
| // param _symbol نماد توکن |
| // param _decimals اعشار |
| عملکرد tethertoken (uint _initialsupply ، رشته _name ، رشته _symbol ، uint _decimals) عمومی |
| _totalSupply = _initialSupply ؛ |
| name = _name ؛ |
| نماد = _symbol ؛ |
| اعشار = _decimals ؛ |
| تعادل [مالک] = _initialSupply ؛ |
| deprecated = false ؛ |
| > |
| // روشهای ERC20 به جلو برای به روزرسانی قرارداد در صورت کاهش |
| انتقال تابع (آدرس _to ، uint _value) عمومی که در صورت عدم استفاده |
| نیاز (! iSblacklisted [msg. فرستنده]) ؛ |
| if (مستهلک) |
| بازگشت به روز شده با استاندارد (ارتقاءداد). TransferByLegacy (فرستنده msg ، _to ، _value) ؛ |
| >دیگر |
| بازگشت فوق العاده. انتقال (_to ، _value) ؛ |
| > |
| > |
| // روشهای ERC20 به جلو برای به روزرسانی قرارداد در صورت کاهش |
| عملکرد انتقال از (آدرس _FROM ، آدرس _to ، uint _value) عمومی که در صورت عدم وجود |
| نیاز (! iSblacklisted [_from]) ؛ |
| if (مستهلک) |
| بازگشت به روز شده با استاندارد (ارتقاءداد). TransferFromByLegacy (Msg. Sender ، _from ، _to ، _value) ؛ |
| >دیگر |
| بازگشت فوق العاده. TransferFrom (_from ، _to ، _value) ؛ |
| > |
| > |
| // روشهای ERC20 به جلو برای به روزرسانی قرارداد در صورت کاهش |
| تعادل عملکرد (آدرس WHO) بازده ثابت عمومی (UINT) |
| if (مستهلک) |
| بازگشت به روز شده با استاندارد (ارتقاءداد). تعادل (چه کسی) ؛ |
| >دیگر |
| بازگشت فوق العاده. تعادل (چه کسی) ؛ |
| > |
| > |
| // روشهای ERC20 به جلو برای به روزرسانی قرارداد در صورت کاهش |
| تابع تایید (آدرس _spender، uint _value) public onlyPayloadSize (2 * 32) |
| if (مستهلک) |
| بازگشت به روز شده با استاندارد (ارتقاءداد). AdvoveBylegacy (Msg. Sender ، _spender ، _value) ؛ |
| >دیگر |
| بازگشت فوق العاده. تأیید (_spender ، _value) ؛ |
| > |
| > |
| // روشهای ERC20 به جلو برای به روزرسانی قرارداد در صورت کاهش |
| کمک هزینه تابع (آدرس _owner، آدرس _spender) بازده ثابت عمومی (Uint باقی مانده) |
| if (مستهلک) |
| Retu StandardToken (ارتقاءداد). کمک هزینه (_owner ، _spender) ؛ |
| >دیگر |
| بازگشت فوق العاده. کمک هزینه (_owner ، _spender) ؛ |
| > |
| > |
| // قرارداد فعلی را به نفع یک قرارداد جدید کاهش دهید |
| عملکرد کاهش یافته (آدرس _upgradedAddress) تنها مالک |
| deprecated = true ؛ |
| ارتقاءددس = _upgradedAdaddress ؛ |
| کاهش یافته (_upgradedAddress) ؛ |
| > |
| // اگر به نفع یک شخص جدید باشد ، قرارداد فعلی را کاهش دهید |
| عملکرد TOTALSUPPLY () بازده ثابت عمومی (UINT) |
| if (مستهلک) |
| Retu StandardToken (ارتقاءداد). totalsupply () ؛ |
| >دیگر |
| بازگشت _totalsupply ؛ |
| > |
| > |
| // مقدار جدیدی از نشانه ها را صادر کنید |
| // این نشانه ها به آدرس مالک واریز می شوند |
| // |
| // param _amount تعداد نشانه هایی که باید صادر شود |
| شماره عملکرد (مبلغ UINT) تنها مالک |
| require (_totalSupply + amount>_totalsupply) ؛ |
| require (balances[owner] + amount>تعادل [مالک]) ؛ |
| تعادل [مالک] += مقدار ؛ |
| _totalsupply += مقدار ؛ |
| شماره (مقدار) ؛ |
| > |
| // بازخرید نشانه ها. |
| // این نشانه ها از آدرس مالک خارج می شوند |
| // اگر تعادل باید برای پوشش بازخرید کافی باشد |
| // یا تماس با هم شکست می خورد. |
| // param _amount تعداد نشانه هایی که باید صادر شود |
| عملکرد بازپرداخت (مبلغ UINT) تنها مالک |
| require (_totalSupply>= مقدار) ؛ |
| require (balances[owner]>= مقدار) ؛ |
| _totalSupply -= مقدار ؛ |
| تعادل [مالک] -= مقدار ؛ |
| بازپرداخت (مقدار) ؛ |
| > |
| عملکرد SetParams (Uint newbasispoints ، uint newmaxfee) تنها مالک عمومی |
| // اطمینان از شفافیت با محدودیت کدگذاری را فراتر از آن که هرگز نمی توان هزینه ها را اضافه کرد |
| نیاز به (NewBasisPoints<20 ); |
| نیاز دارد (NewMaxfee<50 ); |
| BasionPointSrate = NewBasisPoints ؛ |
| MaximumFee = NewMaxfee. MUL (10 ** اعشار) ؛ |
| PARMS (BIDESPOINTSRATE ، MAXITIONFEE) ؛ |
| > |
| // هنگام صدور توکن جدید تماس گرفته می شود |
| شماره رویداد (مقدار UINT) ؛ |
| // هنگام بازخرید نشانه ها نامیده می شود |
| بازپرداخت رویداد (مقدار UINT) ؛ |
| // هنگام کاهش قرارداد فراخوانده می شود |
| کاهش رویداد (آدرس NewAddress) ؛ |
| // در صورتی که قرارداد تا به حال هزینه اضافه کند ، فراخوانده شده است |
| Params Param (Uint Feebasispoints ، Uint Maxfee) ؛ |
| > |