Git Product home page Git Product logo

avalanche-docs's People

Contributors

aaronbuchwald avatar ahnor44 avatar andyvargtz avatar ashucoder9 avatar avalanche-rocky avatar ceyonur avatar cgcardona avatar danlaine avatar dasconnor avatar dependabot[bot] avatar dhrubabasu avatar dubrado avatar eltociear avatar felipemadero avatar holisticode avatar jayksofue avatar jpop32 avatar julian-dev28 avatar kanatliemre avatar laviniat1996 avatar manthanhd avatar meaghanfitzgerald avatar michaelkaplan13 avatar misterticot avatar obbap1 avatar patrick-ogrady avatar rajranjan0608 avatar stephenbuttolph avatar sukantoraymond avatar yulin-dong 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

avalanche-docs's Issues

Syntax of `--http-host` parameter for avalanchego is unclear in the docs

(I'm not sure if this is the right repository for this, because I couldn't find the relevant documentation here but here it goes)

The syntax of --http-host command-line parameter for avalanchego is unclear in the docs: https://docs.avax.network/build/references/command-line-interface

  • Does it accept only IP addresses, or does it accept hostnames too? (I looked at the golang docs https://pkg.go.dev/net it looks like it accepts hostnames too)
  • Is it possible to provide multiple http-host parameters to make avalanchego listen on multiple IP addresses like by repeating --http-host or comma separating hosts etc? (Doesn't seem possible)

I would've sent a PR request if I could find the docs.

Update Create a new Blockchain docs.

In our create a new blockchain tutorial it's not clear that your validator must be validating the default subnet before creating your own subnet and adding a validator and blockchain.

Make the docs more clear when there are implicit and understood steps happening. Link out to the tutorials that cover those core and understood steps just so people who don't know the platform as well as us don't get tripped up on something which we consider super basic and obvious.

Looking for help: Understanding the Working Example section of the Avalanche Consensus chapter

Hello,
first of all I want to thank you for the great documentation. It is really a joy reading through this!
I read through the Avalanche Consensus chapter today and struggle with understanding one of the steps of the Working Example section.
I hope it is okay to contact you this way - it would be really nice if you could help me with clearing up my misunderstanding.

In the middle of the example, the node learns about a transaction Y' which conflicts with transaction Y.
The example then states In this case, two of them say that they prefer Y' and two of them say that they do not prefer Y'
I do not understand why some of the validators would answer that they do not prefer Y' in this case.

Figure 10 in the consensus whitepaper (https://www.avalabs.org/whitepapers) states that a validator will respond with a yes vote for a transaction T, if every ancestor T' is preferred among competing transactions.
As far as I understand the example, the transaction Y' has the ancestors W and V (and other accepted ancestors that were omitted from the example).
Both, W and V should be prefered because the do not have any competing transactions in the examnple as far as I see.

What is the reason for these validators to answer that they do not prefer Y'?

Thanks a lot in advance!

Broken links for snowman and avalanche consensus protocol

Standardize Dapps guides for Truffle, Hardhat & Foundry

The guides of the dev toolchains Truffle, Hardhat and Foundry are structured very differently, which makes it hard to compare the different tools and choose the appropriate setup.

  • The guides use different wordings for their headings (Prerequisites vs. Requirements vs. Dependencies) and they appear in different orders
  • The Hardhat guide starts with a general introduction to Avalanche, which I think can be removed
  • The Foundry guide is not linked on the Smart Contract Overview

I will submit a pull request with a standardized format for the guides

IPCDefaultChainIDs params explanation is missing

Hi, for IPC params, in doc https://docs.avax.network/build/references/avalanchego-config-flags/#ipcs

IPCS
--ipcs-chain-ids (string)

Comma separated list of chain ids to connect to (e.g. 11111111111111111111111111111111LpoYY,4R5p2RXDGLqaifZE4hHWH9owe34pfoBULn1DrQTWivjg8o4aH). There is no default value.
--ipcs-path (string)
The directory (Unix) or named pipe prefix (Windows) for IPC sockets. Defaults to /tmp.

doc only have two fields, but actually, there are three fields defined in the program, the IPCDefaultChainIDs param is not covered in doc. If I don't give it a value, there's no IPC file generated.

Error in Guide: Using Truffle with the Avalanche C-Chain

When working through the guide, after funding, I get this error.

allenharper@Allens-Mac truffle % truffle exec fund-cchain-addresses.js --network development
Using network 'development'.

Exporting 1000 AVAX to each address on the C-Chain...
23xvbLVDTfv73hi7FZfSAA2mEVZiBccMsSBsd5KBM3EQV488Jk
Importing AVAX to the C-Chain...
Please wait
YmTA3qCLiF4nMPRM6L5HQbetQ7znYBuRoSm31Y4yCh8KPZmQ5
allenharper@Allens-Mac truffle % truffle console --network development                      
truffle(development)> accounts
[
  '0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC',
  '0x9632a79656af553F58738B0FB750320158495942',
  '0x55ee05dF718f1a5C1441e76190EB1a19eE2C9430',
  '0x4Cf2eD3665F6bFA95cE6A11CFDb7A2EF5FC1C7E4',
  '0x0B891dB1901D4875056896f28B6665083935C7A8',
  '0x01F253bE2EBF0bd64649FA468bF7b95ca933BDe2',
  '0x78A23300E04FB5d5D2820E23cc679738982e1fd5',
  '0x3C7daE394BBf8e9EE1359ad14C1C47003bD06293',
  '0x61e0B3CD93F36847Abbd5d40d6F00a8eC6f3cfFB',
  '0x0Fa8EA536Be85F32724D57A37758761B86416123'
]
truffle(development)> await web3.eth.getBalance(accounts[0]);
'50000001000000000000000000'
truffle(development)> await web3.eth.getBalance(accounts[1]);
'1000000000000000000'
truffle(development)> migrate --network development

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.



Starting migrations...
======================
> Network name:    'development'
> Network id:      43112
> Block gas limit: 8000000 (0x7a1200)


1_initial_migration.js
======================

   Deploying 'Migrations'
   ----------------------

Error:  *** Deployment Failed ***

"Migrations" -- cb is not a function.

    at /usr/local/lib/node_modules/truffle/build/webpack:/packages/deployer/src/deployment.js:365:1
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at Migration._deploy (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:70:1)
    at Migration._load (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:56:1)
    at Migration.run (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:217:1)
    at Object.runMigrations (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:150:1)
    at Object.runFrom (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:110:1)
    at Object.run (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:87:1)
    at runMigrations (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate/run.js:80:1)
    at Object.module.exports [as run] (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate/run.js:44:1)
    at Command.run (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/command.js:189:1)

truffle(development)> 

Refactor simple Rust VM docs

This issue issue covers a followup to the initial documentation page for the Rust SDK simple VM. The initial draft is code heavy and should reference code blocks via GitHub where possible and add more details explanations on the actual implementation details.

ref, #1071

multiple nodes monitoring dashboard

Hi, this official tutorial introduced a method for monitoring one node metrics, but what if I have multi nodes?

The dashboard needs a drop-down menu to select host. Something like

image

Otherwise, say I have 4 nodes, so I need 4x of those same dashboard:

image

fund-cchain-addresses.js Script doesn't work

Hi,

I would like to use the script you did to auto fund c-chain addresses with truffle but I get an error :

Error: problem parsing address 'X-custom18jma8ppw3nhx5r4ap8clazz0dps7rv5u9xde7p': expected hrp "local" but got "custom"

The truffle-config.js :

const Web3 = require('web3')
const HDWalletProvider = require('@truffle/hdwallet-provider')

const protocol = 'http'
const ip = '127.0.0.1'
const port = 9650

Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send
const provider = new Web3.providers.HttpProvider(`${protocol}://${ip}:${port}/ext/bc/C/rpc`)

const privateKeys = [
  '0x56289e99c94b6912bfc12adc093c9b51124f0dc54ac7a766b2bc5ccf558d8027',
  '0x7b4198529994b0dc604278c99d153cfd069d594753d471171a1d102a10438e07',
  '0x15614556be13730e9e8d6eacc1603143e7b96987429df8726384c2ec4502ef6e',
  '0x31b571bf6894a248831ff937bb49f7754509fe93bbd2517c9c73c4144c0e97dc',
  '0x6934bef917e01692b789da754a0eae31a8536eb465e7bff752ea291dad88c675',
  '0xe700bdbdbc279b808b1ec45f8c2370e4616d3a02c336e68d85d4668e08f53cff',
  '0xbbc2865b76ba28016bc2255c7504d000e046ae01934b04c694592a6276988630',
  '0xcdbfd34f687ced8c6968854f8a99ae47712c4f4183b78dcc4a903d1bfe8cbf60',
  '0x86f78c5416151fe3546dece84fda4b4b1e36089f2dbc48496faf3a950f16157c',
  '0x750839e9dbbd2a0910efe40f50b2f3b2f2f59f5580bb4b83bd8c1201cf9a010a',
]

module.exports = {
  networks: {
    development: {
      provider: () => {
        return new HDWalletProvider({
          privateKeys: privateKeys,
          providerOrUrl: provider,
        })
      },
      network_id: '*',
      gas: 3000000,
      gasPrice: 225000000000,
    },
  },
}

The command I run:

truffle exec fund-cchain-addresses.js --network development

Details:
I manually run a local test network

Don't hesitate if you need more details ✌️

Thanks,

Missing staking documentation

It is not clear what happens if you lose your node staker.crt and starker.key keys and your node crashes irrecoverably. Do you only lose your staking rewards or do you also lose all of the avax you staked?

Search Results for API Brings up unhelpful results

Searching APIs on the docs site brings up a specific API path that leads to a page with no content:

Screen Shot 2022-05-20 at 11 10 07

First result:
https://docs.avax.network/apis/avalanchejs/modules/src_apis_socket/
Screen Shot 2022-05-20 at 11 10 30

A lot of other search results link to similar types of pages instead of the content a user would likely be looking for as the first result as well. For example, searching metrics brings up this where the first result has no real content and the second is (to me) the most likely thing a user would be looking for. Would it be possible to remove these pages that don't have any content from the search results?

Screen Shot 2022-05-20 at 11 11 20

"http-host": "" by default is dangerous in avalanchego-installer.sh

The avalanchego-installer.sh is a heavenly gift, all right. However, it creates a .avalanchego/configs/node.json config file which includes a "http-host": "" directive. This opens port 9650 on the Internet. I know validators should protect their servers using any flavor of iptables to weed out unwanted requests. It's not always the case, however. It happened to me (messed up my setup), it happened to someone else on Discord today (wasn't even aware of the situation). This is dangerous for the network, and I suggest removing this line from the script.

Consequences: logs show a bunch of

Apr 02 03:53:23 avalanche avalanchego[1914078]: INFO [04-02|03:53:23.300] Submitted transaction hash=0xdb8ef72c29e74edd7a7a5548e0b01c127c85809e842b322e93a5114068679e21 from=0x000010ED59bCb8FAC3AECb568aefBf8b49daEA02 nonce=121 recipient=0x000010ED59bCb8FAC3AECb568aefBf8b49daEA02 value=0 type=2 gasFeeCap=63,363,090,303 gasTipCap=63,363,090,303 gasPrice=63,363,090,303

then a bunch of

Apr 02 04:22:42 avalanche avalanchego[1914078]: WARN [04-02|04:22:42.967] Served eth_call conn=103.100.174.14:61740 reqid=924 execTime="948.173µs" procTime="949.241µs" totalTime="949.722µs" err="execution reverted: INSUFFICIENT_OUTPUT" errdata=0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000013494e53554646494349454e545f4f555450555400000000000000000000000000

health.health give "healthy": false, node is benched. Restart the service, but false again is a matter of hours at most, rinse, repeat, until the directive is deleted from the config file or the validator sets up a correct iptables configuration.

Turkish Branch

Hi,

Do u have any plan to finish turkish documentation? I already translate some parts but Turkish branch of this repo is not seems like in your priority. I want to contribute Turkish branch, so if you have any milestones for Turkish branch can you share?

Best Regards.

consensus doc - dose higher weighted validator receive new tx faster?

Hi, from this consensus document https://docs.avax.network/learn/platform-overview/avalanche-consensus/#validators

It is said

To become a validator, a node must bond (stake) something valuable (AVAX). The more AVAX a node bonds, the more often that node is queried by other nodes. When a node samples the network it's not uniformly random. Rather, it's weighted by stake amount.

Question1

As per my understanding, the newTx’s gossip is an independent process, it's not sampled the weight of the stake amount, right? Actually, I have read the source code, it's sampled by

	peers := n.samplePeers(subnetID, validatorOnly, numValidatorsToSend, numNonValidatorsToSend, numPeersToSend)

So as long as I am a validator, suppose the chance of receiving newTx is the same, no matter how much I staked, right?

Question2

In terms of consensus, the validator is weight-sampled. But newTx propagation path is not the same as the consensus path, some validator not even know the tx yet, how can they make the decision to include it or not?

Create a Local Test Network page have some outdated examples

This page has an outdated example: https://docs.avax.network/quickstart/create-a-local-test-network

The following example is probably outdated if I'm not missing something:

cd ${HOME}/go/src/github.com/ava-labs/avalanche-network-runner
go install -v ./cmd/avalanche-network-runner

The contents of the cmd folder as of today are:

drwxrwxr-x 2  4096 Tem 21 22:56 control
drwxrwxr-x 2  4096 Tem 21 22:56 ping
-rw-rw-r-- 1  877 Tem 21 22:56 root.go
drwxrwxr-x 2 4096 Tem 21 22:56 server         

There is no file named avalanche-network-runner. In addition, event when I install root.go I can't find the avalanche-network-runner command anywhere in my system.

Thank you.

Platform VM Tx format has no mention of 'Block' and how parse them

I was trying to map what was coming out of avalanchego's IPC socket for the PChain by reading this page : https://docs.avax.network/build/references/platform-transaction-serialization

But I could not map the bytes I was getting and the tx format mentioned in that page .

After reading the code of Ortelius, I think that there is some missing piece of information in the documentation .

There are no mentions of 'Block' and how we should parse them in that page .

Proposed feature: avalanchego-installer.sh script checks latest release version against running version before stopping service

Currently, if you run avalanchego-installer.sh then it stops the service even if the service's version is the same as the latest release version on github. It would be nice to be able to run avalanchego-installer.sh as a cron job once a day or so, to get automatic updates without stopping the service for no reason. Thus I propose that upon detecting a running avalanche service, the update script should retrieve its version and compare it to the latest release version from github; if they are the same, then it should exit successfully while taking no further action. The script already has a --reinstall parameter if someone wants to run the script regardless of whether this check passes.

Using Truffle with the Avalanche C-Chain not working

I have a set of smart contracts that work very well with ganache. Now I am trying to run them with avalanche and I am following the documentation in:
https://docs.avax.network/build/tutorials/smart-contracts/using-truffle-with-the-avalanche-c-chain
I am using Avast like written in the doc, even in other places it says Avast is deprecated, however, the documentation with truffle is set for avast. When I try to use the network with the command:

      npx truffle console --network development

I get the error:

Error: ProviderSubprovider - specified provider does not have a sendAsync method
    at new ProviderSubprovider (/home/user/node_modules/web3-provider-engine/subproviders/provider.js:12:34)
    at new HDWalletProvider (/home/user/node_modules/@truffle/hdwallet-provider/src/index.ts:255:31)
    at Object.provider (/home/user/truffle-config.js:69:16)
    at Object.getProvider (/home/user/node_modules/truffle/build/webpack:/packages/provider/index.js:20:1)
    at Object.create (/home/user/node_modules/truffle/build/webpack:/packages/provider/index.js:13:1)
    at TruffleConfig.get [as provider] (/home/user/node_modules/truffle/build/webpack:/packages/config/dist/configDefaults.js:213:1)
    at Object.detect (/home/user/node_modules/truffle/build/webpack:/packages/environment/environment.js:19:1)
    at Object.run (/home/user/node_modules/truffle/build/webpack:/packages/core/lib/commands/console.js:47:1)
    at Command.run (/home/user/node_modules/truffle/build/webpack:/packages/core/lib/command.js:172:1)
    at Object.586806 (/home/user/node_modules/truffle/build/webpack:/packages/core/cli.js:57:1)
    at __webpack_require__ (/home/user/node_modules/truffle/build/webpack:/webpack/bootstrap:18:1)
    at __webpack_require__.x (/home/user/node_modules/truffle/build/webpack:/webpack/bootstrap:36:1)
    at Function.__webpack_require__.x (/home/user/node_modules/truffle/build/webpack:/webpack/runtime/startup chunk dependencies:36:1)
    at /home/user/node_modules/truffle/build/webpack:/webpack/startup:3:1
    at Object.<anonymous> (/home/user/node_modules/truffle/build/cli.bundled.js:640:12)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)

I am using Ubuntu 20.04
Truffle v5.4.10 (core: 5.4.10)
Solidity - 0.8.7 (solc-js)
Node v10.15.3
Web3.js v1.5.2

What I am doing wrong?
thanks in adavance

tx produces more unlocked (1000000) than it consumes (0)

I am following the official guide named “Deploying Subnet with EVM Based Blockchain using AvalancheJS

  • I am using the same genesis.json file with updated data as indicated in the guide.
  • The problem occurs at the step in which we add a validator to our subnet. We simply try to run the file named addSubnetValidator.js.

The screenshot of the error message:
Ekran Resmi 2022-10-20 01 04 10

The error message:

/Users/usr/node_modules/avalanche/dist/common/jrpcapi.js:64
                    throw new Error(resp.data.error.message);
                          ^

Error: couldn't issue tx: flow check failed: tx produces more unlocked "BUuypiq2wyuLMvyhzFXcPyxPMCgSp7eeDohhQRqTChoBjKziC" (1000000) than it consumes (0)

Request feature on transactions listener

Hello !

I wanted to use /ext/bc/X/events websocket endpoint to listen transactions on multiple addresses.
https://docs.avax.network/build/avalanchego-apis/exchange-chain-x-chain-api#events

Problem

I receive only the txID but I don't know from which exact address submitted it came from.

Exemple ws message received:
{"txID":"22HWKHrREyXyAiDnVmGp3TQQ79tHSSVxA9h26VfDEzoxvwveyk"}

Proposed solution

{"txID":"22HWKHrREyXyAiDnVmGp3TQQ79tHSSVxA9h26VfDEzoxvwveyk", "fromAddress": "X-fuji...."}

With this output, I know the address who receives the coins :)

