arnaucube
arnaucube/circomlibPublic Self-hosted repository
poseidon contract now accepts both selectors: for uint256[n] and bytes32[n]
Alexey peretsmobil@gmail.com
Tue, 27 Oct 2020 21:23:32 +0300
commit

1e04fc0325c91a843646be260bd84bd93df82b0a

parent

1f9d0bd37fbfdea3f09ca706af17b95b59213537

1 files changed, 27 insertions(+), 1 deletions(-)

jump to
M src/poseidon_gencontract.js → src/poseidon_gencontract.js

@@ -100,8 +100,13 @@ C.push("0x0100000000000000000000000000000000000000000000000000000000");

C.push(0); C.calldataload(); C.div(); - C.push(Web3Utils.keccak256(`poseidon(uint256[${nInputs}])`).slice(0, 10)); // poseidon(uint256[]) + C.dup(0); + C.push(Web3Utils.keccak256(`poseidon(uint256[${nInputs}])`).slice(0, 10)); // poseidon(uint256[n]) + C.eq(); + C.swap(1); + C.push(Web3Utils.keccak256(`poseidon(bytes32[${nInputs}])`).slice(0, 10)); // poseidon(bytes32[n]) C.eq(); + C.or(); C.jmpi("start"); C.invalid();

@@ -157,6 +162,27 @@ }

function generateABI(nInputs) { return [ + { + "constant": true, + "inputs": [ + { + "internalType": `bytes32[${nInputs}]`, + "name": "input", + "type": `bytes32[${nInputs}]` + } + ], + "name": "poseidon", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [