Skip to content

Commit 801dff8

Browse files
Added filter for block transactions
1 parent 8954fc8 commit 801dff8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+591
-626
lines changed

examples/account_balance.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package examples
33
import (
44
"fmt"
55

6-
"github.com/availproject/avail-go-sdk/metadata"
76
syPallet "github.com/availproject/avail-go-sdk/metadata/pallets/system"
87
"github.com/availproject/avail-go-sdk/primitives"
98
SDK "github.com/availproject/avail-go-sdk/sdk"
@@ -13,7 +12,7 @@ func RunAccountBalance() {
1312
sdk, err := SDK.NewSDK(SDK.TuringEndpoint)
1413
PanicOnError(err)
1514

16-
accountId, err := metadata.NewAccountIdFromAddress("5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY")
15+
accountId, err := primitives.NewAccountIdFromAddress("5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY")
1716
PanicOnError(err)
1817

1918
// Via Storage RPC

examples/account_creation.go

+8-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package examples
33
import (
44
"fmt"
55

6-
"github.com/availproject/avail-go-sdk/metadata"
76
"github.com/availproject/avail-go-sdk/primitives"
87
SDK "github.com/availproject/avail-go-sdk/sdk"
98
)
@@ -32,11 +31,11 @@ func RunAccountCreation() {
3231
fmt.Println("Ferdie Address: " + acc.SS58Address(42))
3332

3433
// AccountId can be created from Keypair...
35-
accountId := metadata.NewAccountIdFromKeyPair(acc)
34+
accountId := primitives.NewAccountIdFromKeyPair(acc)
3635
fmt.Println("Ferdie Address: " + accountId.ToHuman())
3736

3837
// ...or from SS58 address
39-
accountId, err = metadata.NewAccountIdFromAddress("5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY")
38+
accountId, err = primitives.NewAccountIdFromAddress("5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY")
4039
PanicOnError(err)
4140
fmt.Println("Alice Address: " + accountId.ToHuman())
4241
fmt.Println("Alice Account Id: " + accountId.ToString())
@@ -45,10 +44,14 @@ func RunAccountCreation() {
4544
multiAddress := accountId.ToMultiAddress()
4645
AssertEq(multiAddress.VariantIndex, 0, "Variant Index needs to be 0")
4746
AssertTrue(multiAddress.Id.IsSome(), "ID needs to be populated")
48-
AssertEq(multiAddress.Id.Unwrap(), accountId.Value, "multiAddress and accountId need to have the same value")
47+
AssertEq(multiAddress.Id.UnsafeUnwrap(), accountId, "multiAddress and accountId need to have the same value")
48+
49+
// MultiAddress can be converted to AccountId
50+
accountId2 := multiAddress.ToAccountId()
51+
AssertTrue(accountId2.IsSome(), "")
4952

5053
// Non-init AccountId has `5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM` as the SS58 address
51-
accountId = metadata.AccountId{Value: primitives.H256{}}
54+
accountId = primitives.AccountId{Value: primitives.H256{}}
5255
fmt.Println("Address: " + accountId.ToHuman())
5356
AssertEq(accountId.ToHuman(), "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM", "Non-init account id ss58 address is not correct.")
5457

examples/account_nonce.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package examples
33
import (
44
"fmt"
55

6-
"github.com/availproject/avail-go-sdk/metadata"
6+
"github.com/availproject/avail-go-sdk/primitives"
77
SDK "github.com/availproject/avail-go-sdk/sdk"
88
)
99

@@ -18,7 +18,7 @@ func RunAccountNonce() {
1818
fmt.Println("RPC Nonce: ", nonce)
1919

2020
// Via Abstraction
21-
accountId, err := metadata.NewAccountIdFromAddress("5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY")
21+
accountId, err := primitives.NewAccountIdFromAddress("5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY")
2222
PanicOnError(err)
2323

2424
nonce2, err := SDK.Account.Nonce(sdk.Client, accountId)

examples/batch.go

+45-89
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ package examples
33
import (
44
"fmt"
55

6-
"github.com/availproject/avail-go-sdk/metadata"
76
"github.com/availproject/avail-go-sdk/metadata/pallets"
87
baPallet "github.com/availproject/avail-go-sdk/metadata/pallets/balances"
9-
syPallet "github.com/availproject/avail-go-sdk/metadata/pallets/system"
108
utPallet "github.com/availproject/avail-go-sdk/metadata/pallets/utility"
9+
"github.com/availproject/avail-go-sdk/primitives"
1110
prim "github.com/availproject/avail-go-sdk/primitives"
1211
SDK "github.com/availproject/avail-go-sdk/sdk"
1312
)
@@ -23,7 +22,7 @@ func RunBatch() {
2322

2423
// One way to create a suitable call for the batch transaction is to manually create the desired call and then convert it to a generic call
2524
{
26-
destBob, err := metadata.NewAccountIdFromAddress("5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty")
25+
destBob, err := primitives.NewAccountIdFromAddress("5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty")
2726
PanicOnError(err)
2827

2928
call := baPallet.CallTransferKeepAlive{Dest: destBob.ToMultiAddress(), Value: SDK.OneAvail()}
@@ -32,7 +31,7 @@ func RunBatch() {
3231

3332
// The other was it to create a transaction using the sdk api and then use the `call` field member
3433
{
35-
destCharlie, err := metadata.NewAccountIdFromAddress("5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y")
34+
destCharlie, err := primitives.NewAccountIdFromAddress("5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y")
3635
PanicOnError(err)
3736

3837
tx := sdk.Tx.Balances.TransferKeepAlive(destCharlie.ToMultiAddress(), SDK.OneAvail())
@@ -48,21 +47,15 @@ func RunBatch() {
4847
tx := sdk.Tx.Utility.Batch(callsToExecute)
4948
res, err := tx.ExecuteAndWatchInclusion(acc, SDK.NewTransactionOptions().WithAppId(0))
5049
PanicOnError(err)
51-
AssertTrue(res.IsSuccessful().Unwrap(), "Transaction is supposed to succeed")
50+
AssertTrue(res.IsSuccessful().UnsafeUnwrap(), "Transaction is supposed to succeed")
5251

53-
events := res.Events.Unwrap()
52+
events := res.Events.UnsafeUnwrap()
5453

55-
if SDK.EventFindFirst(events, utPallet.EventBatchCompleted{}).IsSome() {
56-
fmt.Println("Batch was successfully completed")
57-
} else {
58-
panic("Batch call failed")
59-
}
54+
event := SDK.EventFindFirst(events, utPallet.EventBatchCompleted{})
55+
AssertTrue(event.IsSome(), "BatchCompleted event must be present.")
6056

61-
if len(SDK.EventFindAll(events, utPallet.EventItemCompleted{})) == 2 {
62-
fmt.Println("All batch items completed")
63-
} else {
64-
panic("No all items were completed")
65-
}
57+
event_count := len(SDK.EventFind(events, utPallet.EventItemCompleted{}))
58+
AssertEq(event_count, 2, "ItemCompleted events must be produced twice")
6659

6760
fmt.Println("Batch call done")
6861
}
@@ -72,21 +65,15 @@ func RunBatch() {
7265
tx := sdk.Tx.Utility.BatchAll(callsToExecute)
7366
res, err := tx.ExecuteAndWatchInclusion(acc, SDK.NewTransactionOptions().WithAppId(0))
7467
PanicOnError(err)
75-
AssertTrue(res.IsSuccessful().Unwrap(), "Transaction is supposed to succeed")
68+
AssertTrue(res.IsSuccessful().UnsafeUnwrap(), "Transaction is supposed to succeed")
7669

77-
events := res.Events.Unwrap()
70+
events := res.Events.UnsafeUnwrap()
7871

79-
if SDK.EventFindFirst(events, utPallet.EventBatchCompleted{}).IsSome() {
80-
fmt.Println("Batch was successfully completed")
81-
} else {
82-
panic("Batch All call failed")
83-
}
72+
event := SDK.EventFindFirst(events, utPallet.EventBatchCompleted{})
73+
AssertTrue(event.IsSome(), "BatchCompleted event must be present.")
8474

85-
if len(SDK.EventFindAll(events, utPallet.EventItemCompleted{})) == 2 {
86-
fmt.Println("All batch items completed")
87-
} else {
88-
panic("No all items were completed")
89-
}
75+
event_count := len(SDK.EventFind(events, utPallet.EventItemCompleted{}))
76+
AssertEq(event_count, 2, "ItemCompleted events must be produced twice")
9077

9178
fmt.Println("Batch All call done")
9279
}
@@ -96,21 +83,15 @@ func RunBatch() {
9683
tx := sdk.Tx.Utility.ForceBatch(callsToExecute)
9784
res, err := tx.ExecuteAndWatchInclusion(acc, SDK.NewTransactionOptions().WithAppId(0))
9885
PanicOnError(err)
99-
AssertTrue(res.IsSuccessful().Unwrap(), "Transaction is supposed to succeed")
86+
AssertTrue(res.IsSuccessful().UnsafeUnwrap(), "Transaction is supposed to succeed")
10087

101-
events := res.Events.Unwrap()
88+
events := res.Events.UnsafeUnwrap()
10289

103-
if SDK.EventFindFirst(events, utPallet.EventBatchCompleted{}).IsSome() {
104-
fmt.Println("Batch was successfully completed")
105-
} else {
106-
panic("Batch All call failed")
107-
}
90+
event := SDK.EventFindFirst(events, utPallet.EventBatchCompleted{})
91+
AssertTrue(event.IsSome(), "BatchCompleted event must be present.")
10892

109-
if len(SDK.EventFindAll(events, utPallet.EventItemCompleted{})) == 2 {
110-
fmt.Println("All batch items completed")
111-
} else {
112-
panic("No all items were completed")
113-
}
93+
event_count := len(SDK.EventFind(events, utPallet.EventItemCompleted{}))
94+
AssertEq(event_count, 2, "ItemCompleted events must be produced twice")
11495

11596
fmt.Println("Force Batch call done")
11697
}
@@ -121,7 +102,7 @@ func RunBatch() {
121102

122103
// The 3. is poisoned with a too high transfer amount
123104
{
124-
destEve, err := metadata.NewAccountIdFromAddress("5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw")
105+
destEve, err := primitives.NewAccountIdFromAddress("5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw")
125106
PanicOnError(err)
126107

127108
tx := sdk.Tx.Balances.TransferKeepAlive(destEve.ToMultiAddress(), SDK.OneAvail().Mul64(uint64(1_000_000_000)))
@@ -130,7 +111,7 @@ func RunBatch() {
130111

131112
// The 4. call is a normal one
132113
{
133-
destDave, err := metadata.NewAccountIdFromAddress("5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy")
114+
destDave, err := primitives.NewAccountIdFromAddress("5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy")
134115
PanicOnError(err)
135116

136117
tx := sdk.Tx.Balances.TransferKeepAlive(destDave.ToMultiAddress(), SDK.OneAvail())
@@ -142,23 +123,18 @@ func RunBatch() {
142123
tx := sdk.Tx.Utility.Batch(callsToExecute)
143124
res, err := tx.ExecuteAndWatchInclusion(acc, SDK.NewTransactionOptions().WithAppId(0))
144125
PanicOnError(err)
145-
AssertTrue(res.IsSuccessful().Unwrap(), "Transaction is supposed to succeed")
126+
AssertTrue(res.IsSuccessful().UnsafeUnwrap(), "Transaction is supposed to succeed")
146127

147-
events := res.Events.Unwrap()
128+
events := res.Events.UnsafeUnwrap()
148129

149-
if event := SDK.EventFindFirst(events, utPallet.EventBatchInterrupted{}); event.IsSome() {
150-
ev := event.Unwrap()
151-
fmt.Println("Batch was interrupted. Reason: ", ev.Error.ToHuman())
152-
fmt.Println("Tx Index that caused failure: ", ev.Index)
153-
} else {
154-
panic("Failed to find EventBatchInterrupted event.")
155-
}
130+
event := SDK.EventFindFirst(events, utPallet.EventBatchInterrupted{})
131+
AssertTrue(event.IsSome(), "BatchInterrupted event must be present.")
156132

157-
if len(SDK.EventFindAll(events, utPallet.EventItemCompleted{})) == 2 {
158-
fmt.Println("Some batch items completed")
159-
} else {
160-
panic("Cannot be more than 2")
161-
}
133+
event2 := SDK.EventFindFirst(events, utPallet.EventBatchCompleted{})
134+
AssertTrue(event2.IsNone(), "BatchCompleted event must NOT be present.")
135+
136+
event_count := len(SDK.EventFind(events, utPallet.EventItemCompleted{}))
137+
AssertEq(event_count, 2, "ItemCompleted events must be produced twice")
162138

163139
fmt.Println("Batch call done")
164140
}
@@ -168,18 +144,7 @@ func RunBatch() {
168144
tx := sdk.Tx.Utility.BatchAll(callsToExecute)
169145
res, err := tx.ExecuteAndWatchInclusion(acc, SDK.NewTransactionOptions().WithAppId(0))
170146
PanicOnError(err)
171-
172-
isOk := res.IsSuccessful()
173-
AssertTrue(isOk.IsSome(), "It should be possible to decode transaction events.")
174-
AssertEq(isOk.Unwrap(), false, "Transaction is supposed to fail")
175-
176-
events := res.Events.Unwrap()
177-
178-
if event := SDK.EventFindFirst(events, syPallet.EventExtrinsicFailed{}); event.IsSome() {
179-
fmt.Println("Batch was interrupted. Reason: ", event.Unwrap().DispatchError.ToHuman())
180-
} else {
181-
panic("Failed to find EventExtrinsicFailed event.")
182-
}
147+
AssertEq(res.IsSuccessful(), prim.NewSome(false), "Transaction is supposed to fail")
183148

184149
fmt.Println("Batch All call done")
185150
}
@@ -189,27 +154,18 @@ func RunBatch() {
189154
tx := sdk.Tx.Utility.ForceBatch(callsToExecute)
190155
res, err := tx.ExecuteAndWatchInclusion(acc, SDK.NewTransactionOptions().WithAppId(0))
191156
PanicOnError(err)
192-
AssertTrue(res.IsSuccessful().Unwrap(), "Transaction is supposed to succeed")
193-
194-
events := res.Events.Unwrap()
195-
196-
if SDK.EventFindFirst(events, utPallet.EventBatchCompletedWithErrors{}).IsSome() {
197-
fmt.Println("Batch completed with errors")
198-
} else {
199-
panic("Failed to find EventBatchCompletedWithErrors")
200-
}
201-
202-
if len(SDK.EventFindAll(events, utPallet.EventItemCompleted{})) == 3 {
203-
fmt.Println("3 of out 4 items completed")
204-
} else {
205-
panic("3 items must be completed")
206-
}
207-
208-
if event := SDK.EventFindFirst(events, utPallet.EventItemFailed{}); event.IsSome() {
209-
fmt.Println("Item failed. Reason: ", event.Unwrap().Error.ToHuman())
210-
} else {
211-
panic("Failed to find EventItemFailed")
212-
}
157+
AssertTrue(res.IsSuccessful().UnsafeUnwrap(), "Transaction is supposed to succeed")
158+
159+
events := res.Events.UnsafeUnwrap()
160+
161+
event := SDK.EventFindFirst(events, utPallet.EventBatchCompletedWithErrors{})
162+
AssertTrue(event.IsSome(), "BatchCompletedWithErrors event must be present.")
163+
164+
event_count := len(SDK.EventFind(events, utPallet.EventItemCompleted{}))
165+
AssertEq(event_count, 3, "ItemCompleted events must be produced thrice")
166+
167+
event_count2 := len(SDK.EventFind(events, utPallet.EventItemFailed{}))
168+
AssertEq(event_count2, 1, "ItemFailed events must be produced once")
213169

214170
fmt.Println("Force Batch call done")
215171
}

examples/block_data_submission_all.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package examples
33
import (
44
"fmt"
55

6-
"github.com/availproject/avail-go-sdk/metadata"
76
"github.com/availproject/avail-go-sdk/primitives"
87

98
SDK "github.com/availproject/avail-go-sdk/sdk"
@@ -20,13 +19,12 @@ func RunBlockDataSubmissionAll() {
2019
PanicOnError(err)
2120

2221
// All Block Blobs
23-
blobs := block.DataSubmissionAll()
24-
fmt.Println("Blob Count: ", len(blobs))
22+
blobs := block.DataSubmissions(SDK.Filter{})
2523
AssertEq(len(blobs), 4, "Data Submission count is not 4")
2624

2725
// Printout All Block Blobs
2826
for _, blob := range blobs {
29-
accountId, err := metadata.NewAccountIdFromMultiAddress(blob.TxSigner)
27+
accountId, err := primitives.NewAccountIdFromMultiAddress(blob.TxSigner)
3028
PanicOnError(err)
3129

3230
fmt.Println(fmt.Sprintf(`Tx Hash: %v, Tx Index: %v, Data: %v, App Id: %v, Signer: %v,`, blob.TxHash, blob.TxIndex, string(blob.Data), blob.AppId, accountId.ToHuman()))

examples/block_data_submission_by_app_id.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package examples
33
import (
44
"fmt"
55

6-
"github.com/availproject/avail-go-sdk/metadata"
76
"github.com/availproject/avail-go-sdk/primitives"
87

98
SDK "github.com/availproject/avail-go-sdk/sdk"
@@ -20,15 +19,15 @@ func RunBlockDataSubmissionByAppId() {
2019
PanicOnError(err)
2120

2221
// Block Blobs filtered by App Id
23-
blobs := block.DataSubmissionByAppId(2)
24-
fmt.Println("Blob Count: ", len(blobs))
22+
appId := uint32(2)
23+
blobs := block.DataSubmissions(SDK.Filter{}.WAppId(appId))
2524
AssertEq(len(blobs), 2, "Data Submission count is not 2")
2625

2726
// Printout Block Blobs filtered by App Id
2827
for _, blob := range blobs {
29-
AssertEq(blob.AppId, 2, "Transaction App Ids are not the same.")
28+
AssertEq(blob.AppId, appId, "Transaction App Ids are not the same.")
3029

31-
accountId, err := metadata.NewAccountIdFromMultiAddress(blob.TxSigner)
30+
accountId, err := primitives.NewAccountIdFromMultiAddress(blob.TxSigner)
3231
PanicOnError(err)
3332

3433
fmt.Println(fmt.Sprintf(`Tx Hash: %v, Tx Index: %v, Data: %v, App Id: %v, Signer: %v,`, blob.TxHash, blob.TxIndex, string(blob.Data), blob.AppId, accountId.ToHuman()))

examples/block_data_submission_by_hash.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package examples
33
import (
44
"fmt"
55

6-
"github.com/availproject/avail-go-sdk/metadata"
76
"github.com/availproject/avail-go-sdk/primitives"
87

98
SDK "github.com/availproject/avail-go-sdk/sdk"
@@ -23,11 +22,13 @@ func RunBlockDataSubmissionByHash() {
2322
txHash, err := primitives.NewH256FromHexString("0xe7efa71363d11bce370fe71a33e5ff296775f37507075c49316132131420f793")
2423
PanicOnError(err)
2524

26-
blob := block.DataSubmissionByHash(txHash).UnsafeUnwrap()
25+
blobs := block.DataSubmissions(SDK.Filter{}.WTxHash(txHash))
26+
AssertEq(len(blobs), 1, "")
27+
blob := &blobs[0]
2728
AssertEq(blob.TxHash.ToHuman(), txHash.ToHuman(), "Transaction Hash are not the same.")
2829

2930
// Printout Block Blobs filtered by Transaction Hash
30-
accountId, err := metadata.NewAccountIdFromMultiAddress(blob.TxSigner)
31+
accountId, err := primitives.NewAccountIdFromMultiAddress(blob.TxSigner)
3132
PanicOnError(err)
3233
fmt.Println(fmt.Sprintf(`Tx Hash: %v, Tx Index: %v, Data: %v, App Id: %v, Signer: %v,`, blob.TxHash, blob.TxIndex, string(blob.Data), blob.AppId, accountId.ToHuman()))
3334

0 commit comments

Comments
 (0)