diff --git a/initialize-scripts/initialize.js b/initialize-scripts/initialize.js index 506e0aa..ffacc5b 100644 --- a/initialize-scripts/initialize.js +++ b/initialize-scripts/initialize.js @@ -15,7 +15,7 @@ async function main() { // read base64 encoded font const file = await fs.readFileSync( - __dirname + '/slkscreen.txt' + __dirname + '/silkscreen-op2.txt' ); const content = file.toString(); diff --git a/initialize-scripts/silkscreen-op.txt b/initialize-scripts/silkscreen-op.txt new file mode 100644 index 0000000..7011e29 --- /dev/null +++ b/initialize-scripts/silkscreen-op.txt @@ -0,0 +1 @@ +data:font/truetype;charset=utf-8;base64,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+n36ff6JfQH0ff4MfX0ABAB9AAACcQJxAAUACQANABEAADM1MxUhFQMzFSM1ITUhBzMVI319AXd9fX3+iQF3+vr6+n19AfR9fX36fQAFAH0AAAJxAnEAAwAHAAsADwATAAABMxUjNSE1IQczFSMzMxUjFSE1IQH0fX3+iQF3+vr6+n19/okBdwH0fX19+n19fX0AAQB9AAACcQJxAA0AABMRMxUzNTM1IxEjESMRffp9fX19fQJx/gx9fX0Bd/6JAXcAAwB9AAACcQJxAAcACwAPAAATESE1IzUhNQMzFSMVITUhfQF3+gF3fX19/okBdwJx/ol9fX3+iX19fQAABAB9AAACcQJxAAMABwALABMAABMzFSMXMxUjIzMVIwMRMzUzNSM1+vr6+n19+vr6fX36+gJxffp9fQH0/ol9fX0AAwB9AAACcQJxAAUACQANAAABFSM1ITUXMxUjFSM1MwJxff6J+n19fX0Ccfp9ffp9+voAAAcAfQAAAnECcQADAAcACwAPABMAFwAbAAABMxUjNSM1MwczFSMzMxUjFSM1MwEzFSMVMxUjAfR9ffr6+vr6+n19+vr+iX19fX0B9H19ffp9fX19AXd9fX0AAAQAfQAAAnECcQADAAcACwATAAAhIzUzJyM1MzMjNTMTESMVIxUzFQH0+vr6fX36+vp9ffr6ffp9ff4MAXd9fX0AAAIAAAB9AH0B9AADAAcAADUzFSMRMxUjfX19ffp9AXd9AAADAAAAAAD6AfQAAwAHAAsAADczFSMRMxUjBzMVI319fX19fX19+n0Bd336fQAABQB9AAAB9AJxAAMABwALAA8AEwAAJTMVIyczFSMnMxUjNzMVIzczFSMBd319fX19fX19fX19fX19fX36ffp9+n36fQACAH0AfQH0AfQAAwAHAAAlITUhNSE1IQH0/okBd/6JAXd9fX19AAUAfQAAAfQCcQADAAcACwAPABMAADczFSM3MxUjNzMVIyczFSMnMxUjfX19fX19fX19fX19fX19fX36ffp9+n36fQAABAB9AAACcQJxAAMABwALAA8AAAEzFSM1ITUhBzMVIxUzFSMB9H19/okBd/r6+n19AfR9fX36fX19AAUAfQAAAu4CcQADAAcACAASABYAADcjETMBITUhBREVMxUzNSM1MzUVMxUj+n19AXf+iQF3/ol9+n19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 \ No newline at end of file diff --git a/initialize-scripts/silkscreen-op2.txt b/initialize-scripts/silkscreen-op2.txt new file mode 100644 index 0000000..b3b8a08 --- /dev/null +++ b/initialize-scripts/silkscreen-op2.txt @@ -0,0 +1 @@ +data:font/truetype;charset=utf-8;base64,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+n36ff6JfQH0ff4MfX0ABAB9AAACcQJxAAUACQANABEAADM1MxUhFQMzFSM1ITUhBzMVI319AXd9fX3+iQF3+vr6+n19AfR9fX36fQAFAH0AAAJxAnEAAwAHAAsADwATAAABMxUjNSE1IQczFSMzMxUjFSE1IQH0fX3+iQF3+vr6+n19/okBdwH0fX19+n19fX0AAQB9AAACcQJxAA0AABMRMxUzNTM1IxEjESMRffp9fX19fQJx/gx9fX0Bd/6JAXcAAwB9AAACcQJxAAcACwAPAAATESE1IzUhNQMzFSMVITUhfQF3+gF3fX19/okBdwJx/ol9fX3+iX19fQAABAB9AAACcQJxAAMABwALABMAABMzFSMXMxUjIzMVIwMRMzUzNSM1+vr6+n19+vr6fX36+gJxffp9fQH0/ol9fX0AAwB9AAACcQJxAAUACQANAAABFSM1ITUXMxUjFSM1MwJxff6J+n19fX0Ccfp9ffp9+voAAAcAfQAAAnECcQADAAcACwAPABMAFwAbAAABMxUjNSM1MwczFSMzMxUjFSM1MwEzFSMVMxUjAfR9ffr6+vr6+n19+vr+iX19fX0B9H19ffp9fX19AXd9fX0AAAQAfQAAAnECcQADAAcACwATAAAhIzUzJyM1MzMjNTMTESMVIxUzFQH0+vr6fX36+vp9ffr6ffp9ff4MAXd9fX0AAAIAAAB9AH0B9AADAAcAADUzFSMRMxUjfX19ffp9AXd9AAADAAAAAAD6AfQAAwAHAAsAADczFSMRMxUjBzMVI319fX19fX19+n0Bd336fQAABQB9AAAB9AJxAAMABwALAA8AEwAAJTMVIyczFSMnMxUjNzMVIzczFSMBd319fX19fX19fX19fX19fX36ffp9+n36fQACAH0AfQH0AfQAAwAHAAAlITUhNSE1IQH0/okBd/6JAXd9fX19AAUAfQAAAfQCcQADAAcACwAPABMAADczFSM3MxUjNzMVIyczFSMnMxUjfX19fX19fX19fX19fX19fX36ffp9+n36fQAABAB9AAACcQJxAAMABwALAA8AAAEzFSM1ITUhBzMVIxUzFSMB9H19/okBd/r6+n19AfR9fX36fX19AAUAfQAAAu4CcQADAAcACAASABYAADcjETMBITUhBREVMxUzNSM1MzUVMxUj+n19AXf+iQF3/ol9+n19fX19AXf+DH19AnF9+n19fX19AAEAfQAAAXcCcQAHAAAzETMVIxEzFX36fX0CcX3+iX0AAwB9AAAB9AJxAAMABwALAAATIzUzEyM1MxMjNTP6fX19fX19fX0Bd/r+iX3+ifoAAQB9AAABdwJxAAcAACEjNTMRIzUzAXf6fX36fQF3fQADAH0BdwH0AnEAAwAHAAsAABMzFSM3MxUjMzMVI319fX19fX19fQH0ffp9fQAAAQB9/4MCcQAAAAMAAAUhNSECcf4MAfR9fQADAH0AAAF3AnEAAwAHAAgAABMjNTMXIzUzA/p9fX19fX0B9H36ff4MAAACAIAAAAJ0AnEACwAPAAAzETMVMzUzESM1IxURFTM1gH36fX36+gH0fX3+DPr6AnF9fQAAAwB9AAACcQJxAAMABwATAAABFSM1FxUjNTUjFTMVIxUzFSERIQJxfX19+vr6+v6JAXcB9H19+n19+n19fX0CcQAABwB9AAACcQJxAAMABwALAA8AEwAUABUAAAEjNTMjIzUzEyM1MwUjETMTIzUzBzcCcX19ffr6fX19/ol9ffr6+vr6AXd9ff4MfX0Bd/4MfX36AAIAfQAAAnECcQAHAAsAADMRIRUjETMVExEjEX0Bd/r6fX0CcX3+iX0B9P6JAXcAAAEAfQAAAfQCcQALAAABIxUzFSMVMxUhESEB9Pr6+vr+iQF3AfR9fX19AnEAAQB9AAAB9AJxAAkAADMRIRUjFTMVIxV9AXf6+voCcX19ffoABQB9AAACcQJxAAMABwALAAwAEgAAASE1IQEjETMTIzUzBzcjNTMVIwJx/okBd/6JfX36+vr6+n36fQH0ff4MAXf+DH19+n36AAABAH0AAAJxAnEACwAAMxEzFTM1MxEjNSMVfX36fX36AnH6+v2P+voAAQB9AAAA+gJxAAMAADMRMxF9fQJx/Y8AAwB9AAACcQJxAAMABwALAAABMxEjFSM1MyUzFSMB9H19+vr+iX19AnH+DH19fX0ABQB9AAACcQJxAAcACwAPABMAFwAANxUjETMVMxU1MxUjNzMVIwczFSMzMxUj+n19fX19fX19fX19fX19+voCcfp9+n36ffp9fQABAH0AAAH0AnEABQAANzMVIREz+vr+iX19fQJxAAAFAH0AAALuAnEAAwAHAAsADwATAAAzETMRIREzEQMzFSMjMxUjJzMVI319AXd9+n19fX19fX19AnH9jwJx/Y8B9H19+n0ABQB9AAAC7gJxAAMABwALAA8AEwAAMxEzESERMxEnMxUjJzMVIyczFSN9fQF3ffp9fX19fX19fQJx/Y8Ccf2P+n36ffp9AAUAfQAAAnECcQADAAcACwAMABAAAAEjNTMDIxEzEyM1MwclIxEzAfT6+vp9ffr6+voBd319AfR9/gwBd/4MfX19AXcAAgB9AAACcQJxAAkADQAAMxEhFSMVMxUjFRMzFSN9AXf6+vr6fX0CcX19ffoB9H0ABgB9/4MCcQJxAAMABwALAAwAEAAUAAABIzUzAyMRMxMjNTMHJSMRMwMzFSMB9Pr6+n19+vr6+gF3fX19fX0B9H3+DAF3/gx9fX0Bd/4MfQAEAH0AAAJxAnEACQANABEAFQAAMxEhFSMVMxUjFRMzFSMHMxUjMzMVI30Bd/r6+vp9fX19fX19fQJxfX19+gH0fX19fQAABQB9AAACcQJxAAMABwALAA8AEwAAMzUhFQM1IRUFMzUjFzMVIwEzFSN9AXf6AXf+ifr6+n19/ol9fX19AfR9ffp9fX0Bd30AAQB9AAAB9AJxAAcAADMRIzUhFSMR+n0Bd30B9H19/gwAAAMAfQAAAnECcQADAAcACwAAATMRIxUjNTMBMxEjAfR9ffr6/ol9fQJx/gx9fQH0/gwABQB9AAAC7gJxAAMABwALAA8AEwAAEzUzFRczFSMnNTMVMzUzFTU1MxV9fX19fX19fX19AXf6+vp9ffr6+vr6+voABQB9AAAC7gJxAAMABwALAA8AEwAANxEzETMzFSMnMxUjJREzESERMxF9ffp9ffp9fQF3ff6JfX0B9P4MfX19fQH0/gwBd/6JAAAJAH0AAALuAnEAAwAHAAsADwATABcAGwAfACMAADczFSM3MxUjNzMVIzczFSM3MxUjITMVIyczFSMFMxUjMzMVI319fX19fX19fX19fX19ff6JfX19fX0Bd319fX19fX36ffp9+n36fX36ffp9fQAABQB9AAAC7gJxAAMABwALAA8AEwAAATMVIyczFSMTETMRATMVIyUzFSMB9H19+n19fX3+iX19AfR9fQH0fX19/okBd/6JAnF9fX0AAAMAfQAAAfQCcQAFAAsADwAAMzUzFTMVERUjNSM1FzMVI319+n36fX19+n19AnH6fX36fQADAH0AAAH0AnEABQALAA8AAAEjFSM1MxEjNTMVMycjNTMB9H19+vp9ffp9fQH0ffr9j/p9fX0AAAEAff+DAPoC7gADAAAXETMRfX19A2v8lQAAAwB9AAAB9AJxAAUACQAPAAABIzUjNTMTIzUzAyM1MzUzAXd9ffp9fX19+n19AXd9ff6Jff6JfX0AAAQAfQF3AnECcQADAAcACwAPAAABIzUzByM1MxcjNTMHIzUzAnF9ffp9fX19ffp9fQH0fX19+n19fQAAAAAABwBaAAMAAQQJAAAAAAAAAAMAAQQJAAEAAgAAAAMAAQQJAAIADAACAAMAAQQJAAMAAgAAAAMAAQQJAAQAAgAAAAMAAQQJAAUABgAOAAMAAQQJAAYAAgAAAGYATgBvAHIAbQBhAGwAMQAuADAAAAADAAAAAAAA/3sAFAAAAAAAAAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/src/MirakaiScrollsRenderer.sol b/src/MirakaiScrollsRenderer.sol index 25f9d47..8c82b13 100644 --- a/src/MirakaiScrollsRenderer.sol +++ b/src/MirakaiScrollsRenderer.sol @@ -94,15 +94,13 @@ contract MirakaiScrollsRenderer is Ownable { Base64.encode( abi.encodePacked( "{" - '"name": "Scroll ', - toString(tokenId), - '",' - '"description": "description x",' - '"image": "data:image/svg+xml;base64,', - render(tokenId, dna), - '",' - '"attributes":', - formatTraits(traitIndexes), + '"name": "Scroll ', toString(tokenId), '",' + '"description": "description x",' + '"image": "data:image/svg+xml;base64,', + render(tokenId, dna), + '",' + '"attributes":', + formatTraits(traitIndexes), "}" ) ) @@ -139,42 +137,42 @@ contract MirakaiScrollsRenderer is Ownable { string( abi.encodePacked( "" "", string( abi.encodePacked( "" "" ) ) @@ -219,10 +217,9 @@ contract MirakaiScrollsRenderer is Ownable { attributes, "{" '"trait_type":"', - IMirakaiDnaParser(mirakaDnaParser).getCategory(uint8(i)), + IMirakaiDnaParser(mirakaDnaParser).getCategory(uint8(i)), '",' - '"value":"', - traitNames[i], + '"value":"', traitNames[i], '"}' ) ); @@ -326,15 +323,15 @@ contract MirakaiScrollsRenderer is Ownable { abi.encodePacked( svgItemsScroll, "", - traitNames[i], + traitNames[i], "" ) ); @@ -403,8 +400,8 @@ contract MirakaiScrollsRenderer is Ownable { abi.encodePacked( svgString, "" - "SCROLL #", - toString(tokenId), + "scroll #", + toString(tokenId), "" ) ); @@ -414,35 +411,35 @@ contract MirakaiScrollsRenderer is Ownable { if (rareItems > 1) { extraStyle = "@keyframes floating{" - "from{" - "transform: translate(6.5px,3.5px);" - "filter: drop-shadow(0px 0px 1.25px rgba(120, 120, 180, .85));" - "}" - "50%{" - "transform: translate(6.5px,5px);" - "filter: drop-shadow(0px 0px 2.5px rgba(120, 120, 190, 1));" - "}" - "to{" - "transform: translate(6.5px,3.5px);" - "filter: drop-shadow(0px 0px 1.25px rgba(120, 120, 180,.85));" - "}" + "from{" + "transform: translate(6.5px,3.5px);" + "filter: drop-shadow(0px 0px 1.25px rgba(120, 120, 180, .85));" + "}" + "50%{" + "transform: translate(6.5px,5px);" + "filter: drop-shadow(0px 0px 2.5px rgba(120, 120, 190, 1));" + "}" + "to{" + "transform: translate(6.5px,3.5px);" + "filter: drop-shadow(0px 0px 1.25px rgba(120, 120, 180,.85));" + "}" "}"; } if (rareItems > 2) { extraStyle = "@keyframes floating{" - "from{" - "transform: translate(6.5px,3.5px);" - "filter: drop-shadow(0px 0px 1.75px rgba(135,232,252,0.8));" - "}" - "50%{" - "transform: translate(6.5px,5px);" - "filter: drop-shadow(0px 0px 3.5px rgba(135,232,252,1));" - "}" - "to{" - "transform: translate(6.5px,3.5px);" - "filter: drop-shadow(0px 0px 1.75px rgba(135,232,252,0.8));" - "}" + "from{" + "transform: translate(6.5px,3.5px);" + "filter: drop-shadow(0px 0px 1.75px rgba(135,232,252,0.8));" + "}" + "50%{" + "transform: translate(6.5px,5px);" + "filter: drop-shadow(0px 0px 3.5px rgba(135,232,252,1));" + "}" + "to{" + "transform: translate(6.5px,3.5px);" + "filter: drop-shadow(0px 0px 1.75px rgba(135,232,252,0.8));" + "}" "}"; } @@ -452,80 +449,89 @@ contract MirakaiScrollsRenderer is Ownable { "", - svgString, - "", + svgString, + "", "" ) ); diff --git a/test/MirakaiSaveFile.t.sol b/test/MirakaiSaveFile.t.sol new file mode 100644 index 0000000..36fcda0 --- /dev/null +++ b/test/MirakaiSaveFile.t.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import "ds-test/test.sol"; +import {console} from "forge-std/console.sol"; +import {MirakaiScrollsRenderer} from "../src/MirakaiScrollsRenderer.sol"; +import {MirakaiDnaParser} from "../src/MirakaiDnaParser.sol"; +import {TestVm} from "./TestVm.sol"; + +contract MirakaiSaveFileTest is DSTest, TestVm { + MirakaiScrollsRenderer private mirakaiScrollsRenderer; + MirakaiDnaParser private mirakaiDnaParser; + + function setUp() public { + mirakaiScrollsRenderer = new MirakaiScrollsRenderer(); + mirakaiDnaParser = new MirakaiDnaParser(); + + mirakaiScrollsRenderer.setmirakaiDnaParser(address(mirakaiDnaParser)); + } + + function testSaveFileOriginalFont() public { + uint256 gasBefore = gasleft(); + string memory path = "initialize-scripts/slkscreen.txt"; + string memory fontData = vm.readFile(path); + + mirakaiScrollsRenderer.saveFile(0, fontData); + + console.log(gasBefore - gasleft()); + } + + function testSaveFileOptimizedFont() public { + uint256 gasBefore = gasleft(); + string memory path = "initialize-scripts/silkscreen-op.txt"; + string memory fontData = vm.readFile(path); + + mirakaiScrollsRenderer.saveFile(0, fontData); + + console.log(gasBefore - gasleft()); + } + + function testSaveFileOptimized2Font() public { + uint256 gasBefore = gasleft(); + string memory path = "initialize-scripts/silkscreen-op2.txt"; + string memory fontData = vm.readFile(path); + + mirakaiScrollsRenderer.saveFile(0, fontData); + + console.log(gasBefore - gasleft()); + } +} diff --git a/test/MirakaiScrollsRenderer.t.sol b/test/MirakaiScrollsRenderer.t.sol index c95d88d..e76e80e 100644 --- a/test/MirakaiScrollsRenderer.t.sol +++ b/test/MirakaiScrollsRenderer.t.sol @@ -17,12 +17,10 @@ contract MirakaiScrollsRendererTest is DSTest, TestVm { mirakaiScrollsRenderer.setmirakaiDnaParser(address(mirakaiDnaParser)); - string[] memory inputs = new string[](2); - inputs[0] = "cat"; - inputs[1] = "../initialize-scripts/slkscreen.txt"; - bytes memory fontData = vm.ffi(inputs); + string memory path = "initialize-scripts/silkscreen-op2.txt"; + string memory fontData = vm.readFile(path); - mirakaiScrollsRenderer.saveFile(0, string(fontData)); + mirakaiScrollsRenderer.saveFile(0, fontData); setDnaParserTraitsAndWeights(); } diff --git a/test/TestVm.sol b/test/TestVm.sol index 908d1cb..d2798b0 100644 --- a/test/TestVm.sol +++ b/test/TestVm.sol @@ -159,6 +159,9 @@ interface Vm { // Stops collecting onchain transactions function stopBroadcast() external; + + // Reads the entire content of file to string, (path) => (data) + function readFile(string calldata) external returns (string memory); } contract TestVm {