layr-labs / eigenlayer-cli Goto Github PK
View Code? Open in Web Editor NEWEigenLayer CLI
Home Page: https://docs.eigenlayer.xyz/
License: Other
EigenLayer CLI
Home Page: https://docs.eigenlayer.xyz/
License: Other
Hello, I get the following error after running eigenlayer operator register operator.yaml
command. I use the Goerli Network and got the Rpc through Alchemy. I think there is a problem with the SDK
https://github.com/Layr-Labs/eigensdk-go/tree/master/contracts/bindings/StrategyManager
2024-01-21T11:42:55.806Z ERROR logging/zap_logger.go:57 Failed to fetch StrategyManager address {"err": "no contract code at given address"}
github.com/Layr-Labs/eigensdk-go/logging.(*ZapLogger).Error
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/logging/zap_logger.go:57
github.com/Layr-Labs/eigensdk-go/chainio/utils.NewEigenlayerContractBindings
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/utils/bindings.go:49
github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts.BuildELChainWriter
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/clients/elcontracts/writer.go:98
github.com/Layr-Labs/eigenlayer-cli/pkg.OperatorCmd.RegisterCmd.func1
/root/eigenlayer-cli/pkg/operator/register.go:114
github.com/urfave/cli/v2.(*Command).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:279
github.com/urfave/cli/v2.(*Command).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272
github.com/urfave/cli/v2.(*Command).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272
github.com/urfave/cli/v2.(*App).RunContext
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:337
github.com/urfave/cli/v2.(*App).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:311
main.main
/root/eigenlayer-cli/cmd/eigenlayer/main.go:34
runtime.main
/usr/local/go/src/runtime/proc.go:267
no contract code at given address
operator:
address: 0x6542de144ec034ac17712da8a1cc93c13899fd4b
earnings_receiver_address: 0x6542de144ec034ac17712da8a1cc93c13899fd4b
delegation_approver_address: "0x0000000000000000000000000000000000000000"
staker_opt_out_window_blocks: 0
metadata_url: "https://raw.githubusercontent.com/enzifiri/eigenlayer-cli/master/metadata.json"
el_slasher_address: ""
bls_public_key_compendium_address: ""
eth_rpc_url: https://eth-goerli.g.alchemy.com/v2/Jq1oomMShB5EaFoDz80Ay8xAN2WiAUiV
private_key_store_path: /root/.eigenlayer/operator_keys/wallet.ecdsa.key.json
signer_type: local_keystore
bls_private_key_store_path: /root/.eigenlayer/operator_keys/wallet.bls.key.json
chain_id: 5
Ubuntu 20.04 LTS
go version go1.21.6 linux/amd64
Is your feature request related to a problem? Please describe.
Currently we show private key and message to users while key creation that please save the key. it's not well highlighted
Describe the solution you'd like
We want to highlight that and make it more visible
Describe alternatives you've considered
Additional context
Describe the bug
ERROR logging/zap_logger.go:57 Failed to fetch Slasher address {"err": "no contract code at given address"}
github.com/Layr-Labs/eigensdk-go/logging.(*ZapLogger).Error
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/logging/zap_logger.go:57
github.com/Layr-Labs/eigensdk-go/chainio/utils.NewEigenlayerContractBindings
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/utils/bindings.go:45
github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts.BuildELChainWriter
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/clients/elcontracts/writer.go:80
github.com/Layr-Labs/eigenlayer-cli/pkg.OperatorCmd.RegisterCmd.func1
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/pkg/operator/register.go:98
github.com/urfave/cli/v2.(*Command).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:279
github.com/urfave/cli/v2.(*Command).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272
github.com/urfave/cli/v2.(*Command).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272
github.com/urfave/cli/v2.(*App).RunContext
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:337
github.com/urfave/cli/v2.(*App).Run
/root/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:311
main.main
/root/go/pkg/mod/github.com/!layr-!labs/[email protected]/cmd/eigenlayer/main.go:34
runtime.main
/usr/local/go/src/runtime/proc.go:267
no contract code at given address
To Reproduce
eigenlayer operator register operator.yaml,
rpc points to goerli testnet infura and the contract address in the operator.yaml file: I have also tried BlockPI goerli rpc
I have upgrade version to 0.6.0, everything fill like on guide,
EigenLayer Delegation Manager contract address
This will be provided by EigenLayer team
el_delegation_manager_address: 0x1b7b8F6b258f95Cf9596EabB9aa18B62940Eb0a8
chain_id: 5
Expected behavior
Please give me solution because until now it has been stopped
Screenshoot
OS details
https://github.com/Layr-Labs/eigenlayer-cli/blob/master/pkg/operator/config/operator-config-example.yaml#L24
Gas cost adjustment setting not found in operator.yaml. Can it be increased?
I've also encountered this problem, and I suspect it's a gas bill issue.
Describe the bug
Cannot register operator if private_key_store_path
in operator.yaml
begins with ~ instead of /
To Reproduce
eigenlayer operator config create
~/.eigenlayer/operator_keys/bountyblok.ecdsa.key.json
eigenlayer operator register operator.yaml
Error: open ~/.eigenlayer/operator_keys/bountyblok.ecdsa.key.json: no such file or directory
To fix manually:
Set the private_key_store_path
to /root/.eigenlayer/operator_keys/bountyblok.ecdsa.key.json
Expected behavior
Support both / and ~ during eigenlayer operator config create
Example:
private_key_store_path: /root/.eigenlayer/operator_keys/bountyblok.ecdsa.key.json
private_key_store_path: ~/.eigenlayer/operator_keys/bountyblok.ecdsa.key.json
OS details
ubuntu jammy
eigenlayer version 0.7.0
Describe the bug
I am going to use pipe to input password when I execute "eigenlayer operator keys create --key-type ecdsa test". However, I got an exeception as following:
? Enter password to encrypt the ecdsa private key: panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x81456b]
goroutine 1 [running]:
github.com/AlecAivazis/survey/v2/terminal.(*RuneReader).ReadLineWithDefault.func2(...)
/home/runner/go/pkg/mod/github.com/!alec!aivazis/survey/[email protected]/terminal/runereader.go:65
github.com/AlecAivazis/survey/v2/terminal.(*RuneReader).ReadLineWithDefault(0xc0000c4380, 0x120018?, {0x1181ea0, 0x0, 0x0}, {0x0?, 0x7fdebc1b0108?, 0x50?})
/home/runner/go/pkg/mod/github.com/!alec!aivazis/survey/[email protected]/terminal/runereader.go:328 +0x8ab
github.com/AlecAivazis/survey/v2/terminal.(*RuneReader).ReadLine(...)
/home/runner/go/pkg/mod/github.com/!alec!aivazis/survey/[email protected]/terminal/runereader.go:37
github.com/AlecAivazis/survey/v2.(*Password).Prompt(0xc0000c6140, 0xc0000b74e8)
/home/runner/go/pkg/mod/github.com/!alec!aivazis/survey/[email protected]/password.go:63 +0x2cd
github.com/AlecAivazis/survey/v2.Ask({0xc0001dd1a0, 0x1, 0xc0001dd1c8?}, {0xa2f520?, 0xc000046b50}, {0xc0001dd198, 0x1, 0x10fe4d0?})
/home/runner/go/pkg/mod/github.com/!alec!aivazis/survey/[email protected]/survey.go:366 +0x36f
github.com/AlecAivazis/survey/v2.AskOne(...)
/home/runner/go/pkg/mod/github.com/!alec!aivazis/survey/[email protected]/survey.go:283
github.com/Layr-Labs/eigenlayer-cli/pkg/utils.(*prompter).InputHiddenString(0xc000042180?, {0xb77530, 0x30}, {0x0, 0x0}, 0xc000014ed0)
/home/runner/work/eigenlayer-cli/eigenlayer-cli/eigenlayer-cli/pkg/utils/prompter.go:69 +0x1b5
github.com/Layr-Labs/eigenlayer-cli/pkg/operator/keys.saveEcdsaKey({0x7ffe046986d9, 0x9}, {0xcb0a90, 0x1181ea0}, 0xc0000ac3f0, 0x0)
/home/runner/work/eigenlayer-cli/eigenlayer-cli/eigenlayer-cli/pkg/operator/keys/create.go:146 +0x175
github.com/Layr-Labs/eigenlayer-cli/pkg/operator.KeysCmd.CreateCmd.func1(0xc0001dd628?)
/home/runner/work/eigenlayer-cli/eigenlayer-cli/eigenlayer-cli/pkg/operator/keys/create.go:73 +0x216
github.com/urfave/cli/v2.(*Command).Run(0xc0000b6000, 0xc00007e400, {0xc00007e440, 0x4, 0x4})
/home/runner/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:277 +0x9d8
github.com/urfave/cli/v2.(*Command).Run(0xc0000b6420, 0xc00007e300, {0xc0000920f0, 0x5, 0x5})
/home/runner/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:270 +0xc25
github.com/urfave/cli/v2.(*Command).Run(0xc0000b6c60, 0xc00007e1c0, {0xc0000880c0, 0x6, 0x6})
/home/runner/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:270 +0xc25
github.com/urfave/cli/v2.(*Command).Run(0xc0000b6f20, 0xc00007e080, {0xc000132000, 0x7, 0x7})
/home/runner/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:270 +0xc25
github.com/urfave/cli/v2.(*App).RunContext(0xc0000b4000, {0xcb0ac8?, 0x1181ea0}, {0xc000132000, 0x7, 0x7})
/home/runner/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:335 +0x5db
github.com/urfave/cli/v2.(*App).Run(...)
/home/runner/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:309
main.main()
/home/runner/work/eigenlayer-cli/eigenlayer-cli/eigenlayer-cli/cmd/eigenlayer/main.go:34 +0x218
To Reproduce
echo '!@#123qwerQWER' | eigenlayer operator keys create --key-type ecdsa operator1
Expected behavior
generate key and ethereum address
Screenshots
OS details
Additional context
The issue is related to
AlecAivazis/survey#394
zk-org/zk#172
and
jetify-com/devbox#867
similar solution:
docker/compose#9739
docker/compose#10144
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
register/update should print that metadata updates could take up to 30 min to reflect on our webapp
Describe alternatives you've considered
Additional context
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Describe alternatives you've considered
Additional context
Describe the bug
After successfully validating config file the following error prompts:
? Enter password to decrypt the bls private key: *************
? Enter password to decrypt the ecdsa private key: *************
no contract code at given address
To Reproduce
eigenlayer operator register operator.yaml,
rpc points to goerli testnet infura and the contract address in the operator.yaml file: I have also tried blast public goerli rpc
el_slasher_address: "0xD11d60b669Ecf7bE10329726043B3ac07B380C22"
bls_public_key_compendium_address: "0xc81d3963087Fe09316cd1E032457989C7aC91b19"
chain_id: 5
Expected behavior
it worked last night, tried this morning and stopped working
Screenshots
OS details
Is your feature request related to a problem? Please describe.
Currently if I create a new ecdsa/bls key using eigenlayer operator keys create command, I am only shown the private key at that time. If I forget that, there's no way to get private key again.
Describe the solution you'd like
Implement an eigenlayer operator keys export command which can take a keyname and then export the private key to user. It will also ask for password and a double confirmation to continue.
We also want a flag where a user can provide a file location and the command can ignore default location and use that file location to decrypt key.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
When attempting to check the status of my EigenLayer node using the eigenlayer operator status operator-config.yaml command, I encounter the following error message:
2024/02/10 07:10:54 no contract code at given address
Also, git pull shows that the code is up to date! Do you have any idea why I get this error?
# All the below fields are required for successful operator registration.
operator:
# This is the standard Ethereum address format (ex: 0x6a8c0D554a694899041E52a91B4EC3Ff23d8aBD5) of your operator
# which is the ecdsa key you created or imported using EigenLayer CLI
address: myaddress (redacted)
# This is the standard Ethereum address format (ex: 0x6a8c0D554a694899041E52a91B4EC3Ff23d8aBD5)
# This is the address where your operator will receive earnings. This could be same as operator address
earnings_receiver_address: myaddress (redacted)
# This is the standard Ethereum address format (0x...)
# This is the address which operator will use to approve delegation requests from stakers.
# if set, this address must sign and approve new delegation from Stakers to this Operator
# This is optional, so you can leave it with the default value for un-gated delegation requests
delegation_approver_address: 0x0000000000000000000000000000000000000000
# Please keep this field to 0, and it can be updated later using EigenLayer CLI
staker_opt_out_window_blocks: 0
metadata_url: https://raw.githubusercontent.com/ImanSharaf/Eigen/main/metadata.json
# EigenLayer Slasher contract address
# This will be provided by EigenLayer team
el_slasher_address: 0xD11d60b669Ecf7bE10329726043B3ac07B380C22
el_delegation_manager_address: 0x1b7b8F6b258f95Cf9596EabB9aa18B62940Eb0a8
# Address of BLS Public Key Compendium contract
# This will be provided by EigenLayer team
bls_public_key_compendium_address: 0xc81d3963087Fe09316cd1E032457989C7aC91b19
# ETH RPC URL to the ethereum node you are using for on-chain operations
eth_rpc_url: redacted (it is working okay)
# Signer Type to use
# Supported values: local_keystore
signer_type: local_keystore
# Full path to local ecdsa private key store file
private_key_store_path: /root/.eigenlayer/operator_keys/iman.ecdsa.key.json
# Full path to local bls private key store file
bls_private_key_store_path: /root/.eigenlayer/operator_keys/iman.bls.key.json
# Chain ID: 1 for mainnet, 5 for Goerli, 31337 for local
chain_id: 5
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Add Telemetry to get some basic usage anonymously like this https://github.com/ava-labs/avalanche-cli/blob/main/pkg/metrics/metrics.go
Describe alternatives you've considered
Additional context
Hello,
Is there any way I can pipe password into the "operator register" command like it is possible for key creation ?
(echo "password" | eigenlayer operator keys create --key-type ecdsa [keyname])
It doesn't seem to work, when I try to pipe passord I get :
✅ Operator configuration file validated successfully 0x5c72439cb7eaDbB877c23bD3fFc8e88dc5316148
? Enter password to decrypt the ecdsa private key: Error while reading ecdsa key password
EOF
^[[48;204R^[[48;52R%
Thanks !
Describe the bug
When attempting to register an operator using the eigenlayer operator register operator.yaml command, the registration fails despite providing valid data.
Details
The metadata used in the metadata.json file corresponds exactly to the raw data available on my GitHub repository.
https://github.com/samui68400/eigenlayer-metadata/blob/main/metadata.json
I provided this GitHub link in the operator.yaml files.
All data is publicly accessible on my GitHub repository, and I have ensured that my operator.yaml file matches the example provided in the EigenLayer documentation : https://github.com/Layr-Labs/eigenlayer-cli/blob/master/pkg/operator/config/operator-config-example.yaml
To Reproduce
Run the command eigenlayer operator register operator.yaml.
Observe that the registration fails despite providing valid data.
Expected behavior
The eigenlayer operator register command should successfully register the operator using the data provided in the operator.yaml file.
OS: Linux
Version: [Insert version here]
Additional context
All data used for registration is publicly available on my GitHub repository, and I have followed the example provided in the EigenLayer documentation for creating the operator.yaml file.
Describe the bug
Codeql workflow has an issue where pipeline is failing
To Reproduce
Check the master branch
Expected behavior
It should not fail
Screenshots
OS details
Additional context
Issue unavailable
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Describe alternatives you've considered
Additional context
eigenlayer operator register operator.yaml
✅ Operator configuration file read successfully 0xAeb66247Fb4fc9b0e2C86c34649e027a0e7295FF
✅ Operator configuration file validated successfully 0xAeb66247Fb4fc9b0e2C86c34649e027a0e7295FF
? Enter password to decrypt the ecdsa private key: ****************************************************************
2024-03-01T18:59:50.494+0800 ERROR logging/zap_logger.go:57 Failed to fetch Slasher address {"err": "401 Unauthorized: project id required in the url\n"}
github.com/Layr-Labs/eigensdk-go/logging.(*ZapLogger).Error
/Users/qianjinmo/go/pkg/mod/github.com/!layr-!labs/[email protected]/logging/zap_logger.go:57
github.com/Layr-Labs/eigensdk-go/chainio/utils.NewEigenlayerContractBindings
/Users/qianjinmo/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/utils/bindings.go:45
github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts.BuildELChainWriter
/Users/qianjinmo/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/clients/elcontracts/writer.go:80
github.com/Layr-Labs/eigenlayer-cli/pkg.OperatorCmd.RegisterCmd.func1
/Users/qianjinmo/Downloads/eigenlayer-cli-master/pkg/operator/register.go:98
github.com/urfave/cli/v2.(*Command).Run
/Users/qianjinmo/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:279
github.com/urfave/cli/v2.(*Command).Run
/Users/qianjinmo/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272
github.com/urfave/cli/v2.(*Command).Run
/Users/qianjinmo/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272
github.com/urfave/cli/v2.(*App).RunContext
/Users/qianjinmo/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:337
github.com/urfave/cli/v2.(*App).Run
/Users/qianjinmo/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:311
main.main
/Users/qianjinmo/Downloads/eigenlayer-cli-master/cmd/eigenlayer/main.go:34
runtime.main
/usr/local/go/src/runtime/proc.go:271
401 Unauthorized: project id required in the url
Describe the bug
When trying to register an operator, hit this runtime error. Rerunning it worked but nevertheless, posting it here incase its a new bug.
To Reproduce
Register an operater using eigenlayer cli
2024-03-12T10:21:42.942Z DEBUG logging/zap_logger.go:45 Sending transaction
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x80634c]
goroutine 1 [running]:
github.com/ethereum/go-ethereum/core/types.(*Transaction).Hash(0x0?)
/home/danny/go/pkg/mod/github.com/ethereum/[email protected]/core/types/transaction.go:464 +0x2c
github.com/Layr-Labs/eigensdk-go/chainio/txmgr.(*SimpleTxManager).Send(0xc0003247d0, {0xd05158, 0x11e94a0}, 0x0?)
/home/danny/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/txmgr/txmgr.go:123 +0x66a
github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts.(*ELChainWriter).RegisterAsOperator(0xc00031e000, {0xd05158, 0x11e94a0}, {{0xc00014a420, 0x2a}, {0xc00014a450, 0x2a}, {0xc00014a480, 0x2a}, 0x0, ...})
/home/danny/go/pkg/mod/github.com/!layr-!labs/[email protected]/chainio/clients/elcontracts/writer.go:129 +0x1db
github.com/Layr-Labs/eigenlayer-cli/pkg.OperatorCmd.RegisterCmd.func1(0xc0002bf8b8?)
/home/danny/eigenlayer-cli/pkg/operator/register.go:126 +0x89c
github.com/urfave/cli/v2.(*Command).Run(0xc0001589a0, 0xc000130300, {0xc000124c40, 0x2, 0x2})
/home/danny/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:279 +0x9dd
github.com/urfave/cli/v2.(*Command).Run(0xc000158dc0, 0xc0001301c0, {0xc00011c2d0, 0x3, 0x3})
/home/danny/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272 +0xc2e
github.com/urfave/cli/v2.(*Command).Run(0xc000159080, 0xc000130080, {0xc000036080, 0x4, 0x4})
/home/danny/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:272 +0xc2e
github.com/urfave/cli/v2.(*App).RunContext(0xc000156000, {0xd05158?, 0x11e94a0}, {0xc000036080, 0x4, 0x4})
/home/danny/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:337 +0x5db
github.com/urfave/cli/v2.(*App).Run(...)
/home/danny/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:311
main.main()
/home/danny/eigenlayer-cli/cmd/eigenlayer/main.go:34 +0x218
OS details
Ubuntu 20
https://github.com/Layr-Labs/eigenlayer-cli/blob/master/pkg/operator/config/operator-config-example.yaml#L24
The gas cost adjustment setting is not found in operator.yaml. Can it be increased?
I'm having this problem too and I suspect it's a gas bill issue.
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
DM bindings is being changed to remove earningReciever
Update CLI when Layr-Labs/eigensdk-go#251 is closed
Describe alternatives you've considered
Additional context
When im trying to register operator im getting error :
command : eigenlayer operator register operator.yaml
✅ Operator configuration file read successfully ****************************************
✅ Operator configuration file validated successfully ******************************************
? Enter password to decrypt the ecdsa private key: *************
Failed to fetch Slasher address: Post "https://eth-goerli.g.alchemy.com/v2/*****-TGo6uXBnh7ynizHVm-13c94jeN": dial tcp: lookup eth-goerli.g.alchemy.com on 127.0.0.53:53: no such host
edit: after changing alchemy rpc from goerli to sepolia im getting error :
Failed to fetch Slasher address: no contract code at given address
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.