Skip to content

Commit

Permalink
Merge pull request #486 from casper-ecosystem/release/5.0.4-beta2
Browse files Browse the repository at this point in the history
Updated makeCep18TransferDeploy to use contractPackageHash instead of contractHash, PEM files creation and parsing unification with old SDK
  • Loading branch information
Comp0te authored Jan 15, 2025
2 parents f107c00 + d0666dc commit ec5f37e
Show file tree
Hide file tree
Showing 13 changed files with 610 additions and 55 deletions.
5 changes: 4 additions & 1 deletion src/@types/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ export enum CasperNetworkName {
export enum AuctionManagerEntryPoint {
delegate = 'delegate',
undelegate = 'undelegate',
redelegate = 'redelegate'
redelegate = 'redelegate',
addBid = 'add_bid',
withdrawBid = 'withdraw_bid',
activateBid = 'activate_bid',
}

export enum NFTTokenStandard {
Expand Down
4 changes: 2 additions & 2 deletions src/rpc/response.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,10 @@ export class RpcAddressableEntity {
@jsonMember({ name: 'entity', constructor: RpcAddressableEntity })
entity: RpcAddressableEntity;

@jsonMember({ name: 'named_keys', constructor: NamedKey })
@jsonArrayMember(NamedKey, { name: 'named_keys' })
namedKeys: NamedKey[];

@jsonMember({ name: 'entry_points', constructor: EntryPointValue })
@jsonArrayMember(EntryPointValue, { name: 'entry_points' })
entryPoints?: EntryPointValue[];
}

Expand Down
24 changes: 24 additions & 0 deletions src/types/TransactionBuilder.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,18 @@ const transaction = new NativeTransferBuilder()

transaction.sign(sender);

// Create a simple native transfer for 1.5 network
const transactionFromDeploy = new NativeTransferBuilder()
.from(sender.publicKey)
.target(PublicKey.fromHex('abcdef0123456789'))
.amount('25000000000') // Amount in motes
.id(Date.now())
.chainName('casper')
.payment(100_000_000)
.buildFor1_5();

transaction.sign(sender);

// Create a contract call
const contractCallTransaction = new ContractCallBuilder()
.from(sender.publicKey)
Expand All @@ -169,5 +181,17 @@ const contractCallTransaction = new ContractCallBuilder()
.chainName('casper-net-1')
.build();

contractCallTransaction.sign(sender);

// Create a contract call for 1.5 network
const contractCallTransactionFromDeploy = new ContractCallBuilder()
.from(sender.publicKey)
.byHash('example_contract')
.entryPoint('unstake')
.runtimeArgs(Args.fromMap({ key: 'value' }))
.payment(3_000000000) // Amount in motes
.chainName('casper-net-1')
.buildFor1_5();

contractCallTransaction.sign(sender);
```
139 changes: 139 additions & 0 deletions src/types/TransactionBuilder.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
import { expect } from 'chai';

import {
ContractCallBuilder,
NativeDelegateBuilder,
NativeTransferBuilder
} from './TransactionBuilder';
import { PublicKey } from './keypair';
import {
makeAuctionManagerDeploy,
makeCep18TransferDeploy,
makeCsprTransferDeploy
} from '../utils';
import { Args } from './Args';
import { CLValue, CLValueUInt256 } from './clvalue';
import { Key, KeyTypeID } from './key';
import { AuctionManagerEntryPoint, CasperNetworkName } from '../@types';

describe('Test TransactionBuilder', () => {
it('should create native CSPR transfer Deploy', () => {
const tx = new NativeTransferBuilder()
.from(
PublicKey.fromHex(
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64'
)
)
.target(
PublicKey.fromHex(
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64'
)
)
.amount('25000000000')
.chainName('casper')
.payment(100_000_000)
.buildFor1_5();

const deploy = makeCsprTransferDeploy({
chainName: 'casper',
recipientPublicKeyHex:
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64',
senderPublicKeyHex:
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64',
transferAmount: '25000000000'
});

expect(deploy.session.bytes().toString()).to.be.equal(
tx
.getDeploy()
?.session.bytes()
.toString()
);
});

it('should create CEP-18 transfer Deploy', () => {
const tx = new ContractCallBuilder()
.from(
PublicKey.fromHex(
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64'
)
)
.byPackageHash(
'f5e3729b502597fdd7be9ecedb6f73e4530f5e8a4c809f269d757677cbe49b78'
)
.entryPoint('transfer')
.runtimeArgs(
Args.fromMap({
recipient: CLValue.newCLKey(
Key.createByType(
PublicKey.fromHex(
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64'
)
.accountHash()
.toPrefixedString(),
KeyTypeID.Account
)
),
amount: CLValueUInt256.newCLUInt256('1000000000')
})
)
.payment(2_000000000)
.chainName('casper')
.buildFor1_5();

const deploy = makeCep18TransferDeploy({
chainName: 'casper',
contractPackageHash:
'f5e3729b502597fdd7be9ecedb6f73e4530f5e8a4c809f269d757677cbe49b78',
paymentAmount: '2000000000',
recipientPublicKeyHex:
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64',
senderPublicKeyHex:
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64',
transferAmount: '1000000000'
});

expect(deploy.session.bytes().toString()).to.be.equal(
tx
.getDeploy()
?.session.bytes()
.toString()
);
});

it('should create Auction Delegation Deploy', () => {
const tx = new NativeDelegateBuilder()
.from(
PublicKey.fromHex(
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64'
)
)
.validator(
PublicKey.fromHex(
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64'
)
)
.amount('100000000000')
.payment(2000000000)
.chainName('casper')
.buildFor1_5();

const deploy = makeAuctionManagerDeploy({
amount: '100000000000',
chainName: CasperNetworkName.Mainnet,
contractEntryPoint: AuctionManagerEntryPoint.delegate,
delegatorPublicKeyHex:
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64',
paymentAmount: '2000000000',
validatorPublicKeyHex:
'0202f5a92ab6da536e7b1a351406f3744224bec85d7acbab1497b65de48a1a707b64'
});

expect(deploy.session.bytes().toString()).to.be.equal(
tx
.getDeploy()
?.session.bytes()
.toString()
);
});
});
Loading

0 comments on commit ec5f37e

Please sign in to comment.