-
Notifications
You must be signed in to change notification settings - Fork 211
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Athena: Initial POC integration #6380
base: athena-poc
Are you sure you want to change the base?
Changes from 70 commits
a0bd91b
95620c3
2baf0c6
69c33c7
e134441
2e94bda
b764ab8
92be516
d4eab1a
c91bdda
b3f4865
7e8bdd6
510306e
11cfdcc
dab770c
638b604
e2d55b8
d5b947d
d3e6bd7
28a6cc5
cb0b07a
6bcd565
9b5543d
52e7cf6
1235f36
b847c32
2ad4adf
9821f88
c8ed09e
148a5d8
ab98656
cc86c7a
e9d8f87
4520187
134153d
3bd8e0f
75b4e84
a9f35b1
14e842a
27e421d
d06371e
29bf0e3
363d39d
01bf8b1
2b329db
71314f8
5a26e63
08bcf38
7020530
cabff43
4b6d041
a4a8c74
ae03e35
bd9f830
fdcdd3b
9063cb8
1f9000c
1ce6abe
f08acff
1a6d002
3a7dd34
d48c6a4
3f3ae92
67852f2
294fe6b
1d2f6a7
df9ac86
6e7942f
bb5dc73
433daf5
0f8e560
4d404cb
69a90c5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -4,7 +4,7 @@ run-name: Release ${{ github.ref_name }} | |||||||||||
on: | ||||||||||||
push: | ||||||||||||
tags: | ||||||||||||
- '*' | ||||||||||||
- "*" | ||||||||||||
|
||||||||||||
jobs: | ||||||||||||
build-and-upload: | ||||||||||||
|
@@ -16,15 +16,15 @@ jobs: | |||||||||||
outname_sufix: "linux-amd64" | ||||||||||||
- os: ubuntu-latest-arm-8-cores | ||||||||||||
outname_sufix: "linux-arm64" | ||||||||||||
- os: macos-13 | ||||||||||||
outname_sufix: "mac-amd64" | ||||||||||||
# - os: macos-13 | ||||||||||||
# outname_sufix: "mac-amd64" | ||||||||||||
Comment on lines
+19
to
+20
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ditto
Suggested change
|
||||||||||||
- os: [self-hosted, macOS, ARM64, go-spacemesh] | ||||||||||||
outname_sufix: "mac-arm64" | ||||||||||||
- os: windows-2022 | ||||||||||||
outname_sufix: "win-amd64" | ||||||||||||
permissions: | ||||||||||||
contents: 'read' | ||||||||||||
id-token: 'write' | ||||||||||||
contents: "read" | ||||||||||||
id-token: "write" | ||||||||||||
steps: | ||||||||||||
- shell: bash | ||||||||||||
run: echo "OUTNAME=go-spacemesh-${{ github.ref_name }}-${{ matrix.outname_sufix }}" >> $GITHUB_ENV | ||||||||||||
|
@@ -84,7 +84,7 @@ jobs: | |||||||||||
with: | ||||||||||||
project_id: ${{ secrets.GCP_WI_PROJECT_ID }} | ||||||||||||
workload_identity_provider: ${{ secrets.GCP_WI_PROVIDER_SA }} | ||||||||||||
service_account: ${{ secrets.GCP_WI_SA }} | ||||||||||||
service_account: ${{ secrets.GCP_WI_SA }} | ||||||||||||
token_format: access_token | ||||||||||||
- name: Set up Cloud SDK | ||||||||||||
uses: google-github-actions/setup-gcloud@v2 | ||||||||||||
|
@@ -107,9 +107,9 @@ jobs: | |||||||||||
--endpoint-url https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com | ||||||||||||
--acl public-read --follow-symlinks | ||||||||||||
env: | ||||||||||||
AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_ACCESS_KEY_ID }} | ||||||||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_SECRET_ACCESS_KEY }} | ||||||||||||
AWS_REGION: us-east-1 | ||||||||||||
AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_ACCESS_KEY_ID }} | ||||||||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_SECRET_ACCESS_KEY }} | ||||||||||||
AWS_REGION: us-east-1 | ||||||||||||
- name: Install coreutils | ||||||||||||
if: ${{ matrix.os == 'macos-13' || matrix.os == '[self-hosted, macOS, ARM64, go-spacemesh]' }} | ||||||||||||
run: brew install coreutils | ||||||||||||
|
@@ -133,8 +133,8 @@ jobs: | |||||||||||
runs-on: ubuntu-22.04 | ||||||||||||
needs: build-and-upload | ||||||||||||
permissions: | ||||||||||||
contents: 'write' | ||||||||||||
id-token: 'write' | ||||||||||||
contents: "write" | ||||||||||||
id-token: "write" | ||||||||||||
steps: | ||||||||||||
- name: Download the artifacts | ||||||||||||
uses: actions/download-artifact@v4 | ||||||||||||
|
@@ -164,7 +164,7 @@ jobs: | |||||||||||
with: | ||||||||||||
project_id: ${{ secrets.GCP_WI_PROJECT_ID }} | ||||||||||||
workload_identity_provider: ${{ secrets.GCP_WI_PROVIDER_SA }} | ||||||||||||
service_account: ${{ secrets.GCP_WI_SA }} | ||||||||||||
service_account: ${{ secrets.GCP_WI_SA }} | ||||||||||||
token_format: access_token | ||||||||||||
- name: Set up Cloud SDK | ||||||||||||
uses: google-github-actions/setup-gcloud@v2 | ||||||||||||
|
@@ -187,16 +187,16 @@ jobs: | |||||||||||
--endpoint-url https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com | ||||||||||||
--acl public-read --follow-symlinks | ||||||||||||
env: | ||||||||||||
AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_ACCESS_KEY_ID }} | ||||||||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_SECRET_ACCESS_KEY }} | ||||||||||||
AWS_REGION: us-east-1 | ||||||||||||
AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_ACCESS_KEY_ID }} | ||||||||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_GO_SM_BUILDS_SECRET_ACCESS_KEY }} | ||||||||||||
AWS_REGION: us-east-1 | ||||||||||||
- name: Create Release | ||||||||||||
uses: softprops/action-gh-release@v2 | ||||||||||||
id: create_release | ||||||||||||
env: | ||||||||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||||||||
with: | ||||||||||||
tag_name: ${{ github.ref_name }} | ||||||||||||
tag_name: ${{ github.ref_name }} | ||||||||||||
body: | | ||||||||||||
## Zip Files | ||||||||||||
- Windows amd64: https://go-spacemesh-release-builds.spacemesh.network/${{ github.ref_name }}/${{ env.OUTNAME_WIN_AMD64 }}.zip | ||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,6 +18,7 @@ temp.js | |
|
||
*.out | ||
*.test | ||
*.tar.gz | ||
*.zip | ||
|
||
/go-spacemesh | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -39,9 +39,6 @@ import ( | |||||||||||||||||
"github.com/spacemeshos/go-spacemesh/common/types" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/datastore" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/events" | ||||||||||||||||||
vm "github.com/spacemeshos/go-spacemesh/genvm" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/genvm/sdk" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/genvm/sdk/wallet" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/p2p" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/p2p/peerinfo" | ||||||||||||||||||
peerinfomocks "github.com/spacemeshos/go-spacemesh/p2p/peerinfo/mocks" | ||||||||||||||||||
|
@@ -54,6 +51,11 @@ import ( | |||||||||||||||||
"github.com/spacemeshos/go-spacemesh/sql/statesql" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/system" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/txs" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/vm" | ||||||||||||||||||
walletProgram "github.com/spacemeshos/go-spacemesh/vm/programs/wallet" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/vm/sdk" | ||||||||||||||||||
"github.com/spacemeshos/go-spacemesh/vm/sdk/wallet" | ||||||||||||||||||
walletTemplate "github.com/spacemeshos/go-spacemesh/vm/templates/wallet" | ||||||||||||||||||
) | ||||||||||||||||||
|
||||||||||||||||||
const ( | ||||||||||||||||||
|
@@ -134,6 +136,7 @@ func dialGrpc(tb testing.TB, cfg Config) *grpc.ClientConn { | |||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
func TestMain(m *testing.M) { | ||||||||||||||||||
os.Setenv("ATHENA_LIB_PATH", "../../build") | ||||||||||||||||||
types.SetLayersPerEpoch(layersPerEpoch) | ||||||||||||||||||
|
||||||||||||||||||
var err error | ||||||||||||||||||
|
@@ -153,8 +156,16 @@ func TestMain(m *testing.M) { | |||||||||||||||||
os.Exit(1) | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
addr1 = wallet.Address(signer1.PublicKey().Bytes()) | ||||||||||||||||||
addr2 = wallet.Address(signer2.PublicKey().Bytes()) | ||||||||||||||||||
addr1, err = wallet.Address(*signer1.PublicKey()) | ||||||||||||||||||
if err != nil { | ||||||||||||||||||
log.Println("failed to create address:", err) | ||||||||||||||||||
os.Exit(1) | ||||||||||||||||||
} | ||||||||||||||||||
addr2, err = wallet.Address(*signer2.PublicKey()) | ||||||||||||||||||
if err != nil { | ||||||||||||||||||
log.Println("failed to create address:", err) | ||||||||||||||||||
os.Exit(1) | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
globalAtx = &types.ActivationTx{ | ||||||||||||||||||
PublishEpoch: postGenesisEpoch, | ||||||||||||||||||
|
@@ -371,25 +382,29 @@ func (t *ConStateAPIMock) GetNonce(addr types.Address) (types.Nonce, error) { | |||||||||||||||||
return t.nonces[addr], nil | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
func (t *ConStateAPIMock) Validation(raw types.RawTx) system.ValidationRequest { | ||||||||||||||||||
func (t *ConStateAPIMock) Validation(raw types.RawTx) system.ValidationRequestNew { | ||||||||||||||||||
panic("dont use this") | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
func NewTx(nonce uint64, recipient types.Address, signer *signing.EdSigner) *types.Transaction { | ||||||||||||||||||
tx := types.Transaction{TxHeader: &types.TxHeader{}} | ||||||||||||||||||
tx.Principal = wallet.Address(signer.PublicKey().Bytes()) | ||||||||||||||||||
principal, err := wallet.Address(*signer.PublicKey()) | ||||||||||||||||||
if err != nil { | ||||||||||||||||||
panic(err) | ||||||||||||||||||
} | ||||||||||||||||||
tx.Principal = principal | ||||||||||||||||||
if nonce == 0 { | ||||||||||||||||||
tx.RawTx = types.NewRawTx(wallet.SelfSpawn(signer.PrivateKey(), | ||||||||||||||||||
0, | ||||||||||||||||||
sdk.WithGasPrice(0), | ||||||||||||||||||
)) | ||||||||||||||||||
tx2, err := wallet.Spawn(signer.PrivateKey(), 0, sdk.WithGasPrice(0)) | ||||||||||||||||||
if err != nil { | ||||||||||||||||||
panic(err) | ||||||||||||||||||
} | ||||||||||||||||||
tx.RawTx = types.NewRawTx(tx2) | ||||||||||||||||||
} else { | ||||||||||||||||||
tx.RawTx = types.NewRawTx( | ||||||||||||||||||
wallet.Spend(signer.PrivateKey(), recipient, 1, | ||||||||||||||||||
nonce, | ||||||||||||||||||
sdk.WithGasPrice(0), | ||||||||||||||||||
), | ||||||||||||||||||
) | ||||||||||||||||||
tx2, err := wallet.Spend(signer.PrivateKey(), recipient, 1, nonce, sdk.WithGasPrice(0)) | ||||||||||||||||||
if err != nil { | ||||||||||||||||||
panic(err) | ||||||||||||||||||
} | ||||||||||||||||||
tx.RawTx = types.NewRawTx(tx2) | ||||||||||||||||||
Comment on lines
+403
to
+407
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As
Suggested change
|
||||||||||||||||||
tx.MaxSpend = 1 | ||||||||||||||||||
} | ||||||||||||||||||
return &tx | ||||||||||||||||||
|
@@ -2315,7 +2330,8 @@ func TestTransactionsRewards(t *testing.T) { | |||||||||||||||||
t.Cleanup(cancel) | ||||||||||||||||||
client := pb.NewGlobalStateServiceClient(dialGrpc(t, cfg)) | ||||||||||||||||||
|
||||||||||||||||||
address := wallet.Address(types.RandomNodeID().Bytes()) | ||||||||||||||||||
address, err := wallet.Address(*signing.NewPublicKey(types.RandomNodeID().Bytes())) | ||||||||||||||||||
req.NoError(err) | ||||||||||||||||||
weight := new(big.Rat).SetFloat64(18.7) | ||||||||||||||||||
rewards := []types.CoinbaseReward{{Coinbase: address, Weight: types.RatNumFromBigRat(weight)}} | ||||||||||||||||||
|
||||||||||||||||||
|
@@ -2379,22 +2395,32 @@ func TestVMAccountUpdates(t *testing.T) { | |||||||||||||||||
t.Cleanup(cleanup) | ||||||||||||||||||
|
||||||||||||||||||
keys := make([]*signing.EdSigner, 10) | ||||||||||||||||||
accounts := make([]types.Account, len(keys)) | ||||||||||||||||||
accounts := make([]types.Account, len(keys)+1) | ||||||||||||||||||
const initial = 100_000_000 | ||||||||||||||||||
for i := range keys { | ||||||||||||||||||
signer, err := signing.NewEdSigner() | ||||||||||||||||||
require.NoError(t, err) | ||||||||||||||||||
keys[i] = signer | ||||||||||||||||||
addr, err := wallet.Address(*signing.NewPublicKey(signer.NodeID().Bytes())) | ||||||||||||||||||
require.NoError(t, err) | ||||||||||||||||||
accounts[i] = types.Account{ | ||||||||||||||||||
Address: wallet.Address(signer.NodeID().Bytes()), | ||||||||||||||||||
Address: addr, | ||||||||||||||||||
Balance: initial, | ||||||||||||||||||
} | ||||||||||||||||||
} | ||||||||||||||||||
// add the wallet template account | ||||||||||||||||||
accounts[len(accounts)-1] = types.Account{ | ||||||||||||||||||
Address: walletTemplate.TemplateAddress, | ||||||||||||||||||
State: walletProgram.PROGRAM, | ||||||||||||||||||
TemplateAddress: &walletTemplate.TemplateAddress, | ||||||||||||||||||
} | ||||||||||||||||||
require.NoError(t, svm.ApplyGenesis(accounts)) | ||||||||||||||||||
spawns := []types.Transaction{} | ||||||||||||||||||
for _, key := range keys { | ||||||||||||||||||
tx, err := wallet.Spawn(key.PrivateKey(), 0) | ||||||||||||||||||
require.NoError(t, err) | ||||||||||||||||||
spawns = append(spawns, types.Transaction{ | ||||||||||||||||||
RawTx: types.NewRawTx(wallet.SelfSpawn(key.PrivateKey(), 0)), | ||||||||||||||||||
RawTx: types.NewRawTx(tx), | ||||||||||||||||||
}) | ||||||||||||||||||
} | ||||||||||||||||||
lid := types.GetEffectiveGenesis().Add(1) | ||||||||||||||||||
|
@@ -2406,7 +2432,7 @@ func TestVMAccountUpdates(t *testing.T) { | |||||||||||||||||
client := pb.NewGlobalStateServiceClient(dialGrpc(t, cfg)) | ||||||||||||||||||
eg, ctx := errgroup.WithContext(ctx) | ||||||||||||||||||
states := make(chan *pb.AccountState, len(accounts)) | ||||||||||||||||||
for _, account := range accounts { | ||||||||||||||||||
for _, account := range accounts[:len(accounts)-1] { | ||||||||||||||||||
stream, err := client.AccountDataStream(ctx, &pb.AccountDataStreamRequest{ | ||||||||||||||||||
Filter: &pb.AccountDataFilter{ | ||||||||||||||||||
AccountId: &pb.AccountId{Address: account.Address.String()}, | ||||||||||||||||||
|
@@ -2429,10 +2455,10 @@ func TestVMAccountUpdates(t *testing.T) { | |||||||||||||||||
spends := []types.Transaction{} | ||||||||||||||||||
const amount = 100_000 | ||||||||||||||||||
for _, key := range keys { | ||||||||||||||||||
tx, err := wallet.Spend(key.PrivateKey(), types.Address{1}, amount, 1) | ||||||||||||||||||
require.NoError(t, err) | ||||||||||||||||||
spends = append(spends, types.Transaction{ | ||||||||||||||||||
RawTx: types.NewRawTx(wallet.Spend( | ||||||||||||||||||
key.PrivateKey(), types.Address{1}, amount, 1, | ||||||||||||||||||
)), | ||||||||||||||||||
RawTx: types.NewRawTx(tx), | ||||||||||||||||||
}) | ||||||||||||||||||
} | ||||||||||||||||||
_, _, err = svm.Apply(lid.Add(1), spends, nil) | ||||||||||||||||||
|
@@ -2445,7 +2471,7 @@ func TestVMAccountUpdates(t *testing.T) { | |||||||||||||||||
require.Equal(t, 2, int(state.Counter)) | ||||||||||||||||||
require.Less(t, int(state.Balance.Value), initial-amount) | ||||||||||||||||||
} | ||||||||||||||||||
require.Equal(t, len(accounts), i) | ||||||||||||||||||
require.Equal(t, len(accounts)-1, i) | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
func createAtxs(tb testing.TB, epoch types.EpochID, atxids []types.ATXID) []*types.ActivationTx { | ||||||||||||||||||
|
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be helpful to leave a note about why it's disabled and when it should be re-enabled: