UNPKG

ethers-meow

Version:

A simple CLI for CryptoKitties using ethers.js.

510 lines (400 loc) 12.6 kB
Ethers-Meow =========== A simple [CryptoKitties](https://www.cryptokitties.co) JavaScript library and command-line tool. This is **HIGHLY** experimental. More documentation coming soon. Installing ---------- ``` /Users/ricmoo> npm install -g ethers-meow ``` ----- Command-Line Interface ====================== ``` Command Lime Interface - meow/0.0.1 Usage: meow lookup [ KITTY_ID ... ] meow status meow init FILENAME meow info ( FILENAME | ADDRESS ) meow transfer KITTY_ID ADDRESS meow check MATRON_ID SIRE_ID meow breed MATRON_ID SIRE_ID meow approve-breed KITTY_ID ADDRESS meow give-birth KITTY_ID meow sale-create KITTY_ID START_PRICE END_PRICE DURATION_HOURS meow sale-bid KITTY_ID meow sale-cancel KITTY_ID meow siring-create KITTY_ID START_PRICE END_PRICE DURATION_HOURS meow siring-bid OTHER_SIRE_ID MY_MATRON meow siring-cancel KITTY_ID meow mix-genes GENES1 GENES2 TARGET_BLOCK Node Options --rpc URL Use the Ethereum node at URL Account Options --account FILENAME Use the JSON wallet Transaction Options --gas-price GWEI Override the gas price --nonce NONCE Override the nonce (.sol only) Options --help Show this help --version Show the version ``` Examples -------- ### General Details (read-only) **Lookup kitties by ID** ``` /Users/ricmoo> meow lookup 20000 27500 Kitty #20000 Birthdate: 2017-12-02 02:17:05 Busy Until: 0 Genes: 0x4212b39ce50b8c3729e90000331c845196c1806a214e6196277b929639ce Matron Id: 19709 Owner: 0x8ba1f109551bD432803012645Ac136ddd64DBA72 Sire Id: 6710 Siring With: 0 URL: https://www.cryptokitties.co/kitty/20000 Kitty #27500 Birthdate: 2017-12-02 02:17:05 Busy Until: 0 Genes: 0x4ad28398a7184667b94f1800031a64435ac31a1039a67118c77bae872dcc Matron Id: 15937 Owner: 0x8ba1f109551bD432803012645Ac136ddd64DBA72 Sire Id: 27359 Siring With: 0 URL: https://www.cryptokitties.co/kitty/27500 ``` **Show contract status** ``` /Users/ricmoo> meow status CryptoKitties Status autoBirthFee: 0.001 ceoAddress: 0xaf1E54B359B0897133F437Fc961DD16F20c045E1 cfoAddress: 0x2041BB7D8b49F0bDE3aa1Fa7Fb506ac6C539394C cooAddress: 0xba52c75764d6F594735dc735Be7F1830CDf58dDf paused: false pregnantKitties: 1779 promoCreatedCount: 3000 secondsPerBlock: 15 symbol: CK totalSupply: 28498 ``` ### Accounts **Create a new JSON wallet** ``` /Users/ricmoo> meow init account.json Creating new Account: account.json Do NOT lose or forget this password. It cannot be reset. New Account Password: ****** Confirm Password: ****** Encrypting Account... (this may take a few seconds) Account successfully created. Keep this file SAFE. If you lose it or forget your password, your CryptoKitties are LOST FOREVER. Your address is: 0x44f1153EA1900Bcb8E0883B8561d51CCd6f48693 ``` **Get account information** ``` /Users/ricmoo> meow info account.json Wallet Status Address:: 0x8b5ebdc77dd2c746b49ED198df2BC1a26aeEF425 Balance: 0.0087824799 Kitties: 2 Nonce (latest): 2 Nonce (pending): 2 URL: https://www.cryptokitties.co/profile/0x8b5ebdc77dd2c746b49ed198df2bc1a26aeef425 ``` ### Transfer ``` /Users/ricmoo> meow transfer 10053 0x8ba1f109551bd432803012645ac136ddd64dba72 --account account.json Sign Transaction: Network: mainnet From: 0x8b5ebdc77dd2c746b49ED198df2BC1a26aeEF425 To: 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d Gas Price: 2.1 Gwei Gas Limit: 1500000 Nonce: undefined Value: 0.0 ether Data: 68 bytes Account Password (mainnet:account.json): ****** Transfer Transaction: 0x780d48482957a3beac372643ae1fde62c91f422c16ac8958450ea6591933cea6 ``` ### Breeding **Check that breeding is allowed** All three fields must be `yes` for breeding to be successful. ``` /Users/ricmoo> meow check 27500 20000 Check Sire Ready: yes Matron Ready: yes Can Breed: yes ``` **Breed two kitties together** ``` /Users/ricmoo> meow breed 13968 10053 --account account.json Sign Transaction: Network: mainnet From: 0x8b5ebdc77dd2c746b49ED198df2BC1a26aeEF425 To: 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d Gas Price: 2.1 Gwei Gas Limit: 125000 Nonce: undefined Value: 0.001 ether Data: 68 bytes Account Password (mainnet:account.json): ****** Breed Transaction: 0x6e397a3d3a054e1241a3e1356cd4c567bedcbaf27457aba48a2a44c8b0aea2f7 ``` **Approve another account to breed with your kitty** ``` /Users/ricmoo> meow approve-siring 13968 0x8ba1f109551bd432803012645ac136ddd64dba72 --account account.json Sign Transaction: Network: mainnet From: 0x8b5ebdc77dd2c746b49ED198df2BC1a26aeEF425 To: 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d Gas Price: 2.1 Gwei Gas Limit: 1500000 Nonce: undefined Value: 0.0 ether Data: 68 bytes Account Password (mainnet:account.json): ****** Approve Transaction: 0xcd8f98a301bec493525255e5c2b3abb19f16508d994b222b0050e44ab991f81c ``` ### Sale Auctions ``` /Users/ricmoo> meow --account account.json sale-create 78047 0.4 0.1 24 Sign Transaction: Network: mainnet From: 0xc6AA736b0bA6175701c625eAFE52F0ceE39a3596 To: 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d Gas Price: 61.1 Gwei Gas Limit: 250000 Nonce: undefined Value: 0.0 ether Data: 132 bytes Account Password (mainnet:account.json): ****** Create Sale Auction Transaction: 0x5018051f1fffc97ba5c95f17b2bd09abc50f915c053f8a459236b96f34f553a3 ``` ``` /Users/ricmoo> meow --account account.json sale-bid 145636 Sign Transaction: Network: mainnet From: 0x8ba1f109551bD432803012645Ac136ddd64DBA72 To: 0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C Gas Price: 40.1 Gwei Gas Limit: 275000 Nonce: undefined Value: 0.029826851851851852 ether Data: 36 bytes Account Password (mainnet:account.json): ****** Bid On Sale Auction Transaction: 0x37f36b88423e1a51688b9a4e8280463fde23720d1d7cb31c216380510db33de6 ``` ``` /Users/ricmoo> meow --account account.json sale-cancel 84216 Sign Transaction: Network: mainnet From: 0x8ba1f109551bD432803012645Ac136ddd64DBA72 To: 0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C Gas Price: 40.1 Gwei Gas Limit: 150000 Nonce: undefined Value: 0.0 ether Data: 36 bytes Account Password (mainnet:account.json): ****** Give Birth Transaction: 0x30724635da06111a9436b5f69c612937961d7da5ce68ff9e989c91d3d4715877 ``` ### Siring Auctions ``` /Users/ricmoo> meow --account account.json siring-create 85293 0.8 0.3 24 Sign Transaction: Network: mainnet From: 0x8ba1f109551bD432803012645Ac136ddd64DBA72 To: 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d Gas Price: 40.1 Gwei Gas Limit: 250000 Nonce: undefined Value: 0.0 ether Data: 132 bytes Account Password (mainnet:account.json): ****** Create Siring Auction Transaction: 0xb78052d65db98b1fd2850cdb49f22892ebbfca4df96d5af4744caf8a8643c8d0 ``` ``` /Users/ricmoo> meow --account account.json siring-bid 175715 8985 Sign Transaction: Network: mainnet From: 0x8ba1f109551bD432803012645Ac136ddd64DBA72 To: 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d Gas Price: 40.1 Gwei Gas Limit: 275000 Nonce: undefined Value: 0.021325694444444444 ether Data: 68 bytes Account Password (mainnet:account.json.json): ****** Bid On Siring Auction Transaction: 0x5f58d197625e8e21881c51ec5451a85142daa9a8db3fb529d73e0af2b5b3f2ab``` ``` ``` /Users/ricmoo> meow --account account.json siring-cancel 85293 Sign Transaction: Network: mainnet From: 0x8ba1f109551bD432803012645Ac136ddd64DBA72 To: 0xC7af99Fe5513eB6710e6D5f44F9989dA40F27F26 Gas Price: 40.1 Gwei Gas Limit: 150000 Nonce: undefined Value: 0.0 ether Data: 36 bytes Account Password (mainnet:account.json.json): ****** ``` ----- API === Setup Manager ------------- **Read-Only Setup** ```javascript var meow = require('ethers-meow'); var ethers = require('ethers'); var provider = ethers.providers.getDefaultProvider(); var manager = new meow.Manager(provider); ``` **Write Setup** ```javascript var meow = require('ethers-meow'); var ethers = require('ethers'); var provider = ethers.providers.getDefaultProvider(); var privateKey = '0x0123456789012345678901234567890123456789012345678901234567890123'; var wallet = new ethers.Wallet(privateKey, provider); var manager = new meow.Manager(wallet) ``` General Details (readonly) -------------------------- **Manager.prototype.getKitty ( kittyId )** ```javascript manager.getKitty(20000).then(function(kitty) { console.log(kitty); }); ``` **Manager.prototype.getStatus ( )** ```javascript manager.getStatus().then(function(status) { console.log(status); }); ``` Transfer -------- ``` var kittyId = 20000; var address = '0x8ba1f109551bD432803012645Ac136ddd64DBA72'; manager.transfer(kittyId, address).then(function(transactionHash) { console.log(transactionHash); }); ``` Breeding -------- **Checking that breeding is viable** ```javascript var matronId = 20000; var sireId = 27500 manager.check(matronId, sireId).then(function(result) { console.log(result); }); ``` **Breed two kitties together** ```javascript var matronId = 20000; var sireId = 27500 manager.breed(matronId, sireId).then(function(transactionHash) { console.log(transactionHash); }); ``` **Approve another account to breed with you kitty** ``` var kittyId = 20000; var address = '0x8ba1f109551bD432803012645Ac136ddd64DBA72'; manager.approveSiring(kittyId, address).then(function(transactionHash) { console.log(transactionHash); }); ``` **Birthing a new kitty** Once a kitty is has baked in the oven long enough, you may call this to birth it. Generally this is called for you by the CryptoKitty birthing service. The first caller to this receives the `autoBirthFee` that was sent during the call to breed. All callers after simply burn gas, and there are many people competing to birth your kitty. ```javascript manager.giveBirth(10000).then(funtion(transactionHash) { console.log(transactionHash); }); ``` Sale Auctions ------------- **Creating a sale auction** ```javascript var kittyId = 20000; var startPrice = ethers.utils.parseEther('1.0'); var endPrice = ethers.utils.parseEther('0.5'); var durationSeconds = (60 * 60 * 24); manager.createSaleAuction(kittyId, startPrice, endPrice, durationSeconds).then(funtion(transactionHash) { console.log(transactionHash); }); ``` **Bidding on a sale auction** ```javascript var kittyId = 20000; manager.bidOnSaleAuction(kittyId).then(funtion(transactionHash) { console.log(transactionHash); }); ``` **Cancelling a sale auction** ```javascript var kittyId = 20000; manager.cancelSaleAuction(kittyId).then(funtion(transactionHash) { console.log(transactionHash); }); ``` Siring Auctions --------------- **Creating a siring auction** ```javascript var kittyId = 20000; var startPrice = ethers.utils.parseEther('1.0'); var endPrice = ethers.utils.parseEther('0.5'); var durationSeconds = (60 * 60 * 24); manager.createSiringAuction(kittyId, startPrice, endPrice, durationSeconds).then(funtion(transactionHash) { console.log(transactionHash); }); ``` **Bidding on a siring auction** ```javascript var otherSireKittyId = 10001; var myMatronKittyId = 20000; manager.bidOnSiringAuction(otherSireKittyId, myMatronKittyId).then(funtion(transactionHash) { console.log(transactionHash); }); ``` **Cancelling a siring auction** ```javascript var kittyId = 20000; manager.cancelSiringAuction(kittyId).then(funtion(transactionHash) { console.log(transactionHash); }); ``` ----- License ------- MIT License. ----- Donations --------- I build these tools in my spare time for fun, but if you would like to buy me a coffee or send a kitty my way, it is always appreciated. **Ethereum Address:** `0x216174A07797bab4DcFf2e2D673BC159237561D2`