{"_id":"@acdi/give4forest-contract","_rev":"3-d7662e9d4580e94d993ed1206294013b","name":"@acdi/give4forest-contract","dist-tags":{"latest":"1.3.1"},"versions":{"1.2.0":{"name":"@acdi/give4forest-contract","version":"1.2.0","description":"Crowdfunding Smart Contract de El Futuro está en el Monte","main":"index.js","scripts":{"build-app":"cd app && npm install && cd ..","compile":"copy-files-from-to && buidler compile --force","test":"buidler test --network buidlerevm","start":"buidler start","test:rsk":"buidler test --network rskRegtest","rsk-regtest:deploy":"npm run compile && buidler deploy --network rskRegtest","rsk-regtest:found-accounts":"NODE_ENV=regtest node scripts/utils/rsk-fund-accounts.js","rsk-testnet:deploy":"npm run compile && buidler deploy --network rskTestnet","rsk-mainnet:deploy":"npm run compile && buidler deploy --network rskMainnet","publish:major":"buidler publish major","publish:minor":"buidler publish minor","publish:patch":"buidler publish patch","rsk-regtest:has-user-role":"NODE_ENV=regtest node scripts/utils/has-user-role.js"},"dependencies":{"@acdi/efem-contract":"C:\\dev\\acdi\\project\\efem-contract","@aragon/apps-vault":"^4.1.0","@aragon/os":"^4.4.0","bn.js":"^5.1.2","buidler-deploy":"^0.4.2","eth-ens-namehash":"^2.0.8","globalthis":"^1.0.3","madr":"^2.1.2","multiformats":"^9.6.5","dotenv":"^16.0.0","win-node-env":"^0.6.0"},"devDependencies":{"@aragon/buidler-aragon":"^0.2.0","@aragon/contract-test-helpers":"0.0.1","@aragon/test-helpers":"^2.1.0","@nomiclabs/buidler":"^1.4.8","@nomiclabs/buidler-etherscan":"^1.3.0","@nomiclabs/buidler-truffle5":"^1.3.0","@nomiclabs/buidler-web3":"^1.3.0","abi-decoder":"^2.3.0","arg":"^4.1.3","copy-files-from-to":"^3.2.2","web3":"^1.2.0"},"optionalDependencies":{"win-node-env":"^0.6.0"},"gitHead":"be7a621ce7ab69ee96b9d6433f342e03bbc2339f","_id":"@acdi/give4forest-contract@1.2.0","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-B+ZGBBMLnj61bBjUyXvViNCnPiuwn8hWCbdnCN+NAz7hkjWLLmMYWtuHqn8mnX4FbhSnqZ01MLPuguoDfNG9ug==","shasum":"48a084f583b2ca126858a3ee2ec1c35559114fdb","tarball":"https://registry.npmjs.org/@acdi/give4forest-contract/-/give4forest-contract-1.2.0.tgz","fileCount":210,"unpackedSize":20714365,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGoVXKjy8YF0uNUb4ef3rBsJPdvKUbPUKgo77XXeLv53AiB7GPI47Zu6h9TyHW+9yy4uJT7N0nJDWY9XwB7AEQpoxQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9nz8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpiLw//TexdI7FKh2mXUWNIhTbq4OYPXIF5CErsFc8tbDh9yafeVQO4\r\np0cZEcN7DYOC+uH3nuksJ0Jy+L8dF+asIE0zeG8Shn+cyA7f6gYekN8vxnux\r\nCyl1PGIF1qiyG6qEaAJOhFKdu7vHgOQ3KNMkw+MEZJT2qUStRYWQVgYtueyI\r\n6xxco0D9yGHDva6QK94j0ecHBHedpFvE4gwBGiQ/NKN1mRT4fiEIzirLLhmV\r\n1WUaiJZ+f+tyYjXEzUTFURzFHqkr8/O6VNWm75H1oW/8BNxqtLvIG0E1TSfx\r\n5nOH1pGWsFI/QYgTbNGBeXpjAGviNSscXHxhozDC82ETWhMpYo0kt+hT1YlJ\r\nhLbkE3fIHr0Lh4ZrBnJsFVIc3iz+1EZPgi/Ckz9I9Ki4rTxC6FNJCoAgetkr\r\nLgyLe9khaxqqlfLty7lumXUimtjx460GM1afT/e4jaJ3dLLt3Og6q7SbHL2p\r\nGK9OhRby5TlIDQtszJ+LEL8CfTZW4tD9ct2L/GyFL87MayJKHaTk08zhP/3z\r\nlNXF2T6U4MhZS6AoYCiKMg7anzRsDYEdiYY/f41e+TNXHYxX2avWfuL/0VZB\r\nf5BNtg53vS3VWPWn8/WtXc8XU/rxbjWsZRMFlumy2WJRGEywT1sjU4RjCuGI\r\nK1xTbv2g5WTjcY5kdCcJEd6YBi2FCD6YPbw=\r\n=YuU6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},"directories":{},"maintainers":[{"name":"ebanchio","email":"emanuelbanchio@gmail.com"},{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},{"name":"jduttweiler","email":"jonatanduttweiler@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/give4forest-contract_1.2.0_1660321020163_0.3904391701520631"},"_hasShrinkwrap":false},"1.2.1":{"name":"@acdi/give4forest-contract","version":"1.2.1","description":"Crowdfunding Smart Contract de El Futuro está en el Monte","main":"index.js","scripts":{"build-app":"cd app && npm install && cd ..","compile":"copy-files-from-to && buidler compile --force","test":"buidler test --network buidlerevm","start":"buidler start","test:rsk":"buidler test --network rskRegtest","rsk-regtest:deploy":"npm run compile && buidler deploy --network rskRegtest","rsk-regtest:found-accounts":"NODE_ENV=regtest node scripts/utils/rsk-fund-accounts.js","rsk-testnet:deploy":"npm run compile && buidler deploy --network rskTestnet","rsk-mainnet:deploy":"npm run compile && buidler deploy --network rskMainnet","publish:major":"buidler publish major","publish:minor":"buidler publish minor","publish:patch":"buidler publish patch","rsk-regtest:has-user-role":"NODE_ENV=regtest node scripts/utils/has-user-role.js"},"dependencies":{"@acdi/efem-contract":"1.0.0","@aragon/apps-vault":"^4.1.0","@aragon/os":"^4.4.0","bn.js":"^5.1.2","buidler-deploy":"^0.4.2","eth-ens-namehash":"^2.0.8","globalthis":"^1.0.3","madr":"^2.1.2","multiformats":"^9.6.5","dotenv":"^16.0.0","win-node-env":"^0.6.0"},"devDependencies":{"@aragon/buidler-aragon":"^0.2.0","@aragon/contract-test-helpers":"0.0.1","@aragon/test-helpers":"^2.1.0","@nomiclabs/buidler":"^1.4.8","@nomiclabs/buidler-etherscan":"^1.3.0","@nomiclabs/buidler-truffle5":"^1.3.0","@nomiclabs/buidler-web3":"^1.3.0","abi-decoder":"^2.3.0","arg":"^4.1.3","copy-files-from-to":"^3.2.2","web3":"^1.2.0"},"optionalDependencies":{"win-node-env":"^0.6.0"},"gitHead":"788715e36d09b9fbac852933bb014e288c206afa","_id":"@acdi/give4forest-contract@1.2.1","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6GDoTTHb+RtQsebsWqy+wVI4eQ6dQGAnt0O6SNQk4jCR2RdjYySQAhw2p0Hj8L2Y727LwQgTAi7X/PQNH/cqFA==","shasum":"777b64237e7c672476911afc57cefc2ff760a3fa","tarball":"https://registry.npmjs.org/@acdi/give4forest-contract/-/give4forest-contract-1.2.1.tgz","fileCount":210,"unpackedSize":20714333,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVrMCCD+1AjvLGhvcuTlLq95iiEnXiXjQqfGf9fcnDRAiAPNNddtcOp6yk88gzIKc+nOMuZmZUbXy6NxrFt8W11Hg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9oDaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOCQ//ek/GJovRviG0YkaFakDOPa/l1gYGRQzUl+DVRBLodevMFmVp\r\nNf6x3iscOHtaSd5B+IbqfeSD3fGWwuHaDj3r7xQ3i6TReaogDrvfXdwG/TFC\r\nzQ8jSH+5O+Px+3KGYona3VjhnboQddAvxx7hPDl4cWTj87xjeEo0IZNDR49u\r\nU29ge+dr37vnd/kPdtSuM/H/aiNdEiDhd7OCI+8iLcAnnevWaL+Jz8I6AZkM\r\nnu12vO1imZ//cIE/eT4lFMU9UIwpeiwIOxpQf+WvEsDUBDMwMhfZ9axEQUwO\r\ndSnCyn0cZ7sSLJiw8U52W6TCUmmgeIDpmLRNfj+/Ox8yS6p96Hu83MSQb98r\r\n9ikYthRhZVAh/Mzsv38KJGUQJayVQrTtNTMkxTkdvN8x57pnTk3IBLdkBsvV\r\n1BPi0sA4G9h9ydmeKsTIHnhot3Iu4Mg43FjuUg6w4e6xXMcfr20WqlLLOU8P\r\nmt2Y59TtH+ZzFy4x2Ya25olpm4q9rq+TUCAzKsQUasxNhe7waG5RfWQSCDKF\r\nu0oDOw1xsR6G/hDhHuKDUdFx4IFXF0EC9u7FrV2uWFdSGxWDjEyVBnUoWnP9\r\ne94TV8gv2zkIR2r1XLI7qlmUoBLsOC37VtXfO2NzbFe0xlZBTQooaCWvkeMk\r\ncSw4wbGyxYhBGaeiKHiYosOi9n6sE19YJxM=\r\n=QuQv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},"directories":{},"maintainers":[{"name":"ebanchio","email":"emanuelbanchio@gmail.com"},{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},{"name":"jduttweiler","email":"jonatanduttweiler@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/give4forest-contract_1.2.1_1660322010218_0.9626817327502228"},"_hasShrinkwrap":false},"1.3.0":{"name":"@acdi/give4forest-contract","version":"1.3.0","description":"Crowdfunding Smart Contract de El Futuro está en el Monte","main":"index.js","scripts":{"build-app":"cd app && npm install && cd ..","compile":"copy-files-from-to && buidler compile --force","test":"buidler test --network buidlerevm","start":"buidler start","test:rsk":"buidler test --network rskRegtest","rsk-regtest:deploy":"npm run compile && buidler deploy --network rskRegtest","rsk-regtest:found-accounts":"NODE_ENV=regtest node scripts/utils/rsk-fund-accounts.js","rsk-testnet:deploy":"npm run compile && buidler deploy --network rskTestnet","rsk-mainnet:deploy":"npm run compile && buidler deploy --network rskMainnet","publish:major":"buidler publish major","publish:minor":"buidler publish minor","publish:patch":"buidler publish patch","rsk-regtest:has-user-role":"NODE_ENV=regtest node scripts/utils/has-user-role.js","rsk-mainnet:has-user-role":"NODE_ENV=mainnet node scripts/utils/has-user-role.js"},"dependencies":{"@acdi/efem-contract":"1.0.0","@aragon/apps-vault":"^4.1.0","@aragon/os":"^4.4.0","bn.js":"^5.1.2","buidler-deploy":"^0.4.2","eth-ens-namehash":"^2.0.8","globalthis":"^1.0.3","madr":"^2.1.2","multiformats":"^9.6.5","dotenv":"^16.0.0","win-node-env":"^0.6.0"},"devDependencies":{"@aragon/buidler-aragon":"^0.2.0","@aragon/contract-test-helpers":"0.0.1","@aragon/test-helpers":"^2.1.0","@nomiclabs/buidler":"^1.4.8","@nomiclabs/buidler-etherscan":"^1.3.0","@nomiclabs/buidler-truffle5":"^1.3.0","@nomiclabs/buidler-web3":"^1.3.0","abi-decoder":"^2.3.0","arg":"^4.1.3","copy-files-from-to":"^3.2.2","web3":"^1.2.0"},"optionalDependencies":{"win-node-env":"^0.6.0"},"gitHead":"c95ebad181e557b87a5c17993e8150e4ef78ff91","_id":"@acdi/give4forest-contract@1.3.0","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-lyZerG1I8Q3HtRS/jPQJVE4pAl3WcJfGY0ZaCPicKUDgOzrgQrdVg9Y6RYeLDQV4jBDplSHqIvmIIL+sVHSo7A==","shasum":"00d85d38672161d15b42ded1d8b378598d4a332c","tarball":"https://registry.npmjs.org/@acdi/give4forest-contract/-/give4forest-contract-1.3.0.tgz","fileCount":211,"unpackedSize":20720008,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbQwnbuxsx/TGulOBEIdeZud+6WOKXAdiP+xwdm0yf8AIhAOmmRFyvFoWipoXA5fpGnUvH8nmcBgsjOWRPuhXUpU4P"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjT0T0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpAdA//ePDkRBooQDlehpylMcKpE7m1qvj3FNkR6oxKbI4uvJxvBNLA\r\nlG8NEU+6swJqGvaU3XMyyaaRlDbJqNQPBZyITHwj3NLINefqiCl5in8cU26G\r\nxVp1j3YMKl+2kFBO4FFdSONJtyqsNaUBpRr6S2rb5qQISSA/4fVpQuWiV5Im\r\n31Avxasp75u/JlsK577KpAKTOdC88pvMP43Siv2jWpXF1KEFR2JkRI7Nt0tB\r\n+ykLfEWX6rfukrEpmxESZJAy9vO4XYFgB2zegDxocc1PipbkB5q8MMu51RQ8\r\nxt2HyAVluDKJEJOWd1+mVH35oBWjuwRgf/IizZWRemF1KYbr6Wg12W8RopwT\r\n9wIDkzQozoXSQn6NSiuTcO9X8nEqSGYhMohPlA85FJ7cpuBh/yzh7EwsQm8T\r\nh3DDYWWO4I6WOswe8+y3pXApkAwHDl3HN1+jGIzE3sGbcpF2boBgd0awFfVy\r\nLy2ESjy9Tb47J2+6cROVjsOqwOxZZ2ZyTbSrZjU2NbAIXA7jgkK0DAfWwZiS\r\n9W14Mk9YQwkOQP7+nMLA5xmIObt4F+Ebh52T4OFyfRqEvlsODL14UzNK5cKU\r\nTRrBmc4kzUktVPF0gD9jXfAP6nAI37vIO2RMcp4b8GGtpGniD4rRHY5T+If1\r\nXRSjtlXi3oQWfhB57trTfVq/uADQJ8QR6iA=\r\n=jjTb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},"directories":{},"maintainers":[{"name":"ebanchio","email":"emanuelbanchio@gmail.com"},{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},{"name":"jduttweiler","email":"jonatanduttweiler@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/give4forest-contract_1.3.0_1666139379929_0.07150867612470746"},"_hasShrinkwrap":false},"1.3.1":{"name":"@acdi/give4forest-contract","version":"1.3.1","description":"Crowdfunding Smart Contract de El Futuro está en el Monte","main":"index.js","scripts":{"build-app":"cd app && npm install && cd ..","compile":"copy-files-from-to && buidler compile --force","test":"buidler test --network buidlerevm","start":"buidler start","test:rsk":"buidler test --network rskRegtest","rsk-regtest:deploy":"npm run compile && buidler deploy --network rskRegtest","rsk-regtest:found-accounts":"NODE_ENV=regtest node scripts/utils/rsk-fund-accounts.js","rsk-testnet:deploy":"npm run compile && buidler deploy --network rskTestnet","rsk-mainnet:deploy":"npm run compile && buidler deploy --network rskMainnet","publish:major":"buidler publish major","publish:minor":"buidler publish minor","publish:patch":"buidler publish patch","rsk-regtest:has-user-role":"NODE_ENV=regtest node scripts/utils/has-user-role.js","rsk-mainnet:has-user-role":"NODE_ENV=mainnet node scripts/utils/has-user-role.js"},"dependencies":{"@acdi/efem-contract":"1.0.0","@aragon/apps-vault":"^4.1.0","@aragon/os":"^4.4.0","bn.js":"^5.1.2","buidler-deploy":"^0.4.2","eth-ens-namehash":"^2.0.8","globalthis":"^1.0.3","madr":"^2.1.2","multiformats":"^9.6.5","dotenv":"^16.0.0","win-node-env":"^0.6.0"},"devDependencies":{"@aragon/buidler-aragon":"^0.2.0","@aragon/contract-test-helpers":"0.0.1","@aragon/test-helpers":"^2.1.0","@nomiclabs/buidler":"^1.4.8","@nomiclabs/buidler-etherscan":"^1.3.0","@nomiclabs/buidler-truffle5":"^1.3.0","@nomiclabs/buidler-web3":"^1.3.0","abi-decoder":"^2.3.0","arg":"^4.1.3","copy-files-from-to":"^3.2.2","web3":"^1.2.0"},"optionalDependencies":{"win-node-env":"^0.6.0"},"gitHead":"083580c54af6b40da5036811c154cdb8177b1d84","_id":"@acdi/give4forest-contract@1.3.1","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-sdF8rJLIKIeglg8Gq7RdkHQtRszPntgV4GDfyp2FdOBy9wbcOAcxeCp6u9X81asIM7Al0cPmP2CQS/izz4mXVA==","shasum":"efcc1ad2a863ccb680598c341142bb1cc801bfc0","tarball":"https://registry.npmjs.org/@acdi/give4forest-contract/-/give4forest-contract-1.3.1.tgz","fileCount":213,"unpackedSize":20732407,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGJBjNh5WTjt0KiaOIPkjPn3PVl6Wk9o5k6vnyojMutiAiAY7xPdD01IvYn/p31ctjVrLZm0Gea+5b4XDP7TBKLi2w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXZlXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpyXQ/+KxWHAcK9BWbi2pQ5GVi5k4BvEeJdu+g4zWlmK+Pbr/l95X/I\r\nuXXDvTGLSgQQ7HZ2eMu1ET5UsRgqw4eqvQxkJh1IrEy3qUeFKOD0Q4Q0Xbi8\r\ngFc3uPr+y/67f466UhNkA2NPMNhKKvKO6vkLUw52NUv1kcMwrBOenRtQ32EF\r\njYPHk0+x3Zd3B10CL1ABXKyfRFzi+LgzUZ7onfKIaszuRkaMMUVlKYU5Vwga\r\nabG70/SWmZKKQmPxRnHBHoLOvd31hFHwxd/hewVDYvWbUeV/NO229tNMhpZS\r\nzLtyaB7+Ml0716iiMDwXOiMSH7ybRTy7LUZBQXJIjWq/ytZRbneryR/fTtmF\r\n/Iqtp1PCK55fJ5xpCMsOzWRF4mb+UkQlUALvQJ4hR5XHNzuJuFtisrq3Xn8S\r\n3lCaQlFPcmh8Pq9cQZb3rgrNQCHXNn+0KJjZujeOL3wz+i7xUkagQ8lIN2X1\r\nO2KLmGfVzyX5D46DYTpf3EYgp2sS63LIuk5/NQzOXzJDnw6NMMsoUjA/iZf7\r\nje/2VUrYda5nwaO9MwOnvEXU9N/kS2/sSLrjscOz4E31tXtc1Vb6u9E+h0zT\r\ngphue4MgHhuXYtlIK6dMWKKoELWbPQS74lJKUDv89uEa2NDhwK+T4pnqB5mU\r\nL1yiYJ3+KECOvxq4UQYmp5I3du70/hmjQOM=\r\n=ppFC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},"directories":{},"maintainers":[{"name":"ebanchio","email":"emanuelbanchio@gmail.com"},{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},{"name":"jduttweiler","email":"jonatanduttweiler@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/give4forest-contract_1.3.1_1667078486646_0.47990885700373154"},"_hasShrinkwrap":false}},"time":{"created":"2022-08-12T16:17:00.097Z","1.2.0":"2022-08-12T16:17:00.487Z","modified":"2022-10-29T21:21:27.107Z","1.2.1":"2022-08-12T16:33:30.473Z","1.3.0":"2022-10-19T00:29:40.217Z","1.3.1":"2022-10-29T21:21:27.001Z"},"maintainers":[{"name":"ebanchio","email":"emanuelbanchio@gmail.com"},{"name":"mcoronel","email":"mcoronel@acdi.org.ar"},{"name":"jduttweiler","email":"jonatanduttweiler@gmail.com"}],"description":"Crowdfunding Smart Contract de El Futuro está en el Monte","readme":"# Crowdfunding Smart Contract\r\n\r\nSmart contract de Crowdfunding.\r\n\r\nSe utiliza [Buidler](https://buidler.dev) como herramienta de ejecución de las tareas de compilación, testing y despliegue del smart contract.\r\n\r\nEn la sección [Architectural Decision Log](docs/adr/index.md) se encuentran los registros de decisiones de arquitectura que han sido tomadas.\r\n\r\n## Requisitos sobre sistema operativo\r\n\r\n### Windows\r\n\r\nInstalar Python.\r\n\r\n## Instalación de dependencias\r\n\r\nPrimero deben instalarse las dependencias del proyecto con el siguiente comando:\r\n\r\n```\r\nnpm install\r\n```\r\n\r\n## Compilación\r\n\r\nPara compilar el smart contract, debe ejecutarse el siguiente comando.\r\n\r\n```\r\nnpm run compile\r\n```\r\n\r\nSe requiere mantener reducido el bytecode generado por el smart contract para no superar la restricción [EIP 170](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-170.md). El siguiente comando mide la cantidad de bytes generados para cada contrato compilado.\r\n\r\n```\r\ngrep \\\"bytecode\\\" artifacts/* | awk '{print $1 \" \" length($3)/2}'\r\n```\r\n\r\n> La primera vez la compilación falla al no encontrar algunos smart contracts de Aragon, por ejemplo, es posible encontrarse con el siguiente error: *Error: BDLR700: Artifact for contract \"Kernel\" not found.* En este caso ejecutamos ```npm start```. Esto último a menudo muestra algún error, pero lo que nos interesa es que compile los smart contracts faltantes. Una vez hecho esto volver a ejecutar ```npm run compile```.\r\n\r\n> Workaround: dado que la aplicación funciona con Node v10, se requiere importar los siguientes componentes en algunas librerías tras los errores de compilación. `var globalThis = require('globalthis')();` y `const { TextEncoder, TextDecoder } = require(\"util\");`.\r\n\r\n## Testing\r\n\r\nPara ejecutar los tests del smart contract, debe ejecutarse el siguiente comando.\r\n\r\n```\r\nnpm run test\r\n```\r\n\r\nLos test se ejecutan por defecto sobre la blockchain *buidlerevm*.\r\n\r\n## Publicar en NPM\r\n\r\nPara que el módulo quede públicamente accecible y pueda utilizarse por los demás módulos de la aplicación, es necesario publicarlo de la siguiente manera:\r\n\r\n```\r\nnpm login\r\nnpm publish --access public\r\n```\r\n\r\nEl módulo se publica con el scope de la organización **@acdi**.\r\n\r\n## Despliegue\r\n\r\nPara desplegar el smart contract sobre la blockchain de RSK, debe ejecutarse el comando descrito según el ambiente.\r\n\r\nJunto con el smart contract de Crowdfunding se despliegan los smart contract de Aragon y librerías por lo que este proceso puede demandar algunos minutos.\r\n\r\nLas direcciones que aparecen en el log deben utilizarse para configurar la aplicación de Crowdfunding.\r\n\r\n### Desarrollo\r\n\r\nSi el entorno de desarrollo es Windows, instalar `win-node-env`.\r\n\r\n```\r\nnpm install -g win-node-env\r\n```\r\n\r\nEn desarrollo se utiliza un nodo local de **RSK Regtest** accesible desde *http://localhost:4444*.\r\n\r\n```\r\nnpm run rsk-regtest:deploy\r\n```\r\n\r\nOpcionalmente, puede especificarse qué *DAO*, *Admin* o *Exchange Rate Provider* utilizar en el deploy:\r\n\r\n```\r\n$env:DAO_CONTRACT_ADDRESS=\"...\"\r\n$env:ADMIN_CONTRACT_ADDRESS=\"...\"\r\n$env:EXCHANGE_RATE_PROVIDER_CONTRACT_ADDRESS=\"...\"\r\nnpm run rsk-regtest:deploy\r\n```\r\n\r\n- DAO_CONTRACT_ADDRESS es la dirección del Aragon DAOdisponible desde el deploy inicial según la red.\r\n- ADMIN_CONTRACT_ADDRESS es la dirección del smart contract de administración.\r\n- EXCHANGE_RATE_PROVIDER_CONTRACT_ADDRESS es la dirección del *Exchange Rate Provider* a utilizar.\r\n\r\n### Testing\r\n\r\nEn testing se utiliza el nodo público de **RSK Testnet** accesible desde *https://public-node.testnet.rsk.co*.\r\n\r\n```\r\n$env:DAO_CONTRACT_ADDRESS=\"...\"\r\n$env:ADMIN_CONTRACT_ADDRESS=\"...\"\r\n$env:EXCHANGE_RATE_PROVIDER_CONTRACT_ADDRESS=\"...\"\r\nnpm run rsk-testnet:deploy\r\n```\r\n- DAO_CONTRACT_ADDRESS es la dirección del Aragon DAOdisponible desde el deploy inicial según la red.\r\n- ADMIN_CONTRACT_ADDRESS es la dirección del smart contract de administración.\r\n- EXCHANGE_RATE_PROVIDER_CONTRACT_ADDRESS es la dirección del *Exchange Rate Provider* a utilizar.\r\n\r\n## Actualizar smart contract\r\n\r\nPara actualizar el smart contract debe ejecutarse el siguiente script, especificando los parámetros:\r\n\r\n```\r\n$env:BUIDLER_NETWORK=\"...\"\r\n$env:DAO_CONTRACT_ADDRESS=\"...\"\r\nnode .\\scripts\\upgrade.js\r\n```\r\n\r\n- BUIDLER_NETWORK = rskRegtest | rskTestnet | rskMainnet\r\n- DAO_CONTRACT_ADDRESS es la dirección del Aragon DAOdisponible desde el deploy inicial según la red.\r\n\r\nEste scrtip es genérico para una actualización. Las actualización generalmente siguen scrtip específicos según los cambios en la versión. A continuación se lista los upgrades.\r\n\r\n### v1.1.0\r\n\r\n```\r\n$env:BUIDLER_NETWORK=\"...\"\r\n$env:CROWDFUNDING_ADDRESS=\"...\"\r\nnode .\\scripts\\upgrade-v1.1.0.js\r\n```\r\n\r\n- BUIDLER_NETWORK = rskRegtest | rskTestnet | rskMainnet\r\n- CROWDFUNDING_ADDRESS es la dirección del smart contract de Crowdfunding (proxy).\r\n\r\n### v1.3.0\r\n\r\n```\r\n$env:BUIDLER_NETWORK=\"...\"\r\n$env:DAO_CONTRACT_ADDRESS=\"...\"\r\n$env:ARRAY_LIB_ADDRESS=\"...\"\r\n$env:ENTITY_LIB_ADDRESS=\"...\"\r\n$env:DAC_LIB_ADDRESS=\"...\"\r\n$env:CAMPAIGN_LIB_ADDRESS=\"...\"\r\n$env:MILESTONE_LIB_ADDRESS=\"...\"\r\n$env:ACTIVITY_LIB_ADDRESS=\"...\"\r\n$env:DONATION_LIB_ADDRESS=\"...\"\r\nnode .\\scripts\\upgrade-v1.3.0.js\r\n```\r\n\r\n- BUIDLER_NETWORK = rskRegtest | rskTestnet | rskMainnet\r\n- CROWDFUNDING_ADDRESS es la dirección del smart contract de Crowdfunding (proxy).\r\n\r\n### v1.3.1\r\n\r\n```\r\n$env:BUIDLER_NETWORK=\"...\"\r\n$env:DAO_CONTRACT_ADDRESS=\"...\"\r\n$env:ARRAY_LIB_ADDRESS=\"...\"\r\n$env:ENTITY_LIB_ADDRESS=\"...\"\r\n$env:DAC_LIB_ADDRESS=\"...\"\r\n$env:CAMPAIGN_LIB_ADDRESS=\"...\"\r\n$env:ACTIVITY_LIB_ADDRESS=\"...\"\r\n$env:DONATION_LIB_ADDRESS=\"...\"\r\nnode .\\scripts\\upgrade-v1.3.1.js\r\n```\r\n\r\n- BUIDLER_NETWORK = rskRegtest | rskTestnet | rskMainnet\r\n- CROWDFUNDING_ADDRESS es la dirección del smart contract de Crowdfunding (proxy).\r\n\r\n## Otorgar permisos\r\n\r\nPara otorgar permisos debe ejecutarse el siguiente script, especificando los parámetros:\r\n\r\n```\r\n$env:BUIDLER_NETWORK=\"...\"\r\n$env:DAO_CONTRACT_ADDRESS=\"...\"\r\n$env:CROWDFUNDING_ADDRESS=\"...\"\r\n$env:ACCOUNT_ADDRESS=\"...\"\r\n$env:ROLE=\"...\"\r\nnode .\\scripts\\grant-permission.js\r\n```\r\n- BUIDLER_NETWORK = rskRegtest | rskTestnet | rskMainnet\r\n- DAO_CONTRACT_ADDRESS es la dirección del Aragon DAO disponible desde el deploy inicial según la red.\r\n- CROWDFUNDING_ADDRESS es la dirección del smart contract de Crowdfunding.\r\n- ACCOUNT_ADDRESS es la dirección pública de la cuenta a la cual se otorga el permiso.\r\n- ROLE = GIVER_ROLE | DELEGATE_ROLE | CAMPAIGN_MANAGER_ROLE | CAMPAIGN_REVIEWER_ROLE | MILESTONE_MANAGER_ROLE | MILESTONE_REVIEWER_ROLE | RECIPIENT_ROLE | SET_EXCHANGE_RATE_PROVIDER_ROLE | ENABLE_TOKEN_ROLE\r\n\r\n## Principios de desarrollo\r\n\r\nPara el desarrollo del smart contract se deben seguir los siguientes principios:\r\n\r\n- Seguir la [guía de estilos](https://solidity.readthedocs.io/en/v0.6.11/style-guide.html) de desarrollo de Solidity.\r\n- El orden los metodos debe ser: *external*, *public*, *internal* y *private*; Deben seguir un orden de relevancia.\r\n- Siempre que sea posible, el tratamiento sobre las entidades debe delegarse en las librerías para mantener el bytecode del smart contract reducido.\r\n- Sebe realizarse testing automático de las funcionalidades expuestas al exterior.","readmeFilename":"README.md"}