hdac-io / friday Goto Github PK
View Code? Open in Web Editor NEWDevelopment repository for friday mainnet
License: Apache License 2.0
Development repository for friday mainnet
License: Apache License 2.0
#![no_std]
extern crate alloc;
use alloc::string::String;
use contract::{
contract_api::{runtime, storage, TURef},
unwrap_or_revert::UnwrapOrRevert,
};
use types::{ApiError, Key};
const KEY: &str = "special_value";
fn store(value: String) {
let value_ref: TURef<String> = storage::new_turef(value);
let value_key: Key = value_ref.into();
runtime::put_key(KEY, value_key);
}
#[no_mangle]
pub extern "C" fn call() {
let value: String = runtime::get_arg(0)
.unwrap_or_revert_with(ApiError::MissingArgument)
.unwrap_or_revert_with(ApiError::InvalidArgument);
store(value);
}
clif contract query address $(clif keys show <wallet_alias> -a) special_value
{
"value": "string_value:\"\\005\\000\\000\\000bryan\" "
}
gas
and gas_price
fee
parameter in bond/unbond"/staking/validators" on rest-server gives wrong results
tuesday-0001
name: friday
server_name: nodef
client_name: clif
version: 0.11.0
commit: 2495bc7d0b29a3def8886edb934117f7440a3b8e
build_tags: Linux
go: go version go1.14.3 linux/amd64
name: friday
server_name: nodef
client_name: clif
version: 0.11.0
commit: 2495bc7d0b29a3def8886edb934117f7440a3b8e
build_tags: Linux
go: go version go1.14.3 linux/amd64
clif rest-server --laddr tcp://0.0.0.0:1317 --chain-id tuesday-0001 --trust-node
$ clif hdac validator
- operator_address: friday1r70334sstylnvcdy0du9w63apnqc2tnj0yx49k02v0k3hq00e7jsj56ly4
consensus_pubkey:
publickey: {}
description:
moniker: ore
identity: ""
website: ""
details: ""
stake: "100000000000000000000000"
- operator_address: friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf
consensus_pubkey:
publickey: {}
description:
moniker: ATEAM
identity: 0CB9A4E7643FF992
website: ""
details: ""
stake: "1008000000000000000000"
- operator_address: friday184t30gv877t97037hhgcdqyg4884f75d4tsnasvczna4577e88ysmash7d
consensus_pubkey:
publickey: {}
description:
moniker: vala
identity: ""
website: ""
details: ""
stake: "100000000000000000000000"
- operator_address: friday1vnyzunttlzp32hvjf6pez6yxfvh8mszpw902jr72sexpcg60n3ns6uv46v
consensus_pubkey:
publickey: {}
description:
moniker: virgin
identity: ""
website: ""
details: ""
stake: "100000000000000000000000"
- operator_address: friday1m2k9weef3z6wtx4fkvh4kyq9xlsnhypgcecupvynn9guzmjwvc6q0hntt5
consensus_pubkey:
publickey: {}
description:
moniker: stock
identity: ""
website: ""
details: ""
stake: "100000000000000000000000"
curl -s localhost:1317/staking/validators
{"height":"118581","result":[
{
"operator_address": "fridayvaloper184t30gv877t97037hhgcdqyg4884f75d4tsnasvczna4577e88ysfa0sat",
"consensus_pubkey": "fridayvalconspub16jrl8jvqqymhwm2x2s6xg4t6wefx5ee4vdzryjr3xau55sfh0ge9xn2ctpmyzsmfga2hgkpkg9fxjstfddg924r80quj7e6kdd25j4r6x3gkgc6sxdyr23mtwepxkwzzv4a8zcmxdcck6arwtp9ywnjddpfk57n9d3jxws3cdesnvnmx0pxk5cm6da6ng5tg2ee5ymmeda29jvjptpfnvng8kvkvs",
"jailed": false,
"status": 2,
"tokens": "100000000",
"delegator_shares": "100000000.000000000000000000",
"description": {
"moniker": "vala",
"identity": "",
"website": "",
"details": ""
},
"unbonding_height": "0",
"unbonding_time": "1970-01-01T00:00:00Z",
"commission": {
"commission_rates": {
"rate": "0.100000000000000000",
"max_rate": "0.200000000000000000",
"max_change_rate": "0.010000000000000000"
},
"update_time": "2020-07-08T13:35:30.486554018Z"
},
"min_self_delegation": "1"
}
]}
## rest-server log
I[2020-07-10|11:45:35.788] Served RPC HTTP response module=rest-server method=GET url=/staking/validators status=200 duration=2 remoteAddr=127.0.0.1:56858
## Keys of ATEAM
$ echo -e "acc addr: $(clif keys show ATEAM -a)" && echo -e "val addr: $(clif keys show ATEAM --bech=val -a)"
acc addr: friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf
val addr: fridayvaloper1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq872370
## Search
$ clif hdac validator --from friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf -o json | jq
{
"address": "friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf",
"consensus_pubkey": "fridayvalconspub16jrl8jvqq9shgd6ed924q5m02fz9vjz5ggckwjt9g335stm6d4k5cmr2wp6n23nkx9grqm6vxf54wutgga89ws6hwyeryvjwfdmyg3zjwp4yvs2sd9uxss25gan45463v9t8g36kf5chqaj4tguhzapnd3kxx73tgd3hqjrtxem55mn42ackyvp42ehnxm2kfpmrg3n3092ycd3n244524g7z5wrz",
"description": {
"moniker": "ATEAM",
"identity": "0CB9A4E7643FF992",
"website": "",
"details": ""
},
"stake": "1008000000000000000000"
}
#### ATEAM
$ curl -s localhost:1317/staking/validators/fridayvaloper1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq872370
{"error":"{\"codespace\":\"staking\",\"code\":101,\"message\":\"validator does not exist for that address\"}"}
## rest-server log
I[2020-07-10|12:55:31.419] Served RPC HTTP response module=rest-server method=GET url=/staking/validators/fridayvaloper1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq872370 status=500 duration=4 remoteAddr=127.0.0.1:35882
#### The validator shown in "/staking/validators"
$ curl -s localhost:1317/staking/validators/fridayvaloper184t30gv877t97037hhgcdqyg4884f75d4tasvczna4577e88ysfa0sat
{"height":"122280","result":{
"operator_address": "fridayvaloper184t30gv877t97037hhgcdqyg4884f75d4tsnasvczna4577e88ysfa0sat",
"consensus_pubkey": "fridayvalconspub16jrl8jvqqymhwm2x2s6xg4t6wefx5ee4vdzryjr3xau55sfh0ge9xn2ctpmyzsmfga2hgkpkg9fxjstfddg924r80quj7e6kdd25j4r6x3gkgc6sxdyr23mtwepxkwzzv4a8zcmxdcck6arwtp9ywnjddpfk57n9d3jxws3cdesnvnmx0pxk5cm6da6ng5tg2ee5ymmeda29jvjptpfnvng8kvkvs",
"jailed": false,
"status": 2,
"tokens": "100000000",
"delegator_shares": "100000000.000000000000000000",
"description": {
"moniker": "vala",
"identity": "",
"website": "",
"details": ""
},
"unbonding_height": "0",
"unbonding_time": "1970-01-01T00:00:00Z",
"commission": {
"commission_rates": {
"rate": "0.100000000000000000",
"max_rate": "0.200000000000000000",
"max_change_rate": "0.010000000000000000"
},
"update_time": "2020-07-08T13:35:30.486554018Z"
},
"min_self_delegation": "1"
}}
## rest-server log
I[2020-07-10|12:59:05.047] Served RPC HTTP response module=rest-server method=GET url=/staking/validators/fridayvaloper184t30gv877t97037hhgcdqyg4884f75d4tsnasvczna4577e88ysfa0sat status=200 duration=11 remoteAddr=127.0.0.1:36270
EE hash as a query parameter
Tendermint block hash as a query parameter
staked
should be zero for the address below but printed as same as the available asset in REST call.
This issue is not occurred in clif
.
http://3.34.5.208:1317/hdac/stake?address=friday193lmkelm57nvsrafm4fewjs3s8nq6eduukev7z4kz2ac3h64elqsn9llrc
I checked by clif hdac getstake
and clif hdac getbalance
and the REST result of hdac/stake
prints of the value hdac/balance
https://github.com/hdac-io/friday/pull/24/files#diff-27ff9c4424d840126cd8ee0732fba284R12
Do we need to rm $NODE_DIR?
If not, it would be better.
If we delete it at install time, we always need to full re-sync
./clif
(should be clif
)--token-contract-address
instead of --token_contract_address
bond
cmd usage
Must*
key conversion logic in keeper logic and make guarantee of solid running or fix[
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"amount": "1000000000000000000"
}
]
[
{
"address": "Hash(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=)",
"amount": "1000000000000000000"
}
]
or
[
{
"type": "hash",
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"amount": "1000000000000000000"
}
]
stake
seems to be renamed into delegation
in the below at clif
{
"address": "friday1ajc82rcjzgspdzr3jfv9fzevxxcmpzs6kky9dm0u353em4jatnsq6hp382",
"consensus_pubkey": "fridayvalconspub16jrl8jvqqye8jnrcxpdxsvj02pnhwutwxegnye2p2dmyj4mf24k4wsnwxdn9gemzwvux23rgwfmz7jnsx4vrsazetfvnvnm2wee5ketegse56m6n9af953zt2e28jsnswc6ryjptxdx8jjekv9rn27nvwac5ymrrfaurx4ntfeexw73jfpey6st4v465w4mfffkkynrp2ph526jxvetrs5sp8qyhs",
"description": {
"moniker": "Ozys",
"identity": "",
"website": "",
"details": ""
},
"stake": "10000000000000000000000"
}
As-is
Voter query:
[
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"amount": "1000000000000000000"
}
]
To-be
[
{
"address": "fridayurefwoefoshgaifgiaerifjawoiefihef234tegjreing",
"amount": "1000000000000000000"
}
]
PublicKey
form into JSON argument[
{"name": "method", "value": {"string_value": "transfer"}},
{"name": "my_address", "value": {"key": {"address": {"account": "9d39b7fba47d07c1af6f711efe604a112ab371e2deefb99a613d2b3dcdfba414"}}}},
{"name": "amount", "value": {"big_int": {"value": "50000", "bit_width": 512}}}
]
PublicKey
from CLI, and replace JSON[
{"name": "method", "value": {"string_value": "transfer"}},
{"name": "my_address", "value": {"key": {"address": {"account": "friday1jk2zrqqa98pwax7cq0xgkqw67qk2p8nhcpup8k"}}}},
{"name": "amount", "value": {"big_int": {"value": "50000", "bit_width": 512}}}
]
clif
always read default home ~/.clif
though the cmd has --home
flagmake integration-tests
$ ./friday executionlayer transfer "from address" "to address" 1 16027500 --chain-id="chain_id"
friday make a tx, and make a sign tx(StdSignature).
fryd's Ante handler received StdSignatureData & tx, verfiy fail..
Looks like tx.Signatures is diffrent... need to check more
We must bond the same quantity to delegate.
(This means that twice the quantity is required to delegate the desired quantity)
tuesday-0001
name: friday
server_name: nodef
client_name: clif
version: 0.11.0
commit: 2495bc7d0b29a3def8886edb934117f7440a3b8e
build_tags: Linux
go: go version go1.14.3 linux/amd64
name: friday
server_name: nodef
client_name: clif
version: 0.11.0
commit: 2495bc7d0b29a3def8886edb934117f7440a3b8e
build_tags: Linux
go: go version go1.14.3 linux/amd64
clif hdac delegate friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf 1 0.1 --from ATEAM --chain-id "tuesday-0001"
{"chain_id":"tuesday-0001","account_number":"9","sequence":"14","fee":{"amount":[],"gas":"100000000"},"msgs":[{"type":"executionengine/Delegate","value":{"contract_address":"system:delegate","from_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","val_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","amount":"1000000000000000000","fee":"100000000000000000"}}],"memo":""}
confirm transaction before signing and broadcasting [y/N]: y
Password to sign with 'ATEAM':
height: 0
txhash: 14938C5B37FECBB860459E165BFA37789193C5C52E50F099B55DA1EAEA4C5F27
code: 6
data: ""
rawlog: '[{"msg_index":0,"success":false,"log":"%!(EXTRA string=ERROR:\nCodespace:
contract\nCode: 303\nMessage: \"execution engine - deploy error - execute : %!(EXTRA
string=Exit code: 65309)\"\n)","events":[{"type":"message","attributes":[{"key":"action","value":"executionengine"}]}]}]'
logs:
- msgindex: 0
success: false
log: |-
%!(EXTRA string=ERROR:
Codespace: contract
Code: 303
Message: "execution engine - deploy error - execute : %!(EXTRA string=Exit code: 65309)"
)
events:
- type: message
attributes:
- key: action
value: executionengine
info: ""
gaswanted: 0
gasused: 0
codespace: ""
tx: null
timestamp: ""
events: []
$ clif hdac bond --from ATEAM 2 0.1 --chain-id "tuesday-0001"
{"chain_id":"tuesday-0001","account_number":"9","sequence":"14","fee":{"amount":[],"gas":"100000000"},"msgs":[{"type":"executionengine/Bond","value":{"contract_address":"system:bond","from_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","amount":"2000000000000000000","fee":"100000000000000000"}}],"memo":""}
confirm transaction before signing and broadcasting [y/N]: y
Password to sign with 'ATEAM':
height: 0
txhash: 528B228462314D13B1FCD06B008EA5DC53B0A2BBBA54EE299E043316A565EE2C
code: 0
data: ""
rawlog: '[{"msg_index":0,"success":true,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"executionengine"}]}]}]'
logs:
- msgindex: 0
success: true
log: ""
events:
- type: message
attributes:
- key: action
value: executionengine
info: ""
gaswanted: 0
gasused: 0
codespace: ""
tx: null
timestamp: ""
events: []
$ clif hdac delegate friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf 1 0.1 --from ATEAM --chain-id "tuesday-0001"
{"chain_id":"tuesday-0001","account_number":"9","sequence":"15","fee":{"amount":[],"gas":"100000000"},"msgs":[{"type":"executionengine/Delegate","value":{"contract_address":"system:delegate","from_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","val_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","amount":"1000000000000000000","fee":"100000000000000000"}}],"memo":""}
confirm transaction before signing and broadcasting [y/N]: y
Password to sign with 'ATEAM':
height: 0
txhash: 086BDF62F48E9A2141AEC5A2A88CD866BBE58BF2E41018F162DD563C9E75C142
code: 0
data: ""
rawlog: '[{"msg_index":0,"success":true,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"executionengine"}]}]}]'
logs:
- msgindex: 0
success: true
log: ""
events:
- type: message
attributes:
- key: action
value: executionengine
info: ""
gaswanted: 0
gasused: 0
codespace: ""
tx: null
timestamp: ""
events: []
$ clif hdac delegate friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf 1 0.1 --from ATEAM --chain-id "tuesday-0001"
{"chain_id":"tuesday-0001","account_number":"9","sequence":"16","fee":{"amount":[],"gas":"100000000"},"msgs":[{"type":"executionengine/Delegate","value":{"contract_address":"system:delegate","from_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","val_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","amount":"1000000000000000000","fee":"100000000000000000"}}],"memo":""}
confirm transaction before signing and broadcasting [y/N]: y
Password to sign with 'ATEAM':
height: 0
txhash: 784B37530DEB9D7941A1F6342753716592D0A13ED81F47E3B71DCA0B4EDD904E
code: 0
data: ""
rawlog: '[{"msg_index":0,"success":true,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"executionengine"}]}]}]'
logs:
- msgindex: 0
success: true
log: ""
events:
- type: message
attributes:
- key: action
value: executionengine
info: ""
gaswanted: 0
gasused: 0
codespace: ""
tx: null
timestamp: ""
events: []
$ clif hdac delegate friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf 1 0.1 --from ATEAM --chain-id "tuesday-0001"
{"chain_id":"tuesday-0001","account_number":"9","sequence":"17","fee":{"amount":[],"gas":"100000000"},"msgs":[{"type":"executionengine/Delegate","value":{"contract_address":"system:delegate","from_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","val_address":"friday1xvs3cw9fgd6ekgvvuj3jnczeaguttxx0f0zw5mdn8jzpe2raxdnq474kaf","amount":"1000000000000000000","fee":"100000000000000000"}}],"memo":""}
confirm transaction before signing and broadcasting [y/N]: y
Password to sign with 'ATEAM':
height: 0
txhash: 8904CB8E2EB9FE2E407DF292E94575DF7AD16E54C99650C23FA520B0903C3806
code: 6
data: ""
rawlog: '[{"msg_index":0,"success":false,"log":"%!(EXTRA string=ERROR:\nCodespace:
contract\nCode: 303\nMessage: \"execution engine - deploy error - execute : %!(EXTRA
string=Exit code: 65309)\"\n)","events":[{"type":"message","attributes":[{"key":"action","value":"executionengine"}]}]}]'
logs:
- msgindex: 0
success: false
log: |-
%!(EXTRA string=ERROR:
Codespace: contract
Code: 303
Message: "execution engine - deploy error - execute : %!(EXTRA string=Exit code: 65309)"
)
events:
- type: message
attributes:
- key: action
value: executionengine
info: ""
gaswanted: 0
gasused: 0
codespace: ""
tx: null
timestamp: ""
events: []
Run clif query tendermint-validator-set
Chain Monday-0007 of Friday release v0.7.0
@slee208 (Engenius) & @liangzhiyuan (hashquark) from Discord
Stack trace
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0xc9bdb5]
goroutine 1 [running]:
github.com/hdac-io/tendermint/lite/proxy.GetCertifiedCommit(0x363c5, 0x140e400, 0xc0001198f0, 0x0, 0x0, 0xa, 0xc00022ca80, 0xedd860, 0xc0002401a0)
/home/shawnjzlee/.gvm/pkgsets/go1.14/global/pkg/mod/github.com/hdac-io/[email protected]/lite/proxy/query.go:140 +0x105
github.com/hdac-io/friday/client/context.CLIContext.Verify(0xc000187730, 0x140e400, 0xc0001198f0, 0x0, 0x0, 0x13d7f40, 0xc000010018, 0x109fe5e, 0x4, 0x0, ...)
/home/shawnjzlee/Desktop/friday/client/context/query.go:116 +0x66
github.com/hdac-io/friday/client/rpc.GetValidators(0xc000187730, 0x140e400, 0xc0001198f0, 0x0, 0x0, 0x13d7f40, 0xc000010018, 0x109fe5e, 0x4, 0x0, ...)
/home/shawnjzlee/Desktop/friday/client/rpc/validators.go:130 +0x33c
github.com/hdac-io/friday/client/rpc.ValidatorCommand.func1(0xc000b23b80, 0x1ddde40, 0x0, 0x0, 0x0, 0x0)
/home/shawnjzlee/Desktop/friday/client/rpc/validators.go:48 +0xf5
github.com/spf13/cobra.(*Command).execute(0xc000b23b80, 0x1ddde40, 0x0, 0x0, 0xc000b23b80, 0x1ddde40)
/home/shawnjzlee/.gvm/pkgsets/go1.14/global/pkg/mod/github.com/spf13/[email protected]/command.go:826 +0x453
github.com/spf13/cobra.(*Command).ExecuteC(0xc0001ae280, 0x89e770, 0xc0001ae280, 0x109ee63)
/home/shawnjzlee/.gvm/pkgsets/go1.14/global/pkg/mod/github.com/spf13/[email protected]/command.go:914 +0x2fb
github.com/spf13/cobra.(*Command).Execute(...)
/home/shawnjzlee/.gvm/pkgsets/go1.14/global/pkg/mod/github.com/spf13/[email protected]/command.go:864
github.com/hdac-io/tendermint/libs/cli.Executor.Execute(0xc0001ae280, 0x1299328, 0x2, 0xc000b25580)
/home/shawnjzlee/.gvm/pkgsets/go1.14/global/pkg/mod/github.com/hdac-io/[email protected]/libs/cli/setup.go:89 +0x3c
main.main()
/home/shawnjzlee/Desktop/friday/cmd/clif/main.go:79 +0x613
Didn't occur in clif
of v0.8.0 candidate
Currently, we are creating an address prefixed to the existing 20 bytes.
However, when a contract or account is created in execution-engine, 32 bytes different from our prefix are generated.
The address structure needs to be re-discussed for use in the platform.
{
"base_req": {
"chain_id": "testnet",
"gas": "20000000",
"memo": "",
"from": "walletelsa"
},
"fee": "100000000",
"amount":"1000000"
}
{
"base_req": {
"chain_id": "testnet",
"gas": "20000000",
"memo": "",
"from": "walletelsa",
"fee": "100000000"
},
"amount":"1000000"
}
For transfer, friday make a NewMsgExecute.
After broadcasting, fryd run to msg to use runMsgs func.
Looks like need to add router in this app.
But, only gov module have a this router.. We need to see if we need it.
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.