GithubHelp home page GithubHelp logo

bitpay / bitcore Goto Github PK

View Code? Open in Web Editor NEW
4.8K 4.8K 2.0K 118.03 MB

A full stack for bitcoin and blockchain-based applications

Home Page: https://bitcore.io/

License: MIT License

JavaScript 67.01% Shell 0.03% Dockerfile 0.04% TypeScript 32.87% HTML 0.04% Makefile 0.01%

bitcore's Introduction

bitcore's People

Contributors

bitjson avatar braydonf avatar bsnowden3 avatar chjj avatar cmgustavo avatar eordano avatar escottalexander avatar gabegattis avatar gabrielbazan7 avatar gamboster avatar gasteve avatar harshitjoshi avatar illegalprime avatar isocolsky avatar jackbitpay avatar jdonadio avatar kajoseph avatar lanchana avatar leolambo avatar maraoz avatar martindale avatar matiu avatar micahriggan avatar nitsujlangston avatar olalonde avatar pnagurny avatar rastajpa avatar ryanxcharles avatar sbhatnagar30 avatar yemel 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  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

bitcore's Issues

SendTx example says hash.reverse has no method 'reverse'

Hey all, the validation example example works fine, but the SendTx example bombs out. Anyone know what's going on? I've attached the error.

Thanks for any help that people can offer.


node examples/SendTx.js 
connecting to 127.0.0.1:18333
connected to 127.0.0.1:18333



/home/client/js/payment-app/vendor/bitcore/examples/SendTx.js:29
  hash.reverse();
       ^
TypeError: Object �_5��ĕ�ܫ������*ʹ�v�M���j*}�e has no method 'reverse'
    at createTx (/home/client/js/payment-app/vendor/bitcore/examples/SendTx.js:29:8)
    at PeerManager.<anonymous> (/home/client/js/payment-app/vendor/bitcore/examples/SendTx.js:55:17)
    at PeerManager.EventEmitter.emit (events.js:95:17)
    at PeerManager.handleReady (/home/client/js/payment-app/vendor/bitcore/PeerManager.js:126:10)
    at Connection.EventEmitter.emit (events.js:117:20)
    at Connection.handleMessage (/home/client/js/payment-app/vendor/bitcore/Connection.js:160:10)
    at Connection.processData (/home/client/js/payment-app/vendor/bitcore/Connection.js:400:12)
    at Connection.processData (/home/client/js/payment-app/vendor/bitcore/Connection.js:404:10)
    at Connection.handleData (/home/client/js/payment-app/vendor/bitcore/Connection.js:328:10)
    at Socket.EventEmitter.emit (events.js:117:20)

Support hierarchical deterministic wallets (BIP 32)

When sending a payment to someone, financial privacy is increased if you send to a different address every time. But with randomly generated addresses, this requires both parties to be online and in communication at the same time. A well-thought out and developed solution to this problem is hierarchical deterministic wallets, described in BIP 32:

https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

HD wallets can also be used in combination with merge avoidance for increased privacy.

Make bitcore work in the browser

Bitcore is primarily a node library, but it would be extremely valuable to have it work in the browser. Right now, it only has partial support for running in the browser. Here is a list of goals we need to accomplish to complete the effort of making bitcore work in the browser:

  • Can build the browser version from the node version
  • Can choose which parts of bitcore to build into the browser version (e.g., just the "script" and "transaction" bits, but not the p2p bits)
  • Browser version should be minified
  • All tests work in both node and the browser
  • All C++ crypto should have a js counterpart, and the js should be used in the browser
  • Some code may not make sense in the browser, like p2p connections. That can be left out of the browser version.
  • Add some tests to bitcore which work both in browser and node
  • Make npm install create browser version of bitcore

Sign transaction howto?

As this stuff lacks documentation at the moment, can someone give a working example of how to sign a transaction? Using signTxIn, probably?

more examples

we need more examples of what you can do with bitcore.

can i use it to handle payments on my node.js app?

Implement signmessage

It would be nice if this library offered a way to sign messages using private keys and to verify signatures.

Ruby on rails

