I am trying to write tests for my contract, which stores an user as follows:
type userData is record [
addressSet : set(bytes);
storedAmount : tez;
]
My storage is a big_map as follows:
type storage is big_map (string, userData);
When I am trying to run the contract, it compiles, but fails on the compilation with
Error: while migrating Vault: [0] Invalid bytes: 0,116,0,122,0,49,0,104,0,115,0,88,0,112,0,107,0,101,0,118,0,87,0,74,0,87,0,107,0,101,0,57,0,116,0,105,0,107,0,111,0,103,0,74,0,102,0,86,0,50,0,116,0,68,0,56,0,100,0,119,0,120,0,80,0,82,0,101,0,70,0,85,...
This if the initial storage json I am providing for the migration:
initial: {
addressSet:
[
"tz1hsXpkevWJWke9tikogJfV2tD8dwxPReFU",
"tz1hsXpkevWJWke9tikogJfV2tD8dwxPReFK"
],
storedAmount:1000,
},
My migration script for truffle looks like this:
const Vault = artifacts.require("Vault");
const {MichelsonMap} = require("@taquito/taquito");
const acc = require ("../scripts/sandbox/accounts");
function packString(str) {
var bytes = [];
for(var i = 0, n = str.length; i < n; i++) {
var char = str.charCodeAt(i);
bytes.push(char >>> 8, char & 0xFF);
}
return bytes;
}
module.exports = async (deployer, _network, accounts) => {
const identifier = acc.initial.identifier;
const addressSetBytes = [];
// Access the "initial" json stated above to get the string addresses
const address1Bytes = packString(acc.initial.addressSet[0]);
const address2Bytes = packString(acc.initial.addressSet[1]);
addressSetBytes.push(address1Bytes);
addressSetBytes.push(address2Bytes);
const userData =
{
addressSet: addressSetBytes,
storedAmount: acc.initial.storedAmount,
};
const testUser = "Mike";
const storage = new MichelsonMap();
storage.set(testUser, userData);
deployer.deploy(Vault, storage);
};
Can anybody see what I am doing wrong and why the byte array I am providing should be wrong?