Code Monkey home page Code Monkey logo

go-wanchain's Introduction

WANChain Go

Branch Tests
master   CircleCI
develop CircleCI

Building the source

Building gwan requires both a Go (version 1.7 or later) and a C compiler.

If build release version,Docker is required

You can install them using your favourite package manager. Once the dependencies are installed, run

make gwan

or, to build the full suite of utilities:

make all

or, to build the release version

make release	

Running gwan

Full node on the main wanchain network

By far the most common scenario is people wanting to simply interact with the wanchain network: create accounts; transfer funds; deploy and interact with contracts. For this particular use-case the user doesn't care about years-old historical data, so we can fast-sync quickly to the current state of the network. To do so:

$ gwan console

This command will:

  • Start gwan in fast sync mode (default, can be changed with the --syncmode flag), causing it to download more data in exchange for avoiding processing the entire history of the wanchain network, which is very CPU intensive. This too is optional and if you leave it out you can always attach to an already running gwan instance with gwan attach.

Full node on the wanchain test network

Transitioning towards developers, if you'd like to play around with creating wanchain contracts, you almost certainly would like to do that without any real money involved until you get the hang of the entire system. In other words, instead of attaching to the main network, you want to join the test network with your node, which is fully equivalent to the main network, but with play-Ether only.

$ gwan --testnet console

The console subcommand have the exact same meaning as above and they are equally useful on the testnet too. Please see above for their explanations if you've skipped to here.

Specifying the --testnet flag however will reconfigure your gwan instance a bit:

  • Instead of using the default data directory (~/.wanchain on Linux for example), gwan will nest itself one level deeper into a testnet subfolder (~/.wanchain/testnet on Linux). Note, on OSX and Linux this also means that attaching to a running testnet node requires the use of a custom endpoint since gwan attach will try to attach to a production node endpoint by default. E.g. gwan attach <datadir>/testnet/gwan.ipc. Windows users are not affected by this.
  • Instead of connecting the main wanchain network, the client will connect to the test network, which uses different P2P bootnodes, different network IDs and genesis states.

Note: Although there are some internal protective measures to prevent transactions from crossing over between the main network and test network, you should make sure to always use separate accounts for play-money and real-money. Unless you manually move accounts, gwan will by default correctly separate the two networks and will not make any accounts available between them.

Programatically interfacing gwan nodes

As a developer, sooner rather than later you'll want to start interacting with gwan and the wanchain network via your own programs and not manually through the console. To aid this, gwan has built in support for a JSON-RPC based APIs 。These can be exposed via HTTP, WebSockets and IPC (unix sockets on unix based platforms, and named pipes on Windows).

The IPC interface is enabled by default and exposes all the APIs supported by gwan, whereas the HTTP and WS interfaces need to manually be enabled and only expose a subset of APIs due to security reasons. These can be turned on/off and configured as you'd expect.

HTTP based JSON-RPC API options:

  • --rpc Enable the HTTP-RPC server
  • --rpcaddr HTTP-RPC server listening interface (default: "localhost")
  • --rpcport HTTP-RPC server listening port (default: 8545)
  • --rpcapi API's offered over the HTTP-RPC interface (default: "eth,net,web3")
  • --rpccorsdomain Comma separated list of domains from which to accept cross origin requests (browser enforced)
  • --ws Enable the WS-RPC server
  • --wsaddr WS-RPC server listening interface (default: "localhost")
  • --wsport WS-RPC server listening port (default: 8546)
  • --wsapi API's offered over the WS-RPC interface (default: "eth,net,web3")
  • --wsorigins Origins from which to accept websockets requests
  • --ipcdisable Disable the IPC-RPC server
  • --ipcapi API's offered over the IPC-RPC interface (default: "admin,debug,eth,miner,net,personal,shh,txpool,web3")
  • --ipcpath Filename for IPC socket/pipe within the datadir (explicit paths escape it)

You'll need to use your own programming environments' capabilities (libraries, tools, etc) to connect via HTTP, WS or IPC to a gwan node configured with the above flags and you'll need to speak JSON-RPC on all transports. You can reuse the same connection for multiple requests!

Note: Please understand the security implications of opening up an HTTP/WS based transport before doing so! Hackers on the internet are actively trying to subvert wanchain nodes with exposed APIs! Further, all browser tabs can access locally running webservers, so malicious webpages could try to subvert locally available APIs!

