Skip to content

Commit 737a0e4

Browse files
authored
Merge pull request #6446 from BitGo/coin-4755-msg-signing-support-ada-sol
feat(account-lib): return hex broadcastable message string
2 parents 5842ddc + f34f53c commit 737a0e4

File tree

6 files changed

+20
-11
lines changed

6 files changed

+20
-11
lines changed

examples/ts/build-message.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
*/
99

1010
import {BitGoAPI} from '@bitgo/sdk-api';
11+
import {MessageStandardType} from "@bitgo/sdk-core";
12+
import {MIDNIGHT_TNC_HASH} from "@bitgo/account-lib/dist/src/utils";
1113
import {Hteth} from "@bitgo/sdk-coin-eth";
12-
import {MessageStandardType} from "@bitgo/sdk-core"; // Replace with your given coin (e.g. Ltc, Tltc)
1314
require('dotenv').config({ path: '../../.env' });
1415

1516
const bitgo = new BitGoAPI({
@@ -28,9 +29,12 @@ async function main() {
2829
const wallet = await bitgo.coin(coin).wallets().get({ id });
2930
console.log(`Wallet label: ${wallet.label()}`);
3031

32+
const adaTestnetDestinationAddress = 'addr_test1vz7xs7ceu4xx9n5xn57lfe86vrwddqpp77vjwq5ptlkh49cqy3wur';
33+
const testnetMessageRaw = `STAR 12345678 to ${adaTestnetDestinationAddress} ${MIDNIGHT_TNC_HASH}`;
34+
3135
const txRequest = await wallet.buildSignMessageRequest({
3236
message: {
33-
messageRaw: 'Hello, BitGo!',
37+
messageRaw: testnetMessageRaw,
3438
messageStandardType: MessageStandardType.EIP191,
3539
},
3640
});

modules/abstract-eth/test/unit/messages/eip191/eip191Message.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ describe('EIP191 Message', () => {
145145
metadata: fixtures.eip191.metadata,
146146
});
147147

148-
const broadcastString = await message.toBroadcastString();
148+
const broadcastHex = await message.toBroadcastString();
149+
const broadcastString = Buffer.from(broadcastHex, 'hex').toString();
149150
const parsedBroadcast = JSON.parse(broadcastString);
150151
const expectedSerializedSignatures = serializeSignatures([fixtures.eip191.signature]);
151152

modules/sdk-core/src/account-lib/baseCoin/messages/baseMessage.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ export abstract class BaseMessage implements IMessage {
160160
*/
161161
async toBroadcastString(): Promise<string> {
162162
const broadcastable = await this.toBroadcastFormat();
163-
return JSON.stringify(broadcastable);
163+
const broadcastableStr = JSON.stringify(broadcastable);
164+
return Buffer.from(broadcastableStr).toString('hex');
164165
}
165166

166167
/**

modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,12 @@ export abstract class BaseMessageBuilderFactory implements IMessageBuilderFactor
4444

4545
/**
4646
* Parses a broadcastable message and gets the message builder based on the message type.
47-
* @param broadcastString The broadcastable message to parse
47+
* @param broadcastHex The broadcastable message to parse
4848
* @returns A message builder instance for the parsed broadcastable message type
4949
*/
50-
fromBroadcastString(broadcastString: string): IMessageBuilder {
51-
const broadcastMessage = JSON.parse(broadcastString) as BroadcastableMessage;
50+
fromBroadcastString(broadcastHex: string): IMessageBuilder {
51+
const broadcastStr = Buffer.from(broadcastHex).toString();
52+
const broadcastMessage = JSON.parse(broadcastStr) as BroadcastableMessage;
5253
return this.fromBroadcastFormat(broadcastMessage);
5354
}
5455
}

modules/sdk-core/test/unit/account-lib/baseCoin/messages/baseMessage.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ describe('Base Message', () => {
210210
});
211211

212212
describe('toBroadcastString', () => {
213-
it('should serialize the broadcastable format to JSON string', async () => {
213+
it('should serialize the broadcastable format to hex string', async () => {
214214
const { payload, type, metadata, signers, signatures } = messageSamples.eip191;
215215

216216
const message = new TestMessage({
@@ -230,7 +230,8 @@ describe('Base Message', () => {
230230
signablePayload: 'SGVsbG8gQml0R28h',
231231
};
232232

233-
const broadcastString = await message.toBroadcastString();
233+
const broadcastHex = await message.toBroadcastString();
234+
const broadcastString = Buffer.from(broadcastHex, 'hex').toString();
234235
const parsed = JSON.parse(broadcastString);
235236

236237
should.deepEqual(parsed, expectedBroadcastString);

modules/sdk-core/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ describe('Base Message Builder', () => {
177177
builder.setType(MessageStandardType.EIP191).setPayload(payload).setSignatures(signatures).setSigners(signers);
178178

179179
const message = await builder.build();
180-
const broadcastString = await message.toBroadcastString();
180+
const broadcastHex = await message.toBroadcastString();
181181

182182
const expectedJson = JSON.stringify({
183183
type: MessageStandardType.EIP191,
@@ -187,7 +187,8 @@ describe('Base Message Builder', () => {
187187
metadata: { encoding: 'utf8' },
188188
signablePayload: 'c2VyaWFsaXplIG1l',
189189
});
190+
const expectedHex = Buffer.from(expectedJson).toString('hex');
190191

191-
should.equal(broadcastString, expectedJson);
192+
should.equal(broadcastHex, expectedHex);
192193
});
193194
});

0 commit comments

Comments
 (0)