feat: Waku v2 bridge

Issue #12610
This commit is contained in:
Michal Iskierko
2023-11-12 13:29:38 +01:00
parent 56e7bd01ca
commit 6d31343205
6716 changed files with 1982502 additions and 5891 deletions

View File

@@ -0,0 +1,2 @@
config.toml
lc-proxy-wrapper

13
vendor/github.com/siphiuel/lc-proxy-wrapper/Makefile generated vendored Normal file
View File

@@ -0,0 +1,13 @@
include Makefile.vars
build-verif-proxy-wrapper:
CGO_CFLAGS="$(CGO_CFLAGS)" go build -x -v -ldflags $(LDFLAGS)
build-verif-proxy-wrapper-exe:
CGO_CFLAGS="$(CGO_CFLAGS)" go build -x -v -ldflags $(LDFLAGS) -o verif-proxy-wrapper ./main
.PHONY: clean
clean:
rm -rf nimcache libcb.a verif-proxy-wrapper

View File

@@ -0,0 +1,15 @@
NIMBUS_ETH1_PATH ?= $(CURDIR)/../nimbus-eth1
NIMBASE_H_PATH ?= $(NIMBUS_ETH1_PATH)/vendor/nimbus-build-system/vendor/Nim-csources-v1/c_code/
VERIF_PROXY_OUT_PATH ?= $(NIMBUS_ETH1_PATH)/build/libverifproxy
CGO_CFLAGS += -I$(VERIF_PROXY_OUT_PATH) -I$(NIMBASE_H_PATH)
EXTLDFLAGS=-lverifproxy -L$(VERIF_PROXY_OUT_PATH)
ifeq (, $(findstring darwin, $(OS)))
EXTLDFLAGS += -framework Security
endif
LDFLAGS ?= '-v "-extldflags=$(EXTLDFLAGS)"'

View File

@@ -0,0 +1,6 @@
# Build Nim
nim c --app:staticlib --header:cb.h --noMain:on --nimcache:$HOME/c/lc-proxy-wrapper/nimcache cb.nim
# Build go
go build
./lc-proxy-wrapper

27
vendor/github.com/siphiuel/lc-proxy-wrapper/cb.nim generated vendored Normal file
View File

@@ -0,0 +1,27 @@
{.pragma: some, header: "cb.h".}
type
OnHeaderCallback = proc (s: cstring) {.cdecl.}
proc callbackFn(json: string) {.exportc, cdecl.} =
echo "callbackFn", json
# callbackFn "some"
proc HelloFromNim(): cstring {.exportc.} =
return "Hello, World From Nim\n"
var headerCallback: OnHeaderCallback
proc setHeaderCallback*(cb: OnHeaderCallback) {.exportc.} =
headerCallback = cb
proc invokeHeaderCallback*() {.exportc.} =
headerCallback("inside Nim 2222")
proc testEcho*() {.exportc.} =
echo "in testEcho"

12
vendor/github.com/siphiuel/lc-proxy-wrapper/cfuncs.go generated vendored Normal file
View File

@@ -0,0 +1,12 @@
package proxy
/*
#include <stdio.h>
void goCallback_cgo(char * json) {
printf("inside goCallback_cgo\n");
void goCallback(char *);
goCallback(json);
}
*/
import "C"

104
vendor/github.com/siphiuel/lc-proxy-wrapper/proxy.go generated vendored Normal file
View File

@@ -0,0 +1,104 @@
package proxy
import (
"bytes"
"context"
"encoding/json"
"fmt"
"os"
"runtime"
"unsafe"
"github.com/BurntSushi/toml"
)
/*
#include <stdlib.h>
#include "verifproxy.h"
typedef void (*callback_type)(char *);
void goCallback_cgo(char *);
*/
import "C"
type Web3UrlType struct {
Kind string `toml:"kind"`
Web3Url string `toml:"web3Url"`
}
type Config struct {
Eth2Network string `toml:"network"`
TrustedBlockRoot string `toml:"trusted-block-root"`
// Web3Url Web3UrlType `toml:"web3-url"`
Web3Url string `toml:"web3-url"`
RpcAddress string `toml:"rpc-address"`
RpcPort uint16 `toml:"rpc-port"`
LogLevel string `toml:"log-level"`
}
type BeaconBlockHeader struct {
Slot uint64 `json:"slot"`
ProposerIndex uint64 `json:"proposer_index"`
ParentRoot string `json:"parent_root"`
StateRoot string `json:"state_root"`
}
//export goCallback
func goCallback(json *C.char) {
goStr := C.GoString(json)
//C.free(unsafe.Pointer(json))
fmt.Println("### goCallback " + goStr)
// var hdr BeaconBlockHeader
// err := json.NewDecoder([]byte(goStr)).Decode(&hdr)
// if err != nil {
// fmt.Println("### goCallback json parse error: " + err)
// }
// fmt.Println("Unmarshal result: " + hdr)
}
func createTomlFile(cfg *Config) string {
var buffer bytes.Buffer
err := toml.NewEncoder(&buffer).Encode(cfg)
if err != nil {
return ""
}
tomlFileName := "config.toml"
f, err := os.Create(tomlFileName)
if err != nil {
return ""
}
defer f.Close()
f.WriteString(buffer.String())
return tomlFileName
}
func StartLightClient(ctx context.Context, cfg *Config) {
fmt.Println("vim-go")
cb := (C.callback_type)(unsafe.Pointer(C.goCallback_cgo))
C.setOptimisticHeaderCallback(cb)
C.setFinalizedHeaderCallback(cb)
fmt.Println("vim-go 2")
go func() {
runtime.LockOSThread()
// tomlFileName := createTomlFile(cfg)
// configCStr := C.CString(tomlFileName)
// C.startLc(configCStr)
defer runtime.UnlockOSThread()
jsonBytes, _ := json.Marshal(cfg)
jsonStr := string(jsonBytes)
fmt.Println("### jsonStr: ", jsonStr)
configCStr := C.CString(jsonStr)
C.startProxyViaJson(configCStr)
fmt.Println("inside go-func after startLcViaJson")
}()
go func() {
fmt.Println("Before range ctx.Done()")
for range ctx.Done() {
fmt.Println("inside go-func ctx.Done()")
C.quit()
}
}()
fmt.Println("vim-go 3")
}