Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/docker_main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: Set build tag
id: build_tag_generator
run: |
RELEASE_TAG=$(curl https://api.github.com/repos/hyperledger/firefly-ethconnect/releases/latest -s | jq .tag_name -r)
RELEASE_TAG=$(curl https://api.github.com/repos/hyperledger-firefly/ethconnect/releases/latest -s | jq .tag_name -r)
BUILD_TAG=$RELEASE_TAG-$(date +"%Y%m%d")-$GITHUB_RUN_NUMBER
echo ::set-output name=BUILD_TAG::$BUILD_TAG

Expand All @@ -27,17 +27,17 @@ jobs:
--label commit=$GITHUB_SHA \
--label build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label tag=${{ steps.build_tag_generator.outputs.BUILD_TAG }} \
--tag ghcr.io/hyperledger/firefly-ethconnect:${{ steps.build_tag_generator.outputs.BUILD_TAG }} .
--tag ghcr.io/hyperledger-firefly/ethconnect:${{ steps.build_tag_generator.outputs.BUILD_TAG }} .

- name: Tag release
run: docker tag ghcr.io/hyperledger/firefly-ethconnect:${{ steps.build_tag_generator.outputs.BUILD_TAG }} ghcr.io/hyperledger/firefly-ethconnect:head
run: docker tag ghcr.io/hyperledger-firefly/ethconnect:${{ steps.build_tag_generator.outputs.BUILD_TAG }} ghcr.io/hyperledger-firefly/ethconnect:head

- name: Push docker image
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker push ghcr.io/hyperledger/firefly-ethconnect:${{ steps.build_tag_generator.outputs.BUILD_TAG }}
docker push ghcr.io/hyperledger-firefly/ethconnect:${{ steps.build_tag_generator.outputs.BUILD_TAG }}

- name: Push head tag
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker push ghcr.io/hyperledger/firefly-ethconnect:head
docker push ghcr.io/hyperledger-firefly/ethconnect:head
12 changes: 6 additions & 6 deletions .github/workflows/docker_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,26 +21,26 @@ jobs:
--label commit=$GITHUB_SHA \
--label build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label tag=${GITHUB_REF##*/} \
--tag ghcr.io/hyperledger/firefly-ethconnect:${GITHUB_REF##*/} \
--tag ghcr.io/hyperledger/firefly-ethconnect:head \
--tag ghcr.io/hyperledger-firefly/ethconnect:${GITHUB_REF##*/} \
--tag ghcr.io/hyperledger-firefly/ethconnect:head \
.

- name: Tag release
if: github.event.action == 'released'
run: docker tag ghcr.io/hyperledger/firefly-ethconnect:${GITHUB_REF##*/} ghcr.io/hyperledger/firefly-ethconnect:latest
run: docker tag ghcr.io/hyperledger-firefly/ethconnect:${GITHUB_REF##*/} ghcr.io/hyperledger-firefly/ethconnect:latest

- name: Push docker image
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker push ghcr.io/hyperledger/firefly-ethconnect:${GITHUB_REF##*/}
docker push ghcr.io/hyperledger-firefly/ethconnect:${GITHUB_REF##*/}

- name: Push head tag
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker push ghcr.io/hyperledger/firefly-ethconnect:head
docker push ghcr.io/hyperledger-firefly/ethconnect:head

- name: Push latest tag
if: github.event.action == 'released'
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker push ghcr.io/hyperledger/firefly-ethconnect:latest
docker push ghcr.io/hyperledger-firefly/ethconnect:latest
2 changes: 1 addition & 1 deletion .github/workflows/go.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.22"
go-version: "1.26.4"
check-latest: true

- name: Install solc
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.22-bullseye AS builder
FROM golang:1.26.4-bookworm AS builder
WORKDIR /ethconnect
RUN apt-get update -y \
&& apt-get install -y build-essential git \
Expand All @@ -13,7 +13,7 @@ ADD . .
RUN cp go.mod.new go.mod
RUN make clean deps build

FROM debian:bullseye-slim
FROM debian:bookworm-slim
WORKDIR /ethconnect
COPY --from=builder /ethconnect/ethconnect .
COPY --from=builder /ethconnect/ethbinding.so .
Expand Down
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![codecov](https://codecov.io/gh/hyperledger/firefly-ethconnect/branch/main/graph/badge.svg?token=nO6ihSAzpV)](https://codecov.io/gh/hyperledger/firefly-ethconnect) [![Go Report Card](https://goreportcard.com/badge/github.com/hyperledger/firefly-ethconnect)](https://goreportcard.com/report/github.com/hyperledger/firefly-ethconnect)
[![codecov](https://codecov.io/gh/hyperledger-firefly/ethconnect/branch/main/graph/badge.svg?token=nO6ihSAzpV)](https://codecov.io/gh/hyperledger-firefly/ethconnect) [![Go Report Card](https://goreportcard.com/badge/github.com/hyperledger-firefly/ethconnect)](https://goreportcard.com/report/github.com/hyperledger-firefly/ethconnect)

## EthConnect - Hyperledger FireFly connector for Ethereum networks

Expand All @@ -7,7 +7,7 @@ for Ethereum networks.

> For new projects, you are recommended to use the full Hyperledger FireFly
> project stack - and consider using the new\
> [EVMConnect](https://github.com/hyperledger/firefly-evmconnect) connector
> [EVMConnect](https://github.com/hyperledger-firefly/evmconnect) connector
> for connectivity to your EVM based chains (whether public, or private).

Since creation in 2018 a large amount of function has evolved through
Expand All @@ -33,7 +33,7 @@ For example to allow connectivity from an Enterprise Service Bus (ESB) or other
Enterprise Application Integration (EAI) tier, or applications running in a
Java EE Application Server.

[![hyperledger/firefly-ethconnect](ethconnect.png)](ethconnect.pdf)
[![hyperledger-firefly/ethconnect](ethconnect.png)](ethconnect.pdf)

## License

Expand Down Expand Up @@ -113,7 +113,7 @@ contracts and sending transactions, because it is:

Instead thick client libraries such as [web3.js](https://github.com/ethereum/web3.js/), [web3j](https://github.com/web3j/web3j), [web3.py](https://github.com/ethereum/web3.py), [Nethereum](https://github.com/Nethereum/Nethereum) and [ethjs](https://github.com/ethjs/ethjs) are used to submit transactions.

These thick client libraries perform many of the same functions as hyperledger/firefly-ethconnect, simplifying submission of transactions, receipt checking,
These thick client libraries perform many of the same functions as hyperledger-firefly/ethconnect, simplifying submission of transactions, receipt checking,
nonce management etc.

In the modern world of Microservice architectures, having a simple, efficient
Expand Down Expand Up @@ -141,7 +141,7 @@ Providing a Messaging layer with at-least-once delivery and message ordering, al

Applications that have their own state stores are able to communicate over Messaging / Kafka with simple JSON payloads to stream transactions into a scalable set of Ethereum nodes, and process the replies as they occur. The application can scale horizontally. Applications can also be decoupled from the Ethereum network with an integration technology like an Enterprise Service Bus (ESB).

When spikes in workload occur that create a large queue of transactions that need to be fed into the Ethereum network at a lower rate, the hyperledger/firefly-ethconnect bridge feeds them in at an optimal rate.
When spikes in workload occur that create a large queue of transactions that need to be fed into the Ethereum network at a lower rate, the hyperledger-firefly/ethconnect bridge feeds them in at an optimal rate.

### Ethereum Webhooks and the REST Receipt Store (MongoDB)

Expand Down Expand Up @@ -172,17 +172,17 @@ A capped collection can be used in MongoDB to limit the storage. For example to
The transaction pooling/execution logic within an Ethereum node is based upon the concept of a `nonce`, which must be incremented exactly once each time a transaction is submitted from the same Ethereum address. There can be no gaps in the nonce values, or messages build up in the `queued transaction` pool waiting for the gap to be filled (which is the responsibility of the
sender to fill). This allows for deterministic ordering of transactions sent by the same sender.

The management of this `nonce` pushes complexity back to the application tier - especially for horizontally scaled Enterprise applications sending many transactions using the same sender. By using an ordered Messaging stream to submit messages into the Ethereum network, many applications are able to delegate this complexity to hyperledger/firefly-ethconnect.
The management of this `nonce` pushes complexity back to the application tier - especially for horizontally scaled Enterprise applications sending many transactions using the same sender. By using an ordered Messaging stream to submit messages into the Ethereum network, many applications are able to delegate this complexity to hyperledger-firefly/ethconnect.

The hyperledger/firefly-ethconnect bridge contains all the logic necessary to communicate with the node to determine the next nonce, and also to cope with multiple requests being in flight within the same block, for the same sender (including [with IBFT](https://github.com/ethereum/EIPs/issues/650#issuecomment-360085474)).
The hyperledger-firefly/ethconnect bridge contains all the logic necessary to communicate with the node to determine the next nonce, and also to cope with multiple requests being in flight within the same block, for the same sender (including [with IBFT](https://github.com/ethereum/EIPs/issues/650#issuecomment-360085474)).

When using the bridge, an application can submit simple YAML/JSON formatted transactions
in a highly parallel way across many instances using the same sender address to the bridge
over HTTPS/Kafka _without_ a nonce. Then through ordered message delivery and nonce management
code within the hyperledger/firefly-ethconnect bridge it will be assigned a nonce and submitted
code within the hyperledger-firefly/ethconnect bridge it will be assigned a nonce and submitted
into the Ethereum node. The nonce assigned is returned by the bridge in the reply.

If a sender needs to achieve exactly-once delivery of transactions (vs. at-least-once) it is still necessary to allocate the nonce within the application and pass it into hyperledger/firefly-ethconnect in the payload. This allows the sender to control allocation of nonces using its internal state store / locking.
If a sender needs to achieve exactly-once delivery of transactions (vs. at-least-once) it is still necessary to allocate the nonce within the application and pass it into hyperledger-firefly/ethconnect in the payload. This allows the sender to control allocation of nonces using its internal state store / locking.

> There's a good summary of at-least-once vs. exactly-once semantics in the [Akka documentation](https://doc.akka.io/docs/akka/current/general/message-delivery-reliability.html?language=scala#discussion-what-does-at-most-once-mean-)

Expand All @@ -209,12 +209,12 @@ trivially. Some examples as follows:
## Why Kafka?

We selected Kafka as the first Messaging platform, because Kafka has message ordering and scale characteristics that are ideally suited to the Ethereum transaction model:
- Transactions can be sprayed across partitions, while retaining order of the transactions for a particular sender. Allowing independent and dynamic scaling of the application, hyperledger/firefly-ethconnect bridge and Go-ethereum node components.
- Transactions can be sprayed across partitions, while retaining order of the transactions for a particular sender. Allowing independent and dynamic scaling of the application, hyperledger-firefly/ethconnect bridge and Go-ethereum node components.
- The modern replication based cloud-native and continuously available architecture is ideal for Hyperledger projects, and is likely to be a good fit for the modern Microservice architectures that are common in Blockchain projects.

## Topics

[![hyperledger/firefly-ethconnect - Topics](ethconnect_topics.png)](ethconnect.pdf)
[![hyperledger-firefly/ethconnect - Topics](ethconnect_topics.png)](ethconnect.pdf)

The topic usage is very simple:
- One topic delivering messages into the bridge
Expand Down Expand Up @@ -305,7 +305,7 @@ blockchain.
Requires [Go 1.11](https://golang.org/dl/) or later to install with `go get`

```sh
go get github.com/hyperledger/firefly-ethconnect
go get github.com/hyperledger-firefly/ethconnect
```

## Development environment
Expand Down
10 changes: 5 additions & 5 deletions cmd/ethconnect.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ import (

"gopkg.in/yaml.v2"

"github.com/hyperledger/firefly-ethconnect/internal/errors"
"github.com/hyperledger/firefly-ethconnect/internal/kafka"
"github.com/hyperledger/firefly-ethconnect/internal/receipts"
"github.com/hyperledger/firefly-ethconnect/internal/rest"
"github.com/hyperledger/firefly-ethconnect/internal/utils"
"github.com/hyperledger-firefly/ethconnect/internal/errors"
"github.com/hyperledger-firefly/ethconnect/internal/kafka"
"github.com/hyperledger-firefly/ethconnect/internal/receipts"
"github.com/hyperledger-firefly/ethconnect/internal/rest"
"github.com/hyperledger-firefly/ethconnect/internal/utils"
"github.com/icza/dyno"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
Expand Down
6 changes: 3 additions & 3 deletions cmd/plugins.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ package cmd
import (
"plugin"

"github.com/hyperledger/firefly-ethconnect/internal/auth"
"github.com/hyperledger/firefly-ethconnect/internal/errors"
"github.com/hyperledger/firefly-ethconnect/pkg/plugins"
"github.com/hyperledger-firefly/ethconnect/internal/auth"
"github.com/hyperledger-firefly/ethconnect/internal/errors"
"github.com/hyperledger-firefly/ethconnect/pkg/plugins"
log "github.com/sirupsen/logrus"
)

Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/hyperledger/firefly-ethconnect
module github.com/hyperledger-firefly/ethconnect

go 1.22
go 1.26.4

require (
github.com/IBM/sarama v1.42.1
Expand Down
4 changes: 2 additions & 2 deletions internal/auth/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ package auth
import (
"context"

"github.com/hyperledger/firefly-ethconnect/internal/errors"
"github.com/hyperledger/firefly-ethconnect/pkg/plugins"
"github.com/hyperledger-firefly/ethconnect/internal/errors"
"github.com/hyperledger-firefly/ethconnect/pkg/plugins"
)

type ContextKey int
Expand Down
2 changes: 1 addition & 1 deletion internal/auth/auth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
"context"
"testing"

"github.com/hyperledger/firefly-ethconnect/internal/auth/authtest"
"github.com/hyperledger-firefly/ethconnect/internal/auth/authtest"
"github.com/stretchr/testify/assert"
)

Expand Down
2 changes: 1 addition & 1 deletion internal/contractgateway/kldparams.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
"net/textproto"
"strings"

"github.com/hyperledger/firefly-ethconnect/internal/utils"
"github.com/hyperledger-firefly/ethconnect/internal/utils"
)

func getQueryParamNoCase(name string, req *http.Request) []string {
Expand Down
20 changes: 10 additions & 10 deletions internal/contractgateway/rest2eth.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ import (
"strings"
"sync"

"github.com/hyperledger/firefly-ethconnect/internal/auth"
"github.com/hyperledger/firefly-ethconnect/internal/contractregistry"
"github.com/hyperledger/firefly-ethconnect/internal/errors"
ethconnecterrors "github.com/hyperledger/firefly-ethconnect/internal/errors"
"github.com/hyperledger/firefly-ethconnect/internal/eth"
"github.com/hyperledger/firefly-ethconnect/internal/ethbind"
"github.com/hyperledger/firefly-ethconnect/internal/events"
"github.com/hyperledger/firefly-ethconnect/internal/messages"
"github.com/hyperledger/firefly-ethconnect/internal/tx"
"github.com/hyperledger/firefly-ethconnect/internal/utils"
"github.com/hyperledger-firefly/ethconnect/internal/auth"
"github.com/hyperledger-firefly/ethconnect/internal/contractregistry"
"github.com/hyperledger-firefly/ethconnect/internal/errors"
ethconnecterrors "github.com/hyperledger-firefly/ethconnect/internal/errors"
"github.com/hyperledger-firefly/ethconnect/internal/eth"
"github.com/hyperledger-firefly/ethconnect/internal/ethbind"
"github.com/hyperledger-firefly/ethconnect/internal/events"
"github.com/hyperledger-firefly/ethconnect/internal/messages"
"github.com/hyperledger-firefly/ethconnect/internal/tx"
"github.com/hyperledger-firefly/ethconnect/internal/utils"
"github.com/julienschmidt/httprouter"
ethbinding "github.com/kaleido-io/ethbinding/pkg"

Expand Down
20 changes: 10 additions & 10 deletions internal/contractgateway/rest2eth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ import (
"strings"
"testing"

"github.com/hyperledger/firefly-ethconnect/internal/auth"
"github.com/hyperledger/firefly-ethconnect/internal/auth/authtest"
"github.com/hyperledger/firefly-ethconnect/internal/contractregistry"
"github.com/hyperledger/firefly-ethconnect/internal/errors"
"github.com/hyperledger/firefly-ethconnect/internal/eth"
"github.com/hyperledger/firefly-ethconnect/internal/ethbind"
"github.com/hyperledger/firefly-ethconnect/internal/events"
"github.com/hyperledger/firefly-ethconnect/internal/messages"
"github.com/hyperledger/firefly-ethconnect/mocks/contractregistrymocks"
"github.com/hyperledger/firefly-ethconnect/mocks/ethmocks"
"github.com/hyperledger-firefly/ethconnect/internal/auth"
"github.com/hyperledger-firefly/ethconnect/internal/auth/authtest"
"github.com/hyperledger-firefly/ethconnect/internal/contractregistry"
"github.com/hyperledger-firefly/ethconnect/internal/errors"
"github.com/hyperledger-firefly/ethconnect/internal/eth"
"github.com/hyperledger-firefly/ethconnect/internal/ethbind"
"github.com/hyperledger-firefly/ethconnect/internal/events"
"github.com/hyperledger-firefly/ethconnect/internal/messages"
"github.com/hyperledger-firefly/ethconnect/mocks/contractregistrymocks"
"github.com/hyperledger-firefly/ethconnect/mocks/ethmocks"
"github.com/julienschmidt/httprouter"
ethbinding "github.com/kaleido-io/ethbinding/pkg"
log "github.com/sirupsen/logrus"
Expand Down
22 changes: 11 additions & 11 deletions internal/contractgateway/smartcontractgw.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ import (
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"

"github.com/hyperledger/firefly-ethconnect/internal/auth"
"github.com/hyperledger/firefly-ethconnect/internal/contractregistry"
"github.com/hyperledger/firefly-ethconnect/internal/errors"
"github.com/hyperledger/firefly-ethconnect/internal/eth"
"github.com/hyperledger/firefly-ethconnect/internal/ethbind"
"github.com/hyperledger/firefly-ethconnect/internal/events"
"github.com/hyperledger/firefly-ethconnect/internal/messages"
"github.com/hyperledger/firefly-ethconnect/internal/openapi"
"github.com/hyperledger/firefly-ethconnect/internal/tx"
"github.com/hyperledger/firefly-ethconnect/internal/utils"
"github.com/hyperledger/firefly-ethconnect/internal/ws"
"github.com/hyperledger-firefly/ethconnect/internal/auth"
"github.com/hyperledger-firefly/ethconnect/internal/contractregistry"
"github.com/hyperledger-firefly/ethconnect/internal/errors"
"github.com/hyperledger-firefly/ethconnect/internal/eth"
"github.com/hyperledger-firefly/ethconnect/internal/ethbind"
"github.com/hyperledger-firefly/ethconnect/internal/events"
"github.com/hyperledger-firefly/ethconnect/internal/messages"
"github.com/hyperledger-firefly/ethconnect/internal/openapi"
"github.com/hyperledger-firefly/ethconnect/internal/tx"
"github.com/hyperledger-firefly/ethconnect/internal/utils"
"github.com/hyperledger-firefly/ethconnect/internal/ws"
ethbinding "github.com/kaleido-io/ethbinding/pkg"
)

Expand Down
Loading
Loading