Dogecoin Rosetta API implementation

Dogecoin Rosetta API implementation

ROSETTA-DOGECOIN IS UNDER INITIAL DEVELOPMENT AND IF IT IS NOT BROKEN, THIS IS ACCIDENTAL. DO NOT USE THIS SOFTWARE, YET.

Overview

rosetta-dogecoin provides an implementation of the Rosetta API for Dogecoin in golang, based off the rosetta-bitcoin reference implementation provided by Coinbase. If you haven't heard of the Rosetta API, you can find more information here.

Target features for v1.0

  • Rosetta API implementation (both Data API and Construction API)
  • UTXO cache for all accounts (accessible using /account/balance)

Target Architecture

rosetta-dogecoin plans to use the syncer, storage, parser, and server package from rosetta-sdk-go instead of a new Dogecoin-specific implementation of packages of similar functionality. Below you can find a high-level overview of how everything fits together:

                               +------------------------------------------------------------------+
                               |                                                                  |
                               |                 +--------------------------------------+         |
                               |                 |                                      |         |
                               |                 |                 indexer              |         |
                               |                 |                                      |         |
                               |                 | +--------+                           |         |
                               +-------------------+ pruner <----------+                |         |
                               |                 | +--------+          |                |         |
                         +-----v-----+           |                     |                |         |
                         | dogecoind |           |              +------+--------+       |         |
                         +-----+-----+           |     +--------> block_storage <----+  |         |
                               |                 |     |        +---------------+    |  |         |
                               |                 | +---+----+                        |  |         |
                               +-------------------> syncer |                        |  |         |
                                                 | +---+----+                        |  |         |
                                                 |     |        +--------------+     |  |         |
                                                 |     +--------> coin_storage |     |  |         |
                                                 |              +------^-------+     |  |         |
                                                 |                     |             |  |         |
                                                 +--------------------------------------+         |
                                                                       |             |            |
+-------------------------------------------------------------------------------------------+     |
|                                                                      |             |      |     |
|         +------------------------------------------------------------+             |      |     |
|         |                                                                          |      |     |
|         |                     +---------------------+-----------------------+------+      |     |
|         |                     |                     |                       |             |     |
| +-------+---------+   +-------+---------+   +-------+-------+   +-----------+----------+  |     |
| | account_service |   | network_service |   | block_service |   | construction_service +--------+
| +-----------------+   +-----------------+   +---------------+   +----------------------+  |
|                                                                                           |
|                                         server                                            |
|                                                                                           |
+-------------------------------------------------------------------------------------------+

Development

All Rosetta implementations must be deployable via Docker and support running via either online or offline mode.

However, if you prefer not to use Docker during development in your own fork (e.g for low-end machines), feel free to follow the instructions in the Without Docker section.

With Docker

  • make deps to install dependencies
  • make test to run tests
  • make lint to lint the source code
  • make salus to check for security concerns
  • make build-local to build a Docker image from the local context
  • make coverage-local to generate a coverage report

Without Docker

Dependencies

Download and install the latest (current 1.16.2) version of Go.

https://golang.org/doc/install

Build

go build

Running

MODE=OFFLINE NETWORK=TESTNET PORT=8080 ./rosetta-dogecoin -d

Testing

To validate rosetta-dogecoin, install rosetta-cli and run one of the following commands:

  • rosetta-cli check:data --configuration-file rosetta-cli-conf/testnet/config.json
  • rosetta-cli check:construction --configuration-file rosetta-cli-conf/testnet/config.json
  • rosetta-cli check:data --configuration-file rosetta-cli-conf/mainnet/config.json

License

This project is available open source under the terms of the Apache 2.0 License.

rosetta-bitcoin is © 2020 Coinbase

