Use new token names HASH/ISA/JADE

those don't conflict with other BCP demo tokens
This commit is contained in:
Simon Warta 2020-02-18 17:15:53 +01:00
parent 1af9d5da91
commit cd40206651
10 changed files with 90 additions and 88 deletions

View File

@ -22,17 +22,17 @@ const defaultErc20Tokens: readonly Erc20Token[] = [
{
contractAddress: "cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5",
fractionalDigits: 5,
ticker: "ASH",
ticker: "HASH",
},
{
contractAddress: "cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd",
fractionalDigits: 0,
ticker: "BASH",
ticker: "ISA",
},
{
contractAddress: "cosmos18r5szma8hm93pvx6lwpjwyxruw27e0k5uw835c",
fractionalDigits: 18,
ticker: "CASH",
ticker: "JADE",
},
];
@ -73,11 +73,11 @@ describe("CosmWasmCodec", () => {
chainId: chainId,
sender: "cosmos1txqfn5jmcts0x0q7krdxj8tgf98tj0965vqlmq" as Address,
recipient: "cosmos1dddd" as Address,
memo: "My first BASH payment",
memo: "My first ISA payment",
amount: {
fractionalDigits: 0,
quantity: "345",
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
},
fee: {
tokens: {
@ -91,7 +91,7 @@ describe("CosmWasmCodec", () => {
const expected = {
bytes: toUtf8(
'{"account_number":"0","chain_id":"cosmoshub-3","fee":{"amount":[{"amount":"2500","denom":"uatom"}],"gas":"100000"},"memo":"My first BASH payment","msgs":[{"type":"wasm/execute","value":{"contract":"cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd","msg":{"transfer":{"amount":"345","recipient":"cosmos1dddd"}},"sender":"cosmos1txqfn5jmcts0x0q7krdxj8tgf98tj0965vqlmq","sent_funds":[]}}],"sequence":"99"}',
'{"account_number":"0","chain_id":"cosmoshub-3","fee":{"amount":[{"amount":"2500","denom":"uatom"}],"gas":"100000"},"memo":"My first ISA payment","msgs":[{"type":"wasm/execute","value":{"contract":"cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd","msg":{"transfer":{"amount":"345","recipient":"cosmos1dddd"}},"sender":"cosmos1txqfn5jmcts0x0q7krdxj8tgf98tj0965vqlmq","sent_funds":[]}}],"sequence":"99"}',
),
prehashType: PrehashType.Sha256,
};

View File

@ -54,7 +54,7 @@ const faucet = {
describe("CosmWasmConnection", () => {
const cosm = "COSM" as TokenTicker;
const bash = "BASH" as TokenTicker;
const isa = "ISA" as TokenTicker;
const httpUrl = "http://localhost:1317";
const defaultChainId = "cosmos:testing" as ChainId;
const defaultEmptyAddress = "cosmos1h806c7khnvmjlywdrkdgk2vrayy2mmvf9rxk2r" as Address;
@ -93,20 +93,20 @@ describe("CosmWasmConnection", () => {
{
contractAddress: "cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5",
fractionalDigits: 5,
ticker: "ASH",
name: "Ash Token",
ticker: "HASH",
name: "Hash Token",
},
{
contractAddress: "cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd",
fractionalDigits: 0,
ticker: "BASH",
name: "Bash Token",
ticker: "ISA",
name: "Isa Token",
},
{
contractAddress: "cosmos18r5szma8hm93pvx6lwpjwyxruw27e0k5uw835c",
fractionalDigits: 18,
ticker: "CASH",
name: "Cash Token",
ticker: "JADE",
name: "Jade Token",
},
],
};
@ -178,26 +178,26 @@ describe("CosmWasmConnection", () => {
const connection = await CosmWasmConnection.establish(httpUrl, defaultPrefix, defaultConfig);
const tokens = await connection.getAllTokens();
expect(tokens).toEqual([
{
fractionalDigits: 5,
tokenName: "Ash Token",
tokenTicker: "ASH" as TokenTicker,
},
{
fractionalDigits: 0,
tokenName: "Bash Token",
tokenTicker: "BASH" as TokenTicker,
},
{
fractionalDigits: 18,
tokenName: "Cash Token",
tokenTicker: "CASH" as TokenTicker,
},
{
fractionalDigits: 6,
tokenName: "Fee Token",
tokenTicker: "COSM" as TokenTicker,
},
{
fractionalDigits: 5,
tokenName: "Hash Token",
tokenTicker: "HASH" as TokenTicker,
},
{
fractionalDigits: 0,
tokenName: "Isa Token",
tokenTicker: "ISA" as TokenTicker,
},
{
fractionalDigits: 18,
tokenName: "Jade Token",
tokenTicker: "JADE" as TokenTicker,
},
{
fractionalDigits: 6,
tokenName: "Staking Token",
@ -236,20 +236,20 @@ describe("CosmWasmConnection", () => {
expect(account.pubkey).toBeUndefined();
expect(account.balance).toEqual([
{
tokenTicker: "ASH" as TokenTicker,
tokenTicker: "COSM" as TokenTicker,
quantity: "1000000000",
fractionalDigits: 6,
},
{
tokenTicker: "HASH" as TokenTicker,
quantity: "12812345",
fractionalDigits: 5,
},
{
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
quantity: "42",
fractionalDigits: 0,
},
{
tokenTicker: "COSM" as TokenTicker,
quantity: "1000000000",
fractionalDigits: 6,
},
{
tokenTicker: "STAKE" as TokenTicker,
quantity: "1000000000",
@ -410,7 +410,7 @@ describe("CosmWasmConnection", () => {
amount: {
quantity: "345",
fractionalDigits: 0,
tokenTicker: bash,
tokenTicker: isa,
},
});
const nonce = await connection.getNonce({ address: senderAddress });
@ -1000,7 +1000,7 @@ describe("CosmWasmConnection", () => {
amount: {
quantity: "75",
fractionalDigits: 0,
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
},
});
const nonce = await connection.getNonce({ address: senderAddress });
@ -1011,10 +1011,10 @@ describe("CosmWasmConnection", () => {
expect(blockInfo.state).toEqual(TransactionState.Succeeded);
const recipientAccount = await connection.getAccount({ address: recipient });
assert(recipientAccount, "Recipient account must have BASH tokens");
assert(recipientAccount, "Recipient account must have ISA tokens");
expect(recipientAccount.balance).toEqual([
{
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
quantity: "75",
fractionalDigits: 0,
},

View File

@ -68,17 +68,17 @@ describe("decode", () => {
{
contractAddress: "cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5",
fractionalDigits: 5,
ticker: "ASH",
ticker: "HASH",
},
{
contractAddress: "cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd",
fractionalDigits: 0,
ticker: "BASH",
ticker: "ISA",
},
{
contractAddress: "cosmos18r5szma8hm93pvx6lwpjwyxruw27e0k5uw835c",
fractionalDigits: 18,
ticker: "CASH",
ticker: "JADE",
},
];
@ -187,7 +187,7 @@ describe("decode", () => {
recipient: "cosmos1z7g5w84ynmjyg0kqpahdjqpj7yq34v3suckp0e" as Address,
amount: {
quantity: "887878484",
tokenTicker: "ASH" as TokenTicker,
tokenTicker: "HASH" as TokenTicker,
fractionalDigits: 5,
},
memo: defaultMemo,
@ -255,7 +255,7 @@ describe("decode", () => {
recipient: "cosmos1z7g5w84ynmjyg0kqpahdjqpj7yq34v3suckp0e" as Address,
amount: {
quantity: "887878484",
tokenTicker: "ASH" as TokenTicker,
tokenTicker: "HASH" as TokenTicker,
fractionalDigits: 5,
},
memo: defaultMemo,

View File

@ -53,17 +53,17 @@ describe("encode", () => {
{
contractAddress: "cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5",
fractionalDigits: 5,
ticker: "ASH",
ticker: "HASH",
},
{
contractAddress: "cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd",
fractionalDigits: 0,
ticker: "BASH",
ticker: "ISA",
},
{
contractAddress: "cosmos18r5szma8hm93pvx6lwpjwyxruw27e0k5uw835c",
fractionalDigits: 18,
ticker: "CASH",
ticker: "JADE",
},
];
@ -83,7 +83,7 @@ describe("encode", () => {
const amount: Amount = {
quantity: "789",
fractionalDigits: 0,
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
};
expect(toErc20Amount(amount, bash)).toEqual("789");
});
@ -92,7 +92,7 @@ describe("encode", () => {
const amount: Amount = {
quantity: "789",
fractionalDigits: 0,
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
};
expect(() => toErc20Amount(amount, ash)).toThrowError(/ticker mismatch/i);
});
@ -101,7 +101,7 @@ describe("encode", () => {
const amount: Amount = {
quantity: "789",
fractionalDigits: 2,
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
};
expect(() => toErc20Amount(amount, bash)).toThrowError(/fractional digits mismatch/i);
});
@ -298,7 +298,7 @@ describe("encode", () => {
amount: {
fractionalDigits: 0,
quantity: "345",
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
},
fee: {
tokens: {

View File

@ -116,7 +116,7 @@ situation is different.
```
curl --header "Content-Type: application/json" \
--request POST \
--data '{"ticker":"BASH","address":"cosmos1yre6ac7qfgyfgvh58ph0rgw627rhw766y430qq"}' \
--data '{"ticker":"ISA","address":"cosmos1yre6ac7qfgyfgvh58ph0rgw627rhw766y430qq"}' \
http://localhost:8000/credit
```

View File

@ -2,26 +2,26 @@ import { RequestParser } from "./requestparser";
describe("RequestParser", () => {
it("can process valid credit request", () => {
const body = { address: "abc", ticker: "CASH" };
expect(RequestParser.parseCreditBody(body)).toEqual({ address: "abc", ticker: "CASH" });
const body = { address: "abc", ticker: "TKN" };
expect(RequestParser.parseCreditBody(body)).toEqual({ address: "abc", ticker: "TKN" });
});
it("throws for invalid credit requests", () => {
// address unset
{
const body = { ticker: "CASH" };
const body = { ticker: "TKN" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'address' must be a string/i);
}
// address wrong type
{
const body = { address: true, ticker: "CASH" };
const body = { address: true, ticker: "TKN" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'address' must be a string/i);
}
// address empty
{
const body = { address: "", ticker: "CASH" };
const body = { address: "", ticker: "TKN" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'address' must not be empty/i);
}

View File

@ -27,8 +27,8 @@ export const developmentTokenConfig: TokenConfiguration = {
{
contractAddress: "cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd",
fractionalDigits: 0,
ticker: "BASH",
name: "Bash Token",
ticker: "ISA",
name: "Isa Token",
},
],
};

View File

@ -35,8 +35,8 @@ const defaultConfig: TokenConfiguration = {
{
contractAddress: "cosmos1hqrdl6wstt8qzshwc6mrumpjk9338k0lr4dqxd",
fractionalDigits: 0,
ticker: "BASH",
name: "Bash Token",
ticker: "ISA",
name: "Isa Token",
},
],
};
@ -112,7 +112,7 @@ describe("Faucet", () => {
amount: {
quantity: "7",
fractionalDigits: 0,
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
},
sender: holder,
recipient: recipient,
@ -123,7 +123,7 @@ describe("Faucet", () => {
{
quantity: "7",
fractionalDigits: 0,
tokenTicker: "BASH" as TokenTicker,
tokenTicker: "ISA" as TokenTicker,
},
]);
connection.disconnect();
@ -140,21 +140,21 @@ describe("Faucet", () => {
const distributorBalance = (await connection.getAccount({ pubkey: distributors[0].pubkey }))?.balance;
assert(distributorBalance);
expect(distributorBalance).toEqual([
jasmine.objectContaining({
tokenTicker: "BASH",
fractionalDigits: 0,
}),
jasmine.objectContaining({
tokenTicker: "COSM",
fractionalDigits: 6,
}),
jasmine.objectContaining({
tokenTicker: "ISA",
fractionalDigits: 0,
}),
jasmine.objectContaining({
tokenTicker: "STAKE",
fractionalDigits: 6,
}),
]);
expect(Number.parseInt(distributorBalance[0].quantity, 10)).toBeGreaterThanOrEqual(80);
expect(Number.parseInt(distributorBalance[1].quantity, 10)).toBeGreaterThanOrEqual(80_000000);
expect(Number.parseInt(distributorBalance[0].quantity, 10)).toBeGreaterThanOrEqual(80_000000);
expect(Number.parseInt(distributorBalance[1].quantity, 10)).toBeGreaterThanOrEqual(80);
expect(Number.parseInt(distributorBalance[2].quantity, 10)).toBeGreaterThanOrEqual(80_000000);
connection.disconnect();
});
@ -207,7 +207,7 @@ describe("Faucet", () => {
const { profile } = await makeProfile();
const faucet = new Faucet(defaultConfig, connection, codec, profile);
const tickers = await faucet.loadTokenTickers();
expect(tickers).toEqual(["BASH", "COSM", "STAKE"]);
expect(tickers).toEqual(["COSM", "ISA", "STAKE"]);
connection.disconnect();
});
});

View File

@ -26,11 +26,11 @@ describe("multichainhelpers", () => {
{
quantity: "1",
fractionalDigits: 9,
tokenTicker: "CASH" as TokenTicker,
tokenTicker: "JADE" as TokenTicker,
},
],
});
expect(tickers).toEqual(["CASH"]);
expect(tickers).toEqual(["JADE"]);
});
it("works for two tokens", () => {
@ -41,7 +41,7 @@ describe("multichainhelpers", () => {
{
quantity: "1",
fractionalDigits: 9,
tokenTicker: "CASH" as TokenTicker,
tokenTicker: "JADE" as TokenTicker,
},
{
quantity: "1",
@ -50,7 +50,7 @@ describe("multichainhelpers", () => {
},
],
});
expect(tickers).toEqual(["CASH", "TRASH"]);
expect(tickers).toEqual(["JADE", "TRASH"]);
});
});
});

View File

@ -10,46 +10,48 @@ const faucet = {
"economy stock theory fatal elder harbor betray wasp final emotion task crumble siren bottom lizard educate guess current outdoor pair theory focus wife stone",
address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
};
const unusedAccount = "cosmos1cjsxept9rkggzxztslae9ndgpdyt2408lk850u";
const unused = {
address: "cosmos1cjsxept9rkggzxztslae9ndgpdyt2408lk850u",
};
const initMsgAsh = {
const initMsgHash = {
decimals: 5,
name: "Ash token",
symbol: "ASH",
name: "Hash token",
symbol: "HASH",
initial_balances: [
{
address: faucet.address,
amount: "11",
},
{
address: unusedAccount,
address: unused.address,
amount: "12812345",
},
],
};
const initMsgBash = {
const initMsgIsa = {
decimals: 0,
name: "Bash Token",
symbol: "BASH",
name: "Isa Token",
symbol: "ISA",
initial_balances: [
{
address: faucet.address,
amount: "999999999",
},
{
address: unusedAccount,
address: unused.address,
amount: "42",
},
],
};
const initMsgCash = {
const initMsgJade = {
decimals: 18,
name: "Cash Token",
symbol: "CASH",
name: "Jade Token",
symbol: "JADE",
initial_balances: [
{
address: faucet.address,
amount: "189189189000000000000000000", // 189189189 CASH
amount: "189189189000000000000000000", // 189189189 JADE
},
],
};
@ -62,7 +64,7 @@ async function main() {
const codeId = await client.upload(wasm, "Upload ERC20 contract");
console.info(`Upload succeeded. Code ID is ${codeId}`);
for (const initMsg of [initMsgAsh, initMsgBash, initMsgCash]) {
for (const initMsg of [initMsgHash, initMsgIsa, initMsgJade]) {
const memo = `Create an ERC20 instance for ${initMsg.symbol}`;
const contractAddress = await client.instantiate(codeId, initMsg, memo);
console.info(`Contract instantiated for ${initMsg.symbol} at ${contractAddress}`);