Will there ever be a ruby gem? I love the idea of this!

Convert from buffertools 1.0 to buffertools 2.0

Buffertools 1.0 extends the Buffer prototype by default. Better practice is not to extend this object to minimize impact on codebases that use bitcore. We should convert to buffertools 2.0 which does not extend the Buffer prototype by default.

networks.js for another cryptocurrency

Hey bitcore team, awesome work you do here! I really love insight and want to fork the project for another cryptocurrency named fuckcoin. (yes, i know ^^)

I find it hard to get the networks.js settings of bitcore right, resulting in

[historic_sync] ERROR: Bad genesis block. Network mismatch between Insight and bitcoind? Insight is configured for:livenet

when starting insight / bitcore.

The hexdump for the fuckcoin genesis block is

00000000  fb c0 b6 db 04 01 00 00  01 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 db 2c ed d9  |.............,..|
00000030  d5 98 36 30 e1 03 ef 34  4b 15 99 9e 4f 4d 55 f9  |..60...4K...OMU.|
00000040  45 d3 0d 68 dd a2 44 fe  10 50 7b 53 9d 81 d8 52  |E..h..D..P{S...R|
00000050  ff ff 0f 1e d4 fb 0c 00  01 01 00 00 00 01 00 00  |................|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 ff ff  |................|
00000080  ff ff 34 04 ff ff 00 1d  01 04 2c 48 6f 77 20 53  |..4.......,How S|
00000090  65 78 20 41 66 66 65 63  74 73 20 49 6e 74 65 6c  |ex Affects Intel|
000000a0  6c 69 67 65 6e 63 65 2c  20 61 6e 64 20 56 69 63  |ligence, and Vic|
000000b0  65 20 56 65 72 73 61 ff  ff ff ff 01 00 a5 45 9b  |e Versa.......E.|
000000c0  01 00 00 00 43 41 04 01  84 71 0f a6 89 ad 50 23  |....CA...q....P#|
000000d0  69 0c 80 f3 a4 9c 8f 13  f8 d4 5b 8c 85 7f bc bc  |i.........[.....|
000000e0  8b c4 a8 e4 d3 eb 4b 10  f4 d4 60 4f a0 8d ce 60  |......K...`O...`|
000000f0  1a af 0f 47 02 16 fe 1b  51 85 0b 4a cf 21 b1 79  |...G....Q..J.!.y|
00000100  c4 50 70 ac 7b 03 a9 ac  00 00 00 00 fb c0 b6 db  |.Pp.{...........|
00000110  bb 00 00 00 02 00 00 00  a9 07 e6 72 1d 87 d0 26  |...........r...&|
00000120  5b f2 fe d6 a1 0a 00 0c  fd dc da 10              |[...........|
0000012c

Genesis Block Blockexplorer

Genesis Block main.cpp

base58.h fuckcoin

I set networks.js to

exports.livenet = {
  name: 'livenet',
  addressVersion: 0x23,
  magic: hex('fbc0b6db'),
  genesisBlock: {
    height: 0,
    nonce: 850900,
    version: 1,
    hash: hex('32F3A2C560499F2600108F5B10DADCFD0C000AA1D6FEF25B26D0871D72E607A9'),
    prev_hash: buffertools.fill(new Buffer(32), 0),
    timestamp: 1389920669,
    merkle_root: hex('537B5010FE44A2DD680DD345F9554D4F9E99154B34EF03E1303698D5D9ED2CDB'),
    bits: 486604799
  },
  genesisBlockTx: {
    outs: [{
      v: hex('00A5459B01000000'), // 69 FUCKs
      s: new Put()
        .word8(65) // 65 bytes of data follow
        .put(hex('040184710FA689AD5023690C80F3A49C8F13F8D45B8C857FBCBC8BC4A8E4D3EB4B10F4D4604FA08DCE601AAF0F470216FE1B51850B4ACF21B179C45070AC7B03A9'))
        .word8(0xAC) // OP_CHECKSIG
        .buffer()
    }],
    lock_time: 0,
    version: 1,
    hash: hex('537B5010FE44A2DD680DD345F9554D4F9E99154B34EF03E1303698D5D9ED2CDB'),
    ins: [{
      q: 0xFFFFFFFF,
      o: hex("0000000000000000000000000000000000000000000000000000000000000000FFFFFFFF"),
      s: new Put()
        .put(hex('04FFFF001D01042C'))
        .put(new Buffer('How Sex Affects Intelligence, ' +
                        'and Vice Versa', 'ascii'))
        .buffer()
    }]
  },
  proofOfWorkLimit: hex("00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"),
  checkpoints: [], // need to put checkpoint blocks here
  addressPubkey: 35,
  addressScript: 5,
  keySecret: 128,
};

I don't have a full code overview, yet. Are there other dependencies that could cause the Bad genesis block error? Or can you please check if there is an error in my version of networks.js? Thank you!

Add bitcore-channel submodule for Payment channel support

Although bitcoin transactions are cheap, they aren't free. For sending micropayments, a strategy is to send one transaction that can be updated many times with more money before broadcasting it to the network, saving significant transaction fees. This is called a micropayment channel. It was invented by Mike Hearn and is implemented in bitcoinj. Information here:

https://en.bitcoin.it/wiki/Contracts#Example_7:_Rapidly-adjusted_.28micro.29payments_to_a_pre-determined_party

There are countless use-cases for micropayment channels (which are not necessarily micro - they could be used for payments of any size). We should support this.

Complete eckey.cc error handling

src/eckey.cc has some TODO markers which really want fixing. Otherwise, (a) there is no way to validate remote input, and (b) remote input might crash your program.

better Address constructor

Support:

  var addr = new bitcore.Address(hash);
  addr.network('testnet');

and

  var addr = new bitcore.Address('testnet', hash);

Also, add a setter for addr.network('testnet') or addr.network(networks.tesnet).

Update deps to [email protected]

Bignum 6.2 supports building on Windows with OpenSSL libs. Bignum 6.1 does not, which causes bitcore install to fail on Windows.

Is there any reason not to roll up to bignum 6.2?

Convert to "use strict"

"use strict" enforces javascript best practices. There might be bugs lurking under the surface that would be revealed by "use strict". We should convert to this and fix any issues that arise along the way, and add some basic tests along the way to ensure that we aren't breaking anything with "use strict".

Idiomatic API

Bitcore uses an API that Node.js developers will find strange. Parts like the odd pseudo-class system add complexity to learning how to use the library, and some API choices just don't make sense (e.g. using Error throwing in place of returning boolean values, as seen in Address::validate).

Obviously, this is a subjective issue and you may be satisfied with the current design, but I would strongly urge to match idiomatic Node.js API standards.

I will start refactoring on my fork, and you can choose whether or not to accept the pull request.

Support the payment protocol

The payment protocol is a much better way to pay with bitcoin and copy+pasting addresses. It supports authentication of the merchant, sending a tx to the merchant for them to broadcast, and sending refund addresses in case anything goes wrong. It should significantly reduce overpayments and underpayments and should be all-around more pleasant for consumers and merchants.

Bitcore can be used by both wallets and merchant software. We should support the payment protocol on both sides of the use spectrum. See BIP 70, 71, 72, and 73:

https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0071.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0072.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0073.mediawiki

Bitcoin Core and bitcoinj already support the payment protocol. We should test against both of those.

npm problem

npm http GET https://registry.npmjs.org/bitcore

npm ERR! Error: failed to fetch from registry: bitcore
npm ERR! at /usr/share/npm/lib/utils/npm-registry-client/get.js:139:12
npm ERR! at cb (/usr/share/npm/lib/utils/npm-registry-client/request.js:31:9)
npm ERR! at Request._callback (/usr/share/npm/lib/utils/npm-registry-client/request.js:136:18)
npm ERR! at Request.callback (/usr/lib/nodejs/request/main.js:119:22)
npm ERR! at Request. (/usr/lib/nodejs/request/main.js:212:58)
npm ERR! at Request.emit (events.js:88:20)
npm ERR! at ClientRequest. (/usr/lib/nodejs/request/main.js:412:12)
npm ERR! at ClientRequest.emit (events.js:67:17)
npm ERR! at HTTPParser.onIncoming (http.js:1261:11)
npm ERR! at HTTPParser.onHeadersComplete (http.js:102:31)
npm ERR! You may report this log at:
npm ERR! http://bugs.debian.org/npm
npm ERR! or use
npm ERR! reportbug --attach /root/npm-debug.log npm
npm ERR!
npm ERR! System Linux 3.12.9-x86_64-linode37
npm ERR! command "node" "/usr/bin/npm" "install" "bitcore"
npm ERR! cwd /root
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.1.4
npm ERR! message failed to fetch from registry: bitcore
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /root/npm-debug.log
npm not ok

"Monitoring Blocks and Transactions" example not working.

Running a fully synced testnet node locally, running the example code throws this error

➜  /tmp  node monitor.js
connecting to 127.0.0.1:18333

/private/tmp/node_modules/bitcore/Connection.js:175
    put.word32le(PROTOCOL_VERSION); // version
        ^
TypeError: Object #<BufferPut> has no method 'word32le'
    at Connection.sendVersion (/private/tmp/node_modules/bitcore/Connection.js:175:9)
    at Connection.handleConnect (/private/tmp/node_modules/bitcore/Connection.js:74:12)
    at Socket.EventEmitter.emit (events.js:117:20)
    at Object.afterConnect [as oncomplete] (net.js:886:10)

'Address validation' example not working for me

Greetings,

I've installed bitcore using "$ npm install bitcore" and then I did "$ npm install classtool". I made a new file called "test.js" which I ran with "$ node test.js"

var Address = require('bitcore/Address').class();

var addr = new Address("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");

try {
    addr.validate();
    console.log("Address is valid.");
} catch(e) {
    console.log(addr.data + " is not a valid address. " + e);
}

Using this example... all I get is:

1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa is not a valid address. RangeError: start > end

Is there anything I'm missing? I've been hours into this figuring out where is the problem...

Support merge avoidance

Although bitcoin is naturally pseudonymous, it is very easy to leak personal financial information. A strategy to increase privacy is to never merge two outputs together. Instead, when sending a payment, send to many different addresses instead. This is called "merge avoidance". To my knowledge, this concept was first introduced by Justus Ranvier:

http://bitcoinism.blogspot.com/2013/07/reclaiming-financial-privacy-with-hd.html

And named by Mike Hearn:

https://medium.com/p/7f95a386692f

Unresolved external symbol "FromConstructorTemplate..." linking on Windows

After applying the OpenSSL lib dir changes to binding.gyp in pull request #107 bitcore still fails to compile on Windows giving an error message about an unresolved external symbol:

C:\Users\dthorpe\.node-gyp\0.10.26\deps\v8\include\v8.h(218): warning C4506: no
definition for inline function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Han
dle<T>)' [C:\Users\dthorpe\node_modules\bitcore\build\KeyModule.vcxproj]
          with
          [
              T=v8::Object
          ]
C:\Users\dthorpe\.node-gyp\0.10.26\deps\v8\include\v8.h(218): warning C4506: no
definition for inline function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Han
dle<T>)' [C:\Users\dthorpe\node_modules\bitcore\build\KeyModule.vcxproj]
          with
          [
              T=v8::FunctionTemplate
          ]
     Creating library C:\Users\dthorpe\node_modules\bitcore\build\Release\KeyMod
ule.lib and object C:\Users\dthorpe\node_modules\bitcore\build\Release\KeyModule
.exp
eckey.obj : error LNK2001: unresolved external symbol "class v8::Handle<class v8
::Value> __cdecl node::FromConstructorTemplate(class v8::Persistent<class v8::Fu
nctionTemplate>,class v8::Arguments const &)" (?FromConstructorTemplate@node@@YA
?AV?$Handle@VValue@v8@@@v8@@V?$Persistent@VFunctionTemplate@v8@@@3@AEBVArguments
@3@@Z) [C:\Users\dthorpe\node_modules\bitcore\build\KeyModule.vcxproj]
C:\Users\dthorpe\node_modules\bitcore\build\Release\KeyModule.node : fatal error
 LNK1120: 1 unresolved externals [C:\Users\dthorpe\node_modules\bitcore\build\Ke
yModule.vcxproj]

In examining the symbols in node.lib (using VS dumpbin -headers node.lib), there is no occurance of "FromConstructorTemplate" anywhere in the symbols exported by node.lib. Is this error related to the warning about the undefined inline function?

BufferPut NPM Out of Date

If I run:

npm install bitcore

the NPM for bufferput contains what appears to be older code. Specifically, the error where some of the methods are defined on Buffer is still there.

The symptom is that you get an word32le is undefined message.

I was able to resolve this by using npm link against local copies of the bitcore and bufferput repos.

Postinstall hook fails when included as dependency (when building insight)

https://github.com/bitpay/bitcore/blob/master/package.json#L46

I'm building the insight project, and it seems this hook fails (breaking the entire build process). This does not happen when building bitcore by itself.

> node ./browser/browserify.js -a


module.js:340
    throw err;
          ^
Error: Cannot find module 'browserify'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/christophe/Code/insight-bitcore-git/src/insight/node_modules/insight-bitcore-api/node_modules/bitcore/browser/browserify.js:11:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
npm ERR! [email protected] postinstall: `node ./browser/browserify.js -a`
npm ERR! Exit status 8
npm ERR! 
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is most likely a problem with the bitcore package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./browser/browserify.js -a
npm ERR! You can get their info via:
npm ERR!     npm owner ls bitcore
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.13.4-1-ARCH
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! cwd /home/christophe/Code/insight-bitcore-git/src/insight
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/christophe/Code/insight-bitcore-git/src/insight/npm-debug.log
npm ERR! not ok code 0

Document the Monitor Example Better

Specifically, it wasn't clear to me at first that I needed to first run a node on localhost for testnet for the monitor to work. I was also hoping to see an example that connected to a testnet peer directly (that is, not via my local machine).

Improve the interface for making keys

This is really annoying:

> var bitcore.KeyModule.Key();
... 
> var key = new bitcore.Key();
TypeError: undefined is not a function
    at repl:1:11
    at REPLServer.self.eval (repl.js:110:21)
    at repl.js:249:20
    at REPLServer.self.eval (repl.js:122:7)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.EventEmitter.emit (events.js:95:17)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
    at ReadStream.onkeypress (readline.js:99:10)
> var key = new bitcore.KeyModule.Key();
undefined
> key = bitcore.KeyModule.Key.generateSync();
{ compressed: true,
  public: <SlowBuffer 02 10 99 3d fb cf 17 06 d4 6f f4 e8 f9 e3 3f 35 18 a4 d4 73 10 c2 98 ff f8 f4 3e 4d b8 34 03 94 cf>,
  private: <SlowBuffer 95 83 37 18 f2 9a 78 eb 9b a0 d9 9a 90 07 4b 72 55 80 e5 77 5b 1d 5b a2 da ca c7 79 06 09 b5 06> }
> key;
{ compressed: true,
  public: <SlowBuffer 02 10 99 3d fb cf 17 06 d4 6f f4 e8 f9 e3 3f 35 18 a4 d4 73 10 c2 98 ff f8 f4 3e 4d b8 34 03 94 cf>,
  private: <SlowBuffer 95 83 37 18 f2 9a 78 eb 9b a0 d9 9a 90 07 4b 72 55 80 e5 77 5b 1d 5b a2 da ca c7 79 06 09 b5 06

You have to do use bitcore.KeyModule.Key. It should just be bitcore.Key.

Implement threshold signing with pubkeyhash script

The normal way to do multisig in bitcoin is with a multisig script where multiple public keys are involved. But it is apparently possible to do 2-of-2 multisig with a normal pubkeyhash script with just one public key. This is a great way to do 2-factor auth, and can be combined with regular multisig. For example, 5 people can participate in 3-of-5 multisig, and then each of those people can use 2-of-2 pubkeyhash for 2-factor auth for their transactions.

Info:

Related paper on threshold signing:

Support colored coins

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.