Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

kittyverse-graphql

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

kittyverse-graphql

  • 0.0.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Kittyverse GraphQL (incl. CryptoKitties Sales GraphQL)

kittyverse-graphql - web client (helpers) for using CryptoKitties (HTTP JSON) GraphQL APIs

  • home :: github.com/cryptocopycats/kittyverse
  • bugs :: github.com/cryptocopycats/kittyverse/issues
  • gem :: rubygems.org/gems/kittyverse-graphql
  • rdoc :: rubydoc.info/gems/kittyverse-graphql

Usage

A lite web client wrapper for the CryptoKitties Sales open graph api powered by the Graph. See thegraph.com/explorer/subgraph/nieldlr/cryptokitties-sales ».

Example - Get the latest kitties sold in auctions:

require 'kittyverse/graphql'

c = Kittyverse::GraphQL::Client.new

data = c.query( <<GRAPHQL )
{
  auctions(first: 10,
           orderBy: endedAt,
           orderDirection: desc,
           where: {state: "sold"})
  {
    state
    soldPrice
    startedAt
    endedAt
    winner
    cryptoKitty {
      id
    }
  }
}
GRAPHQL

resulting in:

{"data"=>
  {"auctions"=>
    [{"cryptoKitty"=>{"id"=>"411361"},
      "endedAt"=>"1617784066",
      "soldPrice"=>"5000000000000000",
      "startedAt"=>"1559543782",
      "state"=>"sold",
      "winner"=>"0x201e269455d823b558ba11a2873779a7ea44b599"},
     {"cryptoKitty"=>{"id"=>"537620"},
      "endedAt"=>"1617783764",
      "soldPrice"=>"6000000000000000",
      "startedAt"=>"1519347485",
      "state"=>"sold",
      "winner"=>"0x776d795de3b4726422fea94f0529a570e05998c2"},
     #...
    ]
  }
}

Let's pretty print the auction data:

def wei_to_eth( wei )
  wei_per_eth = 1_000_000_000_000_000_000   ## wei (10^18)
  Float(wei) / Float(wei_per_eth)
end

def print_sales( recs )
  puts "  price (in eth), price (in wei),  date,  kitty id,  winner\n"
  recs.each do |rec|
      print '%f eth  ' % wei_to_eth( rec['soldPrice'].to_i )
      print '(%d wei)  ' % rec['soldPrice'].to_i
      print  Time.at( rec['endedAt'].to_i ).utc
      print "   "
      print "##{rec['cryptoKitty']['id']}  "
      print rec['winner']
      print "\n"
  end
end

print_sales( data['data']['auctions'] )

resulting in:

price (in eth), price (in wei),        date,                 kitty id,  winner
0.005000 eth  (5000000000000000 wei)   2021-04-07 08:27:46   #411361    0x201e2694...
0.006000 eth  (6000000000000000 wei)   2021-04-07 08:22:44   #537620    0x776d795d...
0.005000 eth  (5000000000000000 wei)   2021-04-07 07:42:39   #1641139   0x776d795d...
0.012539 eth  (12538972095383055 wei)  2021-04-07 07:19:45   #799099    0x48f3d916...
0.012580 eth  (12579516235413496 wei)  2021-04-07 07:17:52   #1302761   0x48f3d916...
0.005000 eth  (5000000000000000 wei)   2021-04-07 06:56:57   #405308    0x131b3957...
0.009900 eth  (9900000000000000 wei)   2021-04-07 03:55:36   #1244187   0xfdf8f7e6...
0.005000 eth  (5000000000000000 wei)   2021-04-07 03:55:25   #1470744   0xde0515ec...
0.005000 eth  (5000000000000000 wei)   2021-04-07 03:36:25   #1815178   0xde0515ec...
0.012586 eth  (12586110096397768 wei)  2021-04-07 03:08:55   #1348108   0x833b59ac...

Or let's query for the all-time high. Example - Get the most expensive kitties sold in auctions:

data = c.query( <<GRAPHQL )
{
  auctions(first: 10,
           orderBy: soldPrice,
           orderDirection: desc,
           where: {state: "sold"})
  {
    state
    soldPrice
    endedAt
    winner
    cryptoKitty {
      id
    }
  }
}
GRAPHQL

resulting in:

{"data"=>
  {"auctions"=>
    [{"cryptoKitty"=>{"id"=>"896775"},
      "endedAt"=>"1536034886",
      "soldPrice"=>"600000000000000000000",
      "state"=>"sold",
      "winner"=>"0x0e7afeee3a623decb71cf367e86191865ede6c5f"},
     {"cryptoKitty"=>{"id"=>"18"},
      "endedAt"=>"1512617298",
      "soldPrice"=>"253336776620370370370",
      "state"=>"sold",
      "winner"=>"0xa6d3fdf423bbc578dd4d41220078475371626b22"},
     #...
     ]
  }
}

Let's pretty print the auction data (again):

print_sales( data['data']['auctions'] )

resulting in:

price (in eth), price (in wei),              date,                 kitty id,  winner
600.000000 eth  (600000000000000000000 wei)  2018-09-04 04:21:26   #896775    0x0e7afeee...
253.336777 eth  (253336776620370370370 wei)  2017-12-07 03:28:18   #18        0xa6d3fdf4...
247.000000 eth  (247000000000000000000 wei)  2017-12-06 19:41:57   #4         0x61a4575d...
246.925530 eth  (246925530478395061729 wei)  2017-12-02 20:32:36   #1         0x79bd5924...
237.522840 eth  (237522839506172839507 wei)  2017-12-08 09:31:03   #21        0x58323a0b...
225.000000 eth  (225000000000000000000 wei)  2017-12-08 09:34:36   #22        0x58323a0b...
222.000000 eth  (222000000000000000000 wei)  2017-12-05 16:45:01   #5         0x69c94767...
190.046825 eth  (190046825396825396825 wei)  2017-12-04 19:45:47   #7         0x2ff1e192...
188.889654 eth  (188889654097222222223 wei)  2017-12-06 07:18:02   #35        0x7ca91be7...
179.073438 eth  (179073437500000000000 wei)  2017-12-06 18:11:42   #87        0xc3003be6...

Or let's query for the aggregated totals. Example - Get the aggregated all-time auction totals:

data = c.query( <<GRAPHQL )
{
  aggregation(id: "1") {
    totalAuctions
    totalAuctionsSold
    totalAuctionsCancelled
    totalUniqueCryptoKittiesAuctioned
    totalUniqueCryptoKittiesSold
    totalEtherRevenue
  }
}
GRAPHQL

resulting in:

{"data"=>
  {"aggregation"=>
    {"totalAuctions"=>"1162357",
     "totalAuctionsCancelled"=>"251887",
     "totalAuctionsSold"=>"724983",
     "totalEtherRevenue"=>"63705844622899779521107",
     "totalUniqueCryptoKittiesAuctioned"=>"807028",
     "totalUniqueCryptoKittiesSold"=>"595308"}}}

And so on and so forth.

New to CryptoKitties?

See the Programming CryptoKitties & Copycats Step-by-Step Booklet / Guide »

Install

Just install the gem:

$ gem install kittyverse-graphql

License

The scripts are dedicated to the public domain. Use it as you please with no restrictions whatsoever.

Questions? Comments?

Post them on the cryptokitties reddit. Thanks.

FAQs

Package last updated on 07 Apr 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc