From 31e45656a228055280f349496bcc8d0793a1a6c8 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Wed, 24 Nov 2021 21:03:14 +0000 Subject: [PATCH 01/20] feat: add slither and unit test run --- .gitignore | 1 + .gitlab-ci.yml | 26 ++++++++++++++++++++++++++ Dockerfile | 7 ++++++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 .gitlab-ci.yml diff --git a/.gitignore b/.gitignore index 7d32112..28fbdb6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ dist/ build/ gmon.out *.egg-info +.venv/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..e02d361 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,26 @@ +stages: + - test + - slither-analyzer + +test: + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest + cache: + - key: + files: + - requirements.txt + - test_requirements.txt + paths: + - /root/.cache/pip + script: + - cd python + - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt + - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt + - bash run_tests.sh + + +slither-analize: + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest + script: + - pip install slither-analyzer + - slither solidity/ + diff --git a/Dockerfile b/Dockerfile index 5de2c39..d27678e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,8 @@ FROM python:3.8.6-alpine COPY --from=0 /usr/bin/solc /usr/bin/solc RUN apk update &&\ - apk add gcc bash musl-dev + apk add gcc bash musl-dev libffi-dev openssl-dev autoconf automake build-base \ + libtool pkgconfig python3-dev cargo WORKDIR /usr/src @@ -14,6 +15,8 @@ WORKDIR /usr/src COPY ./solidity/ /usr/src/giftable_erc20_token/solidity/ COPY ./python/ /usr/src/giftable_erc20_token/python/ +RUN chmod +x ./python/run_tests.sh + RUN cd giftable_erc20_token/solidity && \ solc GiftableToken.sol --abi | awk 'NR>3' > GiftableToken.abi.json @@ -24,5 +27,7 @@ RUN cd giftable_erc20_token/solidity && \ RUN cd giftable_erc20_token/python && \ pip install --extra-index-url https://pip.grassrootseconomics.net:8433 . +RUN pip install slither-analyzer + # To deploy: # giftable-token-deploy --contracts-dir giftable_erc20_token/solidity/ From 8d1ee95a56eeb6505db916365abc57a713aa78de Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Wed, 24 Nov 2021 21:05:28 +0000 Subject: [PATCH 02/20] Add LICENSE --- LICENSE | 661 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 661 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c7c4667 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + eth-erc20 + Copyright (C) 2021 cicnet + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. From 7c7f320fccbb20a456d5a6adb8c4f10d149eb902 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Wed, 24 Nov 2021 21:12:25 +0000 Subject: [PATCH 03/20] Add CONTRIBUTING --- CONTRIBUTING.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..985a036 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,15 @@ +Hello and welcome to the CIC Stack repository. Targeted for use with the ethereum virtual machine and a ussd capable telecom provider. + +__To request a change to the code please fork this repository and sumbit a merge request.__ + +__If there is a Grassroots Economics Kanban Issue please include that in our MR it will help us track contributions. Karibu sana!__ + +__Visit the Development Kanban board here: https://gitlab.com/grassrootseconomics/cic-internal-integration/-/boards/2419764__ + +__Ask a question in our dev chat:__ + +[Mattermost](https://chat.grassrootseconomics.net/cic/channels/dev) + +[Discord](https://discord.gg/XWunwAsX) + +[Matrix, IRC soon?] From 1866abd7bc1110ffd97cbb674439f42e5d700011 Mon Sep 17 00:00:00 2001 From: nolash Date: Thu, 9 Dec 2021 06:23:21 +0100 Subject: [PATCH 04/20] Add ERC-173 to giftable token --- python/giftable_erc20_token/data/GiftableToken.bin | 2 +- python/giftable_erc20_token/data/GiftableToken.json | 2 +- python/setup.cfg | 2 +- solidity/GiftableToken.bin | 2 +- solidity/GiftableToken.json | 2 +- solidity/GiftableToken.sol | 11 ++++++++++- 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/python/giftable_erc20_token/data/GiftableToken.bin b/python/giftable_erc20_token/data/GiftableToken.bin index 3ef9964..f0bd9b9 100644 --- a/python/giftable_erc20_token/data/GiftableToken.bin +++ b/python/giftable_erc20_token/data/GiftableToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620017f0380380620017f0833981810160405281019062000037919062000269565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b8280546200013290620003a5565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000620001eb620001e5846200032c565b62000303565b9050828152602081018484840111156200020a576200020962000474565b5b620002178482856200036f565b509392505050565b600082601f8301126200023757620002366200046f565b5b815162000249848260208601620001d4565b91505092915050565b600081519050620002638162000494565b92915050565b6000806000606084860312156200028557620002846200047e565b5b600084015167ffffffffffffffff811115620002a657620002a562000479565b5b620002b4868287016200021f565b935050602084015167ffffffffffffffff811115620002d857620002d762000479565b5b620002e6868287016200021f565b9250506040620002f98682870162000252565b9150509250925092565b60006200030f62000322565b90506200031d8282620003db565b919050565b6000604051905090565b600067ffffffffffffffff8211156200034a576200034962000440565b5b620003558262000483565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200038f57808201518184015260208101905062000372565b838111156200039f576000848401525b50505050565b60006002820490506001821680620003be57607f821691505b60208210811415620003d557620003d462000411565b5b50919050565b620003e68262000483565b810181811067ffffffffffffffff8211171562000408576200040762000440565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200049f8162000362565b8114620004ab57600080fd5b50565b61133280620004be6000396000f3fe608060405234801561001057600080fd5b50600436106100ec576000357c010000000000000000000000000000000000000000000000000000000090048063313ce567116100a957806395d89b411161008357806395d89b411461026b578063983b2d5614610289578063a9059cbb146102b9578063dd62ed3e146102e9576100ec565b8063313ce567146101ed578063449a52f81461020b57806370a082311461023b576100ec565b806301ffc9a7146100f157806306fdde0314610121578063095ea7b31461013f57806318160ddd1461016f57806323b872dd1461018d5780633092afd5146101bd575b600080fd5b61010b60048036038101906101069190610fb1565b610319565b6040516101189190611044565b60405180910390f35b61012961041e565b604051610136919061105f565b60405180910390f35b61015960048036038101906101549190610f71565b6104ac565b6040516101669190611044565b60405180910390f35b610177610630565b6040516101849190611081565b60405180910390f35b6101a760048036038101906101a29190610f1e565b610636565b6040516101b49190611044565b60405180910390f35b6101d760048036038101906101d29190610eb1565b610948565b6040516101e49190611044565b60405180910390f35b6101f5610a3a565b604051610202919061109c565b60405180910390f35b61022560048036038101906102209190610f71565b610a4d565b6040516102329190611044565b60405180910390f35b61025560048036038101906102509190610eb1565b610b83565b6040516102629190611081565b60405180910390f35b610273610b9b565b604051610280919061105f565b60405180910390f35b6102a3600480360381019061029e9190610eb1565b610c29565b6040516102b09190611044565b60405180910390f35b6102d360048036038101906102ce9190610f71565b610ce4565b6040516102e09190611044565b60405180910390f35b61030360048036038101906102fe9190610ede565b610e4d565b6040516103109190611081565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561036e5760019050610419565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103c15760019050610419565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104145760019050610419565b600090505b919050565b6002805461042b90611211565b80601f016020809104026020016040519081016040528092919081815260200182805461045790611211565b80156104a45780601f10610479576101008083540402835291602001916104a4565b820191906000526020600020905b81548152906001019060200180831161048757829003601f168201915b505050505081565b600080821115610540576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461053f57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061e9190611081565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156106c157600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561070d57600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107959190611129565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108649190611129565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108ba91906110d3565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109359190611081565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109d057508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109d957600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610aa557600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610af491906110d3565b925050819055508160056000828254610b0d91906110d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610b719190611081565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60038054610ba890611211565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd490611211565b8015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8457600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d3257600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d819190611129565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dd791906110d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e3b9190611081565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600081359050610e81816112b7565b92915050565b600081359050610e96816112ce565b92915050565b600081359050610eab816112e5565b92915050565b600060208284031215610ec757610ec66112a1565b5b6000610ed584828501610e72565b91505092915050565b60008060408385031215610ef557610ef46112a1565b5b6000610f0385828601610e72565b9250506020610f1485828601610e72565b9150509250929050565b600080600060608486031215610f3757610f366112a1565b5b6000610f4586828701610e72565b9350506020610f5686828701610e72565b9250506040610f6786828701610e9c565b9150509250925092565b60008060408385031215610f8857610f876112a1565b5b6000610f9685828601610e72565b9250506020610fa785828601610e9c565b9150509250929050565b600060208284031215610fc757610fc66112a1565b5b6000610fd584828501610e87565b91505092915050565b610fe78161116f565b82525050565b6000610ff8826110b7565b61100281856110c2565b93506110128185602086016111de565b61101b816112a6565b840191505092915050565b61102f816111c7565b82525050565b61103e816111d1565b82525050565b60006020820190506110596000830184610fde565b92915050565b600060208201905081810360008301526110798184610fed565b905092915050565b60006020820190506110966000830184611026565b92915050565b60006020820190506110b16000830184611035565b92915050565b600081519050919050565b600082825260208201905092915050565b60006110de826111c7565b91506110e9836111c7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561111e5761111d611243565b5b828201905092915050565b6000611134826111c7565b915061113f836111c7565b92508282101561115257611151611243565b5b828203905092915050565b6000611168826111a7565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156111fc5780820151818401526020810190506111e1565b8381111561120b576000848401525b50505050565b6000600282049050600182168061122957607f821691505b6020821081141561123d5761123c611272565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b6112c08161115d565b81146112cb57600080fd5b50565b6112d78161117b565b81146112e257600080fd5b50565b6112ee816111c7565b81146112f957600080fd5b5056fea264697066735822122025d7f4c78e8965d75a35f7520bb91ec41a9cb560b63fecde62a8939d87c3affb64736f6c63430008060033 \ No newline at end of file +60806040523480156200001157600080fd5b506040516200194c3803806200194c833981810160405281019062000037919062000269565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b8280546200013290620003a5565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000620001eb620001e5846200032c565b62000303565b9050828152602081018484840111156200020a576200020962000474565b5b620002178482856200036f565b509392505050565b600082601f8301126200023757620002366200046f565b5b815162000249848260208601620001d4565b91505092915050565b600081519050620002638162000494565b92915050565b6000806000606084860312156200028557620002846200047e565b5b600084015167ffffffffffffffff811115620002a657620002a562000479565b5b620002b4868287016200021f565b935050602084015167ffffffffffffffff811115620002d857620002d762000479565b5b620002e6868287016200021f565b9250506040620002f98682870162000252565b9150509250925092565b60006200030f62000322565b90506200031d8282620003db565b919050565b6000604051905090565b600067ffffffffffffffff8211156200034a576200034962000440565b5b620003558262000483565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200038f57808201518184015260208101905062000372565b838111156200039f576000848401525b50505050565b60006002820490506001821680620003be57607f821691505b60208210811415620003d557620003d462000411565b5b50919050565b620003e68262000483565b810181811067ffffffffffffffff8211171562000408576200040762000440565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200049f8162000362565b8114620004ab57600080fd5b50565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c91906110e3565b61038d565b60405161013e91906111a0565b60405180910390f35b61014f6104e5565b60405161015c91906111bb565b60405180910390f35b61017f600480360381019061017a91906110a3565b610573565b60405161018c91906111a0565b60405180910390f35b61019d6106f7565b6040516101aa91906111dd565b60405180910390f35b6101cd60048036038101906101c89190611050565b6106fd565b6040516101da91906111a0565b60405180910390f35b6101fd60048036038101906101f89190610fe3565b610a0f565b60405161020a91906111a0565b60405180910390f35b61021b610b01565b60405161022891906111f8565b60405180910390f35b61024b600480360381019061024691906110a3565b610b14565b60405161025891906111a0565b60405180910390f35b61027b60048036038101906102769190610fe3565b610c4a565b60405161028891906111dd565b60405180910390f35b610299610c62565b6040516102a69190611185565b60405180910390f35b6102b7610c86565b6040516102c491906111bb565b60405180910390f35b6102e760048036038101906102e29190610fe3565b610d14565b6040516102f491906111a0565b60405180910390f35b610317600480360381019061031291906110a3565b610dcf565b60405161032491906111a0565b60405180910390f35b61034760048036038101906103429190611010565b610f38565b60405161035491906111dd565b60405180910390f35b61037760048036038101906103729190610fe3565b610f5d565b60405161038491906111a0565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e591906111dd565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c9190611285565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610981919061122f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc91906111dd565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb919061122f565b925050819055508160056000828254610bd4919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c3891906111dd565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec2919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f2691906111dd565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600081359050610fb381611413565b92915050565b600081359050610fc88161142a565b92915050565b600081359050610fdd81611441565b92915050565b600060208284031215610ff957610ff86113fd565b5b600061100784828501610fa4565b91505092915050565b60008060408385031215611027576110266113fd565b5b600061103585828601610fa4565b925050602061104685828601610fa4565b9150509250929050565b600080600060608486031215611069576110686113fd565b5b600061107786828701610fa4565b935050602061108886828701610fa4565b925050604061109986828701610fce565b9150509250925092565b600080604083850312156110ba576110b96113fd565b5b60006110c885828601610fa4565b92505060206110d985828601610fce565b9150509250929050565b6000602082840312156110f9576110f86113fd565b5b600061110784828501610fb9565b91505092915050565b611119816112b9565b82525050565b611128816112cb565b82525050565b600061113982611213565b611143818561121e565b935061115381856020860161133a565b61115c81611402565b840191505092915050565b61117081611323565b82525050565b61117f8161132d565b82525050565b600060208201905061119a6000830184611110565b92915050565b60006020820190506111b5600083018461111f565b92915050565b600060208201905081810360008301526111d5818461112e565b905092915050565b60006020820190506111f26000830184611167565b92915050565b600060208201905061120d6000830184611176565b92915050565b600081519050919050565b600082825260208201905092915050565b600061123a82611323565b915061124583611323565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561127a5761127961139f565b5b828201905092915050565b600061129082611323565b915061129b83611323565b9250828210156112ae576112ad61139f565b5b828203905092915050565b60006112c482611303565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561135857808201518184015260208101905061133d565b83811115611367576000848401525b50505050565b6000600282049050600182168061138557607f821691505b60208210811415611399576113986113ce565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b61141c816112b9565b811461142757600080fd5b50565b611433816112d7565b811461143e57600080fd5b50565b61144a81611323565b811461145557600080fd5b5056fea2646970667358221220ce3898ff49c9441acd20afaa397803cf51558d659599f0063d9e51b92755610664736f6c63430008070033 \ No newline at end of file diff --git a/python/giftable_erc20_token/data/GiftableToken.json b/python/giftable_erc20_token/data/GiftableToken.json index 4f132e7..7741ab8 100644 --- a/python/giftable_erc20_token/data/GiftableToken.json +++ b/python/giftable_erc20_token/data/GiftableToken.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/setup.cfg b/python/setup.cfg index 1a58b19..18ebfd3 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.2a3 +version = 0.1.3 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no diff --git a/solidity/GiftableToken.bin b/solidity/GiftableToken.bin index 3ef9964..f0bd9b9 100644 --- a/solidity/GiftableToken.bin +++ b/solidity/GiftableToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620017f0380380620017f0833981810160405281019062000037919062000269565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b8280546200013290620003a5565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000620001eb620001e5846200032c565b62000303565b9050828152602081018484840111156200020a576200020962000474565b5b620002178482856200036f565b509392505050565b600082601f8301126200023757620002366200046f565b5b815162000249848260208601620001d4565b91505092915050565b600081519050620002638162000494565b92915050565b6000806000606084860312156200028557620002846200047e565b5b600084015167ffffffffffffffff811115620002a657620002a562000479565b5b620002b4868287016200021f565b935050602084015167ffffffffffffffff811115620002d857620002d762000479565b5b620002e6868287016200021f565b9250506040620002f98682870162000252565b9150509250925092565b60006200030f62000322565b90506200031d8282620003db565b919050565b6000604051905090565b600067ffffffffffffffff8211156200034a576200034962000440565b5b620003558262000483565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200038f57808201518184015260208101905062000372565b838111156200039f576000848401525b50505050565b60006002820490506001821680620003be57607f821691505b60208210811415620003d557620003d462000411565b5b50919050565b620003e68262000483565b810181811067ffffffffffffffff8211171562000408576200040762000440565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200049f8162000362565b8114620004ab57600080fd5b50565b61133280620004be6000396000f3fe608060405234801561001057600080fd5b50600436106100ec576000357c010000000000000000000000000000000000000000000000000000000090048063313ce567116100a957806395d89b411161008357806395d89b411461026b578063983b2d5614610289578063a9059cbb146102b9578063dd62ed3e146102e9576100ec565b8063313ce567146101ed578063449a52f81461020b57806370a082311461023b576100ec565b806301ffc9a7146100f157806306fdde0314610121578063095ea7b31461013f57806318160ddd1461016f57806323b872dd1461018d5780633092afd5146101bd575b600080fd5b61010b60048036038101906101069190610fb1565b610319565b6040516101189190611044565b60405180910390f35b61012961041e565b604051610136919061105f565b60405180910390f35b61015960048036038101906101549190610f71565b6104ac565b6040516101669190611044565b60405180910390f35b610177610630565b6040516101849190611081565b60405180910390f35b6101a760048036038101906101a29190610f1e565b610636565b6040516101b49190611044565b60405180910390f35b6101d760048036038101906101d29190610eb1565b610948565b6040516101e49190611044565b60405180910390f35b6101f5610a3a565b604051610202919061109c565b60405180910390f35b61022560048036038101906102209190610f71565b610a4d565b6040516102329190611044565b60405180910390f35b61025560048036038101906102509190610eb1565b610b83565b6040516102629190611081565b60405180910390f35b610273610b9b565b604051610280919061105f565b60405180910390f35b6102a3600480360381019061029e9190610eb1565b610c29565b6040516102b09190611044565b60405180910390f35b6102d360048036038101906102ce9190610f71565b610ce4565b6040516102e09190611044565b60405180910390f35b61030360048036038101906102fe9190610ede565b610e4d565b6040516103109190611081565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561036e5760019050610419565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103c15760019050610419565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104145760019050610419565b600090505b919050565b6002805461042b90611211565b80601f016020809104026020016040519081016040528092919081815260200182805461045790611211565b80156104a45780601f10610479576101008083540402835291602001916104a4565b820191906000526020600020905b81548152906001019060200180831161048757829003601f168201915b505050505081565b600080821115610540576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461053f57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061e9190611081565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156106c157600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561070d57600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107959190611129565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108649190611129565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108ba91906110d3565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109359190611081565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109d057508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109d957600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610aa557600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610af491906110d3565b925050819055508160056000828254610b0d91906110d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610b719190611081565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60038054610ba890611211565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd490611211565b8015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8457600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d3257600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d819190611129565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dd791906110d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e3b9190611081565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600081359050610e81816112b7565b92915050565b600081359050610e96816112ce565b92915050565b600081359050610eab816112e5565b92915050565b600060208284031215610ec757610ec66112a1565b5b6000610ed584828501610e72565b91505092915050565b60008060408385031215610ef557610ef46112a1565b5b6000610f0385828601610e72565b9250506020610f1485828601610e72565b9150509250929050565b600080600060608486031215610f3757610f366112a1565b5b6000610f4586828701610e72565b9350506020610f5686828701610e72565b9250506040610f6786828701610e9c565b9150509250925092565b60008060408385031215610f8857610f876112a1565b5b6000610f9685828601610e72565b9250506020610fa785828601610e9c565b9150509250929050565b600060208284031215610fc757610fc66112a1565b5b6000610fd584828501610e87565b91505092915050565b610fe78161116f565b82525050565b6000610ff8826110b7565b61100281856110c2565b93506110128185602086016111de565b61101b816112a6565b840191505092915050565b61102f816111c7565b82525050565b61103e816111d1565b82525050565b60006020820190506110596000830184610fde565b92915050565b600060208201905081810360008301526110798184610fed565b905092915050565b60006020820190506110966000830184611026565b92915050565b60006020820190506110b16000830184611035565b92915050565b600081519050919050565b600082825260208201905092915050565b60006110de826111c7565b91506110e9836111c7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561111e5761111d611243565b5b828201905092915050565b6000611134826111c7565b915061113f836111c7565b92508282101561115257611151611243565b5b828203905092915050565b6000611168826111a7565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156111fc5780820151818401526020810190506111e1565b8381111561120b576000848401525b50505050565b6000600282049050600182168061122957607f821691505b6020821081141561123d5761123c611272565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b6112c08161115d565b81146112cb57600080fd5b50565b6112d78161117b565b81146112e257600080fd5b50565b6112ee816111c7565b81146112f957600080fd5b5056fea264697066735822122025d7f4c78e8965d75a35f7520bb91ec41a9cb560b63fecde62a8939d87c3affb64736f6c63430008060033 \ No newline at end of file +60806040523480156200001157600080fd5b506040516200194c3803806200194c833981810160405281019062000037919062000269565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b8280546200013290620003a5565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000620001eb620001e5846200032c565b62000303565b9050828152602081018484840111156200020a576200020962000474565b5b620002178482856200036f565b509392505050565b600082601f8301126200023757620002366200046f565b5b815162000249848260208601620001d4565b91505092915050565b600081519050620002638162000494565b92915050565b6000806000606084860312156200028557620002846200047e565b5b600084015167ffffffffffffffff811115620002a657620002a562000479565b5b620002b4868287016200021f565b935050602084015167ffffffffffffffff811115620002d857620002d762000479565b5b620002e6868287016200021f565b9250506040620002f98682870162000252565b9150509250925092565b60006200030f62000322565b90506200031d8282620003db565b919050565b6000604051905090565b600067ffffffffffffffff8211156200034a576200034962000440565b5b620003558262000483565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200038f57808201518184015260208101905062000372565b838111156200039f576000848401525b50505050565b60006002820490506001821680620003be57607f821691505b60208210811415620003d557620003d462000411565b5b50919050565b620003e68262000483565b810181811067ffffffffffffffff8211171562000408576200040762000440565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200049f8162000362565b8114620004ab57600080fd5b50565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c91906110e3565b61038d565b60405161013e91906111a0565b60405180910390f35b61014f6104e5565b60405161015c91906111bb565b60405180910390f35b61017f600480360381019061017a91906110a3565b610573565b60405161018c91906111a0565b60405180910390f35b61019d6106f7565b6040516101aa91906111dd565b60405180910390f35b6101cd60048036038101906101c89190611050565b6106fd565b6040516101da91906111a0565b60405180910390f35b6101fd60048036038101906101f89190610fe3565b610a0f565b60405161020a91906111a0565b60405180910390f35b61021b610b01565b60405161022891906111f8565b60405180910390f35b61024b600480360381019061024691906110a3565b610b14565b60405161025891906111a0565b60405180910390f35b61027b60048036038101906102769190610fe3565b610c4a565b60405161028891906111dd565b60405180910390f35b610299610c62565b6040516102a69190611185565b60405180910390f35b6102b7610c86565b6040516102c491906111bb565b60405180910390f35b6102e760048036038101906102e29190610fe3565b610d14565b6040516102f491906111a0565b60405180910390f35b610317600480360381019061031291906110a3565b610dcf565b60405161032491906111a0565b60405180910390f35b61034760048036038101906103429190611010565b610f38565b60405161035491906111dd565b60405180910390f35b61037760048036038101906103729190610fe3565b610f5d565b60405161038491906111a0565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e591906111dd565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c9190611285565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610981919061122f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc91906111dd565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb919061122f565b925050819055508160056000828254610bd4919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c3891906111dd565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec2919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f2691906111dd565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600081359050610fb381611413565b92915050565b600081359050610fc88161142a565b92915050565b600081359050610fdd81611441565b92915050565b600060208284031215610ff957610ff86113fd565b5b600061100784828501610fa4565b91505092915050565b60008060408385031215611027576110266113fd565b5b600061103585828601610fa4565b925050602061104685828601610fa4565b9150509250929050565b600080600060608486031215611069576110686113fd565b5b600061107786828701610fa4565b935050602061108886828701610fa4565b925050604061109986828701610fce565b9150509250925092565b600080604083850312156110ba576110b96113fd565b5b60006110c885828601610fa4565b92505060206110d985828601610fce565b9150509250929050565b6000602082840312156110f9576110f86113fd565b5b600061110784828501610fb9565b91505092915050565b611119816112b9565b82525050565b611128816112cb565b82525050565b600061113982611213565b611143818561121e565b935061115381856020860161133a565b61115c81611402565b840191505092915050565b61117081611323565b82525050565b61117f8161132d565b82525050565b600060208201905061119a6000830184611110565b92915050565b60006020820190506111b5600083018461111f565b92915050565b600060208201905081810360008301526111d5818461112e565b905092915050565b60006020820190506111f26000830184611167565b92915050565b600060208201905061120d6000830184611176565b92915050565b600081519050919050565b600082825260208201905092915050565b600061123a82611323565b915061124583611323565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561127a5761127961139f565b5b828201905092915050565b600061129082611323565b915061129b83611323565b9250828210156112ae576112ad61139f565b5b828203905092915050565b60006112c482611303565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561135857808201518184015260208101905061133d565b83811115611367576000848401525b50505050565b6000600282049050600182168061138557607f821691505b60208210811415611399576113986113ce565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b61141c816112b9565b811461142757600080fd5b50565b611433816112d7565b811461143e57600080fd5b50565b61144a81611323565b811461145557600080fd5b5056fea2646970667358221220ce3898ff49c9441acd20afaa397803cf51558d659599f0063d9e51b92755610664736f6c63430008070033 \ No newline at end of file diff --git a/solidity/GiftableToken.json b/solidity/GiftableToken.json index 4f132e7..7741ab8 100644 --- a/solidity/GiftableToken.json +++ b/solidity/GiftableToken.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/solidity/GiftableToken.sol b/solidity/GiftableToken.sol index e1f8629..24bcb59 100644 --- a/solidity/GiftableToken.sol +++ b/solidity/GiftableToken.sol @@ -1,10 +1,11 @@ pragma solidity >0.6.11; // SPDX-License-Identifier: GPL-3.0-or-later +// File-Version: 2 contract GiftableToken { - address owner; + address public owner; mapping(address => bool) minters; // Implements ERC20 @@ -90,6 +91,11 @@ contract GiftableToken { return true; } + // Implements EIP173 + function transferOwnership(address _newOwner) public returns (bool) { + owner = _newOwner; + } + // Implements EIP165 function supportsInterface(bytes4 _sum) public returns (bool) { if (_sum == 0xc6bb4b70) { // ERC20 @@ -101,6 +107,9 @@ contract GiftableToken { if (_sum == 0x01ffc9a7) { // EIP165 return true; } + if (_sum == 0x9493f8b2) { // EIP173 + return true; + } return false; } } From 368a8aab456dcb43b0ddb3e049a35ec91e25ad11 Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 15 Dec 2021 08:52:36 +0300 Subject: [PATCH 05/20] Removes crypto-dev-signer from imports. --- python/eth_erc20/erc20.py | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/python/eth_erc20/erc20.py b/python/eth_erc20/erc20.py index 00725c4..8e3cde8 100644 --- a/python/eth_erc20/erc20.py +++ b/python/eth_erc20/erc20.py @@ -2,31 +2,23 @@ import logging # external imports -import sha3 -from hexathon import ( - add_0x, - strip_0x, - ) -from crypto_dev_signer.eth.transaction import EIP155Transaction - -# external imports -from chainlib.hash import ( - keccak256_hex_to_hex, - keccak256_string_to_hex, - ) from chainlib.eth.constant import ZERO_ADDRESS -from chainlib.eth.tx import ( - TxFactory, - TxFormat, - ) -from chainlib.jsonrpc import JSONRPCRequest from chainlib.eth.contract import ( - ABIContractEncoder, - ABIContractDecoder, - ABIContractType, - abi_decode_single, - ) + ABIContractEncoder, + ABIContractDecoder, + ABIContractType, + abi_decode_single, +) from chainlib.eth.error import RequestMismatchException +from chainlib.eth.tx import ( + TxFactory, + TxFormat, +) +from chainlib.jsonrpc import JSONRPCRequest +from hexathon import ( + add_0x, + strip_0x, +) logg = logging.getLogger() From 3572b1357b8a2aae055eb3c828db5589f4bf7763 Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 15 Dec 2021 08:52:54 +0300 Subject: [PATCH 06/20] Bumps patch version. --- python/setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/setup.cfg b/python/setup.cfg index 18ebfd3..2c52ec5 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.3 +version = 0.1.3a1 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no From b3caf1183f2cbe69f133c571de5af5a046a62268 Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 15 Dec 2021 09:20:05 +0300 Subject: [PATCH 07/20] Bumps deps versions. --- python/requirements.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/python/requirements.txt b/python/requirements.txt index b2de75f..68ad4fa 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,4 +1,3 @@ confini>=0.3.6rc3,<0.5.0 -crypto-dev-signer>=0.4.15a1,<=0.4.15 -chainlib-eth>=0.0.9a9,<=0.1.0 -potaahto~=0.0.1a2 +chainlib-eth ==0.0.14 +potaahto==0.1.0 From 65edefbf1217c3d5836575e3b79a1ead4c62ff2b Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 15 Dec 2021 09:20:22 +0300 Subject: [PATCH 08/20] Bumps lib patch version. --- python/setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/setup.cfg b/python/setup.cfg index 2c52ec5..8e1e8f8 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.3a1 +version = 0.1.3a2 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no From 54d1fee0a6541e8ccf58177ac6c68095e9574b93 Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 15 Dec 2021 09:26:48 +0300 Subject: [PATCH 09/20] Bumps confini version for parity. --- python/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/requirements.txt b/python/requirements.txt index 68ad4fa..6b78e19 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,3 +1,3 @@ -confini>=0.3.6rc3,<0.5.0 +confini~=0.5.2 chainlib-eth ==0.0.14 potaahto==0.1.0 From 349e25577c1502938906b4228cdf2fe0e823dc9f Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 15 Dec 2021 09:27:03 +0300 Subject: [PATCH 10/20] Bump lib patch version. --- python/setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/setup.cfg b/python/setup.cfg index 8e1e8f8..0de8fd4 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.3a2 +version = 0.1.3a3 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no From cc9267fcc3b94d37ecb20c3158458caf07642685 Mon Sep 17 00:00:00 2001 From: philip Date: Sat, 18 Dec 2021 14:26:00 +0300 Subject: [PATCH 11/20] Bump lib version. --- python/requirements.txt | 2 +- python/setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/requirements.txt b/python/requirements.txt index 6b78e19..11facbe 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,3 +1,3 @@ -confini~=0.5.2 +confini==0.5.2 chainlib-eth ==0.0.14 potaahto==0.1.0 diff --git a/python/setup.cfg b/python/setup.cfg index 0de8fd4..fc92939 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.3a3 +version = 0.1.4 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no From df8c30b1d34a3e78cfcdd0abf6698d88f69d2152 Mon Sep 17 00:00:00 2001 From: nolash Date: Tue, 21 Dec 2021 10:26:45 +0000 Subject: [PATCH 12/20] Soften requirements --- python/requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/requirements.txt b/python/requirements.txt index 11facbe..630ed39 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,3 +1,3 @@ -confini==0.5.2 -chainlib-eth ==0.0.14 +confini~=0.5.2 +chainlib-eth~=0.0.14 potaahto==0.1.0 From c7b8ccfa622076789602a37bb6f29841c7cfc4d3 Mon Sep 17 00:00:00 2001 From: nolash Date: Tue, 21 Dec 2021 10:39:34 +0000 Subject: [PATCH 13/20] Bump version --- python/setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/setup.cfg b/python/setup.cfg index fc92939..827e3d4 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.4 +version = 0.1.5 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no From 04cfd96dbb478d21592856c35f8293823403079d Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 22 Jan 2022 11:56:07 +0000 Subject: [PATCH 14/20] Add static token contract --- .../data/GiftableToken.bin | 2 +- python/setup.cfg | 6 +- python/static_token/data/StaticToken.bin | 1 + python/static_token/data/StaticToken.json | 1 + solidity/GiftableToken.bin | 2 +- solidity/Makefile | 6 +- solidity/StaticToken.sol | 76 +++++++++++++++++++ 7 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 python/static_token/data/StaticToken.bin create mode 100644 python/static_token/data/StaticToken.json create mode 100644 solidity/StaticToken.sol diff --git a/python/giftable_erc20_token/data/GiftableToken.bin b/python/giftable_erc20_token/data/GiftableToken.bin index f0bd9b9..5fbdfa4 100644 --- a/python/giftable_erc20_token/data/GiftableToken.bin +++ b/python/giftable_erc20_token/data/GiftableToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200194c3803806200194c833981810160405281019062000037919062000269565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b8280546200013290620003a5565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000620001eb620001e5846200032c565b62000303565b9050828152602081018484840111156200020a576200020962000474565b5b620002178482856200036f565b509392505050565b600082601f8301126200023757620002366200046f565b5b815162000249848260208601620001d4565b91505092915050565b600081519050620002638162000494565b92915050565b6000806000606084860312156200028557620002846200047e565b5b600084015167ffffffffffffffff811115620002a657620002a562000479565b5b620002b4868287016200021f565b935050602084015167ffffffffffffffff811115620002d857620002d762000479565b5b620002e6868287016200021f565b9250506040620002f98682870162000252565b9150509250925092565b60006200030f62000322565b90506200031d8282620003db565b919050565b6000604051905090565b600067ffffffffffffffff8211156200034a576200034962000440565b5b620003558262000483565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200038f57808201518184015260208101905062000372565b838111156200039f576000848401525b50505050565b60006002820490506001821680620003be57607f821691505b60208210811415620003d557620003d462000411565b5b50919050565b620003e68262000483565b810181811067ffffffffffffffff8211171562000408576200040762000440565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200049f8162000362565b8114620004ab57600080fd5b50565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c91906110e3565b61038d565b60405161013e91906111a0565b60405180910390f35b61014f6104e5565b60405161015c91906111bb565b60405180910390f35b61017f600480360381019061017a91906110a3565b610573565b60405161018c91906111a0565b60405180910390f35b61019d6106f7565b6040516101aa91906111dd565b60405180910390f35b6101cd60048036038101906101c89190611050565b6106fd565b6040516101da91906111a0565b60405180910390f35b6101fd60048036038101906101f89190610fe3565b610a0f565b60405161020a91906111a0565b60405180910390f35b61021b610b01565b60405161022891906111f8565b60405180910390f35b61024b600480360381019061024691906110a3565b610b14565b60405161025891906111a0565b60405180910390f35b61027b60048036038101906102769190610fe3565b610c4a565b60405161028891906111dd565b60405180910390f35b610299610c62565b6040516102a69190611185565b60405180910390f35b6102b7610c86565b6040516102c491906111bb565b60405180910390f35b6102e760048036038101906102e29190610fe3565b610d14565b6040516102f491906111a0565b60405180910390f35b610317600480360381019061031291906110a3565b610dcf565b60405161032491906111a0565b60405180910390f35b61034760048036038101906103429190611010565b610f38565b60405161035491906111dd565b60405180910390f35b61037760048036038101906103729190610fe3565b610f5d565b60405161038491906111a0565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e591906111dd565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c9190611285565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610981919061122f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc91906111dd565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb919061122f565b925050819055508160056000828254610bd4919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c3891906111dd565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec2919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f2691906111dd565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600081359050610fb381611413565b92915050565b600081359050610fc88161142a565b92915050565b600081359050610fdd81611441565b92915050565b600060208284031215610ff957610ff86113fd565b5b600061100784828501610fa4565b91505092915050565b60008060408385031215611027576110266113fd565b5b600061103585828601610fa4565b925050602061104685828601610fa4565b9150509250929050565b600080600060608486031215611069576110686113fd565b5b600061107786828701610fa4565b935050602061108886828701610fa4565b925050604061109986828701610fce565b9150509250925092565b600080604083850312156110ba576110b96113fd565b5b60006110c885828601610fa4565b92505060206110d985828601610fce565b9150509250929050565b6000602082840312156110f9576110f86113fd565b5b600061110784828501610fb9565b91505092915050565b611119816112b9565b82525050565b611128816112cb565b82525050565b600061113982611213565b611143818561121e565b935061115381856020860161133a565b61115c81611402565b840191505092915050565b61117081611323565b82525050565b61117f8161132d565b82525050565b600060208201905061119a6000830184611110565b92915050565b60006020820190506111b5600083018461111f565b92915050565b600060208201905081810360008301526111d5818461112e565b905092915050565b60006020820190506111f26000830184611167565b92915050565b600060208201905061120d6000830184611176565b92915050565b600081519050919050565b600082825260208201905092915050565b600061123a82611323565b915061124583611323565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561127a5761127961139f565b5b828201905092915050565b600061129082611323565b915061129b83611323565b9250828210156112ae576112ad61139f565b5b828203905092915050565b60006112c482611303565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561135857808201518184015260208101905061133d565b83811115611367576000848401525b50505050565b6000600282049050600182168061138557607f821691505b60208210811415611399576113986113ce565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b61141c816112b9565b811461142757600080fd5b50565b611433816112d7565b811461143e57600080fd5b50565b61144a81611323565b811461145557600080fd5b5056fea2646970667358221220ce3898ff49c9441acd20afaa397803cf51558d659599f0063d9e51b92755610664736f6c63430008070033 \ No newline at end of file +60806040523480156200001157600080fd5b506040516200194c3803806200194c8339818101604052810190620000379190620003af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b828054620001329062000478565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200023d82620001f2565b810181811067ffffffffffffffff821117156200025f576200025e62000203565b5b80604052505050565b600062000274620001d4565b905062000282828262000232565b919050565b600067ffffffffffffffff821115620002a557620002a462000203565b5b620002b082620001f2565b9050602081019050919050565b60005b83811015620002dd578082015181840152602081019050620002c0565b83811115620002ed576000848401525b50505050565b60006200030a620003048462000287565b62000268565b905082815260208101848484011115620003295762000328620001ed565b5b62000336848285620002bd565b509392505050565b600082601f830112620003565762000355620001e8565b5b815162000368848260208601620002f3565b91505092915050565b600060ff82169050919050565b620003898162000371565b81146200039557600080fd5b50565b600081519050620003a9816200037e565b92915050565b600080600060608486031215620003cb57620003ca620001de565b5b600084015167ffffffffffffffff811115620003ec57620003eb620001e3565b5b620003fa868287016200033e565b935050602084015167ffffffffffffffff8111156200041e576200041d620001e3565b5b6200042c868287016200033e565b92505060406200043f8682870162000398565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049157607f821691505b60208210811415620004a857620004a762000449565b5b50919050565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c9190611001565b61038d565b60405161013e9190611049565b60405180910390f35b61014f6104e5565b60405161015c91906110fd565b60405180910390f35b61017f600480360381019061017a91906111b3565b610573565b60405161018c9190611049565b60405180910390f35b61019d6106f7565b6040516101aa9190611202565b60405180910390f35b6101cd60048036038101906101c8919061121d565b6106fd565b6040516101da9190611049565b60405180910390f35b6101fd60048036038101906101f89190611270565b610a0f565b60405161020a9190611049565b60405180910390f35b61021b610b01565b60405161022891906112b9565b60405180910390f35b61024b600480360381019061024691906111b3565b610b14565b6040516102589190611049565b60405180910390f35b61027b60048036038101906102769190611270565b610c4a565b6040516102889190611202565b60405180910390f35b610299610c62565b6040516102a691906112e3565b60405180910390f35b6102b7610c86565b6040516102c491906110fd565b60405180910390f35b6102e760048036038101906102e29190611270565b610d14565b6040516102f49190611049565b60405180910390f35b610317600480360381019061031291906111b3565b610dcf565b6040516103249190611049565b60405180910390f35b610347600480360381019061034291906112fe565b610f38565b6040516103549190611202565b60405180910390f35b61037760048036038101906103729190611270565b610f5d565b6040516103849190611049565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e59190611202565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c91906113ce565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109819190611402565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc9190611202565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb9190611402565b925050819055508160056000828254610bd49190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c389190611202565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec29190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f269190611202565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fde81610fa9565b8114610fe957600080fd5b50565b600081359050610ffb81610fd5565b92915050565b60006020828403121561101757611016610fa4565b5b600061102584828501610fec565b91505092915050565b60008115159050919050565b6110438161102e565b82525050565b600060208201905061105e600083018461103a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561109e578082015181840152602081019050611083565b838111156110ad576000848401525b50505050565b6000601f19601f8301169050919050565b60006110cf82611064565b6110d9818561106f565b93506110e9818560208601611080565b6110f2816110b3565b840191505092915050565b6000602082019050818103600083015261111781846110c4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061114a8261111f565b9050919050565b61115a8161113f565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b6000819050919050565b6111908161117d565b811461119b57600080fd5b50565b6000813590506111ad81611187565b92915050565b600080604083850312156111ca576111c9610fa4565b5b60006111d885828601611168565b92505060206111e98582860161119e565b9150509250929050565b6111fc8161117d565b82525050565b600060208201905061121760008301846111f3565b92915050565b60008060006060848603121561123657611235610fa4565b5b600061124486828701611168565b935050602061125586828701611168565b92505060406112668682870161119e565b9150509250925092565b60006020828403121561128657611285610fa4565b5b600061129484828501611168565b91505092915050565b600060ff82169050919050565b6112b38161129d565b82525050565b60006020820190506112ce60008301846112aa565b92915050565b6112dd8161113f565b82525050565b60006020820190506112f860008301846112d4565b92915050565b6000806040838503121561131557611314610fa4565b5b600061132385828601611168565b925050602061133485828601611168565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061138557607f821691505b602082108114156113995761139861133e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113d98261117d565b91506113e48361117d565b9250828210156113f7576113f661139f565b5b828203905092915050565b600061140d8261117d565b91506114188361117d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561144d5761144c61139f565b5b82820190509291505056fea26469706673582212201d1f81f5f55b8b47abb964fadf5b1920ad49d753d4c3da588cb8dfa939de298564736f6c634300080b0033 \ No newline at end of file diff --git a/python/setup.cfg b/python/setup.cfg index 827e3d4..52bb1c1 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.5 +version = 0.1.7 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no @@ -30,11 +30,14 @@ packages = eth_erc20 eth_erc20.data eth_erc20.runnable + static_token.data [options.package_data] * = data/GiftableToken.json data/GiftableToken.bin + data/StaticToken.json + data/StaticToken.bin data/ERC20.json [options.entry_points] @@ -44,3 +47,4 @@ console_scripts = giftable-token-minter = giftable_erc20_token.runnable.minter:main erc20-transfer = eth_erc20.runnable.transfer:main erc20-balance = eth_erc20.runnable.balance:main + erc20-info = eth_erc20.runnable.info:main diff --git a/python/static_token/data/StaticToken.bin b/python/static_token/data/StaticToken.bin new file mode 100644 index 0000000..de565e1 --- /dev/null +++ b/python/static_token/data/StaticToken.bin @@ -0,0 +1 @@ +60806040523480156200001157600080fd5b506040516200146038038062001460833981810160405281019062000037919062000400565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600290805190602001906200008f9291906200013a565b508260039080519060200190620000a89291906200013a565b5081600460006101000a81548160ff021916908360ff1602179055508060058190555080600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000515565b8280546200014890620004df565b90600052602060002090601f0160209004810192826200016c5760008555620001b8565b82601f106200018757805160ff1916838001178555620001b8565b82800160010185558215620001b8579182015b82811115620001b75782518255916020019190600101906200019a565b5b509050620001c79190620001cb565b5090565b5b80821115620001e6576000816000905550600101620001cc565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002538262000208565b810181811067ffffffffffffffff8211171562000275576200027462000219565b5b80604052505050565b60006200028a620001ea565b905062000298828262000248565b919050565b600067ffffffffffffffff821115620002bb57620002ba62000219565b5b620002c68262000208565b9050602081019050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000620003206200031a846200029d565b6200027e565b9050828152602081018484840111156200033f576200033e62000203565b5b6200034c848285620002d3565b509392505050565b600082601f8301126200036c576200036b620001fe565b5b81516200037e84826020860162000309565b91505092915050565b600060ff82169050919050565b6200039f8162000387565b8114620003ab57600080fd5b50565b600081519050620003bf8162000394565b92915050565b6000819050919050565b620003da81620003c5565b8114620003e657600080fd5b50565b600081519050620003fa81620003cf565b92915050565b600080600080608085870312156200041d576200041c620001f4565b5b600085015167ffffffffffffffff8111156200043e576200043d620001f9565b5b6200044c8782880162000354565b945050602085015167ffffffffffffffff81111562000470576200046f620001f9565b5b6200047e8782880162000354565b93505060406200049187828801620003ae565b9250506060620004a487828801620003e9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f857607f821691505b602082108114156200050f576200050e620004b0565b5b50919050565b610f3b80620005256000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce5671461018c57806370a08231146101aa57806395d89b41146101da578063a9059cbb146101f8578063dd62ed3e14610228576100bb565b806301ffc9a7146100c057806306fdde03146100f0578063095ea7b31461010e57806318160ddd1461013e57806323b872dd1461015c575b600080fd5b6100da60048036038101906100d59190610ad8565b610258565b6040516100e79190610b20565b60405180910390f35b6100f861030a565b6040516101059190610bd4565b60405180910390f35b61012860048036038101906101239190610c8a565b610398565b6040516101359190610b20565b60405180910390f35b61014661051c565b6040516101539190610cd9565b60405180910390f35b61017660048036038101906101719190610cf4565b610522565b6040516101839190610b20565b60405180910390f35b610194610834565b6040516101a19190610d63565b60405180910390f35b6101c460048036038101906101bf9190610d7e565b610847565b6040516101d19190610cd9565b60405180910390f35b6101e261085f565b6040516101ef9190610bd4565b60405180910390f35b610212600480360381019061020d9190610c8a565b6108ed565b60405161021f9190610b20565b60405180910390f35b610242600480360381019061023d9190610dab565b610a56565b60405161024f9190610cd9565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ad5760019050610305565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103005760019050610305565b600090505b919050565b6002805461031790610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610e1a565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b505050505081565b60008082111561042c576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461042b57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050a9190610cd9565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105ad57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105f957600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106819190610e7b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107509190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a69190610eaf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516108219190610cd9565b60405180910390a4600190509392505050565b600460009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6003805461086c90610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461089890610e1a565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b505050505081565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093b57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098a9190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e09190610eaf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a449190610cd9565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ab581610a80565b8114610ac057600080fd5b50565b600081359050610ad281610aac565b92915050565b600060208284031215610aee57610aed610a7b565b5b6000610afc84828501610ac3565b91505092915050565b60008115159050919050565b610b1a81610b05565b82525050565b6000602082019050610b356000830184610b11565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b75578082015181840152602081019050610b5a565b83811115610b84576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ba682610b3b565b610bb08185610b46565b9350610bc0818560208601610b57565b610bc981610b8a565b840191505092915050565b60006020820190508181036000830152610bee8184610b9b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2182610bf6565b9050919050565b610c3181610c16565b8114610c3c57600080fd5b50565b600081359050610c4e81610c28565b92915050565b6000819050919050565b610c6781610c54565b8114610c7257600080fd5b50565b600081359050610c8481610c5e565b92915050565b60008060408385031215610ca157610ca0610a7b565b5b6000610caf85828601610c3f565b9250506020610cc085828601610c75565b9150509250929050565b610cd381610c54565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b600080600060608486031215610d0d57610d0c610a7b565b5b6000610d1b86828701610c3f565b9350506020610d2c86828701610c3f565b9250506040610d3d86828701610c75565b9150509250925092565b600060ff82169050919050565b610d5d81610d47565b82525050565b6000602082019050610d786000830184610d54565b92915050565b600060208284031215610d9457610d93610a7b565b5b6000610da284828501610c3f565b91505092915050565b60008060408385031215610dc257610dc1610a7b565b5b6000610dd085828601610c3f565b9250506020610de185828601610c3f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3257607f821691505b60208210811415610e4657610e45610deb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e8682610c54565b9150610e9183610c54565b925082821015610ea457610ea3610e4c565b5b828203905092915050565b6000610eba82610c54565b9150610ec583610c54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610efa57610ef9610e4c565b5b82820190509291505056fea2646970667358221220dad499c8bdb28617c90c8400a1d456ed1f82f4a74fe3a294264a68af5b07667564736f6c634300080b0033 \ No newline at end of file diff --git a/python/static_token/data/StaticToken.json b/python/static_token/data/StaticToken.json new file mode 100644 index 0000000..e041a50 --- /dev/null +++ b/python/static_token/data/StaticToken.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/solidity/GiftableToken.bin b/solidity/GiftableToken.bin index f0bd9b9..5fbdfa4 100644 --- a/solidity/GiftableToken.bin +++ b/solidity/GiftableToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200194c3803806200194c833981810160405281019062000037919062000269565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b8280546200013290620003a5565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000620001eb620001e5846200032c565b62000303565b9050828152602081018484840111156200020a576200020962000474565b5b620002178482856200036f565b509392505050565b600082601f8301126200023757620002366200046f565b5b815162000249848260208601620001d4565b91505092915050565b600081519050620002638162000494565b92915050565b6000806000606084860312156200028557620002846200047e565b5b600084015167ffffffffffffffff811115620002a657620002a562000479565b5b620002b4868287016200021f565b935050602084015167ffffffffffffffff811115620002d857620002d762000479565b5b620002e6868287016200021f565b9250506040620002f98682870162000252565b9150509250925092565b60006200030f62000322565b90506200031d8282620003db565b919050565b6000604051905090565b600067ffffffffffffffff8211156200034a576200034962000440565b5b620003558262000483565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200038f57808201518184015260208101905062000372565b838111156200039f576000848401525b50505050565b60006002820490506001821680620003be57607f821691505b60208210811415620003d557620003d462000411565b5b50919050565b620003e68262000483565b810181811067ffffffffffffffff8211171562000408576200040762000440565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200049f8162000362565b8114620004ab57600080fd5b50565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c91906110e3565b61038d565b60405161013e91906111a0565b60405180910390f35b61014f6104e5565b60405161015c91906111bb565b60405180910390f35b61017f600480360381019061017a91906110a3565b610573565b60405161018c91906111a0565b60405180910390f35b61019d6106f7565b6040516101aa91906111dd565b60405180910390f35b6101cd60048036038101906101c89190611050565b6106fd565b6040516101da91906111a0565b60405180910390f35b6101fd60048036038101906101f89190610fe3565b610a0f565b60405161020a91906111a0565b60405180910390f35b61021b610b01565b60405161022891906111f8565b60405180910390f35b61024b600480360381019061024691906110a3565b610b14565b60405161025891906111a0565b60405180910390f35b61027b60048036038101906102769190610fe3565b610c4a565b60405161028891906111dd565b60405180910390f35b610299610c62565b6040516102a69190611185565b60405180910390f35b6102b7610c86565b6040516102c491906111bb565b60405180910390f35b6102e760048036038101906102e29190610fe3565b610d14565b6040516102f491906111a0565b60405180910390f35b610317600480360381019061031291906110a3565b610dcf565b60405161032491906111a0565b60405180910390f35b61034760048036038101906103429190611010565b610f38565b60405161035491906111dd565b60405180910390f35b61037760048036038101906103729190610fe3565b610f5d565b60405161038491906111a0565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e591906111dd565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c9190611285565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610981919061122f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc91906111dd565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb919061122f565b925050819055508160056000828254610bd4919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c3891906111dd565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190611285565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec2919061122f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f2691906111dd565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600081359050610fb381611413565b92915050565b600081359050610fc88161142a565b92915050565b600081359050610fdd81611441565b92915050565b600060208284031215610ff957610ff86113fd565b5b600061100784828501610fa4565b91505092915050565b60008060408385031215611027576110266113fd565b5b600061103585828601610fa4565b925050602061104685828601610fa4565b9150509250929050565b600080600060608486031215611069576110686113fd565b5b600061107786828701610fa4565b935050602061108886828701610fa4565b925050604061109986828701610fce565b9150509250925092565b600080604083850312156110ba576110b96113fd565b5b60006110c885828601610fa4565b92505060206110d985828601610fce565b9150509250929050565b6000602082840312156110f9576110f86113fd565b5b600061110784828501610fb9565b91505092915050565b611119816112b9565b82525050565b611128816112cb565b82525050565b600061113982611213565b611143818561121e565b935061115381856020860161133a565b61115c81611402565b840191505092915050565b61117081611323565b82525050565b61117f8161132d565b82525050565b600060208201905061119a6000830184611110565b92915050565b60006020820190506111b5600083018461111f565b92915050565b600060208201905081810360008301526111d5818461112e565b905092915050565b60006020820190506111f26000830184611167565b92915050565b600060208201905061120d6000830184611176565b92915050565b600081519050919050565b600082825260208201905092915050565b600061123a82611323565b915061124583611323565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561127a5761127961139f565b5b828201905092915050565b600061129082611323565b915061129b83611323565b9250828210156112ae576112ad61139f565b5b828203905092915050565b60006112c482611303565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561135857808201518184015260208101905061133d565b83811115611367576000848401525b50505050565b6000600282049050600182168061138557607f821691505b60208210811415611399576113986113ce565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b61141c816112b9565b811461142757600080fd5b50565b611433816112d7565b811461143e57600080fd5b50565b61144a81611323565b811461145557600080fd5b5056fea2646970667358221220ce3898ff49c9441acd20afaa397803cf51558d659599f0063d9e51b92755610664736f6c63430008070033 \ No newline at end of file +60806040523480156200001157600080fd5b506040516200194c3803806200194c8339818101604052810190620000379190620003af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b828054620001329062000478565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200023d82620001f2565b810181811067ffffffffffffffff821117156200025f576200025e62000203565b5b80604052505050565b600062000274620001d4565b905062000282828262000232565b919050565b600067ffffffffffffffff821115620002a557620002a462000203565b5b620002b082620001f2565b9050602081019050919050565b60005b83811015620002dd578082015181840152602081019050620002c0565b83811115620002ed576000848401525b50505050565b60006200030a620003048462000287565b62000268565b905082815260208101848484011115620003295762000328620001ed565b5b62000336848285620002bd565b509392505050565b600082601f830112620003565762000355620001e8565b5b815162000368848260208601620002f3565b91505092915050565b600060ff82169050919050565b620003898162000371565b81146200039557600080fd5b50565b600081519050620003a9816200037e565b92915050565b600080600060608486031215620003cb57620003ca620001de565b5b600084015167ffffffffffffffff811115620003ec57620003eb620001e3565b5b620003fa868287016200033e565b935050602084015167ffffffffffffffff8111156200041e576200041d620001e3565b5b6200042c868287016200033e565b92505060406200043f8682870162000398565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049157607f821691505b60208210811415620004a857620004a762000449565b5b50919050565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c9190611001565b61038d565b60405161013e9190611049565b60405180910390f35b61014f6104e5565b60405161015c91906110fd565b60405180910390f35b61017f600480360381019061017a91906111b3565b610573565b60405161018c9190611049565b60405180910390f35b61019d6106f7565b6040516101aa9190611202565b60405180910390f35b6101cd60048036038101906101c8919061121d565b6106fd565b6040516101da9190611049565b60405180910390f35b6101fd60048036038101906101f89190611270565b610a0f565b60405161020a9190611049565b60405180910390f35b61021b610b01565b60405161022891906112b9565b60405180910390f35b61024b600480360381019061024691906111b3565b610b14565b6040516102589190611049565b60405180910390f35b61027b60048036038101906102769190611270565b610c4a565b6040516102889190611202565b60405180910390f35b610299610c62565b6040516102a691906112e3565b60405180910390f35b6102b7610c86565b6040516102c491906110fd565b60405180910390f35b6102e760048036038101906102e29190611270565b610d14565b6040516102f49190611049565b60405180910390f35b610317600480360381019061031291906111b3565b610dcf565b6040516103249190611049565b60405180910390f35b610347600480360381019061034291906112fe565b610f38565b6040516103549190611202565b60405180910390f35b61037760048036038101906103729190611270565b610f5d565b6040516103849190611049565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e59190611202565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c91906113ce565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109819190611402565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc9190611202565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb9190611402565b925050819055508160056000828254610bd49190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c389190611202565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec29190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f269190611202565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fde81610fa9565b8114610fe957600080fd5b50565b600081359050610ffb81610fd5565b92915050565b60006020828403121561101757611016610fa4565b5b600061102584828501610fec565b91505092915050565b60008115159050919050565b6110438161102e565b82525050565b600060208201905061105e600083018461103a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561109e578082015181840152602081019050611083565b838111156110ad576000848401525b50505050565b6000601f19601f8301169050919050565b60006110cf82611064565b6110d9818561106f565b93506110e9818560208601611080565b6110f2816110b3565b840191505092915050565b6000602082019050818103600083015261111781846110c4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061114a8261111f565b9050919050565b61115a8161113f565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b6000819050919050565b6111908161117d565b811461119b57600080fd5b50565b6000813590506111ad81611187565b92915050565b600080604083850312156111ca576111c9610fa4565b5b60006111d885828601611168565b92505060206111e98582860161119e565b9150509250929050565b6111fc8161117d565b82525050565b600060208201905061121760008301846111f3565b92915050565b60008060006060848603121561123657611235610fa4565b5b600061124486828701611168565b935050602061125586828701611168565b92505060406112668682870161119e565b9150509250925092565b60006020828403121561128657611285610fa4565b5b600061129484828501611168565b91505092915050565b600060ff82169050919050565b6112b38161129d565b82525050565b60006020820190506112ce60008301846112aa565b92915050565b6112dd8161113f565b82525050565b60006020820190506112f860008301846112d4565b92915050565b6000806040838503121561131557611314610fa4565b5b600061132385828601611168565b925050602061133485828601611168565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061138557607f821691505b602082108114156113995761139861133e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113d98261117d565b91506113e48361117d565b9250828210156113f7576113f661139f565b5b828203905092915050565b600061140d8261117d565b91506114188361117d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561144d5761144c61139f565b5b82820190509291505056fea26469706673582212201d1f81f5f55b8b47abb964fadf5b1920ad49d753d4c3da588cb8dfa939de298564736f6c634300080b0033 \ No newline at end of file diff --git a/solidity/Makefile b/solidity/Makefile index b191b6c..b0459d9 100644 --- a/solidity/Makefile +++ b/solidity/Makefile @@ -4,7 +4,11 @@ all: $(SOLC) --bin GiftableToken.sol --evm-version byzantium | awk 'NR>3' > GiftableToken.bin truncate -s -1 GiftableToken.bin $(SOLC) --abi GiftableToken.sol --evm-version byzantium | awk 'NR>3' > GiftableToken.json + $(SOLC) --bin StaticToken.sol --evm-version byzantium | awk 'NR>3' > StaticToken.bin + truncate -s -1 StaticToken.bin + $(SOLC) --abi StaticToken.sol --evm-version byzantium | awk 'NR>3' > StaticToken.json install: all - cp -v *{json,bin} ../python/giftable_erc20_token/data/ + cp -v Giftable*{json,bin} ../python/giftable_erc20_token/data/ + cp -v Static*{json,bin} ../python/static_token/data/ diff --git a/solidity/StaticToken.sol b/solidity/StaticToken.sol new file mode 100644 index 0000000..3e9b5d7 --- /dev/null +++ b/solidity/StaticToken.sol @@ -0,0 +1,76 @@ +pragma solidity >0.6.11; + +// SPDX-License-Identifier: GPL-3.0-or-later + +contract StaticToken { + + address owner; + mapping(address => bool) minters; + + // Implements ERC20 + string public name; + // Implements ERC20 + string public symbol; + // Implements ERC20 + uint8 public decimals; + // Implements ERC20 + uint256 public totalSupply; + // Implements ERC20 + mapping (address => uint256) public balanceOf; + // Implements ERC20 + mapping (address => mapping (address => uint256)) public allowance; + + event Transfer(address indexed _from, address indexed _to, uint256 _value); + event TransferFrom(address indexed _from, address indexed _to, address indexed _spender, uint256 _value); + event Approval(address indexed _owner, address indexed _spender, uint256 _value); + + constructor(string memory _name, string memory _symbol, uint8 _decimals, uint256 _supply) public { + owner = msg.sender; + name = _name; + symbol = _symbol; + decimals = _decimals; + totalSupply = _supply; + balanceOf[owner] = _supply; + } + + // Implements ERC20 + function transfer(address _to, uint256 _value) public returns (bool) { + require(balanceOf[msg.sender] >= _value); + balanceOf[msg.sender] -= _value; + balanceOf[_to] += _value; + emit Transfer(msg.sender, _to, _value); + return true; + } + + // Implements ERC20 + function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { + require(allowance[_from][msg.sender] >= _value); + require(balanceOf[_from] >= _value); + allowance[_from][msg.sender] = allowance[_from][msg.sender] - _value; + balanceOf[_from] -= _value; + balanceOf[_to] += _value; + emit TransferFrom(_from, _to, msg.sender, _value); + return true; + } + + // Implements ERC20 + function approve(address _spender, uint256 _value) public returns (bool) { + if (_value > 0) { + require(allowance[msg.sender][_spender] == 0); + } + allowance[msg.sender][_spender] = _value; + emit Approval(msg.sender, _spender, _value); + return true; + } + + // Implements EIP165 + function supportsInterface(bytes4 _sum) public returns (bool) { + if (_sum == 0xc6bb4b70) { // ERC20 + return true; + } + if (_sum == 0x01ffc9a7) { // EIP165 + return true; + } + return false; + } +} From 70972e2bf8cb2b8a33c1ae03419673e36236ea90 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 22 Jan 2022 11:57:14 +0000 Subject: [PATCH 15/20] Add bin, json in solidity dir for statictoken --- solidity/StaticToken.bin | 1 + solidity/StaticToken.json | 1 + 2 files changed, 2 insertions(+) create mode 100644 solidity/StaticToken.bin create mode 100644 solidity/StaticToken.json diff --git a/solidity/StaticToken.bin b/solidity/StaticToken.bin new file mode 100644 index 0000000..de565e1 --- /dev/null +++ b/solidity/StaticToken.bin @@ -0,0 +1 @@ +60806040523480156200001157600080fd5b506040516200146038038062001460833981810160405281019062000037919062000400565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600290805190602001906200008f9291906200013a565b508260039080519060200190620000a89291906200013a565b5081600460006101000a81548160ff021916908360ff1602179055508060058190555080600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000515565b8280546200014890620004df565b90600052602060002090601f0160209004810192826200016c5760008555620001b8565b82601f106200018757805160ff1916838001178555620001b8565b82800160010185558215620001b8579182015b82811115620001b75782518255916020019190600101906200019a565b5b509050620001c79190620001cb565b5090565b5b80821115620001e6576000816000905550600101620001cc565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002538262000208565b810181811067ffffffffffffffff8211171562000275576200027462000219565b5b80604052505050565b60006200028a620001ea565b905062000298828262000248565b919050565b600067ffffffffffffffff821115620002bb57620002ba62000219565b5b620002c68262000208565b9050602081019050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000620003206200031a846200029d565b6200027e565b9050828152602081018484840111156200033f576200033e62000203565b5b6200034c848285620002d3565b509392505050565b600082601f8301126200036c576200036b620001fe565b5b81516200037e84826020860162000309565b91505092915050565b600060ff82169050919050565b6200039f8162000387565b8114620003ab57600080fd5b50565b600081519050620003bf8162000394565b92915050565b6000819050919050565b620003da81620003c5565b8114620003e657600080fd5b50565b600081519050620003fa81620003cf565b92915050565b600080600080608085870312156200041d576200041c620001f4565b5b600085015167ffffffffffffffff8111156200043e576200043d620001f9565b5b6200044c8782880162000354565b945050602085015167ffffffffffffffff81111562000470576200046f620001f9565b5b6200047e8782880162000354565b93505060406200049187828801620003ae565b9250506060620004a487828801620003e9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f857607f821691505b602082108114156200050f576200050e620004b0565b5b50919050565b610f3b80620005256000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce5671461018c57806370a08231146101aa57806395d89b41146101da578063a9059cbb146101f8578063dd62ed3e14610228576100bb565b806301ffc9a7146100c057806306fdde03146100f0578063095ea7b31461010e57806318160ddd1461013e57806323b872dd1461015c575b600080fd5b6100da60048036038101906100d59190610ad8565b610258565b6040516100e79190610b20565b60405180910390f35b6100f861030a565b6040516101059190610bd4565b60405180910390f35b61012860048036038101906101239190610c8a565b610398565b6040516101359190610b20565b60405180910390f35b61014661051c565b6040516101539190610cd9565b60405180910390f35b61017660048036038101906101719190610cf4565b610522565b6040516101839190610b20565b60405180910390f35b610194610834565b6040516101a19190610d63565b60405180910390f35b6101c460048036038101906101bf9190610d7e565b610847565b6040516101d19190610cd9565b60405180910390f35b6101e261085f565b6040516101ef9190610bd4565b60405180910390f35b610212600480360381019061020d9190610c8a565b6108ed565b60405161021f9190610b20565b60405180910390f35b610242600480360381019061023d9190610dab565b610a56565b60405161024f9190610cd9565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ad5760019050610305565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103005760019050610305565b600090505b919050565b6002805461031790610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610e1a565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b505050505081565b60008082111561042c576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461042b57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050a9190610cd9565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105ad57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105f957600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106819190610e7b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107509190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a69190610eaf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516108219190610cd9565b60405180910390a4600190509392505050565b600460009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6003805461086c90610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461089890610e1a565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b505050505081565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093b57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098a9190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e09190610eaf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a449190610cd9565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ab581610a80565b8114610ac057600080fd5b50565b600081359050610ad281610aac565b92915050565b600060208284031215610aee57610aed610a7b565b5b6000610afc84828501610ac3565b91505092915050565b60008115159050919050565b610b1a81610b05565b82525050565b6000602082019050610b356000830184610b11565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b75578082015181840152602081019050610b5a565b83811115610b84576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ba682610b3b565b610bb08185610b46565b9350610bc0818560208601610b57565b610bc981610b8a565b840191505092915050565b60006020820190508181036000830152610bee8184610b9b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2182610bf6565b9050919050565b610c3181610c16565b8114610c3c57600080fd5b50565b600081359050610c4e81610c28565b92915050565b6000819050919050565b610c6781610c54565b8114610c7257600080fd5b50565b600081359050610c8481610c5e565b92915050565b60008060408385031215610ca157610ca0610a7b565b5b6000610caf85828601610c3f565b9250506020610cc085828601610c75565b9150509250929050565b610cd381610c54565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b600080600060608486031215610d0d57610d0c610a7b565b5b6000610d1b86828701610c3f565b9350506020610d2c86828701610c3f565b9250506040610d3d86828701610c75565b9150509250925092565b600060ff82169050919050565b610d5d81610d47565b82525050565b6000602082019050610d786000830184610d54565b92915050565b600060208284031215610d9457610d93610a7b565b5b6000610da284828501610c3f565b91505092915050565b60008060408385031215610dc257610dc1610a7b565b5b6000610dd085828601610c3f565b9250506020610de185828601610c3f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3257607f821691505b60208210811415610e4657610e45610deb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e8682610c54565b9150610e9183610c54565b925082821015610ea457610ea3610e4c565b5b828203905092915050565b6000610eba82610c54565b9150610ec583610c54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610efa57610ef9610e4c565b5b82820190509291505056fea2646970667358221220dad499c8bdb28617c90c8400a1d456ed1f82f4a74fe3a294264a68af5b07667564736f6c634300080b0033 \ No newline at end of file diff --git a/solidity/StaticToken.json b/solidity/StaticToken.json new file mode 100644 index 0000000..e041a50 --- /dev/null +++ b/solidity/StaticToken.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] From e811575c336f51a415f00596f2ca4b75ae7dc5b4 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Tue, 25 Jan 2022 15:36:22 +0000 Subject: [PATCH 16/20] feat: seperate solc container for resuse, add caching, run tests --- .gitlab-ci.yml | 50 ++++++++++++++++++++++++++++++--------------- Dockerfile | 33 ------------------------------ README.md | 25 +++++++++++++++++++++++ python/run_tests.sh | 0 4 files changed, 58 insertions(+), 50 deletions(-) delete mode 100644 Dockerfile create mode 100644 README.md mode change 100644 => 100755 python/run_tests.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e02d361..a014d07 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,25 +2,41 @@ stages: - test - slither-analyzer -test: - image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest - cache: - - key: - files: - - requirements.txt - - test_requirements.txt - paths: - - /root/.cache/pip - script: - - cd python - - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt - - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt - - bash run_tests.sh +variables: + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" +cache: + paths: + - .cache/pip + - venv/ + +before_script: + - python -V # Print out python version for debugging + - pip install virtualenv + - virtualenv venv + - source venv/bin/activate + +test: + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest + script: + # build abi + - 'echo "Running Solc Version: $(solc --version)"' + - cd solidity + - solc --evm-version=byzantium GiftableToken.sol --abi | awk 'NR>3' > GiftableToken.abi.json + # build bin + - solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin && + truncate -s "$((`stat -t -c "%s" GiftableToken.bin`-1))" GiftableToken.bin + # install test dependencies + - cd ../python + - export PYTHONPATH=. + - pip install --extra-index-url https://pip.grassrootseconomics.net + --extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple + -r requirements.txt -r test_requirements.txt + # run tests + - bash run_tests.sh slither-analize: - image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest + allow_failure: true script: - - pip install slither-analyzer - slither solidity/ - diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index d27678e..0000000 --- a/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM ethereum/solc:0.6.12 - -FROM python:3.8.6-alpine - -COPY --from=0 /usr/bin/solc /usr/bin/solc - -RUN apk update &&\ - apk add gcc bash musl-dev libffi-dev openssl-dev autoconf automake build-base \ - libtool pkgconfig python3-dev cargo - -WORKDIR /usr/src - -# Try to keep everything above here re-usable! - -COPY ./solidity/ /usr/src/giftable_erc20_token/solidity/ -COPY ./python/ /usr/src/giftable_erc20_token/python/ - -RUN chmod +x ./python/run_tests.sh - -RUN cd giftable_erc20_token/solidity && \ - solc GiftableToken.sol --abi | awk 'NR>3' > GiftableToken.abi.json - -RUN cd giftable_erc20_token/solidity && \ - solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin && \ - truncate -s "$((`stat -t -c "%s" GiftableToken.bin`-1))" GiftableToken.bin - -RUN cd giftable_erc20_token/python && \ - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 . - -RUN pip install slither-analyzer - -# To deploy: -# giftable-token-deploy --contracts-dir giftable_erc20_token/solidity/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..6afe58d --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# ETH-ERC20 Solidity Contract + + +### solidity + +To generate bytecode and tests install solc 8.x.x and run the solc bits below or execute the following: + +``` +docker run -v `pwd`:/src registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest solc --evm-version=byzantium solidity/GiftableToken.sol --abi +``` + +``` +docker run -v `pwd`:/src registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin +``` + +### python unit tests + +``` +pip install --extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple \ +--extra-index-url https://pip.grassrootseconomics.net \ +-r requirements.txt -r test_requirements.txt + +bash python/run_tests.sh + +``` diff --git a/python/run_tests.sh b/python/run_tests.sh old mode 100644 new mode 100755 From 6da3f2108a4f5efba21311931986536b46b8e4c3 Mon Sep 17 00:00:00 2001 From: Idaapayo Date: Fri, 11 Feb 2022 12:50:54 +0000 Subject: [PATCH 17/20] add strip_0x to fix address tests that fail --- .gitignore | 1 + .gitlab-ci.yml | 29 +++++++++++++++++++++++-- python/.coverage | Bin 0 -> 69632 bytes python/.coveragerc | 7 ++++++ python/giftable_erc20_token/factory.py | 2 +- python/tests/test_erc20_interface.py | 9 ++++---- solidity/GiftableToken.sol | 2 +- 7 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 python/.coverage create mode 100644 python/.coveragerc diff --git a/.gitignore b/.gitignore index 28fbdb6..ee6e50c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ build/ gmon.out *.egg-info .venv/ +.idea \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a014d07..d8c7e89 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,9 @@ stages: - test + - run-coverage - slither-analyzer + variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" @@ -35,8 +37,31 @@ test: # run tests - bash run_tests.sh -slither-analize: +run-coverage: + stage: test + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest + script: + - cd python + - export PYTHONPATH=. + - pip install --extra-index-url https://pip.grassrootseconomics.net + --extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple + -r requirements.txt -r test_requirements.txt + - pip install pytest pytest-cov + - coverage run -m pytest + - coverage html + - coverage report --fail-under=90 + + coverage: '/^TOTAL.+?(\d+\%)$/' + artifacts: + reports: + cobertura: python/htmlcov/index.html + +slither-analyzer: image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest allow_failure: true script: - - slither solidity/ + - cd solidity + - slither GiftableToken.sol + - slither GiftableToken.sol --print human-summary + + diff --git a/python/.coverage b/python/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..51af88f5c0ee3e366a1b98be9e14ef80361f1dec GIT binary patch literal 69632 zcmeI433wDm-o~q@XQryFd#1SqfxvKvfJwOTLy-Hv6p$lKk|7D?Ajt#>r`@B1_kAmh z7osBGqIjdOin@xctFFhYEFSB9?YgVx`&U<0gS)!V`aS!6-}AUN4}{-4eN6Y;)iquJ zdc)k=(<;)b#PXWDs$@FRA2mZ5qoWfEgb;(j&EcGG6XyP-Z+%D?g8J^0S!D;D_Mb1JGRg{{)5GT6ncx{9h~U1MTps_`g)1^H>| z)Y`Oo19p8m299%WTAXcNO;usKCQ(^Y?Vo0K zeMP#WraF;Yn<{BYr%HeF1drmTsTY`cCbpEHb%Z;IH~xt&PC4wh$kjuKBqwe{S1!jXc?Z``Y}(wLE;jKf0XC za(+d{Rt?n^wGFA@;vbbbyya2;X;jx7mEb1GpRkt@QH{=c?1ez0&1iQ>wd;vcs)zs1z2;0A%d zK&`gCp}K_MD)syvN@`Z8>XK!t0=ZOl3;*8@37Sq{GnzHN)6X@Xpa~T94UoC*q9m(* zd+eEhGm=+J{zHD$gw&P%iEdOas!Ap68|qX?@~=8cwZ-9HQr#nR37k$oiDr#y|8u7! z*DLBPfx0A2vRb#suDBz3zr_DWesmK2ox``lKYS7V`-i_OnJ!QK^Re@{;lOhv(X8RE zf9}BfAr$rHKcksBA^(uK5a0bO==Awt<41?g-#L89Q&WxktCN+`o2*J!)WIzaeX#fj zNbnU)ldy8KxTYcPw_h&(=E=W%4j-@B!C|euhqdzj)#3Jr52_!gL?X95Sb3%?s!CRu z%C9N@?JM>QT|U1j`R9nf12#w?W>6qI)T-hwt*Lq&jRVLqBR8|FH0IGnonfEIi~K**v&+N7%uo_ypdk zi7QwvTu^JtM;w+HgQLXG-x2)LFYSPKKs%rv&<nsj|(DqWtRsw?T&r*Ktcy1b^kFjc*}u(G09%Kim? z`xHV7FqOY5S+Wu`P4#?1sy&Ff5}zmW76pW#pKu z$iV0SqwxfCb~}q48s8mX4nn`Q1KI)YfObGTpdHW-Xa}?d+5zo=cHqCxfpO6=a$~=6 zB061OBxa`lpD@onF#>yO`M=#uQBg&8McSXRo*#xC_5Wo%DyvxT|MtB&rlNGs%2ahB z|E~sMCOp{jYy)=u3n$!va>vV)CFz>FMmXs?A=qW!f8bb;ILw(C_SyB9?UPUX*BA1i z(gFU<|8;PjDL6KzR>yR1{jY1}`h>Lu+5zo=c0fCz9ncPF2ebp) z0quZx0HN_=H->-NfD@AG|1kcKP71p%|JQptV*DFf5O(|j!X5qOF#R9L|KT}dH}^lW z*A8e0v;*1!?SOVbJD?rV4rm9o z1KI)Yz^~c?0~;vD=l`+u9fCjlr5(@?Xa}?d+5zo=c0fCz9ncPF2ebp)0qwxA&;i4U znSA~qHTxBwoIWM(fObGTpdHW-Xa}?d+5zo=c0fCz9ncPF2LcE9{J$Rm2X<)C4rm9o z1KI)YfObGTpdHW-Xa}?d+5zpruhM}CoE3Kd#?P&}_~%!7n);-)1KI)YfObGTpdHW- zXa}?d+5zo=c0fDu-|Ij#Z+r;O9y_0K4;=B&f3F?-%(VmB0quZxKs%rv&<j3}#|Mw#M5u0U~#b(6LkG&R8#Fsl`ouu;@=VRwx=T+yo&g0Hr=Qd}DbA@xB zbBeRsX>e9L)13Lv5U0TD=43m~oM`;J_!sf_<8Q`)7k@hbaQyE0&GD<_7stZ?UhnFSXCMPqsJMwe}Kwu07cvZ4b12 z+X=gsO|9>&&#Z&iE7mjC!`7YF4c6t>+182HTC37pX3euEStG1IRyV7yWm|}S#olMH zv*+19b~oF}E@x*kk2SCgwuBwS2C+Qzeb#|FEM$Id{=t0Ce8jxd++kj7o?)I~)|<=C zh2}JKwAs(>ZniZo`UCx(9;Cmg`{~2Kl(MDQDlk`|RnU17=X?NO=#waFV zlMl!nv`aKAYDH1x>&SbNS0nqwZe)6-Hu6E_jmQg;$0PSf zc15;FE{L2GNkukB7DmQI21fECIg#d(Nch|E$KkibFNL29KM=kxd|mjG@EPHTa7B1Y zcy@SvcxX63+&SDjY#QGipBsNNo;4mZ?lN{7R~Y9QCmEBCMx)9|8pj$VjlM=ZBWB>x z*P#zWZ-ib5Js!F@v@5hdbU|oqXw{L;FZ$afm1gaLcHlqaKv3B2gAQOXP;Jmh_+q7g z_$y}kb_OM26Ne&A=paX^2Lrxqam1mp(S+WXYlIE-j$9+$g#IYkFj60&w-lGA(3^^j zccM2GCyUYRikBtP9~2iYL$4`bT7+IzykseQMe*V#==X{jEk-XZK7J8;N%6wt(eD&5 zScqO!JiipZpm^$h^t|HHQ_*h~k9ZnAt9bYb^o-(R!_j`lLx-WK6%QGKo(p&=dP?!& z(dajd2MtC~C@vU;9#@=SfF4tvmyh--?wN-kRowj`dPH%z?&x8~UAv)&6nE*09#q`9 z3wl6tqBFW*ai;{@tGHt)bf4m!j_6*+9eSdB6lZrpcPVa{jqX&O)ehYra1**)ajPtJ zo8lI&(5;HC7HGF(W}#aYM;Y3s*odN=6^9ITlj5cjx>4~5S?CVM2XoLK#ZM1GPb%KI z03DF6Gt`83%GL>ZgB3N+5DuXOO=ySBITS+AHO)oWEAcFP4qd0jGw4}#trGjuGw2#6 zo<{r8)k-{to<`f1coIE@u2SL&^d!1ciO10sXqys`p~uk`O6)_Aq05zc1nonYDe*9R z1YN4cL+D|2i4qT@htS1JJb)fV7b&q9J%BD$;y$z&U7*Ch=stA55_{0S=sYFvL3_}- zO5BESN9QPU7rFcc44bnM&M_?m%ZKaVxqFovy@gbSpYdiCfTabgC3! z`z`1cbwzd^LR%HzxD{&LDwQz ziL22y=mh^`LKt0zuHLNpN_5pG#oN%88x>!Hwrx;+Il5xK;!Dxx>l9ytE^SnNF}h@} z;)~G5YZPCIE?TYl0(4=6;`7i2X~pNF^Xe6!gU+o}d^S3#R`FTr>{W`-L}%3~J_DUu zt@t!_MwQ}I(P@>6PeG@yRJ;|PvO@6|w6#L;3B&?){c`j=Z<3}&7Lz> z(yZBIB+Z<4w4@m`M@zb6#wbbCmyDD&W$y?{lcx-qG->iMNfRdxl{8`E5J`I{43;#0 z`XEVT_YIUZX6yh-M~~?*Y4p+kB#j!~SJJ*weI$(>UnptV{sKuuhviEeGV~}(gNO8% zG-z-yN&5%oNg6n^r=)%db0zid*F#dDzTG7i_UR_6ps=f?{DLl$dgphR)T?(wQeLl4 zl5+DpO6rlDBdL3j4wAZcZ!f89w`@sWy0(+lxl3C~iOyM)Iwjgj>e#8Zq@0eeBpu9Y zDVugSI?zJC*EvaQIOH#9zOp?>glw>(n60?XT z6AnP!qtuK@A~YbjS`_LPqF(@)Na$)2{7)L%$_Rwnk9{VQyO8Y!} zi@n~iu}kdv_EZ>Q_qTKH_O@di)?chYTW?t}TEDUOTDz@ltc$GEtj$)vRc0-+W?IKs zgRS0HC#$7J*x%Ww>|OSIwx2!3?qECEWiZ0dur+KYD`IomL^hlivaT$PS!R>@rTHF= zvVUvtGw(5PGOskxGq;%Q%^I`BoNrDsN5MF|hna20%@F;Den{V>2j~;@K6(qinqEjx zr5ornI){#Oc6`HZ|nen*}lHZ~Vied^6?zgH(d>msc2KDLad-Ma|5vcFb_xSoi{T+RWuM5<-=b<5u_<}$kLhs@81NA3#2%i_IgXmBA+(5mH4&rkH z^$vO$pB<>T(L4C8K>ZQDjn53!o9K`Dj6nSXy@^i`)NAMu__RR1ieAH~2I>{`Dn2Dp zzelg&t$}(O{T^=#)Jy1Pd~%?EhhD-b1?olgJA7iG4xkrtMk#R2#&;@(UO*pWH&D-` z7w`#zdbVjG-mDaC6~lKa1p|ZU@y0;GKml(E)RRra@Oq`1hM_0%I;GHW(0<$)s3*{G z@Y+BMsg6jiyKY9Sy1!@nvAJ+y7p84^r zK;79i1J@|kGy~meuif(L)REKu;|kBgLQ zN}{XqQl-##bTwWQsH@O+yf{!-qFs1Vpe}E!#m5KgGITj!7^q9pWq3iLU{HYP2MUG- z__#p9zyKc`C>R>xd4Yn#0iGME^U(!(PN2?1=i}Ldg5d(56(|@m;F*DfAp@SFR8uWF z8&6jXorSK%(*kvR(`Gz1P^Y2O@svQp-~mq#6bv8mq(H#{0#6JS3?cA@K%I=X;PHVv z37w3`1qucg_?SS!umX<_6bvlz7^RvvBM%>~6mrp7c(fegM>m~|M=9R836E5~VIv-) zc>M-ET=BZ~c$nhGb$F=awT*a);x%jWV8yG~;6aKTR^x$+(+zll;`%i1ueh!r_fuS3 zhx;mCRg3#5u33c(`4=IETxB(KalTrxayvds@rsqWx8jNwxR>Jc3Y@37tQ_}Lyu1wO zDo!oOJrtLwaCgNerMR2o;u73dak3b9QM@dPJ1Z`##+?+;D#9HVPk#t^P&{oqZm)Ri zG@Pw?%2eD=@#HBuNAaY|xUJ%elW>;e2@`P}#p5U7){4iC$E_3}GY+>@JoXseLh+bc zxS8Tn&tXUL$Wb`1c*IB?Q#^bGwiOQ>jxEJQhhe68$WUx59y|n7#e)W8qIlpS4D%>{ z9W**%AdV>RKLCdn_Zx#liVON-tho2P7%A@68#O7;>xF($3{}7H73cOu-zn~qi~g>- zdk^$C#ZV3WRxwlq|Ed_Ofqzj9)xd8QLpAVg#ZV3WN-*>_)s?bRPnnV z(HDxJ>yHh^4~@mm6>ndL6N=BR!379~mK=T_)ubKx4?3W}qi`pfI(a-$9dRf8SfFxn zN4zgk9dHhQG*Inv2mDB&vT=L-aG=`ZZ2VB5+TwQj!9caaZSezvYKhz6`vcVix5Rq` z)f~6L_XVmMZjSE_l!Ke$J%Ng22j3H@7>?t+A^(rZhqfV@?f=C2lk>XsqVu%#h_lDp z?OYG@{pUNU!FaRLS>=>DOPqPmR7eI4b^18DPDiJ;V>?FtZ}HDz-v6!m%kgL9kHz=K zZ;$VcUlqRyX8uo#Z;02&SHzR?1@W2j3GtCI``CEhOHEKXuS#J-Mw6ni)JTI_|` zld*?lcgJ?cu8mz5J2!R;`FUn9|zTnqahE_%kBhu0Mq)x`qFyedc!&Z^@{tg z+pO!Y%ODYOlC{pNu}ZCl)(mT`HOT5^b+q6Mi2V&J76;iY>>2hjyOZ4jnSis|iEJ&a zWXsq*Hi?a3eONcvme~xMUzzWluba=CkC}VSo6W1t^Uba12D8>IGnbfi%!%d*voF*v z+MCVH2>l!V6w(2&(&y+tx`*z9s>Mb0bn4R8bR|?Sj-^xRXgYxA(T=nwrR00^1$mFW z4hexL$X;?QxsF^)&LSt0Mp8{m$O6a+j3tAij?tO4Ar`^WZ=xSX-+@}jv(ZPR_e5`w zZjW9VJuP|y3KiV^z6KxSCk?$g(M-D~)5P2Tb0ry3ALv`bl$eEE$ zWNoA>QXH8dnFbkwL6P2(M5J|ug`2`(g+BWu<{F+6WlZ=}GDo2WNJ;D(LV8!mAD2I>tHxNbf5 zh6-$4N4+5e*EUjbu)sBIsW(XA>NV6GD6nBQ^#%w`H&Cy?!1^@x`U$M7r(R!ywRP0% zBXCtM^$G>ntfF3lz;kO%FQ23Ts7bw}#M>*kQ?Iwc6)UONOJKzc>g5S6ub^H}fo0{? z%N4l1jCwr;rj}E$yTH;E^|}cxDWzUlfyE`%>mo2&OufzmmnEr}5V(CA^*RYGs-|8? zfwPLJmm_fU6zX*lIQ=2&wHG*TI`y&zPMt=*b^@nNrCwWslO|IyOW?#w)N3Pf!bIw| z7C3$a^;!uWH=cSe1s*ewdMyNwJ%)PC1wJ&Edd&omnMFNE;Hc-Q7Z*5k6!l^PM~tMN zEpYe<>RAGZ4W}LxICL2GOo2m&QjZE8JcN2g;Gn_OiwYb#hKOu` z>rcIqz2ZcM{J`4I$4+-r3E_F8x?A4pPn*`?dqV7h4J@cr$L11oA>aG{qBbU1C z1a|L1-9~}kx>I+pz^>h>yGCG_uGC#EuyYscHV8~~rfynbrv!ED1$OL2-8zBqcBF2t zz?=f=t`eBtMBN&Jhq9?#E#J+dZk50+c(+nui!AD{6xh54byoZCgC9o+(+)_XjilM|U;cuFpiv9P(26dDEijZ|6?lOOI7>>2be-q*j z)LkkNZUlFUz~Y_MT`UkxMV4H=L=lCgu2HGT(p?F z#|k`t5q0MYTzEWn=L%e~kh*gO?p#3K*#hU6Qg@cXsq?8jQ{d>S)SV%4$O!6A7dYZ+ z>P`~~ZP%SD5ZbOgMIf|Ycd|feyY3``PYx zov)GAj=G}rHCn;DqVqLcw4$!)d<_fQqv(7MW>MGge6bN_)D?ZNVL&4keXkLMwk7&r zgEvCn_d-t%t<3Lw%@7<{ZiMF)Af{ltJvjO)1=H;=7(xoB+f6WJ6im0PV5mHrZWqCj zP%z!jf+3(_x(UIMPcYq1f+3z@x*Y{WI>B^v1VcE%bUO%!Y=Y^w7Yxw^)6EtP$pq7F zCm4bWrrTC9)hU%p0HWv(m z1k-IM81e|F>j;K8g6YNuLmI(!V}hYVX}Y#x$Re1oB^aUzrpp9F62Wv~3JkpEK?Hcl z;*8O*L)0Y#Z`^9SQL#4ECrvjZ7^;(|8x{<;Nz*k1Lj=KeLxQ0aX}VZ2)FDk535F`9 zxmh5j56n#hA$(wN6bRV^bAv#L9+>L|Lh`^|ClG=MW}`qTF`8=yLVeL(BM^#<=4ydZ zSu`62LRryF3xvplSuYSuh-RHYs2`fO0-<9PiAIHAUv0ur2-*hKuZ8|2oeUQ zm=gpHNYaOmo5(UBHf$tCKCItBmin-6Jz3&I<2tg~hpmlt5r+^Y3&`>QTMgHcg+8Pk z$O0eg(`3F6b@k*pA8PB!u|Cw)l6gK<*O0kBR8^BXK2%nb**>hOB(r>|SV3m`P+mc1 z_)u0(ru&d8Bh!2+O_8ZSl$4SwJ`|Ub$vz~D$s`|^CCNk|ik6WHJ}fOF<9)bhDH-R( zlC|U*ALiUa#`-XO4jJRatl8vfA7;)XqkWh$lZ^7=ju~X657U>B5k5@WONRR}c?uck z!=%Y%s1Fk-ks&@zm`Dcuuy+C(B<8hoLa}>cfzsq_+=)hmc-A3>r-GeAqvT^z>oiNWyzdjQbrV zJ$&ffk97B;PhZl_hr&Ljs}BW*g!hja=NAy(Ibz&9pYWa$<6gZ9?-nu6>qU5t>rQw-h;i3$gm;1%cj-!a4~TK+E`)b~7$;!ZtUSJk?<}LWB6v`{T&WLAb{}R4&x333GeDKK9o&(KZkL42f{l!jI*){@8K|R zlSO#{Z;X0@wqU<9~wU@-YMQ99)WcKpJQ*r$o{d| zJ+T{OSH#YaWgy#M0VDdEv9Ym%v7WK^v3LwauKzvzHTzlnVfzmIdixR>!*90h?3BF# zM)0HTzIHb|%VyU1kmrBbdf9pkM(?|=tE~&Ht=4+0+Dby2f1)+a%C{1bHHflr*+=Xx zc7Q$3_OP4SHg*m>3C8U!*-|!}jbnpZFP6iaF~j`E`~XJnzcn8C2uf#IE z+QJ1)E3pi(w{QWoN-V=GE?mH*63g(K3l}h_#4^0 zGQ9S}1*F+nhF4!e@ZU%>Gray1!aPLCGQ0r8*Md|d%kUBm7Z7S>8D50p0y2#(!^<#S zK%|jncp-)hNHnqxFU4>H54tSFi!oe4o{?pEIR*reGqMb?$Z!GKL6+g=a4sM^$TGYj z&IKd~S*E)b5FBKgZc;#QkY&0`0kJ`r=^_QB23e-F6c8F@nS>OO8DyDGQb1&oWjaa$ zi9wdhkpcpPEYm>>$P2Pednq6;$THbdKw6Mx+DQRnL6&JNL=*hN7t3VHB@h*4nKn{D zQjld@O94SamT4sg!pA=AoJGAZ6FQEyhgbM!hp}5)ky&iJYJCJ0xE0FOG$A9 z{IZr;Dh1Tmm{%eN#QvC9ECriqsko9BUd?}y~$GqdDfJz+mj+Fvxam<@1 z1ytjhH&+U%$1!h?6p->`-fSr#V40r5WOO_2i9eaxFI1(fTUH%SU8*fEcn^!X)$k{$DSQJ)Ja+Wij)`gj@u literal 0 HcmV?d00001 diff --git a/python/.coveragerc b/python/.coveragerc new file mode 100644 index 0000000..1951f90 --- /dev/null +++ b/python/.coveragerc @@ -0,0 +1,7 @@ +[run] +branch = True +[report] +omit = .venv/* + **/runnable/*.py +[html] + diff --git a/python/giftable_erc20_token/factory.py b/python/giftable_erc20_token/factory.py index 3031e5a..54ac868 100644 --- a/python/giftable_erc20_token/factory.py +++ b/python/giftable_erc20_token/factory.py @@ -94,4 +94,4 @@ class GiftableToken(TxFactory): tx = self.template(sender_address, contract_address, use_nonce=True) tx = self.set_code(tx, data) tx = self.finalize(tx, tx_format) - return tx + return tx \ No newline at end of file diff --git a/python/tests/test_erc20_interface.py b/python/tests/test_erc20_interface.py index 4c586d1..d500bfb 100644 --- a/python/tests/test_erc20_interface.py +++ b/python/tests/test_erc20_interface.py @@ -12,6 +12,7 @@ from chainlib.eth.tx import ( receipt, ) from chainlib.eth.address import to_checksum_address +from hexathon import strip_0x # local imports from giftable_erc20_token import GiftableToken @@ -102,7 +103,7 @@ class TestToken(EthTesterCase): o = transaction(tx_hash) r = self.rpc.do(o) data = c.parse_transfer_request(r['data']) - self.assertEqual(data[0], self.accounts[1]) + self.assertEqual(data[0], strip_0x(self.accounts[1])) self.assertEqual(data[1], 1000) @@ -124,7 +125,7 @@ class TestToken(EthTesterCase): o = transaction(tx_hash) r = self.rpc.do(o) data = c.parse_approve_request(r['data']) - self.assertEqual(data[0], self.accounts[1]) + self.assertEqual(data[0], strip_0x(self.accounts[1])) self.assertEqual(data[1], 1000) nonce_oracle = RPCNonceOracle(self.accounts[1], conn=self.conn) @@ -138,8 +139,8 @@ class TestToken(EthTesterCase): o = transaction(tx_hash) r = self.rpc.do(o) data = c.parse_transfer_from_request(r['data']) - self.assertEqual(data[0], self.accounts[0]) - self.assertEqual(data[1], self.accounts[2]) + self.assertEqual(data[0], strip_0x(self.accounts[0])) + self.assertEqual(data[1], strip_0x(self.accounts[2])) self.assertEqual(data[2], 1001) (tx_hash, o) = c.transfer_from(self.address, self.accounts[1], self.accounts[0], self.accounts[2], 1000) diff --git a/solidity/GiftableToken.sol b/solidity/GiftableToken.sol index 24bcb59..49ba75b 100644 --- a/solidity/GiftableToken.sol +++ b/solidity/GiftableToken.sol @@ -1,4 +1,4 @@ -pragma solidity >0.6.11; +pragma solidity >=0.6.11; // SPDX-License-Identifier: GPL-3.0-or-later // File-Version: 2 From 8dbab824456112ec6c435c02ee1e25dc567809b3 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 19 Feb 2022 20:31:12 +0000 Subject: [PATCH 18/20] Reinstate info cli --- python/eth_erc20/runnable/info.py | 81 +++++++++++++++++++++++++++++++ python/setup.cfg | 2 +- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 python/eth_erc20/runnable/info.py diff --git a/python/eth_erc20/runnable/info.py b/python/eth_erc20/runnable/info.py new file mode 100644 index 0000000..7f4955b --- /dev/null +++ b/python/eth_erc20/runnable/info.py @@ -0,0 +1,81 @@ +#!python3 + +"""Token balance query script + +.. moduleauthor:: Louis Holbrook +.. pgp:: 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 + +""" + +# SPDX-License-Identifier: GPL-3.0-or-later + +# standard imports +import sys +import os +import json +import argparse +import logging + +# external imports +from hexathon import ( + add_0x, + strip_0x, + even, + ) +import sha3 + +# external imports +import chainlib.eth.cli +from chainlib.eth.address import to_checksum_address +from chainlib.eth.connection import EthHTTPConnection +from chainlib.eth.gas import ( + OverrideGasOracle, + balance, + ) +from chainlib.chain import ChainSpec + +# local imports +from eth_erc20 import ERC20 + +logging.basicConfig(level=logging.WARNING) +logg = logging.getLogger() + +arg_flags = chainlib.eth.cli.argflag_std_read | chainlib.eth.cli.Flag.EXEC +argparser = chainlib.eth.cli.ArgumentParser(arg_flags) +args = argparser.parse_args() +config = chainlib.eth.cli.Config.from_args(args, arg_flags) + +rpc = chainlib.eth.cli.Rpc() +conn = rpc.connect_by_config(config) + +chain_spec = ChainSpec.from_chain_str(config.get('CHAIN_SPEC')) + +token_address = config.get('_EXEC_ADDRESS') + + +def main(): + g = ERC20(chain_spec=chain_spec, gas_oracle=rpc.get_gas_oracle()) + + name_o = g.name(token_address) + r = conn.do(name_o) + token_name = g.parse_name(r) + print('Name: {}'.format(token_name)) + + symbol_o = g.symbol(token_address) + r = conn.do(symbol_o) + token_symbol = g.parse_symbol(r) + print('Symbol: {}'.format(token_symbol)) + + decimals_o = g.decimals(token_address) + r = conn.do(decimals_o) + decimals = int(strip_0x(r), 16) + print('Decimals: {}'.format(decimals)) + + supply_o = g.total_supply(token_address) + r = conn.do(supply_o) + supply = int(strip_0x(r), 16) + print('Total supply: {}'.format(supply)) + + +if __name__ == '__main__': + main() diff --git a/python/setup.cfg b/python/setup.cfg index 52bb1c1..3a2a4e3 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.7 +version = 0.1.9 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no From 988858e3ae457d3f397a49fff8e00ae311c9c5b3 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 19 Feb 2022 20:41:47 +0000 Subject: [PATCH 19/20] Add specify info item --- python/eth_erc20/runnable/info.py | 61 +++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/python/eth_erc20/runnable/info.py b/python/eth_erc20/runnable/info.py index 7f4955b..11f67b9 100644 --- a/python/eth_erc20/runnable/info.py +++ b/python/eth_erc20/runnable/info.py @@ -42,6 +42,7 @@ logg = logging.getLogger() arg_flags = chainlib.eth.cli.argflag_std_read | chainlib.eth.cli.Flag.EXEC argparser = chainlib.eth.cli.ArgumentParser(arg_flags) +argparser.add_positional('item', required=False) args = argparser.parse_args() config = chainlib.eth.cli.Config.from_args(args, arg_flags) @@ -56,25 +57,53 @@ token_address = config.get('_EXEC_ADDRESS') def main(): g = ERC20(chain_spec=chain_spec, gas_oracle=rpc.get_gas_oracle()) - name_o = g.name(token_address) - r = conn.do(name_o) - token_name = g.parse_name(r) - print('Name: {}'.format(token_name)) + if not args.item or args.item == 'name': + name_o = g.name(token_address) + r = conn.do(name_o) + token_name = g.parse_name(r) + s = '' + if not args.item or not args.raw: + s = 'Name: ' + s += token_name + print(s) + if args.item == 'name': + sys.exit(0) - symbol_o = g.symbol(token_address) - r = conn.do(symbol_o) - token_symbol = g.parse_symbol(r) - print('Symbol: {}'.format(token_symbol)) + if not args.item or args.item == 'symbol': + symbol_o = g.symbol(token_address) + r = conn.do(symbol_o) + token_symbol = g.parse_symbol(r) + s = '' + if not args.item or not args.raw: + s = 'Symbol: ' + s += token_symbol + print(s) + if args.item == 'symbol': + sys.exit(0) - decimals_o = g.decimals(token_address) - r = conn.do(decimals_o) - decimals = int(strip_0x(r), 16) - print('Decimals: {}'.format(decimals)) + if not args.item or args.item == 'decimals': + decimals_o = g.decimals(token_address) + r = conn.do(decimals_o) + decimals = int(strip_0x(r), 16) + s = '' + if not args.item or not args.raw: + s = 'Decimals: ' + s += str(decimals) + print(s) + if args.item == 'decimals': + sys.exit(0) - supply_o = g.total_supply(token_address) - r = conn.do(supply_o) - supply = int(strip_0x(r), 16) - print('Total supply: {}'.format(supply)) + if not args.item or args.item == 'supply': + supply_o = g.total_supply(token_address) + r = conn.do(supply_o) + supply = int(strip_0x(r), 16) + s = '' + if not args.item or not args.raw: + s = 'Supply: ' + s += str(supply) + print(s) + if args.item == 'supply': + sys.exit(0) if __name__ == '__main__': From 90d30880618b4cac34cb3c60dd0260a08b0e6d1d Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 11 Mar 2022 05:55:16 +0000 Subject: [PATCH 20/20] Add transfer ownership protection --- python/CHANGELOG | 10 ++++++---- python/giftable_erc20_token/data/GiftableToken.bin | 2 +- python/setup.cfg | 2 +- python/static_token/data/StaticToken.bin | 2 +- solidity/GiftableToken.bin | 2 +- solidity/GiftableToken.sol | 1 + solidity/StaticToken.bin | 2 +- 7 files changed, 12 insertions(+), 9 deletions(-) diff --git a/python/CHANGELOG b/python/CHANGELOG index 2f1e8d9..52474ef 100644 --- a/python/CHANGELOG +++ b/python/CHANGELOG @@ -1,9 +1,11 @@ -* 0.0.10-pending +* 0.1.10 + - Apply transfer ownership protection in GiftableToken contract +* 0.1.9 + - Add statictoken contract +* 0.0.10 - Upgrade chainlib dependency, providing customizable jsonrpc id - Move to chainlib-eth -* 0.0.9-unreleased -* 0.0.8-unreleased -* 0.0.7-unreleased +* 0.0.7 - Implement keystore signing. - Change makefile to compile contract for Byzantium. - Change mint method name to mintTo diff --git a/python/giftable_erc20_token/data/GiftableToken.bin b/python/giftable_erc20_token/data/GiftableToken.bin index 5fbdfa4..88d51ff 100644 --- a/python/giftable_erc20_token/data/GiftableToken.bin +++ b/python/giftable_erc20_token/data/GiftableToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200194c3803806200194c8339818101604052810190620000379190620003af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b828054620001329062000478565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200023d82620001f2565b810181811067ffffffffffffffff821117156200025f576200025e62000203565b5b80604052505050565b600062000274620001d4565b905062000282828262000232565b919050565b600067ffffffffffffffff821115620002a557620002a462000203565b5b620002b082620001f2565b9050602081019050919050565b60005b83811015620002dd578082015181840152602081019050620002c0565b83811115620002ed576000848401525b50505050565b60006200030a620003048462000287565b62000268565b905082815260208101848484011115620003295762000328620001ed565b5b62000336848285620002bd565b509392505050565b600082601f830112620003565762000355620001e8565b5b815162000368848260208601620002f3565b91505092915050565b600060ff82169050919050565b620003898162000371565b81146200039557600080fd5b50565b600081519050620003a9816200037e565b92915050565b600080600060608486031215620003cb57620003ca620001de565b5b600084015167ffffffffffffffff811115620003ec57620003eb620001e3565b5b620003fa868287016200033e565b935050602084015167ffffffffffffffff8111156200041e576200041d620001e3565b5b6200042c868287016200033e565b92505060406200043f8682870162000398565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049157607f821691505b60208210811415620004a857620004a762000449565b5b50919050565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c9190611001565b61038d565b60405161013e9190611049565b60405180910390f35b61014f6104e5565b60405161015c91906110fd565b60405180910390f35b61017f600480360381019061017a91906111b3565b610573565b60405161018c9190611049565b60405180910390f35b61019d6106f7565b6040516101aa9190611202565b60405180910390f35b6101cd60048036038101906101c8919061121d565b6106fd565b6040516101da9190611049565b60405180910390f35b6101fd60048036038101906101f89190611270565b610a0f565b60405161020a9190611049565b60405180910390f35b61021b610b01565b60405161022891906112b9565b60405180910390f35b61024b600480360381019061024691906111b3565b610b14565b6040516102589190611049565b60405180910390f35b61027b60048036038101906102769190611270565b610c4a565b6040516102889190611202565b60405180910390f35b610299610c62565b6040516102a691906112e3565b60405180910390f35b6102b7610c86565b6040516102c491906110fd565b60405180910390f35b6102e760048036038101906102e29190611270565b610d14565b6040516102f49190611049565b60405180910390f35b610317600480360381019061031291906111b3565b610dcf565b6040516103249190611049565b60405180910390f35b610347600480360381019061034291906112fe565b610f38565b6040516103549190611202565b60405180910390f35b61037760048036038101906103729190611270565b610f5d565b6040516103849190611049565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e59190611202565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c91906113ce565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109819190611402565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc9190611202565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb9190611402565b925050819055508160056000828254610bd49190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c389190611202565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec29190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f269190611202565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fde81610fa9565b8114610fe957600080fd5b50565b600081359050610ffb81610fd5565b92915050565b60006020828403121561101757611016610fa4565b5b600061102584828501610fec565b91505092915050565b60008115159050919050565b6110438161102e565b82525050565b600060208201905061105e600083018461103a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561109e578082015181840152602081019050611083565b838111156110ad576000848401525b50505050565b6000601f19601f8301169050919050565b60006110cf82611064565b6110d9818561106f565b93506110e9818560208601611080565b6110f2816110b3565b840191505092915050565b6000602082019050818103600083015261111781846110c4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061114a8261111f565b9050919050565b61115a8161113f565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b6000819050919050565b6111908161117d565b811461119b57600080fd5b50565b6000813590506111ad81611187565b92915050565b600080604083850312156111ca576111c9610fa4565b5b60006111d885828601611168565b92505060206111e98582860161119e565b9150509250929050565b6111fc8161117d565b82525050565b600060208201905061121760008301846111f3565b92915050565b60008060006060848603121561123657611235610fa4565b5b600061124486828701611168565b935050602061125586828701611168565b92505060406112668682870161119e565b9150509250925092565b60006020828403121561128657611285610fa4565b5b600061129484828501611168565b91505092915050565b600060ff82169050919050565b6112b38161129d565b82525050565b60006020820190506112ce60008301846112aa565b92915050565b6112dd8161113f565b82525050565b60006020820190506112f860008301846112d4565b92915050565b6000806040838503121561131557611314610fa4565b5b600061132385828601611168565b925050602061133485828601611168565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061138557607f821691505b602082108114156113995761139861133e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113d98261117d565b91506113e48361117d565b9250828210156113f7576113f661139f565b5b828203905092915050565b600061140d8261117d565b91506114188361117d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561144d5761144c61139f565b5b82820190509291505056fea26469706673582212201d1f81f5f55b8b47abb964fadf5b1920ad49d753d4c3da588cb8dfa939de298564736f6c634300080b0033 \ No newline at end of file +60806040523480156200001157600080fd5b50604051620019a5380380620019a58339818101604052810190620000379190620003af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b828054620001329062000478565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200023d82620001f2565b810181811067ffffffffffffffff821117156200025f576200025e62000203565b5b80604052505050565b600062000274620001d4565b905062000282828262000232565b919050565b600067ffffffffffffffff821115620002a557620002a462000203565b5b620002b082620001f2565b9050602081019050919050565b60005b83811015620002dd578082015181840152602081019050620002c0565b83811115620002ed576000848401525b50505050565b60006200030a620003048462000287565b62000268565b905082815260208101848484011115620003295762000328620001ed565b5b62000336848285620002bd565b509392505050565b600082601f830112620003565762000355620001e8565b5b815162000368848260208601620002f3565b91505092915050565b600060ff82169050919050565b620003898162000371565b81146200039557600080fd5b50565b600081519050620003a9816200037e565b92915050565b600080600060608486031215620003cb57620003ca620001de565b5b600084015167ffffffffffffffff811115620003ec57620003eb620001e3565b5b620003fa868287016200033e565b935050602084015167ffffffffffffffff8111156200041e576200041d620001e3565b5b6200042c868287016200033e565b92505060406200043f8682870162000398565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049157607f821691505b60208210811415620004a857620004a762000449565b5b50919050565b6114e780620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c919061105a565b61038d565b60405161013e91906110a2565b60405180910390f35b61014f6104e5565b60405161015c9190611156565b60405180910390f35b61017f600480360381019061017a919061120c565b610573565b60405161018c91906110a2565b60405180910390f35b61019d6106f7565b6040516101aa919061125b565b60405180910390f35b6101cd60048036038101906101c89190611276565b6106fd565b6040516101da91906110a2565b60405180910390f35b6101fd60048036038101906101f891906112c9565b610a0f565b60405161020a91906110a2565b60405180910390f35b61021b610b01565b6040516102289190611312565b60405180910390f35b61024b6004803603810190610246919061120c565b610b14565b60405161025891906110a2565b60405180910390f35b61027b600480360381019061027691906112c9565b610c4a565b604051610288919061125b565b60405180910390f35b610299610c62565b6040516102a6919061133c565b60405180910390f35b6102b7610c86565b6040516102c49190611156565b60405180910390f35b6102e760048036038101906102e291906112c9565b610d14565b6040516102f491906110a2565b60405180910390f35b6103176004803603810190610312919061120c565b610dcf565b60405161032491906110a2565b60405180910390f35b61034760048036038101906103429190611357565b610f38565b604051610354919061125b565b60405180910390f35b610377600480360381019061037291906112c9565b610f5d565b60405161038491906110a2565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f2906113c6565b80601f016020809104026020016040519081016040528092919081815260200182805461051e906113c6565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e5919061125b565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c9190611427565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b9190611427565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610981919061145b565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc919061125b565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb919061145b565b925050819055508160056000828254610bd4919061145b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c38919061125b565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c93906113c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf906113c6565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190611427565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec2919061145b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f26919061125b565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fb857600080fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61103781611002565b811461104257600080fd5b50565b6000813590506110548161102e565b92915050565b6000602082840312156110705761106f610ffd565b5b600061107e84828501611045565b91505092915050565b60008115159050919050565b61109c81611087565b82525050565b60006020820190506110b76000830184611093565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156110f75780820151818401526020810190506110dc565b83811115611106576000848401525b50505050565b6000601f19601f8301169050919050565b6000611128826110bd565b61113281856110c8565b93506111428185602086016110d9565b61114b8161110c565b840191505092915050565b60006020820190508181036000830152611170818461111d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111a382611178565b9050919050565b6111b381611198565b81146111be57600080fd5b50565b6000813590506111d0816111aa565b92915050565b6000819050919050565b6111e9816111d6565b81146111f457600080fd5b50565b600081359050611206816111e0565b92915050565b6000806040838503121561122357611222610ffd565b5b6000611231858286016111c1565b9250506020611242858286016111f7565b9150509250929050565b611255816111d6565b82525050565b6000602082019050611270600083018461124c565b92915050565b60008060006060848603121561128f5761128e610ffd565b5b600061129d868287016111c1565b93505060206112ae868287016111c1565b92505060406112bf868287016111f7565b9150509250925092565b6000602082840312156112df576112de610ffd565b5b60006112ed848285016111c1565b91505092915050565b600060ff82169050919050565b61130c816112f6565b82525050565b60006020820190506113276000830184611303565b92915050565b61133681611198565b82525050565b6000602082019050611351600083018461132d565b92915050565b6000806040838503121561136e5761136d610ffd565b5b600061137c858286016111c1565b925050602061138d858286016111c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113de57607f821691505b602082108114156113f2576113f1611397565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611432826111d6565b915061143d836111d6565b9250828210156114505761144f6113f8565b5b828203905092915050565b6000611466826111d6565b9150611471836111d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114a6576114a56113f8565b5b82820190509291505056fea2646970667358221220d3b12e38eb3431e767225c6482e2e6c076d3d745cd02ba17d29e23a8d23df65164736f6c634300080c0033 \ No newline at end of file diff --git a/python/setup.cfg b/python/setup.cfg index 3a2a4e3..f82cc58 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc20 -version = 0.1.9 +version = 0.1.10 description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens. author = Louis Holbrook author_email = dev@holbrook.no diff --git a/python/static_token/data/StaticToken.bin b/python/static_token/data/StaticToken.bin index de565e1..de5762c 100644 --- a/python/static_token/data/StaticToken.bin +++ b/python/static_token/data/StaticToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200146038038062001460833981810160405281019062000037919062000400565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600290805190602001906200008f9291906200013a565b508260039080519060200190620000a89291906200013a565b5081600460006101000a81548160ff021916908360ff1602179055508060058190555080600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000515565b8280546200014890620004df565b90600052602060002090601f0160209004810192826200016c5760008555620001b8565b82601f106200018757805160ff1916838001178555620001b8565b82800160010185558215620001b8579182015b82811115620001b75782518255916020019190600101906200019a565b5b509050620001c79190620001cb565b5090565b5b80821115620001e6576000816000905550600101620001cc565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002538262000208565b810181811067ffffffffffffffff8211171562000275576200027462000219565b5b80604052505050565b60006200028a620001ea565b905062000298828262000248565b919050565b600067ffffffffffffffff821115620002bb57620002ba62000219565b5b620002c68262000208565b9050602081019050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000620003206200031a846200029d565b6200027e565b9050828152602081018484840111156200033f576200033e62000203565b5b6200034c848285620002d3565b509392505050565b600082601f8301126200036c576200036b620001fe565b5b81516200037e84826020860162000309565b91505092915050565b600060ff82169050919050565b6200039f8162000387565b8114620003ab57600080fd5b50565b600081519050620003bf8162000394565b92915050565b6000819050919050565b620003da81620003c5565b8114620003e657600080fd5b50565b600081519050620003fa81620003cf565b92915050565b600080600080608085870312156200041d576200041c620001f4565b5b600085015167ffffffffffffffff8111156200043e576200043d620001f9565b5b6200044c8782880162000354565b945050602085015167ffffffffffffffff81111562000470576200046f620001f9565b5b6200047e8782880162000354565b93505060406200049187828801620003ae565b9250506060620004a487828801620003e9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f857607f821691505b602082108114156200050f576200050e620004b0565b5b50919050565b610f3b80620005256000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce5671461018c57806370a08231146101aa57806395d89b41146101da578063a9059cbb146101f8578063dd62ed3e14610228576100bb565b806301ffc9a7146100c057806306fdde03146100f0578063095ea7b31461010e57806318160ddd1461013e57806323b872dd1461015c575b600080fd5b6100da60048036038101906100d59190610ad8565b610258565b6040516100e79190610b20565b60405180910390f35b6100f861030a565b6040516101059190610bd4565b60405180910390f35b61012860048036038101906101239190610c8a565b610398565b6040516101359190610b20565b60405180910390f35b61014661051c565b6040516101539190610cd9565b60405180910390f35b61017660048036038101906101719190610cf4565b610522565b6040516101839190610b20565b60405180910390f35b610194610834565b6040516101a19190610d63565b60405180910390f35b6101c460048036038101906101bf9190610d7e565b610847565b6040516101d19190610cd9565b60405180910390f35b6101e261085f565b6040516101ef9190610bd4565b60405180910390f35b610212600480360381019061020d9190610c8a565b6108ed565b60405161021f9190610b20565b60405180910390f35b610242600480360381019061023d9190610dab565b610a56565b60405161024f9190610cd9565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ad5760019050610305565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103005760019050610305565b600090505b919050565b6002805461031790610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610e1a565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b505050505081565b60008082111561042c576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461042b57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050a9190610cd9565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105ad57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105f957600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106819190610e7b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107509190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a69190610eaf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516108219190610cd9565b60405180910390a4600190509392505050565b600460009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6003805461086c90610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461089890610e1a565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b505050505081565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093b57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098a9190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e09190610eaf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a449190610cd9565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ab581610a80565b8114610ac057600080fd5b50565b600081359050610ad281610aac565b92915050565b600060208284031215610aee57610aed610a7b565b5b6000610afc84828501610ac3565b91505092915050565b60008115159050919050565b610b1a81610b05565b82525050565b6000602082019050610b356000830184610b11565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b75578082015181840152602081019050610b5a565b83811115610b84576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ba682610b3b565b610bb08185610b46565b9350610bc0818560208601610b57565b610bc981610b8a565b840191505092915050565b60006020820190508181036000830152610bee8184610b9b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2182610bf6565b9050919050565b610c3181610c16565b8114610c3c57600080fd5b50565b600081359050610c4e81610c28565b92915050565b6000819050919050565b610c6781610c54565b8114610c7257600080fd5b50565b600081359050610c8481610c5e565b92915050565b60008060408385031215610ca157610ca0610a7b565b5b6000610caf85828601610c3f565b9250506020610cc085828601610c75565b9150509250929050565b610cd381610c54565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b600080600060608486031215610d0d57610d0c610a7b565b5b6000610d1b86828701610c3f565b9350506020610d2c86828701610c3f565b9250506040610d3d86828701610c75565b9150509250925092565b600060ff82169050919050565b610d5d81610d47565b82525050565b6000602082019050610d786000830184610d54565b92915050565b600060208284031215610d9457610d93610a7b565b5b6000610da284828501610c3f565b91505092915050565b60008060408385031215610dc257610dc1610a7b565b5b6000610dd085828601610c3f565b9250506020610de185828601610c3f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3257607f821691505b60208210811415610e4657610e45610deb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e8682610c54565b9150610e9183610c54565b925082821015610ea457610ea3610e4c565b5b828203905092915050565b6000610eba82610c54565b9150610ec583610c54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610efa57610ef9610e4c565b5b82820190509291505056fea2646970667358221220dad499c8bdb28617c90c8400a1d456ed1f82f4a74fe3a294264a68af5b07667564736f6c634300080b0033 \ No newline at end of file +60806040523480156200001157600080fd5b506040516200146038038062001460833981810160405281019062000037919062000400565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600290805190602001906200008f9291906200013a565b508260039080519060200190620000a89291906200013a565b5081600460006101000a81548160ff021916908360ff1602179055508060058190555080600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000515565b8280546200014890620004df565b90600052602060002090601f0160209004810192826200016c5760008555620001b8565b82601f106200018757805160ff1916838001178555620001b8565b82800160010185558215620001b8579182015b82811115620001b75782518255916020019190600101906200019a565b5b509050620001c79190620001cb565b5090565b5b80821115620001e6576000816000905550600101620001cc565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002538262000208565b810181811067ffffffffffffffff8211171562000275576200027462000219565b5b80604052505050565b60006200028a620001ea565b905062000298828262000248565b919050565b600067ffffffffffffffff821115620002bb57620002ba62000219565b5b620002c68262000208565b9050602081019050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000620003206200031a846200029d565b6200027e565b9050828152602081018484840111156200033f576200033e62000203565b5b6200034c848285620002d3565b509392505050565b600082601f8301126200036c576200036b620001fe565b5b81516200037e84826020860162000309565b91505092915050565b600060ff82169050919050565b6200039f8162000387565b8114620003ab57600080fd5b50565b600081519050620003bf8162000394565b92915050565b6000819050919050565b620003da81620003c5565b8114620003e657600080fd5b50565b600081519050620003fa81620003cf565b92915050565b600080600080608085870312156200041d576200041c620001f4565b5b600085015167ffffffffffffffff8111156200043e576200043d620001f9565b5b6200044c8782880162000354565b945050602085015167ffffffffffffffff81111562000470576200046f620001f9565b5b6200047e8782880162000354565b93505060406200049187828801620003ae565b9250506060620004a487828801620003e9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f857607f821691505b602082108114156200050f576200050e620004b0565b5b50919050565b610f3b80620005256000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce5671461018c57806370a08231146101aa57806395d89b41146101da578063a9059cbb146101f8578063dd62ed3e14610228576100bb565b806301ffc9a7146100c057806306fdde03146100f0578063095ea7b31461010e57806318160ddd1461013e57806323b872dd1461015c575b600080fd5b6100da60048036038101906100d59190610ad8565b610258565b6040516100e79190610b20565b60405180910390f35b6100f861030a565b6040516101059190610bd4565b60405180910390f35b61012860048036038101906101239190610c8a565b610398565b6040516101359190610b20565b60405180910390f35b61014661051c565b6040516101539190610cd9565b60405180910390f35b61017660048036038101906101719190610cf4565b610522565b6040516101839190610b20565b60405180910390f35b610194610834565b6040516101a19190610d63565b60405180910390f35b6101c460048036038101906101bf9190610d7e565b610847565b6040516101d19190610cd9565b60405180910390f35b6101e261085f565b6040516101ef9190610bd4565b60405180910390f35b610212600480360381019061020d9190610c8a565b6108ed565b60405161021f9190610b20565b60405180910390f35b610242600480360381019061023d9190610dab565b610a56565b60405161024f9190610cd9565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ad5760019050610305565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103005760019050610305565b600090505b919050565b6002805461031790610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610e1a565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b505050505081565b60008082111561042c576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461042b57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050a9190610cd9565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105ad57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105f957600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106819190610e7b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107509190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a69190610eaf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516108219190610cd9565b60405180910390a4600190509392505050565b600460009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6003805461086c90610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461089890610e1a565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b505050505081565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093b57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098a9190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e09190610eaf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a449190610cd9565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ab581610a80565b8114610ac057600080fd5b50565b600081359050610ad281610aac565b92915050565b600060208284031215610aee57610aed610a7b565b5b6000610afc84828501610ac3565b91505092915050565b60008115159050919050565b610b1a81610b05565b82525050565b6000602082019050610b356000830184610b11565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b75578082015181840152602081019050610b5a565b83811115610b84576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ba682610b3b565b610bb08185610b46565b9350610bc0818560208601610b57565b610bc981610b8a565b840191505092915050565b60006020820190508181036000830152610bee8184610b9b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2182610bf6565b9050919050565b610c3181610c16565b8114610c3c57600080fd5b50565b600081359050610c4e81610c28565b92915050565b6000819050919050565b610c6781610c54565b8114610c7257600080fd5b50565b600081359050610c8481610c5e565b92915050565b60008060408385031215610ca157610ca0610a7b565b5b6000610caf85828601610c3f565b9250506020610cc085828601610c75565b9150509250929050565b610cd381610c54565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b600080600060608486031215610d0d57610d0c610a7b565b5b6000610d1b86828701610c3f565b9350506020610d2c86828701610c3f565b9250506040610d3d86828701610c75565b9150509250925092565b600060ff82169050919050565b610d5d81610d47565b82525050565b6000602082019050610d786000830184610d54565b92915050565b600060208284031215610d9457610d93610a7b565b5b6000610da284828501610c3f565b91505092915050565b60008060408385031215610dc257610dc1610a7b565b5b6000610dd085828601610c3f565b9250506020610de185828601610c3f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3257607f821691505b60208210811415610e4657610e45610deb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e8682610c54565b9150610e9183610c54565b925082821015610ea457610ea3610e4c565b5b828203905092915050565b6000610eba82610c54565b9150610ec583610c54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610efa57610ef9610e4c565b5b82820190509291505056fea2646970667358221220c88c4984e5e305cc042be913327c8820564d694c458845012e79f902a7bd915364736f6c634300080c0033 \ No newline at end of file diff --git a/solidity/GiftableToken.bin b/solidity/GiftableToken.bin index 5fbdfa4..88d51ff 100644 --- a/solidity/GiftableToken.bin +++ b/solidity/GiftableToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200194c3803806200194c8339818101604052810190620000379190620003af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b828054620001329062000478565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200023d82620001f2565b810181811067ffffffffffffffff821117156200025f576200025e62000203565b5b80604052505050565b600062000274620001d4565b905062000282828262000232565b919050565b600067ffffffffffffffff821115620002a557620002a462000203565b5b620002b082620001f2565b9050602081019050919050565b60005b83811015620002dd578082015181840152602081019050620002c0565b83811115620002ed576000848401525b50505050565b60006200030a620003048462000287565b62000268565b905082815260208101848484011115620003295762000328620001ed565b5b62000336848285620002bd565b509392505050565b600082601f830112620003565762000355620001e8565b5b815162000368848260208601620002f3565b91505092915050565b600060ff82169050919050565b620003898162000371565b81146200039557600080fd5b50565b600081519050620003a9816200037e565b92915050565b600080600060608486031215620003cb57620003ca620001de565b5b600084015167ffffffffffffffff811115620003ec57620003eb620001e3565b5b620003fa868287016200033e565b935050602084015167ffffffffffffffff8111156200041e576200041d620001e3565b5b6200042c868287016200033e565b92505060406200043f8682870162000398565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049157607f821691505b60208210811415620004a857620004a762000449565b5b50919050565b61148e80620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c9190611001565b61038d565b60405161013e9190611049565b60405180910390f35b61014f6104e5565b60405161015c91906110fd565b60405180910390f35b61017f600480360381019061017a91906111b3565b610573565b60405161018c9190611049565b60405180910390f35b61019d6106f7565b6040516101aa9190611202565b60405180910390f35b6101cd60048036038101906101c8919061121d565b6106fd565b6040516101da9190611049565b60405180910390f35b6101fd60048036038101906101f89190611270565b610a0f565b60405161020a9190611049565b60405180910390f35b61021b610b01565b60405161022891906112b9565b60405180910390f35b61024b600480360381019061024691906111b3565b610b14565b6040516102589190611049565b60405180910390f35b61027b60048036038101906102769190611270565b610c4a565b6040516102889190611202565b60405180910390f35b610299610c62565b6040516102a691906112e3565b60405180910390f35b6102b7610c86565b6040516102c491906110fd565b60405180910390f35b6102e760048036038101906102e29190611270565b610d14565b6040516102f49190611049565b60405180910390f35b610317600480360381019061031291906111b3565b610dcf565b6040516103249190611049565b60405180910390f35b610347600480360381019061034291906112fe565b610f38565b6040516103549190611202565b60405180910390f35b61037760048036038101906103729190611270565b610f5d565b6040516103849190611049565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f29061136d565b80601f016020809104026020016040519081016040528092919081815260200182805461051e9061136d565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e59190611202565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c91906113ce565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109819190611402565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc9190611202565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb9190611402565b925050819055508160056000828254610bd49190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c389190611202565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c939061136d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061136d565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c91906113ce565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec29190611402565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f269190611202565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fde81610fa9565b8114610fe957600080fd5b50565b600081359050610ffb81610fd5565b92915050565b60006020828403121561101757611016610fa4565b5b600061102584828501610fec565b91505092915050565b60008115159050919050565b6110438161102e565b82525050565b600060208201905061105e600083018461103a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561109e578082015181840152602081019050611083565b838111156110ad576000848401525b50505050565b6000601f19601f8301169050919050565b60006110cf82611064565b6110d9818561106f565b93506110e9818560208601611080565b6110f2816110b3565b840191505092915050565b6000602082019050818103600083015261111781846110c4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061114a8261111f565b9050919050565b61115a8161113f565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b6000819050919050565b6111908161117d565b811461119b57600080fd5b50565b6000813590506111ad81611187565b92915050565b600080604083850312156111ca576111c9610fa4565b5b60006111d885828601611168565b92505060206111e98582860161119e565b9150509250929050565b6111fc8161117d565b82525050565b600060208201905061121760008301846111f3565b92915050565b60008060006060848603121561123657611235610fa4565b5b600061124486828701611168565b935050602061125586828701611168565b92505060406112668682870161119e565b9150509250925092565b60006020828403121561128657611285610fa4565b5b600061129484828501611168565b91505092915050565b600060ff82169050919050565b6112b38161129d565b82525050565b60006020820190506112ce60008301846112aa565b92915050565b6112dd8161113f565b82525050565b60006020820190506112f860008301846112d4565b92915050565b6000806040838503121561131557611314610fa4565b5b600061132385828601611168565b925050602061133485828601611168565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061138557607f821691505b602082108114156113995761139861133e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113d98261117d565b91506113e48361117d565b9250828210156113f7576113f661139f565b5b828203905092915050565b600061140d8261117d565b91506114188361117d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561144d5761144c61139f565b5b82820190509291505056fea26469706673582212201d1f81f5f55b8b47abb964fadf5b1920ad49d753d4c3da588cb8dfa939de298564736f6c634300080b0033 \ No newline at end of file +60806040523480156200001157600080fd5b50604051620019a5380380620019a58339818101604052810190620000379190620003af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290805190602001906200008f92919062000124565b508160039080519060200190620000a892919062000124565b5080600460006101000a81548160ff021916908360ff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620004ae565b828054620001329062000478565b90600052602060002090601f016020900481019282620001565760008555620001a2565b82601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b5b80821115620001d0576000816000905550600101620001b6565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200023d82620001f2565b810181811067ffffffffffffffff821117156200025f576200025e62000203565b5b80604052505050565b600062000274620001d4565b905062000282828262000232565b919050565b600067ffffffffffffffff821115620002a557620002a462000203565b5b620002b082620001f2565b9050602081019050919050565b60005b83811015620002dd578082015181840152602081019050620002c0565b83811115620002ed576000848401525b50505050565b60006200030a620003048462000287565b62000268565b905082815260208101848484011115620003295762000328620001ed565b5b62000336848285620002bd565b509392505050565b600082601f830112620003565762000355620001e8565b5b815162000368848260208601620002f3565b91505092915050565b600060ff82169050919050565b620003898162000371565b81146200039557600080fd5b50565b600081519050620003a9816200037e565b92915050565b600080600060608486031215620003cb57620003ca620001de565b5b600084015167ffffffffffffffff811115620003ec57620003eb620001e3565b5b620003fa868287016200033e565b935050602084015167ffffffffffffffff8111156200041e576200041d620001e3565b5b6200042c868287016200033e565b92505060406200043f8682870162000398565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049157607f821691505b60208210811415620004a857620004a762000449565b5b50919050565b6114e780620004be6000396000f3fe608060405234801561001057600080fd5b5060043610610112576000357c010000000000000000000000000000000000000000000000000000000090048063449a52f8116100b4578063983b2d5611610083578063983b2d56146102cd578063a9059cbb146102fd578063dd62ed3e1461032d578063f2fde38b1461035d57610112565b8063449a52f81461023157806370a08231146102615780638da5cb5b1461029157806395d89b41146102af57610112565b806318160ddd116100f057806318160ddd1461019557806323b872dd146101b35780633092afd5146101e3578063313ce5671461021357610112565b806301ffc9a71461011757806306fdde0314610147578063095ea7b314610165575b600080fd5b610131600480360381019061012c919061105a565b61038d565b60405161013e91906110a2565b60405180910390f35b61014f6104e5565b60405161015c9190611156565b60405180910390f35b61017f600480360381019061017a919061120c565b610573565b60405161018c91906110a2565b60405180910390f35b61019d6106f7565b6040516101aa919061125b565b60405180910390f35b6101cd60048036038101906101c89190611276565b6106fd565b6040516101da91906110a2565b60405180910390f35b6101fd60048036038101906101f891906112c9565b610a0f565b60405161020a91906110a2565b60405180910390f35b61021b610b01565b6040516102289190611312565b60405180910390f35b61024b6004803603810190610246919061120c565b610b14565b60405161025891906110a2565b60405180910390f35b61027b600480360381019061027691906112c9565b610c4a565b604051610288919061125b565b60405180910390f35b610299610c62565b6040516102a6919061133c565b60405180910390f35b6102b7610c86565b6040516102c49190611156565b60405180910390f35b6102e760048036038101906102e291906112c9565b610d14565b6040516102f491906110a2565b60405180910390f35b6103176004803603810190610312919061120c565b610dcf565b60405161032491906110a2565b60405180910390f35b61034760048036038101906103429190611357565b610f38565b604051610354919061125b565b60405180910390f35b610377600480360381019061037291906112c9565b610f5d565b60405161038491906110a2565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103e257600190506104e0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561043557600190506104e0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561048857600190506104e0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104db57600190506104e0565b600090505b919050565b600280546104f2906113c6565b80601f016020809104026020016040519081016040528092919081815260200182805461051e906113c6565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b505050505081565b600080821115610607576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461060657600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106e5919061125b565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078857600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107d457600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c9190611427565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092b9190611427565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610981919061145b565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516109fc919061125b565b60405180910390a4600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a9757508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610aa057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600460009054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b6c57600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbb919061145b565b925050819055508160056000828254610bd4919061145b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f884604051610c38919061125b565b60405180910390a36001905092915050565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054610c93906113c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf906113c6565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190611427565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec2919061145b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f26919061125b565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fb857600080fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61103781611002565b811461104257600080fd5b50565b6000813590506110548161102e565b92915050565b6000602082840312156110705761106f610ffd565b5b600061107e84828501611045565b91505092915050565b60008115159050919050565b61109c81611087565b82525050565b60006020820190506110b76000830184611093565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156110f75780820151818401526020810190506110dc565b83811115611106576000848401525b50505050565b6000601f19601f8301169050919050565b6000611128826110bd565b61113281856110c8565b93506111428185602086016110d9565b61114b8161110c565b840191505092915050565b60006020820190508181036000830152611170818461111d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111a382611178565b9050919050565b6111b381611198565b81146111be57600080fd5b50565b6000813590506111d0816111aa565b92915050565b6000819050919050565b6111e9816111d6565b81146111f457600080fd5b50565b600081359050611206816111e0565b92915050565b6000806040838503121561122357611222610ffd565b5b6000611231858286016111c1565b9250506020611242858286016111f7565b9150509250929050565b611255816111d6565b82525050565b6000602082019050611270600083018461124c565b92915050565b60008060006060848603121561128f5761128e610ffd565b5b600061129d868287016111c1565b93505060206112ae868287016111c1565b92505060406112bf868287016111f7565b9150509250925092565b6000602082840312156112df576112de610ffd565b5b60006112ed848285016111c1565b91505092915050565b600060ff82169050919050565b61130c816112f6565b82525050565b60006020820190506113276000830184611303565b92915050565b61133681611198565b82525050565b6000602082019050611351600083018461132d565b92915050565b6000806040838503121561136e5761136d610ffd565b5b600061137c858286016111c1565b925050602061138d858286016111c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113de57607f821691505b602082108114156113f2576113f1611397565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611432826111d6565b915061143d836111d6565b9250828210156114505761144f6113f8565b5b828203905092915050565b6000611466826111d6565b9150611471836111d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114a6576114a56113f8565b5b82820190509291505056fea2646970667358221220d3b12e38eb3431e767225c6482e2e6c076d3d745cd02ba17d29e23a8d23df65164736f6c634300080c0033 \ No newline at end of file diff --git a/solidity/GiftableToken.sol b/solidity/GiftableToken.sol index 49ba75b..9a4d884 100644 --- a/solidity/GiftableToken.sol +++ b/solidity/GiftableToken.sol @@ -93,6 +93,7 @@ contract GiftableToken { // Implements EIP173 function transferOwnership(address _newOwner) public returns (bool) { + require(msg.sender == owner); owner = _newOwner; } diff --git a/solidity/StaticToken.bin b/solidity/StaticToken.bin index de565e1..de5762c 100644 --- a/solidity/StaticToken.bin +++ b/solidity/StaticToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200146038038062001460833981810160405281019062000037919062000400565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600290805190602001906200008f9291906200013a565b508260039080519060200190620000a89291906200013a565b5081600460006101000a81548160ff021916908360ff1602179055508060058190555080600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000515565b8280546200014890620004df565b90600052602060002090601f0160209004810192826200016c5760008555620001b8565b82601f106200018757805160ff1916838001178555620001b8565b82800160010185558215620001b8579182015b82811115620001b75782518255916020019190600101906200019a565b5b509050620001c79190620001cb565b5090565b5b80821115620001e6576000816000905550600101620001cc565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002538262000208565b810181811067ffffffffffffffff8211171562000275576200027462000219565b5b80604052505050565b60006200028a620001ea565b905062000298828262000248565b919050565b600067ffffffffffffffff821115620002bb57620002ba62000219565b5b620002c68262000208565b9050602081019050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000620003206200031a846200029d565b6200027e565b9050828152602081018484840111156200033f576200033e62000203565b5b6200034c848285620002d3565b509392505050565b600082601f8301126200036c576200036b620001fe565b5b81516200037e84826020860162000309565b91505092915050565b600060ff82169050919050565b6200039f8162000387565b8114620003ab57600080fd5b50565b600081519050620003bf8162000394565b92915050565b6000819050919050565b620003da81620003c5565b8114620003e657600080fd5b50565b600081519050620003fa81620003cf565b92915050565b600080600080608085870312156200041d576200041c620001f4565b5b600085015167ffffffffffffffff8111156200043e576200043d620001f9565b5b6200044c8782880162000354565b945050602085015167ffffffffffffffff81111562000470576200046f620001f9565b5b6200047e8782880162000354565b93505060406200049187828801620003ae565b9250506060620004a487828801620003e9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f857607f821691505b602082108114156200050f576200050e620004b0565b5b50919050565b610f3b80620005256000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce5671461018c57806370a08231146101aa57806395d89b41146101da578063a9059cbb146101f8578063dd62ed3e14610228576100bb565b806301ffc9a7146100c057806306fdde03146100f0578063095ea7b31461010e57806318160ddd1461013e57806323b872dd1461015c575b600080fd5b6100da60048036038101906100d59190610ad8565b610258565b6040516100e79190610b20565b60405180910390f35b6100f861030a565b6040516101059190610bd4565b60405180910390f35b61012860048036038101906101239190610c8a565b610398565b6040516101359190610b20565b60405180910390f35b61014661051c565b6040516101539190610cd9565b60405180910390f35b61017660048036038101906101719190610cf4565b610522565b6040516101839190610b20565b60405180910390f35b610194610834565b6040516101a19190610d63565b60405180910390f35b6101c460048036038101906101bf9190610d7e565b610847565b6040516101d19190610cd9565b60405180910390f35b6101e261085f565b6040516101ef9190610bd4565b60405180910390f35b610212600480360381019061020d9190610c8a565b6108ed565b60405161021f9190610b20565b60405180910390f35b610242600480360381019061023d9190610dab565b610a56565b60405161024f9190610cd9565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ad5760019050610305565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103005760019050610305565b600090505b919050565b6002805461031790610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610e1a565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b505050505081565b60008082111561042c576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461042b57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050a9190610cd9565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105ad57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105f957600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106819190610e7b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107509190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a69190610eaf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516108219190610cd9565b60405180910390a4600190509392505050565b600460009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6003805461086c90610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461089890610e1a565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b505050505081565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093b57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098a9190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e09190610eaf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a449190610cd9565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ab581610a80565b8114610ac057600080fd5b50565b600081359050610ad281610aac565b92915050565b600060208284031215610aee57610aed610a7b565b5b6000610afc84828501610ac3565b91505092915050565b60008115159050919050565b610b1a81610b05565b82525050565b6000602082019050610b356000830184610b11565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b75578082015181840152602081019050610b5a565b83811115610b84576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ba682610b3b565b610bb08185610b46565b9350610bc0818560208601610b57565b610bc981610b8a565b840191505092915050565b60006020820190508181036000830152610bee8184610b9b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2182610bf6565b9050919050565b610c3181610c16565b8114610c3c57600080fd5b50565b600081359050610c4e81610c28565b92915050565b6000819050919050565b610c6781610c54565b8114610c7257600080fd5b50565b600081359050610c8481610c5e565b92915050565b60008060408385031215610ca157610ca0610a7b565b5b6000610caf85828601610c3f565b9250506020610cc085828601610c75565b9150509250929050565b610cd381610c54565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b600080600060608486031215610d0d57610d0c610a7b565b5b6000610d1b86828701610c3f565b9350506020610d2c86828701610c3f565b9250506040610d3d86828701610c75565b9150509250925092565b600060ff82169050919050565b610d5d81610d47565b82525050565b6000602082019050610d786000830184610d54565b92915050565b600060208284031215610d9457610d93610a7b565b5b6000610da284828501610c3f565b91505092915050565b60008060408385031215610dc257610dc1610a7b565b5b6000610dd085828601610c3f565b9250506020610de185828601610c3f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3257607f821691505b60208210811415610e4657610e45610deb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e8682610c54565b9150610e9183610c54565b925082821015610ea457610ea3610e4c565b5b828203905092915050565b6000610eba82610c54565b9150610ec583610c54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610efa57610ef9610e4c565b5b82820190509291505056fea2646970667358221220dad499c8bdb28617c90c8400a1d456ed1f82f4a74fe3a294264a68af5b07667564736f6c634300080b0033 \ No newline at end of file +60806040523480156200001157600080fd5b506040516200146038038062001460833981810160405281019062000037919062000400565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600290805190602001906200008f9291906200013a565b508260039080519060200190620000a89291906200013a565b5081600460006101000a81548160ff021916908360ff1602179055508060058190555080600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000515565b8280546200014890620004df565b90600052602060002090601f0160209004810192826200016c5760008555620001b8565b82601f106200018757805160ff1916838001178555620001b8565b82800160010185558215620001b8579182015b82811115620001b75782518255916020019190600101906200019a565b5b509050620001c79190620001cb565b5090565b5b80821115620001e6576000816000905550600101620001cc565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002538262000208565b810181811067ffffffffffffffff8211171562000275576200027462000219565b5b80604052505050565b60006200028a620001ea565b905062000298828262000248565b919050565b600067ffffffffffffffff821115620002bb57620002ba62000219565b5b620002c68262000208565b9050602081019050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000620003206200031a846200029d565b6200027e565b9050828152602081018484840111156200033f576200033e62000203565b5b6200034c848285620002d3565b509392505050565b600082601f8301126200036c576200036b620001fe565b5b81516200037e84826020860162000309565b91505092915050565b600060ff82169050919050565b6200039f8162000387565b8114620003ab57600080fd5b50565b600081519050620003bf8162000394565b92915050565b6000819050919050565b620003da81620003c5565b8114620003e657600080fd5b50565b600081519050620003fa81620003cf565b92915050565b600080600080608085870312156200041d576200041c620001f4565b5b600085015167ffffffffffffffff8111156200043e576200043d620001f9565b5b6200044c8782880162000354565b945050602085015167ffffffffffffffff81111562000470576200046f620001f9565b5b6200047e8782880162000354565b93505060406200049187828801620003ae565b9250506060620004a487828801620003e9565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f857607f821691505b602082108114156200050f576200050e620004b0565b5b50919050565b610f3b80620005256000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce5671461018c57806370a08231146101aa57806395d89b41146101da578063a9059cbb146101f8578063dd62ed3e14610228576100bb565b806301ffc9a7146100c057806306fdde03146100f0578063095ea7b31461010e57806318160ddd1461013e57806323b872dd1461015c575b600080fd5b6100da60048036038101906100d59190610ad8565b610258565b6040516100e79190610b20565b60405180910390f35b6100f861030a565b6040516101059190610bd4565b60405180910390f35b61012860048036038101906101239190610c8a565b610398565b6040516101359190610b20565b60405180910390f35b61014661051c565b6040516101539190610cd9565b60405180910390f35b61017660048036038101906101719190610cf4565b610522565b6040516101839190610b20565b60405180910390f35b610194610834565b6040516101a19190610d63565b60405180910390f35b6101c460048036038101906101bf9190610d7e565b610847565b6040516101d19190610cd9565b60405180910390f35b6101e261085f565b6040516101ef9190610bd4565b60405180910390f35b610212600480360381019061020d9190610c8a565b6108ed565b60405161021f9190610b20565b60405180910390f35b610242600480360381019061023d9190610dab565b610a56565b60405161024f9190610cd9565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102ad5760019050610305565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103005760019050610305565b600090505b919050565b6002805461031790610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610e1a565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b505050505081565b60008082111561042c576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461042b57600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161050a9190610cd9565b60405180910390a36001905092915050565b60055481565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105ad57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105f957600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106819190610e7b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107509190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a69190610eaf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f939856040516108219190610cd9565b60405180910390a4600190509392505050565b600460009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6003805461086c90610e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461089890610e1a565b80156108e55780601f106108ba576101008083540402835291602001916108e5565b820191906000526020600020905b8154815290600101906020018083116108c857829003601f168201915b505050505081565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093b57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098a9190610e7b565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e09190610eaf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a449190610cd9565b60405180910390a36001905092915050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ab581610a80565b8114610ac057600080fd5b50565b600081359050610ad281610aac565b92915050565b600060208284031215610aee57610aed610a7b565b5b6000610afc84828501610ac3565b91505092915050565b60008115159050919050565b610b1a81610b05565b82525050565b6000602082019050610b356000830184610b11565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b75578082015181840152602081019050610b5a565b83811115610b84576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ba682610b3b565b610bb08185610b46565b9350610bc0818560208601610b57565b610bc981610b8a565b840191505092915050565b60006020820190508181036000830152610bee8184610b9b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2182610bf6565b9050919050565b610c3181610c16565b8114610c3c57600080fd5b50565b600081359050610c4e81610c28565b92915050565b6000819050919050565b610c6781610c54565b8114610c7257600080fd5b50565b600081359050610c8481610c5e565b92915050565b60008060408385031215610ca157610ca0610a7b565b5b6000610caf85828601610c3f565b9250506020610cc085828601610c75565b9150509250929050565b610cd381610c54565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b600080600060608486031215610d0d57610d0c610a7b565b5b6000610d1b86828701610c3f565b9350506020610d2c86828701610c3f565b9250506040610d3d86828701610c75565b9150509250925092565b600060ff82169050919050565b610d5d81610d47565b82525050565b6000602082019050610d786000830184610d54565b92915050565b600060208284031215610d9457610d93610a7b565b5b6000610da284828501610c3f565b91505092915050565b60008060408385031215610dc257610dc1610a7b565b5b6000610dd085828601610c3f565b9250506020610de185828601610c3f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3257607f821691505b60208210811415610e4657610e45610deb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e8682610c54565b9150610e9183610c54565b925082821015610ea457610ea3610e4c565b5b828203905092915050565b6000610eba82610c54565b9150610ec583610c54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610efa57610ef9610e4c565b5b82820190509291505056fea2646970667358221220c88c4984e5e305cc042be913327c8820564d694c458845012e79f902a7bd915364736f6c634300080c0033 \ No newline at end of file