Do you think it would be possible ?

Thank for your great work 🙏

Update Network Protocol Spec

The existing spec is quite out of date... For example it references a few messages that no longer exist:

  • GetVersion
  • GetPeers

It also seems to be missing... A few messages...

  • Pong
  • Ping
  • GetAcceptedFrontier
  • AcceptedFrontier
  • GetAccepted
  • Accepted
  • GetAncestors
  • Ancestors
  • AppRequest
  • AppResponse
  • AppGossip
  • GetStateSummaryFrontier
  • StateSummaryFrontier
  • GetAcceptedStateSummary
  • AcceptedStateSummary

It also seems to use SubnetID where it should be using ChainID

Genesis and allocations documentation

It would be really nice to document Genesis configuration part, especially allocations. Right now, it is necessary to read code in order to understand how properly configure validators for custom network.

E.g. I'm trying to solve this error message:

panic: runtime error: index out of range [1] with length 1

goroutine 1 [running]:
github.com/ava-labs/avalanchego/genesis.FromConfig(0xc0001aa360)
        /root/go/src/github.com/ava-labs/avalanchego/genesis/genesis.go:369 +0x1438
...

My investigation leads me to this code in genesis/genesis.go:

    allNodeAllocations := splitAllocations(skippedAllocations, len(config.InitialStakers))
    endStakingTime := genesisTime.Add(time.Duration(config.InitialStakeDuration) * time.Second)
    stakingOffset := time.Duration(0)
    for i, staker := range config.InitialStakers {
        nodeAllocations := allNodeAllocations[i]

Which, in its turn, leads me to the code where allocations from the config are being split according to nodes weights. That code I can't understand in 10 minutes. Especially this part seems to be strange:

    currentNodeAllocation = append(currentNodeAllocation, currentAllocation)
    allNodeAllocations = append(allNodeAllocations, currentNodeAllocation)

It looks like any element of allNodeAllocations is a list of only 1 element which defeats the purpose of splitting.

Most likely I'm missing something about it.. Could you document how allocations must be configured in Genesis, please?

AVM Transaction Format: Misplaced Field in Signed Transaction/Unsigned Transaction

In the documentation for the AVM Transaction Format, the field CodecID is misplaced at the Signed Transaction.

Issue

Currently, a Signed Transaction includes a field CodecID in the avalanche documentation. This is incorrectly placed, the CodecID actually belongs to an Unsigned Transaction, and needs to be included when signing the transaction to produce a list of Credentials.

See:

Expected documentation

The CodecID is part of an Unsigned Transaction, and not a Signed Transaction.

I noticed this issue while implementing my own rust avalanche wallet, the CodecID has to be included in the signed message to be accepted. A quick look at the avalanche js source code also revealed that the CodecID is a part of an Unsigned Transaction there, so this is most likely an issue with the documentation.

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.