Skip to content

Commit 45b2aa8

Browse files
committed
merged main
2 parents 391f73b + f333a42 commit 45b2aa8

File tree

6 files changed

+3051
-319
lines changed

6 files changed

+3051
-319
lines changed

app/upgrades.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/pushchain/push-chain-node/app/upgrades/noop"
1414
outbound "github.com/pushchain/push-chain-node/app/upgrades/outbound"
1515
pcmintcap "github.com/pushchain/push-chain-node/app/upgrades/pc-mint-cap"
16+
proxybytecodefix "github.com/pushchain/push-chain-node/app/upgrades/proxy-bytecode-fix"
1617
removefeeabsv1 "github.com/pushchain/push-chain-node/app/upgrades/remove-fee-abs-v1"
1718
solanafix "github.com/pushchain/push-chain-node/app/upgrades/solana-fix"
1819
tsscore "github.com/pushchain/push-chain-node/app/upgrades/tss-core"
@@ -37,6 +38,7 @@ var Upgrades = []upgrades.Upgrade{
3738
removefeeabsv1.NewUpgrade(),
3839
outbound.NewUpgrade(),
3940
universaltxv1.NewUpgrade(),
41+
proxybytecodefix.NewUpgrade(),
4042
}
4143

4244
// RegisterUpgradeHandlers registers the chain upgrade handlers
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package addressfix
2+
3+
import (
4+
"context"
5+
6+
storetypes "cosmossdk.io/store/types"
7+
upgradetypes "cosmossdk.io/x/upgrade/types"
8+
9+
sdk "github.com/cosmos/cosmos-sdk/types"
10+
"github.com/cosmos/cosmos-sdk/types/module"
11+
12+
"github.com/pushchain/push-chain-node/app/upgrades"
13+
)
14+
15+
const UpgradeName = "proxy-bytecode-fix"
16+
17+
// NewUpgrade constructs the upgrade definition
18+
func NewUpgrade() upgrades.Upgrade {
19+
return upgrades.Upgrade{
20+
UpgradeName: UpgradeName,
21+
CreateUpgradeHandler: CreateUpgradeHandler,
22+
StoreUpgrades: storetypes.StoreUpgrades{
23+
Added: []string{},
24+
Deleted: []string{},
25+
},
26+
}
27+
}
28+
29+
func CreateUpgradeHandler(
30+
mm upgrades.ModuleManager,
31+
configurator module.Configurator,
32+
ak *upgrades.AppKeepers,
33+
) upgradetypes.UpgradeHandler {
34+
return func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
35+
sdkCtx := sdk.UnwrapSDKContext(ctx)
36+
sdkCtx.Logger().Info("🔧 Running upgrade:", "name", UpgradeName)
37+
38+
err := ak.URegistryKeeper.FixReservedBytecode(sdkCtx)
39+
40+
if err != nil {
41+
panic(err)
42+
}
43+
44+
sdkCtx.Logger().Info("Fixed Reserved Addresses Bytecodes...")
45+
46+
// Run module migrations
47+
return mm.RunMigrations(ctx, configurator, fromVM)
48+
}
49+
}

universalClient/chains/svm/rpc_client.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,30 @@ func (rc *RPCClient) BroadcastTransaction(ctx context.Context, tx *solana.Transa
296296
return txHash, err
297297
}
298298

299+
// SimulateTransaction runs a transaction against the current ledger state without broadcasting.
300+
// Returns the simulation result (logs, error, compute units consumed).
301+
// Skips signature verification so the TSS/relayer signatures don't need to be valid.
302+
func (rc *RPCClient) SimulateTransaction(ctx context.Context, tx *solana.Transaction) (*rpc.SimulateTransactionResult, error) {
303+
var result *rpc.SimulateTransactionResponse
304+
err := rc.executeWithFailover(ctx, "simulate_transaction", func(client *rpc.Client) error {
305+
resp, innerErr := client.SimulateTransactionWithOpts(ctx, tx, &rpc.SimulateTransactionOpts{
306+
SigVerify: false,
307+
})
308+
if innerErr != nil {
309+
return innerErr
310+
}
311+
result = resp
312+
return nil
313+
})
314+
if err != nil {
315+
return nil, err
316+
}
317+
if result == nil || result.Value == nil {
318+
return nil, fmt.Errorf("empty simulation result")
319+
}
320+
return result.Value, nil
321+
}
322+
299323
// GetAccountData fetches account data for a given public key
300324
func (rc *RPCClient) GetAccountData(ctx context.Context, pubkey solana.PublicKey) ([]byte, error) {
301325
var accountData []byte

0 commit comments

Comments
 (0)