-
Notifications
You must be signed in to change notification settings - Fork 94
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from coinbase/patrick/initial-commit
Initial commit
- Loading branch information
Showing
24 changed files
with
4,169 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Copyright 2020 Coinbase, Inc. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
version: 2 | ||
jobs: | ||
build: | ||
docker: | ||
- image: circleci/golang:1.13 | ||
working_directory: /go/src/github.com/coinbase/rosetta-validator | ||
steps: | ||
- checkout | ||
- run: make deps | ||
- run: make test | ||
- run: make lint | ||
- run: make check-license |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
name: Bug report | ||
about: Create a report to help us improve | ||
title: '' | ||
labels: 'bug' | ||
assignees: '' | ||
|
||
--- | ||
|
||
**Describe the bug** | ||
A clear and concise description of what the bug is. | ||
|
||
**To Reproduce** | ||
Steps to reproduce the behavior: | ||
|
||
**Expected behavior** | ||
A clear and concise description of what you expected to happen. | ||
|
||
**Additional context** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
--- | ||
name: Feature request | ||
about: Suggest an idea for this project | ||
title: '' | ||
labels: 'enhancement' | ||
assignees: '' | ||
|
||
--- | ||
|
||
**Is your feature request related to a problem? Please describe.** | ||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] | ||
|
||
**Describe the solution you'd like** | ||
A clear and concise description of what you want to happen. | ||
|
||
**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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
Fixes # . | ||
|
||
### Motivation | ||
<!-- | ||
Does this solve a bug? Enable a new use-case? Improve an existing behavior? Concrete examples are helpful here. | ||
--> | ||
|
||
### Solution | ||
<!-- | ||
What is the solution here from a high level. What are the key technical decisions and why were they made? | ||
--> | ||
|
||
### Open questions | ||
<!-- | ||
(optional) Any open questions or feedback on design desired? | ||
--> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
validator-data |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# Contributing to Rosetta-Validator | ||
|
||
## Code of Conduct | ||
|
||
All interactions with this project follow our [Code of Conduct][code-of-conduct]. | ||
By participating, you are expected to honor this code. Violators can be banned | ||
from further participation in this project, or potentially all Coinbase projects. | ||
|
||
[code-of-conduct]: https://github.com/coinbase/code-of-conduct | ||
|
||
## Bug Reports | ||
|
||
* Ensure your issue [has not already been reported][1]. It may already be fixed! | ||
* Include the steps you carried out to produce the problem. | ||
* Include the behavior you observed along with the behavior you expected, and | ||
why you expected it. | ||
* Include any relevant stack traces or debugging output. | ||
|
||
## Feature Requests | ||
|
||
We welcome feedback with or without pull requests. If you have an idea for how | ||
to improve the project, great! All we ask is that you take the time to write a | ||
clear and concise explanation of what need you are trying to solve. If you have | ||
thoughts on _how_ it can be solved, include those too! | ||
|
||
The best way to see a feature added, however, is to submit a pull request. | ||
|
||
## Pull Requests | ||
|
||
* Before creating your pull request, it's usually worth asking if the code | ||
you're planning on writing will actually be considered for merging. You can | ||
do this by [opening an issue][1] and asking. It may also help give the | ||
maintainers context for when the time comes to review your code. | ||
|
||
* Ensure your [commit messages are well-written][2]. This can double as your | ||
pull request message, so it pays to take the time to write a clear message. | ||
|
||
* Add tests for your feature. You should be able to look at other tests for | ||
examples. If you're unsure, don't hesitate to [open an issue][1] and ask! | ||
|
||
* Submit your pull request! | ||
|
||
## Support Requests | ||
|
||
For security reasons, any communication referencing support tickets for Coinbase | ||
products will be ignored. The request will have its content redacted and will | ||
be locked to prevent further discussion. | ||
|
||
All support requests must be made via [our support team][3]. | ||
|
||
[1]: https://github.com/coinbase/rosetta-validator/issues | ||
[2]: https://medium.com/brigade-engineering/the-secrets-to-great-commit-messages-106fc0a92a25 | ||
[3]: https://support.coinbase.com/customer/en/portal/articles/2288496-how-can-i-contact-coinbase-support- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# Copyright 2020 Coinbase, Inc. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
FROM golang:1.13 | ||
|
||
WORKDIR $GOPATH/src/github.com/coinbase/rosetta-validator | ||
|
||
# Copy Client | ||
COPY go.sum ./go.sum | ||
COPY go.mod ./go.mod | ||
COPY main.go ./main.go | ||
COPY internal/ ./internal | ||
|
||
RUN GO111MODULE=on go install . | ||
|
||
RUN mkdir /data | ||
WORKDIR /app | ||
ENV PATH /app:$PATH | ||
RUN mv $GOPATH/bin/rosetta-validator . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
.PHONY: deps lint test add-license check-license circleci-local validator \ | ||
watch-blocks view-block-benchmarks view-account-benchmarks salus | ||
LICENCE_SCRIPT=addlicense -c "Coinbase, Inc." -l "apache" -v | ||
SERVER_ADDR=http://localhost:10000 | ||
|
||
deps: | ||
go get ./... | ||
go get github.com/stretchr/testify | ||
go get golang.org/x/lint/golint | ||
go get github.com/google/addlicense | ||
|
||
lint: | ||
golint ./internal/... | ||
|
||
test: | ||
go test -v ./internal/... | ||
|
||
add-license: | ||
${LICENCE_SCRIPT} . | ||
|
||
check-license: | ||
${LICENCE_SCRIPT} -check . | ||
|
||
circleci-local: | ||
circleci local execute | ||
|
||
salus: | ||
docker run --rm -t -v ${PWD}:/home/repo coinbase/salus | ||
|
||
validator: | ||
docker build -t rosetta-validator .; \ | ||
docker run \ | ||
-v ${PWD}/validator-data:/data \ | ||
-e DATA_DIR="/data" \ | ||
-e SERVER_ADDR="${SERVER_ADDR}" \ | ||
-e BLOCK_CONCURRENCY="32" \ | ||
-e TRANSACTION_CONCURRENCY="8" \ | ||
-e ACCOUNT_CONCURRENCY="8" \ | ||
-e LOG_TRANSACTIONS="false" \ | ||
-e LOG_BENCHMARKS="true" \ | ||
--network host \ | ||
rosetta-validator \ | ||
rosetta-validator; | ||
|
||
watch-blocks: | ||
tail -f ${PWD}/validator-data/blocks.txt | ||
|
||
view-block-benchmarks: | ||
open ${PWD}/validator-data/block_benchmarks.csv | ||
|
||
view-account-benchmarks: | ||
open ${PWD}/validator-data/account_benchmarks.csv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
# rosetta-validator | ||
|
||
[![Coinbase](https://circleci.com/gh/coinbase/rosetta-validator/tree/master.svg?style=svg)](https://circleci.com/gh/coinbase/rosetta-validator/tree/master) | ||
|
||
Once you create a Rosetta Server, you'll need to test its | ||
performance and correctness. This validation tool makes that easy! | ||
|
||
## What is Rosetta? | ||
Rosetta is a new project from Coinbase to standardize the process | ||
of deploying and interacting with blockchains. With an explicit | ||
specification to adhere to, all parties involved in blockchain | ||
development can spend less time figuring out how to integrate | ||
with each other and more time working on the novel advances that | ||
will push the blockchain ecosystem forward. In practice, this means | ||
that any blockchain project that implements the requirements outlined | ||
in this specification will enable exchanges, block explorers, | ||
and wallets to integrate with much less communication overhead | ||
and network-specific work. | ||
|
||
## Run the Validator | ||
1. Start your Rosetta Server (and the blockchain node it connects to if it is | ||
not a single binary. | ||
2. Modify the `Makefile` to point to the correct Rosetta Server port. | ||
3. Start the validator using `make validator`. | ||
4. Examine processed blocks using `make watch-blocks`. You can also print transactions | ||
by setting `LOG_TRANSACTIONS="true"` in the `Makefile`. | ||
5. Watch for errors in the processing logs. Any error will cause the validator to stop. | ||
6. Analyze benchmarks from `worker-data/block_benchmarks.csv` and | ||
`worker-data/account_benchmarks.csv` by setting `LOG_BENCHMARKS="true"` in the `Makefile`. | ||
|
||
_There is no additional setting required to support blockchains with reorgs. This | ||
is handled automatically!_ | ||
|
||
## Development | ||
* `make deps` to install dependencies | ||
* `make test` to run tests | ||
* `make lint` to lint the source code (included generated code) | ||
|
||
## Correctness Checks | ||
This tool performs a variety of correctness checks using the Rosetta Server. If | ||
any correctness check fails, the validator will exit and print out a detailed | ||
message explaining the error. | ||
|
||
### Response Correctness | ||
The validator uses the autogenerated [Go Client package](https://github.com/coinbase/rosetta-sdk-go) | ||
to communicate with the Rosetta Server and assert that responses adhere | ||
to the Rosetta Standard. | ||
|
||
### Duplicate Hashes | ||
The validator checks that a block hash or transaction hash is | ||
never duplicated. | ||
|
||
### Non-negative Balances | ||
The validator checks that an account balance does not go | ||
negative from any operations. | ||
|
||
### Balance Reconciliation | ||
#### Active Addresses | ||
The validator checks that the balance of an account computed by | ||
its operations is equal to the balance of the account according | ||
to the node. If this balance is not identical, the validator will | ||
exit. | ||
|
||
#### Inactive Addresses | ||
The validator randomly checks the balances of accounts that aren't | ||
involved in any transactions. The balances of accounts could change | ||
on the blockchain node without being included in an operation | ||
returned by the Rosetta Server. Recall that ALL balance-changing | ||
operations must be returned by the Rosetta Server. | ||
|
||
## Future Work | ||
* Automatically test the correctness of a Rosetta Client SDK by constructing, | ||
signing, and submitting a transaction. This can be further extended by ensuring | ||
broadcast transactions eventually land in a block. | ||
* Change logging to utilize a more advanced output mechanism than CSV. | ||
|
||
## License | ||
This project is available open source under the terms of the [Apache 2.0 License](https://opensource.org/licenses/Apache-2.0). | ||
|
||
© 2020 Coinbase |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
module github.com/coinbase/rosetta-validator | ||
|
||
go 1.13 | ||
|
||
require ( | ||
github.com/caarlos0/env v3.5.0+incompatible | ||
github.com/coinbase/rosetta-sdk-go v0.0.1 | ||
github.com/davecgh/go-spew v1.1.1 | ||
github.com/dgraph-io/badger v1.6.0 | ||
github.com/stretchr/testify v1.5.1 | ||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9 h1:HD8gA2tkByhMAwYaFAX9w2l7vxvBQ5NMoxDrkhqhtn4= | ||
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= | ||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= | ||
github.com/caarlos0/env v3.5.0+incompatible h1:Yy0UN8o9Wtr/jGHZDpCBLpNrzcFLLM2yixi/rBrKyJs= | ||
github.com/caarlos0/env v3.5.0+incompatible/go.mod h1:tdCsowwCzMLdkqRYDlHpZCp2UooDD3MspDBjZ2AD02Y= | ||
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= | ||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= | ||
github.com/coinbase/rosetta-sdk-go v0.0.1 h1:s6oBsnXCEmTvZxNTHZ4+sjSSWEGCtCBO7kTcED3WILc= | ||
github.com/coinbase/rosetta-sdk-go v0.0.1/go.mod h1:T7kbh9AOzlxEITJGt2Fu854vxg/yEjy5MsR1woSM5aI= | ||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= | ||
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= | ||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | ||
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= | ||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||
github.com/dgraph-io/badger v1.6.0 h1:DshxFxZWXUcO0xX476VJC07Xsr6ZCBVRHKZ93Oh7Evo= | ||
github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= | ||
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= | ||
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= | ||
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= | ||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | ||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= | ||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= | ||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | ||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | ||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= | ||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | ||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= | ||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | ||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= | ||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= | ||
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= | ||
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= | ||
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= | ||
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= | ||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= | ||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= | ||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | ||
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= | ||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= | ||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= | ||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= | ||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb h1:fgwFCsaw9buMuxNd6+DQfAuSFqbNiQZpcgJQAgJsK6k= | ||
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= | ||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= | ||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= |
Oops, something went wrong.