Comments
  • С# update

    С# update

    hello, I beg you, help me get my money back with dogechain info, save my life! I will beg every day of the year, my children's education is in your hands

  • RPC Integration issue - GetBlock

    RPC Integration issue - GetBlock

    Currently GetBlock fails, with the following message:

    {"err": "invalid response: 500 Internal Server Error {\"result\":null,\"error\":{\"code\":-1,\"message\":\"JSON value is not a boolean as expected\"},\"id\":1}\n: error fetching block by hash <hash>: unable to get current block"}
    

    This is likely due to a difference between the expected JSON-RPC method parameters and the dogecoin implementation.

    This currently also prevents the Indexer process to successfully detect that dogecoind is online.

    Could be an easy fix?

  • Change config & Dockerfile to use Dogecoin software

    Change config & Dockerfile to use Dogecoin software

    1. Adapt the config files in assets/ to reflect Dogecoin

    2. Change the bitcoin build to dogecoin

    https://github.com/rosetta-dogecoin/rosetta-dogecoin/blob/e0e70cacd9367e726cb5097ee98d5e6e831ca1b1/Dockerfile#L22-L37

    can likely be replaced by a download of the 64-bit binaries from https://github.com/dogecoin/dogecoin/releases/tag/v1.14.3 and then just take out the dogecoind executable. and put it in /app/dogecoind

  • RPC Integration issue - GetBlock

    RPC Integration issue - GetBlock

    Fixes # .

    Solution

    Change blockVerbosity from int to bool and add duplicate var for txVerbosity.

    Add RawTransactionResponse type in dogecoin types.go.

    Add GetRawTransaction func for replacing the txid in dogecoin.Block.Txs with raw transactions not included in getblock.

    Add missing files from bitcoin package to dogecoin and remove dir from application.

    Add configuration folder back so we can import it how coinbase does. Currently replacing it in go.mod to point to our directory although its stilling pulling from dogecoin pkg.

    Added 1000 & 100000 block in client_fixtures for test prep.

  • Network parameters

    Network parameters

    Motivation

    Some constants for Bitcoin are currently defined in bitcoin/types.go but most of the network parameters are in btcd/chaincfg. So, we need some place to define these for Dogecoin.

    Solution

    I think the easiest way to do this is to just copy and paste the relevant definitions from btcd into our own package, which I've started in this PR:

    • genesis.go: definitions for the genesis block, genesis tx etc.
    • params.go: other network parameters like target time, checkpoints, deployments...

    Then we can modify each of these definitions to match the dogecoin source.

    Open questions

    I'm looking for feedback on this! There might be a better way to structure it...

  • Add dotenv support

    Add dotenv support

    Motivation

    Developing locally is difficult to configure since the app is looking for hardcoded paths for .conf and .ztsd files in /assets directory that are moved to a directory named /app during container build.

    Solution

    By introducing support of .env files we can allow easier manipulation of these paths in addition to other config vars. Primary motivation for use is making developing locally easier and eventually decoupling the api and dogecoind.

  • Cannot import Go modules without a version

    Cannot import Go modules without a version

    Describe the bug Go lang now expects modules to be tagged with a version. Trying to import a Go module without a version causes it to break. This is specific to: module github.com/coinbase/rosetta-bitcoin

    To Reproduce "go get" the module github.com/coinbase/rosetta-bitcoin

    Expected behavior "go get" the module github.com/coinbase/rosetta-bitcoin vx.x.x

    Additional context Excerpt from the docker logs...

    #26 65.98 go: finding module for package github.com/coinbase/rosetta-bitcoin/bitcoin #26 81.89 main.go:27:2: no matching versions for query "latest"

  • Update C++

    Update C++

    Today I will not ask for help, I want to tell you what happens when the authorities ignore messages for help. @patricklodder @doersf

    I wrote to a person who takes 50% of the balance for withdrawing 2FA and he withdrew it in 12 hours! He took out 2FA in 12 hours!! and he took all my money! this is a scam. But he took off 2FA! And I begged you to help!

  • RPC Integration issue - GetBlock

    RPC Integration issue - GetBlock

    Fixes # 17

    Motivation

    The getBlock function in the bitcoin package isn't compatible with the Dogecoin Core v1.14.3 JSON-RPC implementation.

    Solution

    When getBlock is called, two "getblock" requests are sent to the Dogecoin JSON-RPC interface, one with the verbosity parameter set to true to get block information, and the other with the verbosity parameter set to false to get a serialized block. To get transaction information, the transactions in the serialized block are decoded by sending a "decoderawtransaction" request for each transaction in the block.

  • Parse v2 AuxPoW  blocks

    Parse v2 AuxPoW blocks

    Is your feature request related to a problem? Please describe.

    As of the merging of #19, block synchronization and indexing works for version 1 encoded blocks but not version 2 AuxPoW blocks. As validation is performed by dogecoind, at this point there is no value in processing and storing the AuxPoW headers themselves, but as the serialization of the blocks is different, and the auxpow header is of variable size, at least parsing and some syntactic validation needs to be performed to be able to process these blocks.

    Describe the solution you'd like

    Roughly the following needs to happen:

    1. We'll need a custom function that parses a version 2 encoded block, but returns a version 1 block struct as expected by the generic rosetta indexer service.
    2. In our custom getBlock function in bitcoin/client.go, a small change needs to be implemented that reads the first 4 bytes of a block and decides which type of block encoding we expect. A simple if/else construction can then be used to parse an AuxPoW block if required.
    3. Would be great if we'd have some unit tests with mocks for this.

    References

    • AuxPoW serialization is documented as CAuxPow and CMerkleTx in Dogecoin Core, in src/auxpow.h
    • Detection rules for Auxpow-encoded blocks based on the version bytes is as follows:
      • byte 1 and 2 MUST equal the Chain ID which is 0x0062 for dogecoin, AND
      • byte 3 MUST equal 0x01 to signal that AuxPoW encoding was followed
    • The block heights for activation (per src/chainparams.cpp) are:
      • Mainnet: 371337
      • Testnet: 158100
      • Regtest: 20
    • @langerhans has done Dogecoin integration work on btcd in the past months and has been so kind to open up his work-in-progress at https://github.com/langerhans/btcd/tree/doge and / https://github.com/langerhans/btcutil which can serve as guidance of how to parse the AuxPoW blocks.
  • Update paths and ports for Dogecoin

    Update paths and ports for Dogecoin

    Changed the paths and ports referenced in the configuration to match dogecoind/the normal network ports. Also updated the install.sh script to point to this repository.

    I tried to change as few things as possible, so left variable names and comments alone. The actual chaincfg and network params can come later 😄

    Open questions

    I wasn't sure whether to change paths like "bitcoin-data" to "dogecoin-data" which is the location where the docker volume is mounted.

  • How does Dogecoin handle 'transaction' and 'account' in UTXO model

    How does Dogecoin handle 'transaction' and 'account' in UTXO model

    Discussed in https://github.com/rosetta-dogecoin/rosetta-dogecoin/discussions/64

    Originally posted by shiatcb March 8, 2022 Hi Team,

    I am reading the codebase but would love to see if someone could shed some light on how does Dogecoin handle transaction and account in its Rosetta implementation. Specifically:

    • Does Dogecoin expect each transaction to be associated with an account (my guess is no for UTXO chain but not very sure)?
    • Does Dogecoin store the transaction as it is in each block?
    • I saw Dogecoin implements /account/xxx APIs as other chains, e.g: /account/balance. But I don't quite understand why a UTXO chain like Dogecoin needs account info in its rosetta implementation. Is this just because Rosetta spec requires us to do so, or some other reasons?

    Some questions might be silly as I am not an expert on UTXO chain. If someone could explain a bit about my questions above, it'll be super appreciated!

    Thanks, Shi

  • Improved README - Dogecoin Logo

    Improved README - Dogecoin Logo

    Update Readme with Dogecoin Official Logo from https://dogecoin.com/

    I will help with the code, prove the love approving this one

    Fixes # .

    Motivation

    Solution

    Open questions

  • Go live date

    Go live date

    How much time approximately it will take for full development? As I can see the note in the readme file as 'ROSETTA-DOGECOIN IS UNDER INITIAL DEVELOPMENT AND IF IT IS NOT BROKEN, THIS IS ACCIDENTAL. DO NOT USE THIS SOFTWARE, YET.' I want to integrate this, so, can anyone please help by letting this know?

  • Failed to build. gozilliqa-sdk breaks

    Failed to build. gozilliqa-sdk breaks

    Hello. When I try to build (make deps) I got the following error:

    # github.com/Zilliqa/gozilliqa-sdk/keytools
    /home/fullnodes/go/pkg/mod/github.com/!zilliqa/[email protected]/keytools/secp256k1.go:40:12: privk.D.FillBytes undefined (type *big.Int has no field or method FillBytes)
    make: *** [Makefile:18: deps] Error 2
    

    Any advice, how can I fix it?

  • upgrade deps

    upgrade deps

    github.com/DataDog/zstd v1.4.5 => v1.4.8

    • The semantic versioning of this release is a bit particular since it only includes changes in the Go wrapper without any changes from the upstream C repository (https://github.com/facebook/zstd/releases).

    • Changes:

    • Fix "Go pointer to Go pointer" panics when using another writer @evanj (#97)

    • This is a recommended version as it fixes potential panics (never expected) when using a writer from another package


    github.com/coinbase/rosetta-sdk-go v0.6.5 => v0.6.10

    • Support Zero or Opposite Amount Value in Parser @KNWR KNWR released this on Mar 19 · 12 commits to master since this release

    • This release includes support for matching operations with 0 or opposite value amounts in the parser and a bug fix.

    • Changelog

    • Support for matching operations with 0 or opposite value amounts in parser #305 Fix for nil pointer dereference when initializing fetcher with timeout #304


    github.com/ethereum/go-ethereum v1.9.24 => v1.10.3

    • Geth v1.10.3 is a maintenance release, containing bug fixes and performance improvements.

    • The performance of the snapshot system has been a big focus in this release cycle. Generating a snapshot after a snap sync is approximately 10 times faster.

    • Geth command changes

    • Several race conditions in database access are resolved, reducing the potential of database corruption (#22739, #22728)

    • Large numbers in log messages now have thousands separators (#22665, #22679)

    • Geth no longer warns about database upgrades when starting with an empty database (#22803)

    • The new geth db freezer-index debugging command prints the contents of a freezer table (#22633)

    • geth --dev --datadir ... works again (#22738)

    • Geth now includes the experimental --catalyst mode for eth2 merge testing (#22641, #22697, #22770)

    • Puppeth now supports using ssh-agent for authentication (#22634)

    • Go library changes

    • State snapshot generator performance is much improved in this release (#22667, #22470, #22504)

    • It is no longer possible to upgrade snapshot databases generated by pre-Berlin geth (#22663)

    • The RPC client now returns non-2xx HTTP responses as rpc.HTTPError (#22677)

    • The ethash engine now performs less database lookups when verifying uncle headers (#21467)

    • trie.StackTrie has been refactored to improve API semantics. StackTrie methods previously took ownership of key/value byte slices passed to it, which was unintuitive for calling code (#22673, #22686, #22685)

    • RPC/GraphQL API changes

    • The gas price oracle deals much better with blocks containing transactions of very low price. Such transactions are typically generated by miners using MEV techniques (#22722)

    • eth_hashrate works again (#22765)

    • debug_traceCall now supports state overrides like eth_call (#22245)

    • EVM Tracing now reports correct gas costs for EIP-2929 state access (#22702)

    • Clef and the external signer account backend now support signing of EIP-2930 access list transactions (#22585)

    • Networking

    • Support for eth/64 has been removed. The minimum protocol version is now eth/65 (#22636)

    • The core of snap sync has been re-architected to allow for dynamic request sizes (#22668, #22777)

    • Several other correctness issues in the snap sync client are resolved (#22678, #22789, #22760, #22762, #22761)

    • DNS discovery for the snap protocol now uses the eth protocol node list. The snap-specific node list will be retired later. This is possible because more than 75% of all eth nodes support serving snap (#22808)

    • For eth and snap, the protocol handlers now report additional metrics about response latency (#22608, #22751, #22753). A Grafana dashboard incorporating the new metrics is available here.

    • Several new tests have been added in the cross-client eth protocol test suite. The tests are now more reliable and run as part of pull request CI on Travis (#22698, #22630, #22757, #22749, #22754, #22801)

    • The discv5 message handler now reflects IPv4-in-IPv6 addresses correctly when handling PING (#22703)

    • The DNS node list tools in cmd/devp2p now support setting a size limit for node lists. This was added because the list of mainnet snap protocol nodes overflowed our AWS Route53 account (#22694, #22695)

    • Build

    • The Windows build environment has been cleaned up and updated to use GCC 10 (#22811, #22788, #22804, #22821)

    • The crypto/bn256 and crypto/bls12381 packages are now fuzz-tested against gnark-crypto (#22755)

    • go-ethereum now builds correctly on OpenBSD/arm64 (#22693)

    • For a full rundown of the changes please consult the Geth 1.10.3 release milestone.

    • As with all our previous releases, you can find the:

    • Pre-built binaries for all platforms on our downloads page. Docker images published under ethereum/client-go. Ubuntu packages in our Launchpad PPA repository. OSX packages in our Homebrew Tap repository.


    github.com/fatih/color v1.10.0 => v1.12.0

    • This release adds support for the NO_COLOR. For more information check out: https://no-color.org The pull request adding this change is: #137

    github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26 => v0.0.3

    • bug fix to encode_arm64.s: some registers overwritten in memmove call

    • ARM64 memmove clobbers R16 and R17 as of https://go-review.googlesource.com/c/go/+/243357


    github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 => v1.3.0

    • Simplify chain interceptors (#421): The four (client/server, unary/stream) interceptors have to wrap a slice of interceptors in functions which satisfy the handler interface, but which are closures over the other parameters an interceptor is expected to have.

    • The previous approach accomplished this goal with recursion. This had two drawbacks: first, the code was difficult to understand, as most recursion attempts to fully encode state in function parameters, but here state was necessarily also encoded in the closure; and second, the recursive base-case meant that even the innermost interceptor was not calling the bare handler, it was calling a wrapped handler.

    • This new approach instead iteratively constructs wrappers from the inside out. It results in fewer lines of code, with fewer variables held in each closure. Hopefully this results in higher readability.


    github.com/mattn/go-isatty v0.0.12 => v0.0.13

    • Don't set termio in IsTerminal on solaris

    github.com/mitchellh/mapstructure v1.3.3 => v1.4.1

    • Fix regression where *time.Time value would be set to empty and not be sent to decode hooks properly [GH-232]

    github.com/stretchr/testify v1.6.1 => v1.7.0

    • Minor feature improvements and bug fixes

    github.com/tidwall/gjson v1.6.3 => v1.8.0

    • This commit adds the new tilde '~' operator, which when used will convert a value to a boolean before comparison.

    • For example, using the following JSON:

      { "vals": [ { "a": 1, "b": true }, { "a": 2, "b": true }, { "a": 3, "b": false }, { "a": 4, "b": "0" }, { "a": 5, "b": 0 }, { "a": 6, "b": "1" }, { "a": 7, "b": 1 } { "a": 8, "b": "true" }, { "a": 9, "b": false } { "a": 10, "b": null } { "a": 11 } ] }

    • You can now query for all true(ish) values:

      vals.#(b==~true)#

    • Which returns:

      [1,2,6,7,8]

    • Or all false(ish) values:

      vals.#(b==~false)#

    • Which returns:

      [3,4,5,9,10,11]

    • The last value which was non-existent is treated as "false"


    github.com/tidwall/pretty v1.0.2 => v1.1.1

    • Fix sorting on duplicate keys, fixes #10

    github.com/tidwall/sjson v1.1.2 => v1.1.6

    • Add example for array type

    github.com/vmihailenco/msgpack/v5 v5.1.0 => v5.3.4

    • Cleanup isEmptyValue

    go.uber.org/multierr v1.5.0 => v1.7.0

    • Add AppendInvoke to append into errors from defer blocks.

    go.uber.org/zap v1.16.0 => v1.17.0

    • Bugfixes:

    • [#867][]: Encode <nil> for nil error instead of a panic.

    • [#931][], [#936][]: Update minimum version constraints to address vulnerabilities in dependencies.

    • Enhancements:

    • [#865][]: Improve alignment of fields of the Logger struct, reducing its size from 96 to 80 bytes.

    • [#881][]: Support grpclog.LoggerV2 in zapgrpc.

    • [#903][]: Support URL-encoded POST requests to the AtomicLevel HTTP handler with the application/x-www-form-urlencoded content type.

    • [#912][]: Support multi-field encoding with zap.Inline.

    • [#913][]: Speed up SugaredLogger for calls with a single string.

    • [#928][]: Add support for filtering by field name to zaptest/observer.


    golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a => v0.0.0-20210513164829-c07d793c2f9a

    • curve25519/internal/field: fix generator module reference to x/crypto The generator submodule needs a module dependency on golang.org/x/crypto to find the type information it needs.

    • This removes the Comment call from CL 319469 because it does not seem to generate the intended output. See golang/go#46155.

    • Fixes golang/go#46133


    golang.org/x/net v0.0.0-20200904194848-62affa334b73 => v0.0.0-20210525063256-abc453219eb5

    • route: remove check for unparsed route message bytes Under some circumstances, DragonFly BSD appears to put more addresses in route messages than are indicated in the message header. Remove the recently-added check for unparsed bytes in a route message to avoid errors.

    golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 => v0.0.0-20210220032951-036812b2e83c

    • all: go fmt ./...

    • Make all our package sources use Go 1.17 gofmt format (adding //go:build lines).

    • Not strictly necessary but will avoid spurious changes as files are edited.

    • Part of //go:build change (#41184). See https://golang.org/design/draft-gobuild

    • Change-Id: Ie3f0a5f80ab53b95a25db9ccfd9a3cc4ea7ff465 Reviewed-on: https://go-review.googlesource.com/c/sync/+/294370 Trust: Russ Cox [email protected] Run-TryBot: Russ Cox [email protected] TryBot-Result: Go Bot [email protected] Reviewed-by: Jason A. Donenfeld [email protected] Reviewed-by: Robert Griesemer [email protected]


    golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 => v0.0.0-20210525143221-35b2ab0089ea

    • windows: add CreateProcessAsUser
    • The syscall package already has this, but this one does not, so add this simple companion to CreateProcess.

    golang.org/x/tools v0.0.0-20200904185747-39188db58858 => v0.1.0

    • all: replace all usages of os/exec with golang.org/x/sys/execabs

    • This change ensures that packages using exec.LookPath or exec.Command to find or run binaries do not accidentally run programs from the current directory when they mean to run programs from the system PATH instead.

    • Change-Id: I5907aa630ff64012395a7eb472967a477d90f12e Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/949438 Reviewed-by: Katie Hockman [email protected] Reviewed-by: Russ Cox [email protected] Reviewed-on: https://go-review.googlesource.com/c/tools/+/284773 Run-TryBot: Roland Shoemaker [email protected] gopls-CI: kokoro [email protected] TryBot-Result: Go Bot [email protected] Trust: Roland Shoemaker [email protected] Reviewed-by: Russ Cox [email protected]


    google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 => v0.0.0-20210524171403-669157292da3

    • This is an auto-generated regeneration of the .pb.go files by cloud.google.com/go/internal/gapicgen. Once this PR is submitted, genbot will update the corresponding PR to depend on the newer version of go-genproto, and assign reviewers. Whilst this or any regen PR is open in go-genproto, genbot will not create any more regeneration PRs. If all regen PRs are closed, gapicgen will create a new set of regeneration PRs once per night.

    • If you have been assigned to review this PR, please:

    • Ensure that CI is passing. If it's failing, it requires your manual attention.

      • Approve and submit this PR if you believe it's ready to ship. That will prompt genbot to assign reviewers to the google-cloud-go PR.

      Corresponding google-cloud-go PR: googleapis/google-cloud-go#4155

      Changes:

      feat(dialogflow): added a field in the query result to indicate whether slot filling is cancelled. PiperOrigin-RevId: 375489925 Source-Link: googleapis/googleapis@a185afb

      feat(osconfig): OSConfig: add ExecResourceOutput and per step error message. Committer: @adjackura PiperOrigin-RevId: 375488160 Source-Link: googleapis/googleapis@8266886

      docs: removes tinyurl links PiperOrigin-RevId: 375484379 Source-Link: googleapis/googleapis@f465a6d

      build(gaming): add package name to BUILD file PiperOrigin-RevId: 375181569 Source-Link: googleapis/googleapis@19bb9a2

      chore(bigquery/storage): migrate bigquery/storage to the PHP microgenerator Committer: @miraleung PiperOrigin-RevId: 375180777 Source-Link: googleapis/googleapis@61f2489


    google.golang.org/grpc v1.29.1 => v1.38.0

    • API Changes reflection: accept interface instead of grpc.Server struct in Register() (#4340) resolver: add error return value from ClientConn.UpdateState (#4270) Behavior Changes client: do not poll name resolver when errors or bad updates are reported (#4270) transport: InTapHandle may return RPC status errors; no longer RST_STREAMs (#4365) New Features client: propagate connection error causes to RPC status (#4311, #4316) xds: support inline RDS resource from LDS response (#4299) xds: server side support is now experimentally available server: add ForceServerCodec() to set a custom encoding.Codec on the server (#4205) Special Thanks: @ash2k Performance Improvements metadata: reduce memory footprint in FromOutgoingContext (#4360) Special Thanks: @irfansharif Bug Fixes xds/balancergroup: fix rare memory leak after closing ClientConn (#4308) Documentation examples: update xds examples for PSM security (#4256) grpc: improve docs on StreamDesc (#4397)

    honnef.co/go/tools v0.0.1-2020.1.5 => v0.1.3

    • This release fixes a false positive in U1000. See #942 for details.
Implementation of distributed key-value system based on TiKV

Distributed_key-value_system A naive implementation of distributed key-value system based on TiKV Features Features of this work are listed below: Dis

Mar 7, 2022
A key-value db api with multiple storage engines and key generation
A key-value db api with multiple storage engines and key generation

Jet is a deadly-simple key-value api. The main goals of this project are : Making a simple KV tool for our other projects. Learn tests writing and git

Apr 5, 2022
ShockV is a simple key-value store with RESTful API
ShockV is a simple key-value store with RESTful API

ShockV is a simple key-value store based on badgerDB with RESTful API. It's best suited for experimental project which you need a lightweight data store.

Sep 26, 2021
A rest-api that works with golang as an in-memory key value store

In Store A rest-api that works with golang as an in-memory key value store Usage Fist of all, clone the repo with the command below. You must have gol

Oct 24, 2021
PrimeKV is a Secure, REST API driven Key/Value store.

PrimeKV PrimeKV is a Secure, REST API driven Key/Value store. Features 100% In-memory. Encrypted by default, All stored values are bi-directionally en

Jan 10, 2022
Golang-key-value-store - Key Value Store API Service with Go DDD Architecture

This document specifies the tools used in the Key-Value store and reorganizes how to use them. In this created service, In-Memory Key-Value Service was created and how to use the API is specified in the HTML file in the folder named "doc"

Jul 31, 2022
Dogecoin Rosetta API implementation

Dogecoin Rosetta API implementation ROSETTA-DOGECOIN IS UNDER INITIAL DEVELOPMENT AND IF IT IS NOT BROKEN, THIS IS ACCIDENTAL. DO NOT USE THIS SOFTWAR

Dec 7, 2022
Rosetta-ergo provides a reference implementation of the Rosetta API for Ergo in Golang
Rosetta-ergo provides a reference implementation of the Rosetta API for Ergo in Golang

Rosetta Ergo Overview rosetta-ergo provides a reference implementation of the Rosetta API for Ergo in Golang. If you haven't heard of the Rosetta API,

Aug 9, 2022
Elastos.ELA.Rosetta.API - How to write a Rosetta server and use either the Client package or Fetcher package to communicate

Examples This folder demonstrates how to write a Rosetta server and how to use e

Jan 17, 2022
XDC.Network Rosetta API Implementation
XDC.Network Rosetta API Implementation

Rosetta XDC.Network ROSETTA XDC.Network IS CONSIDERED ALPHA SOFTWARE. USE AT YOUR OWN RISK! COINBASE ASSUMES NO RESPONSIBILITY OR LIABILITY IF THERE I

Nov 28, 2022
Rosetta server implementation for the Flare Network

Flare Rosetta [Rosetta][1] server implementation for the [Flare][2] Network. Requirements In order to run the Flare Rosetta server you will need acces

Nov 25, 2022
Quick and dirty test to compare MySQL perf between ARM64 & Rosetta MySQL on M1Pro mac

Quick and dirty test to compare MySQL perf between ARM64 & Rosetta MySQL on M1Pro mac

Nov 5, 2021
Go language implementation of a blockchain based on the BDLS BFT protocol. The implementation was adapted from Ethereum and Sperax implementation

BDLS protocol based PoS Blockchain Most functionalities of this client is similar to the Ethereum golang implementation. If you do not find your quest

Oct 14, 2022
iceportal-api is a Golang client implementation to interact with the REST API of iceportal.de when connected to the WiFi-Network offered in German ICE Trains.
iceportal-api is a Golang client implementation to interact with the REST API of iceportal.de when connected to the WiFi-Network offered in German ICE Trains.

iceportal-api is a Golang client implementation to interact with the REST API of iceportal.de when connected to the WiFi-Network offered in German ICE Trains.

Aug 20, 2022
Arweave-api - Arweave API implementation in golang

Arweave API Go implementation of the Arweave API Todo A list of endpoints that a

Jan 16, 2022
Go-block-api - Golang implementation of Ethereum Block API

Go Ethereum Block API Golang implementation of Ethereum Block API This API can s

Jan 13, 2022
Telego is Telegram Bot API library for Golang with full API implementation (one-to-one)
Telego is Telegram Bot API library for Golang with full API implementation (one-to-one)

Telego • Go Telegram Bot API Telego is Telegram Bot API library for Golang with full API implementation (one-to-one) The goal of this library was to c

Jan 5, 2023
CVE-2021-4034 - A Golang implementation of clubby789's implementation of CVE-2021-4034

CVE-2021-4034 January 25, 2022 | An00bRektn This is a golang implementation of C

Feb 3, 2022
cluster-api-state-metrics (CASM) is a service that listens to the Kubernetes API server and generates metrics about the state of custom resource objects related of Kubernetes Cluster API.

Overview cluster-api-state-metrics (CASM) is a service that listens to the Kubernetes API server and generates metrics about the state of custom resou

Oct 27, 2022
Simple-Weather-API - Simple weather api app created using golang and Open Weather API key
Simple-Weather-API - Simple weather api app created using golang and Open Weather API key

Simple Weather API Simple weather api app created using golang and Open Weather

Feb 6, 2022