在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:iwaldman/ipfs-image-dapp开源软件地址:https://github.com/iwaldman/ipfs-image-dapp开源编程语言:JavaScript 96.4%开源软件介绍:ipfs-image-dappOverviewIPFS and the Blockchain are a perfect match. Why? You can address large amounts of data with IPFS and place the immutable, permanent IPFS links into a blockchain transaction. This will timestamp and secure your content, without having to put the data on the chain itself. You now have undisputable proof that your image existed at that time it was uploaded. This project is an Ethereum Decentralized Application (dApp) using React, Redux, React Router and Bootstrap. It demonstrates how to implement IPFS file uploads and store the IPFS hash on the blockchain. UsageMain PageIn this application, the main page displays a list of image cards filtered by owner i.e. MetaMask account. Each image card displays the image, title, description, tags, upload timestamp and IPFS hash. Upload an ImageClick Upload Image to upload an image to IPFS and the blockchain. You are required to enter an image title, optional description and appropriate tags. Click Upload to submit. Note: You can find sample images in the View DetailsClick Details to view the image and blockchain transaction details. Note: The current version of the application does not persist the blockchain transaction information in a permanent store such as MongoDB or PostgreSQL. Instead, we chose to store it in browser local storage keyed by the account address so to provide a better user experience. Otherwise, this information is lost when you refresh the browser or login as another user. Keep in mind that this information is transient when running Ganache. Be sure to clear local storage before restarting the app by following these instructions. Our stackFor this project, we used the following stack:
PrerequisitesInstallation
TestingTo run the unit tests.Open a terminal and run $ truffle test
Using network 'development'.
Contract: ImageRegister
✓ has an owner
✓ should selfdestruct (59ms)
✓ should store an image (75ms)
✓ should emit a LogImageUploaded event when storing an image (83ms)
✓ should return image details (103ms)
✓ should return image count (139ms)
✓ should store images for any number of owners (255ms)
✓ should require a valid IPFS hash when uploading an image (42ms)
✓ should require a valid title when uploading an image (44ms)
✓ should require a valid description when uploading an image (76ms)
✓ should require tags when uploading an image (42ms)
✓ should require a valid address when retrieving image count
✓ should require a valid index when retrieving image details
✓ should allow the owner to perform an emergency stop
✓ should disallow a non-owner to perform an emergency stop
✓ should disallow uploading an image when there is an emergency stop (43ms)
✓ should emit a LogEmergencyStop event when performing an emergency stop
17 passing (2s) To run solidity coverage.Open a terminal and run $ npm run sol:coverage
> [email protected] coverage:solidity /Users/irvin/dev/ipfs-image-dapp
> solidity-coverage
Generating coverage environment
Running: truffle compile
(this can take a few seconds)...
Compiling ./contracts/ImageRegister.sol...
Compiling ./contracts/Migrations.sol...
Compiling openzeppelin-solidity/contracts/lifecycle/Destructible.sol...
Compiling openzeppelin-solidity/contracts/ownership/Ownable.sol...
Writing artifacts to ./build/contracts
Instrumenting ./coverageEnv/contracts/ImageRegister.sol
Skipping instrumentation of ./coverageEnv/contracts/Migrations.sol
Running: truffle compile
(this can take a few seconds)...
Compiling ./contracts/ImageRegister.sol...
Compiling ./contracts/Migrations.sol...
Compiling openzeppelin-solidity/contracts/lifecycle/Destructible.sol...
Compiling openzeppelin-solidity/contracts/ownership/Ownable.sol...
Writing artifacts to ./build/contracts
Launched testrpc on port 8555
Running: truffle test
(this can take a few seconds)...
Using network 'development'.
Contract: ImageRegister
✓ has an owner
✓ should selfdestruct
✓ should store an image (134ms)
✓ should emit a LogImageUploaded event when storing an image (114ms)
✓ should return image details (162ms)
✓ should return image count (220ms)
✓ should store images for any number of owners (432ms)
✓ should require a valid IPFS hash when uploading an image (70ms)
✓ should require a valid title when uploading an image (72ms)
✓ should require a valid description when uploading an image (131ms)
✓ should require tags when uploading an image (88ms)
✓ should require a valid address when retrieving image count
✓ should require a valid index when retrieving image details (83ms)
✓ should allow the owner to perform an emergency stop
✓ should disallow a non-owner to perform an emergency stop
✓ should disallow uploading an image when there is an emergency stop (58ms)
✓ should emit a LogEmergencyStop event when performing an emergency stop (40ms)
17 passing (3s)
--------------------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
--------------------|----------|----------|----------|----------|----------------|
contracts/ | 100 | 88.89 | 83.33 | 100 | |
ImageRegister.sol | 100 | 88.89 | 83.33 | 100 | |
--------------------|----------|----------|----------|----------|----------------|
All files | 100 | 88.89 | 83.33 | 100 | |
--------------------|----------|----------|----------|----------|----------------|
Istanbul coverage reports generated
Cleaning up...
Shutting down testrpc-sc (pid 94037)
Done. Deploy to Rinkeby TestNetSteps to deploy our smart contract directly from Truffle with Infura to the Rinkeby TestNet.
Check out the awesome tutorial Deploy Your Smart Contract Directly from Truffle with Infura by Hyungsuk Kang. Troubleshooting Tips
Where can I find more documentation?This application is a marriage of Truffle and a React project created with create-react-app. Either one would be a great place to start. You can also check out the official sites for the Ethereum Project, OpenZeppelin library and IPFS. Host the UI on IPFSThere seem to be a number of issues hosting a
Future enhancements
NotesThis project uses Bootstrap 4. LicenseMIT |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论