209 похожих чатов

Как можно запаковать три адреса (uint160) в два uint256 слота

txinput? ну и потом дешево распаковать в солидити

2 ответов

17 просмотров

Три адреса можно через bytes переслать. В два числа засовывать - какой-то изврат

Примерно так себе это представляю function packAddr(address a, address b, address c) public view returns(uint256 a1, uint256 b1) { assembly { a1 := add(shl(96,a),shr(80,b)) b1 := add(shl(176,b),c) } return(a1, b1); } function unpackAddr(uint256 a, uint256 b) public view returns(address a1, address b1, address c1) { assembly { a1 := shr(96,a) b1 := add(shl(80,a),shr(176,b)) c1 := b } return(a1, b1, c1); } Как паковать средний адрес - тут уже как фантазия позволит, разбил пополам. Для tximput можно воспроизвести уже в оффчейне. 50 газа примерно едят вставки

Похожие вопросы

Обсуждают сегодня

Карта сайта