Creating the rendezvous point

With all nodes that you want to run initialized to the desired genesis state, you'll need to start a bootstrap node that others can use to find each other in your network and/or over the internet. The clean way is to configure and run a dedicated bootnode:

$ bootnode --genkey=boot.key
$ bootnode --nodekey=boot.key

With the bootnode online, it will display an [enode URL] that other nodes can use to connect to it and exchange peer information. Make sure to replace the displayed IP address information (most probably [::]) with your externally accessible IP to get the actual enode URL.

Note: You could also use a full fledged gwan node as a bootnode, but it's the less recommended way.

Starting up your member nodes

With the bootnode operational and externally reachable (you can try telnet <ip> <port> to ensure it's indeed reachable), start every subsequent gwan node pointed to the bootnode for peer discovery via the --bootnodes flag. It will probably also be desirable to keep the data directory of your private network separated, so do also specify a custom --datadir flag.

$ gwan --datadir=path/to/custom/data/folder --bootnodes=<bootnode-enode-url-from-above>

Note: Since your network will be completely cut off from the main and test networks, you'll also need to configure a miner to process transactions and create new blocks for you.

Docker quick start

One of the quickest ways to get wanchain up and running on your machine is by using Docker:

docker run -d --name wanchain-node -v /home/ubuntu/wanchain:/root \
           -p 8545:8545 -p 17717:17717 \
           wanchain/client-go --rpc

This will start gwan in fast-sync mode with a DB memory allowance of 1GB just as the above command does. It will also create a persistent volume in your home directory for saving your blockchain as well as map the default ports. Do not forget --rpcaddr 0.0.0.0, if you want to access RPC from other containers and/or hosts. By default, gwan binds to the local interface and RPC endpoints is not accessible from the outside.

go-wanchain's People

Contributors

13552128609 avatar anson5555555lee avatar codeoneline avatar eltociear avatar gabriel-2010 avatar jeffreygu1 avatar jeremyjiaqg avatar jianshensde avatar jl8610 avatar lansehuiyi6 avatar lolieatapple avatar lolieatcat avatar mutouji avatar newcasablanca avatar noahmaizels avatar ssc806 avatar teemoguo avatar zhangying888 avatar zhihuizhilv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-wanchain's Issues

Add possibility to reduce Self-Stake and Partner-Stake

Validators and Partners should be able to adjust/reduce their Stake to allow to react to changing conditions.

Currently Validators and Partners can only add Stake but cannot withdraw Stake in a granular way. The only way to reduce Stake is to withdraw all the Stake at once by setting the NextLockEpochs to 0. I assume in the case of the validator itself this would also terminate the validator (Please correct me if that's wrong). Partners seem to be able to withdraw their funds already as seen by 0xfc2730f75330bb75cb28fcff12f0aea5b6e433e1 between blocks 8677455 and 8677456. I assume, a full termination of the validator results in losing all deletions and therefore is very disruptive for delegators, validators and the network itself.

We should add a method(s) in the staking smart contract to allow Validators and Partners to reduce their Stake in a granular way.

Reasons to withdraw Stake as Validators and Partners can be:

  • Changing market conditions, such as price rises and decreases.
  • Outflow of delegations that don't require as much self-stake.
  • Reduction of risk by lowering staked WAN.
  • Re-allocation from Self-Stake to Partner-Stake and Partner-to-Partner Stake.

If there's already a way for Validators to StakeOut an amount without service disruption for Delegators and other Partners I would be interested to know how it works.

Incorrect calculation of StakeAmount when using StakeAppend

The calculation for StakeAmount ("Power Weight" on https://www.wanscan.org/) of a validator's original creator (the one who called StakeIn) is incorrect when StakeAppend is used.

Example

Given an initial stake of 50,000 WAN and a lock period of 90 days results in a StakeAmount of 75,000,000 (the maximum factor 1,500 or loosely called 1.5x)

Let's say after 45 days a Partner stakes in, then her weight multiplier is lower because her coins are locked up for only the remaining 45 days. The factor will be around 1,230 (1.23x) according to CalLocktimeWeight. So far so good, if the Partner already has some stake then this value is added to the current stake and can only increase the StakeAmount. This calculation for PartnerIn is here. It takes the Partner's current stake weight and adds the transaction's value multiplied by the weight factor to it. The weight factor is based on the remaining lock time.

The Problem

However, StakeAppend is different: If the original owner uses StakeAppend to increase the stake after 45 days then the StakeAmount is re-calculated for the entire stake based on the current weight factor.

Given the example above where 50,000 WAN are locked for 90 days: If the owner StakeAppends 10,000 WAN after 45 days then her StakeAmount is re-calculated based on 60,000 WAN staked for the remaining 45 days. This results in a StakeAmount of 73,800,000 which is actually lower than the above figure when just 50,000 were staked. Adding more stake worked against the validator in this case. This calculation happens here and immediately appears different from the one in PartnerIn . To calculate the new StakeAmount it takes the entire new stake (Amount) and multiplies it by the weight factor for 45 days: 60,000 * 1,230 = 73,800,000. However, it should rather add the new weighted stake to the current StakeAmount: 50,000 * 1,500 + 10,000 * 1,230 = 87,300,000.

On the blockchain this can be seen for 0x83a1b91ade06bcd2137d953dbdfabe60f78fd157 between blocks 6,374,454 and 6,374,455. Although an additional 11,000 WAN were staked by the validator creator the StakeAmount went down from 78,690,000 to 73,440,000. This can be seen by several other validators that used StakeAppend during their lock period.

As far as I can see it all resets correctly when a new stake period is started.

Impossible reorg because reorg length is bigger than K setting

INFO [10-27|15:10:31] Block synchronisation started
INFO [10-27|15:10:31] miner update start                       ev="&{Time:2020-10-27 15:10:31.305115705 +0100 CET m=+23.196224758 Data:{}}"
INFO [10-27|15:10:31] miner update start downloader.StartEvent
INFO [10-27|15:10:31] miner update                             mining=false
INFO [10-27|15:10:31] the lastest block number                 height=11274167
INFO [10-27|15:10:31] fullSyncWithPeer                         current block=11191918
INFO [10-27|15:10:31] fullSyncWithPeer                         current header=11191918
INFO [10-27|15:10:31] fullSyncWithPeer                         current fast block=11191918
INFO [10-27|15:10:31] fullSyncWithPeer                         origin=11191918 height=11274167
INFO [10-27|15:10:31] Downloading block bodies begin           origin=11191919
INFO [10-27|15:10:31] Directing header downloads               peer=bd6ce055fd7cb39c origin=11191919
WARN [10-27|15:10:34] Chain split detected                     number=11189397 hash=0x1dfb27d9b4d39e7f93365bcb663ef5c001d7ee4bcc148c38753bd9f3d9ec900f drop=2521 dropfrom=0x8f70c680
64471b3747f4d76544895c24546df013ee966c8df5e2196931610999 add=2522 addfrom=0x0672df916c8131db952ea9f9905df4eaa2e1fbb244f6f180a50da99f3b04c496
INFO [10-27|15:10:34] Allocated cache and file handles         database=/root/.wanchain/gwan/forkdb    cache=16  handles=256
ERROR[10-27|15:10:34] Impossible reorg because reorg length is bigger than K setting reorg length=2522 old chain rollback lenght=2521
INFO [10-27|15:10:34] Block body download terminated           err="block body download canceled (requested)"
INFO [10-27|15:10:34] Downloading block bodies end             origin=11191919
INFO [10-27|15:10:34] Header download terminated               peer=bd6ce055fd7cb39c
WARN [10-27|15:10:34] Synchronisation failed, dropping peer    peer=bd6ce055fd7cb39c err="retrieved hash chain is invalid"
INFO [10-27|15:10:34] miner update start                       ev="&{Time:2020-10-27 15:10:34.021702236 +0100 CET m=+25.912811368 Data:{Err:retrieved hash chain is invalid}}"
INFO [10-27|15:10:34] downloader.DoneEvent, downloader.FailedEvent: 
WARN [10-27|15:10:40] Synchronisation failed, dropping peer    peer=8691896df67742df err="action from bad peer ignored"
INFO [10-27|15:10:40] the lastest block number                 height=11274168
INFO [10-27|15:10:40] fullSyncWithPeer                         current block=11191918
INFO [10-27|15:10:40] fullSyncWithPeer                         current header=11191918
INFO [10-27|15:10:40] fullSyncWithPeer                         current fast block=11191918
INFO [10-27|15:10:40] fullSyncWithPeer                         origin=11191918 height=11274168
INFO [10-27|15:10:40] Downloading block bodies begin           origin=11191919
INFO [10-27|15:10:40] Directing header downloads               peer=3cf83b40bd4a97ed origin=11191919

Trying on version >= 2.1.5

gwan crashes when starting consensus

Hello,

I'm trying to run a local development chain using gwan on sha3 branch but I can't manage to start it properly. I built gwan using make release. I'm using the creating binary gwan-darwin-10.6-amd64.

First error I got was

Fatal: Error starting protocol stack: database already contains an incompatible genesis block (have 2893a852a2fdec70, new ffcba984551d827c)

So far this is what I did:

joris@joriss-MacBook-Pro go-wanchain % mkdir local
joris@joriss-MacBook-Pro go-wanchain % cp genesis_example/genesisTestNet.json ./local 
joris@joriss-MacBook-Pro go-wanchain % ./gwan --datadir local init local/genesisTestNet.json 
WARN [06-10|19:50:31] No etherbase set and no accounts found as default 
INFO [06-10|19:50:31] Allocated cache and file handles         database=local/gwan/pos cache=16 handles=256
INFO [06-10|19:50:31] Allocated cache and file handles         database=local/gwan/rblocaldb cache=16 handles=256
INFO [06-10|19:50:31] Allocated cache and file handles         database=local/gwan/eplocaldb cache=16 handles=256
INFO [06-10|19:50:31] Allocated cache and file handles         database=/Users/joris/Documents/work/go-wanchain/local/gwan/chaindata cache=16 handles=16
INFO [06-10|19:50:31] Writing default  test net genesis block 
INFO [06-10|19:50:31] Successfully wrote genesis state         database=chaindata                                                    hash=0x2893a852a2fdec70cfb74307512489a2880c55703dcb623e3cf51300474af8d4
INFO [06-10|19:50:31] Allocated cache and file handles         database=/Users/joris/Documents/work/go-wanchain/local/gwan/lightchaindata cache=16 handles=16
INFO [06-10|19:50:32] Writing default  test net genesis block 
INFO [06-10|19:50:32] Successfully wrote genesis state         database=lightchaindata                                                    hash=0x2893a852a2fdec70cfb74307512489a2880c55703dcb623e3cf51300474af8d4
joris@joriss-MacBook-Pro go-wanchain % ./gwan --datadir local account new                   
WARN [06-10|19:51:00] No etherbase set and no accounts found as default 
INFO [06-10|19:51:00] Allocated cache and file handles         database=local/gwan/pos cache=16 handles=256
INFO [06-10|19:51:00] Allocated cache and file handles         database=local/gwan/rblocaldb cache=16 handles=256
INFO [06-10|19:51:00] Allocated cache and file handles         database=local/gwan/eplocaldb cache=16 handles=256
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase: 
Repeat passphrase: 
Address: {d975dB4210C5FbB764d55fB60f2292569C321297}
joris@joriss-MacBook-Pro go-wanchain % ./gwan --datadir local account list
Account #1: {d975db4210c5fbb764d55fb60f2292569c321297} keystore:///Users/joris/Documents/work/go-wanchain/local/keystore/UTC--2021-06-10T10-51-32.997406000Z--d975db4210c5fbb764d55fb60f2292569c321297
joris@joriss-MacBook-Pro go-wanchain % cat local/genesisTestNet.json 
{
  "config": {
        "chainId": 3,
        "byzantiumBlock": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x000000000000000",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}
joris@joriss-MacBook-Pro go-wanchain % ./gwan --dev --datadir local --etherbase 0x9da26fc2e1d6ad9fdd46138906b0104ae68a65d8 --unlock d975db4210c5fbb764d55fb60f2292569c321297 --password ./pwdfile --mine --minerthreads 1 --rpc --rpcaddr 0.0.0.0 --rpcapi eth,personal,net,admin,wan,txpool 
 
INFO [06-10|19:55:22] Allocated cache and file handles         database=local/gwan/pos cache=16 handles=256
INFO [06-10|19:55:22] Allocated cache and file handles         database=local/gwan/rblocaldb cache=16 handles=256
INFO [06-10|19:55:22] Allocated cache and file handles         database=local/gwan/eplocaldb cache=16 handles=256
INFO [06-10|19:55:24] Unlocked account                         address=0xd975dB4210C5FbB764d55fB60f2292569C321297
INFO [06-10|19:55:24] Starting peer-to-peer node               instance=gwan/v2.2.1-beta.1/darwin-amd64/go1.13.4
INFO [06-10|19:55:24] Allocated cache and file handles         database=/Users/joris/Documents/work/go-wanchain/local/gwan/chaindata cache=128 handles=2048
WARN [06-10|19:55:24] Upgrading database to use lookup entries 
INFO [06-10|19:55:24] Database deduplication successful        deduped=0
Fatal: Error starting protocol stack: database already contains an incompatible genesis block (have 2893a852a2fdec70, new ffcba984551d827c)
joris@joriss-MacBook-Pro go-wanchain % 

So it seems that gwan is trying to re-initialize the chain even though I already initialized it. So I deleted the chain data an restarted the node. But now it crashes at start with a SIGSEV.

joris@joriss-MacBook-Pro go-wanchain % rm -rf local/gwan
joris@joriss-MacBook-Pro go-wanchain % ./gwan --dev --datadir local --etherbase 0x9da26fc2e1d6ad9fdd46138906b0104ae68a65d8 --unlock d975db4210c5fbb764d55fb60f2292569c321297 --password ./pwdfile --mine --minerthreads 1 --rpc --rpcaddr 0.0.0.0 --rpcapi eth,personal,net,admin,wan,txpool

INFO [06-10|20:03:27] Allocated cache and file handles         database=local/gwan/pos cache=16 handles=256
INFO [06-10|20:03:27] Allocated cache and file handles         database=local/gwan/rblocaldb cache=16 handles=256
INFO [06-10|20:03:27] Allocated cache and file handles         database=local/gwan/eplocaldb cache=16 handles=256
INFO [06-10|20:03:28] Unlocked account                         address=0xd975dB4210C5FbB764d55fB60f2292569C321297
INFO [06-10|20:03:28] Starting peer-to-peer node               instance=gwan/v2.2.1-beta.1/darwin-amd64/go1.13.4
INFO [06-10|20:03:28] Allocated cache and file handles         database=/Users/joris/Documents/work/go-wanchain/local/gwan/chaindata cache=128 handles=2048
INFO [06-10|20:03:28] Writing custom genesis block 
INFO [06-10|20:03:28] Initialised chain configuration          config="{ChainID: 1337 Byzantium: 0 Engine: ethash}"
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x4975340]

goroutine 1 [running]:
github.com/wanchain/go-wanchain/consensus/pluto.New(0x0, 0x51b58e0, 0xc00016f450, 0x3)
        /ext-go/1/src/github.com/wanchain/go-wanchain/consensus/pluto/pluto.go:238 +0x40
github.com/wanchain/go-wanchain/eth.New(0xc0004ac700, 0xc000336380, 0x4d5cbc0, 0xc0002c76e0, 0x400ecb8)
        /ext-go/1/src/github.com/wanchain/go-wanchain/eth/backend.go:122 +0x234
github.com/wanchain/go-wanchain/cmd/utils.RegisterEthService.func2(0xc0004ac700, 0xc0001ecc90, 0xc0002c78a8, 0x3, 0xc0002c7888)
        /ext-go/1/src/github.com/wanchain/go-wanchain/cmd/utils/flags.go:1110 +0x3d
github.com/wanchain/go-wanchain/node.(*Node).Start(0xc0000c4b40, 0x0, 0x0)
        /ext-go/1/src/github.com/wanchain/go-wanchain/node/node.go:175 +0x3d2
github.com/wanchain/go-wanchain/cmd/utils.StartNode(0xc0000c4b40)
        /ext-go/1/src/github.com/wanchain/go-wanchain/cmd/utils/cmd.go:62 +0x2f
main.startNode(0xc00010a6e0, 0xc0000c4b40)
        /ext-go/1/src/github.com/wanchain/go-wanchain/cmd/gwan/main.go:287 +0x259
main.geth(0xc00010a6e0, 0x4f69870, 0xb2d05e00)
        /ext-go/1/src/github.com/wanchain/go-wanchain/cmd/gwan/main.go:251 +0xf7
github.com/wanchain/go-wanchain/vendor/gopkg.in/urfave/cli%2ev1.HandleAction(0x4beb040, 0x4f6b380, 0xc00010a6e0, 0xc0000b8de0, 0x0)
        /ext-go/1/src/github.com/wanchain/go-wanchain/vendor/gopkg.in/urfave/cli.v1/app.go:490 +0xc8
github.com/wanchain/go-wanchain/vendor/gopkg.in/urfave/cli%2ev1.(*App).Run(0xc0000ac4e0, 0xc000032120, 0x12, 0x12, 0x0, 0x0)
        /ext-go/1/src/github.com/wanchain/go-wanchain/vendor/gopkg.in/urfave/cli.v1/app.go:264 +0x58c
main.main()
        /ext-go/1/src/github.com/wanchain/go-wanchain/cmd/gwan/main.go:226 +0x55
joris@joriss-MacBook-Pro go-wanchain % 

So my question is. How can I manage to run a local chain using gwan, from sha3 branch? Thank you.

Unable to Sync Blocks on Testnet (Mainnet Works Fine)

Gwan version: 2.1.5
Git Commit: ef37432
OS: CentOS 7
Build: Source

Hi, the below is set of command line arguments attempting to connect via testnet. Mainnet works fine, however, testnet fails:

/wan/go-wanchain/build/bin/gwan --syncmode=full --rpc --rpcapi=debug,web3,eth,txpool,net

The below is the resulting message for days, unable to connect to any peers:

Regenerated local transaction journal transactions=0 accounts=0

Bad block 17201555

version: 2.2.0
go compiler version: 1.15.12

########## BAD BLOCK #########
Chain config: {ChainID: 1 Byzantium: 0 Engine: ethash}

Number: 17201555
Hash: 0x4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805
	receipt{status=1 cgas=1009224 bloom=00000000000000000000000001000000000000000000000000000000000000000000000100000000000000000000020000000000000000000000000000040000000000000100000000000000000000000000000100040000004000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000080000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000040000000000100000000000000000000000000000000000000000000001000000000 logs=[log: 1e7450d5d17338a348c5438546f0b4d0a5fbeab6 [87307a7786524b1cbccc920b1eedb7a7e1ee2f85a065e35043c9c8b5ced7e755 000000000000000000000000000000000000000000000041726965735f303131 00000000000000000000000075e30f2200bdf26cc2f2f74bc029a8d82f074101 0000000000000000000000000000000000000000000000000000000000000001] 00000000000000000000000000000000000000000000000000000000000049e600000000000000000000000000000000000000000000000000000000000049e6 edac70eb19c6b53c74c20fd881e11482707a1cac23be7c595a6f749530f7ea1a 0 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 0]}
	receipt{status=1 cgas=1446824 bloom=0420000001000000001001008000000000000000000002000008000000000000000004000000600000000000002000000000010000000200008000004020000000800400000800000010000a000000200218080000040010000000000000000049000802000200000000000080008002000000000000000000000014800000000000020000800040000000000000000004008000000000080000004000000008020000040000000000000001100010000000030000000000000000000000100000000002010020000000200000000008010000000000801000000004000000001110000000002201100000000000000002120000000000000000080000000000 logs=[log: 6e11655d6ab3781c6613db8cb1bc3dee9a7e111f [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000000000000000000000006c28a4d2c2f25b733e23720342c2ad2e69d6d0ec 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370] 000000000000000000000000000000000000000000000001b4ca4189a672e510 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 1 log: 6e11655d6ab3781c6613db8cb1bc3dee9a7e111f [8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1] 000000000000000000000000000000000000000000000001b4ca4189a672e510 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 2 log: 6e11655d6ab3781c6613db8cb1bc3dee9a7e111f [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 000000000000000000000000a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06] 000000000000000000000000000000000000000000000001b4ca4189a672e510 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 3 log: 6e11655d6ab3781c6613db8cb1bc3dee9a7e111f [8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1] 0000000000000000000000000000000000000000000000000000000000000000 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 4 log: 8b9f9f4aa70b1b0d586be8adfb19c1ac38e05e9a [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000000000000000000000000a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06 00000000000000000000000029239a9b93a78decec6e0dd58ddbb854b7ffb0af] 00000000000000000000000000000000000000000000000338007a5754e68ef7 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 5 log: a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06 [1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1] 0000000000000000000000000000000000000000000d102b8ecb37a3382dd91400000000000000000000000000000000000000000018b7ba50a75924f4c24a8b 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 6 log: a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06 [d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1 00000000000000000000000029239a9b93a78decec6e0dd58ddbb854b7ffb0af] 000000000000000000000000000000000000000000000001b4ca4189a672e5100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000338007a5754e68ef7 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 7 log: dabd997ae5e4799be47d6e69d9431615cba28f48 [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000029239a9b93a78decec6e0dd58ddbb854b7ffb0af 0000000000000000000000002a272a37c999a36dc10100f8a4b7c3937c174a0d] 0000000000000000000000000000000000000000000000003803539c20ebef92 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 8 log: 29239a9b93a78decec6e0dd58ddbb854b7ffb0af [1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1] 0000000000000000000000000000000000000000002d1f2a0544b8fe0eea7fe0000000000000000000000000000000000000000000031392a45a4d25d2305c20 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 9 log: 29239a9b93a78decec6e0dd58ddbb854b7ffb0af [d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1 0000000000000000000000002a272a37c999a36dc10100f8a4b7c3937c174a0d] 00000000000000000000000000000000000000000000000338007a5754e68ef7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003803539c20ebef92 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 10 log: f665e0e3e75d16466345e1129530ec28839efaea [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000000000000000000000002a272a37c999a36dc10100f8a4b7c3937c174a0d 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370] 0000000000000000000000000000000000000000000000000000000000346006 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 11 log: 2a272a37c999a36dc10100f8a4b7c3937c174a0d [1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1] 000000000000000000000000000000000000000000028c46ebb3eccf649d514c00000000000000000000000000000000000000000000000000000263bf724db9 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 12 log: 2a272a37c999a36dc10100f8a4b7c3937c174a0d [d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370] 0000000000000000000000000000000000000000000000003803539c20ebef92000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000346006 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 13 log: f665e0e3e75d16466345e1129530ec28839efaea [8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 0000000000000000000000006c28a4d2c2f25b733e23720342c2ad2e69d6d0ec] 0000000000000000000000000000000000000000000000000000000000346006 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 14 log: f665e0e3e75d16466345e1129530ec28839efaea [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 0000000000000000000000006c28a4d2c2f25b733e23720342c2ad2e69d6d0ec] 0000000000000000000000000000000000000000000000000000000000346006 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 15 log: 6c28a4d2c2f25b733e23720342c2ad2e69d6d0ec [5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 000000000000000000000000f665e0e3e75d16466345e1129530ec28839efaea] 0000000000000000000000000000000000000000000000000000000000346006 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 16 log: 6c28a4d2c2f25b733e23720342c2ad2e69d6d0ec [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 000000000000000000000000a50d449eefa154a1bdd20c760180c081c139996a] 0000000000000000000000000000000000000000000000000000000000346006 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 17 log: 6c28a4d2c2f25b733e23720342c2ad2e69d6d0ec [dc8c0095a92d9f8e1067edeb0f92a39564f676e2ce94479c352d79334a0aad1a 00000000000000000000000028fc0859605cfc0f8ddb5f5aa59b457714c36370 0000000000000000000000006e11655d6ab3781c6613db8cb1bc3dee9a7e111f b71314cc551217efee59f0fe6b7bb9707124bf105a626ee4382b961ab8ddae19] 0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 18 log: 28fc0859605cfc0f8ddb5f5aa59b457714c36370 [bc43d7c0945f5a13a7bfa8ca7309e55f903f01d66c38c6d1353fe7ff9335d776] 000000000000000000000000000000000000000000000001b4ca4189a672e51000000000000000000000000000000000000000000000000000000000003460060000000000000000000000000000000000000000000000000000000000000001 1743693015e98b1f150b0765a10c71265c9c812a25de7ac29aa07a4235135bd1 1 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 19]}
	receipt{status=1 cgas=1784522 bloom=04200000010010000012000090000000000000000000020000800000000000000000040000006000080000000020000010000100000002040000000040200000000004000008000000000008400000200008000000440000000002000000000040000802000000000000000280008002000000000000000000000010800000000000024000800041000000000000000000109000000000080000004120000000020000040000000000000000000000000000000000000000000000000000100100100002000000000080100000000008000000000000001000000002000000000110000004000000800000000000000000120000000000000000080000000000 logs=[log: 6e11655d6ab3781c6613db8cb1bc3dee9a7e111f [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000000000000000000000006c28a4d2c2f25b733e23720342c2ad2e69d6d0ec 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd] 000000000000000000000000000000000000000000000001615e9de80055d9d4 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 20 log: 6e11655d6ab3781c6613db8cb1bc3dee9a7e111f [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd 000000000000000000000000a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06] 000000000000000000000000000000000000000000000001615e9de80055d9d4 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 21 log: 6e11655d6ab3781c6613db8cb1bc3dee9a7e111f [8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1] ffffffffffffffffffffffffffffffffffffffffffffb90e6e0b0dff77be8398 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 22 log: 8b9f9f4aa70b1b0d586be8adfb19c1ac38e05e9a [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000000000000000000000000a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06 00000000000000000000000076227986f3331c8798616205b3f1c4a2d06fd1bc] 0000000000000000000000000000000000000000000000029aa09399bf6fa67e 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 23 log: a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06 [1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1] 0000000000000000000000000000000000000000000d102cf029d58b3883b2e800000000000000000000000000000000000000000018b7b7b606c58b3552a40d 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 24 log: a0cf1f16994ecd6d4613024b3ebb61b9f9c06f06 [d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1 00000000000000000000000076227986f3331c8798616205b3f1c4a2d06fd1bc] 000000000000000000000000000000000000000000000001615e9de80055d9d4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029aa09399bf6fa67e 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 25 log: 11e77e27af5539872efed10abaa0b408cfd9fbbd [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000076227986f3331c8798616205b3f1c4a2d06fd1bc 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd] 00000000000000000000000000000000000000000000000000000000002d6535 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 26 log: 76227986f3331c8798616205b3f1c4a2d06fd1bc [1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1] 00000000000000000000000000000000000000000000000000000037f3001f9f000000000000000000000000000000000000000000033327d1e660e48de8f499 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 27 log: 76227986f3331c8798616205b3f1c4a2d06fd1bc [d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 000000000000000000000000ea300406fe2eed9cd2bf5c47d01beca8ad294ec1 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd] 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029aa09399bf6fa67e00000000000000000000000000000000000000000000000000000000002d65350000000000000000000000000000000000000000000000000000000000000000 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 28 log: 11e77e27af5539872efed10abaa0b408cfd9fbbd [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd 0000000000000000000000006c28a4d2c2f25b733e23720342c2ad2e69d6d0ec] 00000000000000000000000000000000000000000000000000000000002d6535 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 29 log: 6c28a4d2c2f25b733e23720342c2ad2e69d6d0ec [5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd 00000000000000000000000011e77e27af5539872efed10abaa0b408cfd9fbbd] 00000000000000000000000000000000000000000000000000000000002d6535 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 30 log: 6c28a4d2c2f25b733e23720342c2ad2e69d6d0ec [ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd 0000000000000000000000009902928fc35f9f9edfebaa46fcc528e3135589e9] 00000000000000000000000000000000000000000000000000000000002d6535 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 31 log: 6c28a4d2c2f25b733e23720342c2ad2e69d6d0ec [dc8c0095a92d9f8e1067edeb0f92a39564f676e2ce94479c352d79334a0aad1a 00000000000000000000000075b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd 0000000000000000000000006e11655d6ab3781c6613db8cb1bc3dee9a7e111f 4ca32440ae847a42bd8ccf41ae2b4a8fdf45458fb847a8b69fcd847a1ee3648c] 0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 32 log: 75b6bfd06bae0b001cb47fb5a2ddd6d3cd11bfdd [bc43d7c0945f5a13a7bfa8ca7309e55f903f01d66c38c6d1353fe7ff9335d776] 000000000000000000000000000000000000000000000001615e9de80055d9d400000000000000000000000000000000000000000000000000000000002d65350000000000000000000000000000000000000000000000000000000000000001 9c9acd06d713553872a8b3f8114330dea0a4eb27ee35bb08e24fe456ab4e5627 2 4585c23d0147217f79f5ef92ef6761003968aff911f37fd2e55a9153ebf8f805 33]}


Error: invalid gas used (remote: 2101652 local: 1784522)
##############################

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.