我正在修改均衡器治理过程。其中一部分是要求建议海报使用安全UI编写安全事务构建器json导出,并在进行表决之前将其作为治理过程的一部分提交。
最后,我们每周处理10-20个条目,其中大多数都是相同的multisig,因此我们正在编写一个脚本来基于目标安全合并一组jsons。
那很容易/很好。唯一的实际问题是元数据中的校验和:
"meta": {
"name": "Transactions Batch",
"description": "",
"txBuilderVersion": "1.11.1",
"createdFromSafeAddress": "0xc38c5f97B34E175FFd35407fc91a937300E33860",
"createdFromOwnerAddress": "",
"checksum": "0x2278322fc7e9159d3d46832c1866c94311186dd9920f6d31c15af0242f0f4e35"
},所以现在我的问题。
1:是否需要这个校验和字段,如果需要,如何计算? 2:是否有地方可以找到用于事务构建器应用程序的源代码和/或文档和/或谁维护它?
发布于 2023-01-23 12:03:39
校验和是通过序列化批处理并使用sha3散列来计算的。下面是Gnosis安全UI中的相关部分,可以作为脚本运行:
const web3 = require('web3')
const stringifyReplacer = (_, value) => (value === undefined ? null : value)
const serializeJSONObject = (json) => {
if (Array.isArray(json)) {
return `[${json.map((el) => serializeJSONObject(el)).join(',')}]`
}
if (typeof json === 'object' && json !== null) {
let acc = ''
const keys = Object.keys(json).sort()
acc += `{${JSON.stringify(keys, stringifyReplacer)}`
for (let i = 0; i < keys.length; i++) {
acc += `${serializeJSONObject(json[keys[i]])},`
}
return `${acc}}`
}
return `${JSON.stringify(json, stringifyReplacer)}`
}
const calculateChecksum = (batchFile) => {
const serialized = serializeJSONObject({
...batchFile,
meta: { ...batchFile.meta, name: null },
})
const sha = web3.utils.sha3(serialized)
return sha || undefined
}https://ethereum.stackexchange.com/questions/143082
复制相似问题