js-ipfs-api
๊ฐ ๋์ผํ js-ipfs
API๋ฅผ ๊ตฌํํ๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ง๋ง ํด๋ผ์ด์ธํธ์ผ ๋ฟ์ด๋ผ๊ณ ์ค๋ช
ํ๋ ๊ฒ์ ์
์ด ๋ก๋ฒ์ด์ง๋๋ค.
๋ค๋ฅธ ํ๋ก์ ํธ์์๋ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ SDK
๋๋ ๊ฐ๋จํ ํด๋ผ์ด์ธํธ๋ผ๊ณ ํฉ๋๋ค.
์ฌ๋ฏธ์๋ ์ญ์ฌ ์ฌ์ค, ์ฐ๋ฆฌ๋ js-ipfs-api
๊ฐ JS ๊ตฌํ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ์ฌ๋ ํผ๋์ค๋ฌ์ด ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๋ช
์์์ต๋๋ค. ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๋ชจ๋ ์ ์ฅ์์ ๊ฑฐ๋ํ ๋ฐฐ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ ๋๋ง ์ค์ง๋์์ต๋๋ค. -> https://github.com/ipfs/js-ipfs-api/# --
Go๋ CoreAPI๋ฅผ ์๋ฃํ๊ณ ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ์์ฑํ ๋ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค... (๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์ค๋จ๋จ).
์ด๋ฆ์ -client
๋ก ์ง์ ํ๋ฉด ์ฃผ์ด์ง ๋ชจ๋์ด IPFS ํด๋ผ์ด์ธํธ์ธ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค(bitswap/etc๋ฅผ ๋งํ์ง๋ง ์๋ฌด ๊ฒ๋ ์ ๊ณตํ ์ ์๋ ๊ฒ). ๋ช
ํํ ์ด๋ฆ์ ์ํ๋ฉด ๋ ๊ธธ๋๋ผ๋ -api-client
๋ฅผ ์ ์ํฉ๋๋ค.
ํ . ๋ค, ์ข์ ์ง์ ์ด ์์ต๋๋ค.
๋์๊ฒ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ธ๋ค.
-api-client๋ฅผ ๊ณ ๋ คํ๊ณ ์๋ค๋ฉด -http-client๊ฐ ๋ ๋ถ๋ช ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
*-ipfs-api
์ ์ด๋ฆ์ *-ipfs-http-client
๋ก ๋ณ๊ฒฝํ๋ ๋ฐ ๋์ํ๋ฉด ์ด ๋๊ธ์ ์ข์์๋ฅผ ๋๋ฌ์ฃผ์ธ์.
๋ด ๊ณ ๊ฐ ์ ์ํด ํ์นํ์ต๋๋ค! ๋๋ ์๋ฌด ๊ฒ๋ ๊นจ์ง์ง ์๋๋ก ๊ฒฝ๊ณ ์ ํจ๊ป ์ด์ ์ด๋ฆ์ ์ ์งํ ์ ์์ต๋๋ค.
์ ์กฑ์์ ๋๋ฌํ ๊ฒ ๊ฐ์ต๋๋ค. :) ์ด์ ๋ชจ๋ ๊ณณ์์ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด ๋ฉ๋๋ค. :)
PHP ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ผ๊ณผ๋ ํต์ ํ ์ ์์ต๋๋ค... ๊ทธ๋์ ์ด๋ฆ ๋ณ๊ฒฝ์ ๐ฏ% ์ ํํ์ง ์์ต๋๋ค.
@alanshaw์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ https://blog.ipfs.io/58-http-client-rename/ \o/
๊ทธ๋ฅ 'ipfs-api-client'๊ฐ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๊ฒ์ http์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ฐ์ธ๋ฉํ๋ ๊ฒ์ ... ๋ฐ๋๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
@whyrusleeping ํ์ฌ๋ http ์ ์ฉ์ด๋ฉฐ, ์ฒ์ IPFS๋ฅผ ์์ํ์ ๋ ์ค์ ๋ก ๋๋์ต๋๋ค. ๋๋ ํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ผ๋ฐ์ ์ผ๋ก HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด ๋ถ๋ช ํด์ ธ์ ๊ธฐ์ฉ๋๋ค.
https://github.com/ipfs/java-ipfs-api ์ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์๋ ๊ถํ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๊ตฐ๊ฐ ๋์๊ฒ ๊ทธ๊ฒ๋ค์ ์ค ์ ์์ต๋๊น?
@ianopolous ๊ฐ ๋น์ ์ ๊ด๋ฆฌ์๋ก ๋ง๋ค์์ต๋๋ค :)
๋ฉ๋ฆฌ ๋จ์ด์ง ์ํ๊ณ์ ๋๊ตฐ๊ฐ๋ก๋ถํฐ 2์ผํธ(์ค์ ๋ก๋ libp2p๊ฐ ์๋)...
ipfs-api-client
๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋์๊ฒ ์ค๋ณต๋ฉ๋๋ค. API(์ธํฐํ์ด์ค์ ์ ์ ํ์์ด ๋ฌด์์ด๋ ๊ฐ์)๋ฅผ ํตํ์ง ์๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค์ ์ด๋ป๊ฒ ํต์ ํ ๊น์? ํธ์ง : ์์ @ alexander255 ์ ์๊ฒฌ์ ์ฝ์ผ์ญ์์ค. ๊ทธ๊ฒ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. -api-client
๋ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ SDK์์ ๋ ๋ช
ํํ๊ฒ ํฉ๋๋ค.
์ด๋ฆ์ ์ค์ ์ธํฐํ์ด์ค ์ ํ(http)์ ํฌํจํ๋ ๊ฒ์ ๊ทผ์์์ ์ธ IMO์ ๋๋ค.
ipfs-api-[ipc/http/grpc]-client
๋ชจ๋์ ๋ง์ ์ฝ๋๋ฅผ ๋ณต์ ํฉ๋๋ค.ipfs-client
๋ ์ด๋ํฐ์ ๊ฐ์ ๋์์ธ์ ์ฌ์ฉํ์ฌ HTTP, IPC, gRPC ๋ฐฑ์๋๋ฅผ ์ ํํ๋ฉด์ ๋์ผํ ํ๋ฐํธ์๋๋ฅผ ๋
ธ์ถํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
์ง๊ธ๊น์ง์ ์ ์๊ณผ ์ฃผ์ฅ ์ค์์ ๋๋ ์ด๊ฒ์ ๊ฐ์ฅ ์ข์ํ์ง๋ง ipfs-client
๋ ๋ง์น ์์ฉ ํ๋ก๊ทธ๋จ/๋๊ตฌ์ธ ๊ฒ์ฒ๋ผ ์ฝ์ต๋๋ค. ์ด๊ฒ๋ค์ด ํญ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ผ๊ณ ๊ฐ์ ํ ์ ์๋ค๋ฉด ipfs-client-library
๋๋ ipfs-client-lib
๋ ์ด๋ป์ต๋๊น?
@raulk ๋์๊ฒ ipfs-client
๋ ์ค์ ๋ก ipfs์ ํด๋ผ์ด์ธํธ ๊ตฌํ์ ํฌํจํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์คํด์ ์์ง๊ฐ ์์ต๋๋ค.
์ ๋ชฉ์ http
๋ฅผ ๋ฃ๋ ๊ฒ์ ๊ทผ์์์ ์ด๋ผ๋ ๋ฐ ๊ฐ๋ ฅํ ๋์ํฉ๋๋ค. ์ด๋ ๊ฒ ๊ด๋ฒ์ํ๊ฒ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ ์ ์ ์กฐ๊ธ ๋ ๋ ๋์๋ค๋๋ ๊ด๋ฒ์ํ ๊ฒฐ์ ์ ์ ์ฉํ ๊ฒ์
๋๋ค.
@whyrusleeping ์ ์ด๋ Java http ํด๋ผ์ด์ธํธ์ ๊ฒฝ์ฐ ํญ์ http ํด๋ผ์ด์ธํธ์ผ ๊ฒ์ ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์๋ ๋ค๋ฅธ ํ๋กํ ์ฝ์ด ์๋ค๋ฉด ๊ทธ๊ฒ์ ๋ค๋ฅธ ํ๋ก์ ํธ๊ฐ ๋ ๊ฒ์ ๋๋ค. ์ด๋ฏธ http์ cmd ๋ผ์ธ ๊ธฐ๋ฐ ํธ์ถ์ ๊ฒฐํฉํ go ํด๋ผ์ด์ธํธ์ ๊ฒฝ์ฐ ์ํฉ์ด ๋ค๋ฅผ ์ ์์ต๋๋ค.
@ianopolous ๋๋ Java API ํด๋ผ์ด์ธํธ๊ฐ websockets๋ฅผ ํตํด ์ฝ๊ฒ ์๋ํ๋๋ก ๋ง๋ค ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ๊ทธ๊ฒ๋ค์ ๋ชจ๋ ๋ค๋ฅธ ํจํค์ง๋ก ๋ง๋์๊ฒ ์ต๋๊น?
@whyrusleeping ์น ์์ผ ์ ์ฌ์ฉํ๋ ์๋น์ค์ ๋ํด Java SDK๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฐ ๊ฒ์ด ํ์ํ๋ค๋ฉด ์ผ๋ฐ ์์ผ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ๊ทธ๊ฒ์ด ipfs์ ์ ์ฉํ๊ณ http ํด๋ผ์ด์ธํธ์ ๋ง์ ์ฝ๋ ์ค๋ณต์ด ์์๋ค๋ฉด ๊ฐ์ธ์ ์ผ๋ก ๊ณตํต ์ฝ๋๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ์ธํ๊ณ ์ด์์ ์ผ๋ก๋ ํ๋กํ ์ฝ์ ๊ตฌ์ ๋ฐ์ง ์๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
๋์ผํ ํด๋ผ์ด์ธํธ์์ ๋ ๊ฐ์ง ๋ค๋ฅธ ํ๋กํ ์ฝ์ ํผํฉํ๋ฉด ํผ๋๊ณผ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. https://github.com/ipfs/go-ipfs/issues/5784
@ianopolous ์ง๊ธ์ ์น ์์ผ ํ ๋ก ์ ๋ณด๋ฅํ๊ณ ์ฌ๋ฌ ๋ฐฑ์๋ ์ธํฐํ์ด์ค(๋ฌด์์ด๋ ๊ฐ์)๋ฅผ ์ง์ํ ์ ์๋ ํด๋ผ์ด์ธํธ SDK๊ฐ ํ์ํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
Java์์ ์ด๊ฒ์ ๋ชจ๋ธ๋งํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ค์ผ๋ ํค, ๊ณต๊ฐ API, ์ถ์ํ, DTO ๋ฑ์ ์ ์ํ๋ core
๋ชจ๋์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ฐฑ์๋์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ ์ฌ๋ฌ ๋ชจ๋์ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๊ท์ฝ. ๋ชจ๋ core
์์ ์ด๋ํฐ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก <scope>runtime</scope>
(Maven)๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๋ก ๊ฐ์ ธ์ค๊ณ core
๋ ๋ฐํ์์ ์ฌ์ฉํ ์ ์๋ ์ด๋ํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด SPI(Service Provider Interface)์ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ต์ ์ ๊ฒ(์ด๋ค ์ข
๋ฅ์ ๋์ฒด ๋๋ ํ์์ ์ํํ๋ ๊ฒฝ์ฐ์๋). ๋๋ ์ปดํ์ผ ์๊ฐ์ ์ฌ์ฉํ ๊ฒ์ ์ง์ ํ๊ธฐ ์ํด ์ฌ์ฉ์์ ์์กดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด
ipfsClient.setBackend(HttpApiBackend.class); // public void setBackend(Class<? extends IpfsBackend> clz);
BTW โ web3j ๋ ๋์ผํ Java ๋ชจ๋์์ HTTP, IPC ๋ฐ WSS๋ฅผ ์ง์ํ๋ฉฐ API๊ฐ ๋ฉ์ง๊ฒ ๋ชจ๋ธ๋ง๋๋ ํ ์ด๋ก ์ธํด ์ถ๊ฐ๋๋ ์ ์ผํ ๋ถ๋ด์ ์ ์ฌ์ ์ผ๋ก ์ฌ์ฉ๋์ง ์๋ ์ข ์์ฑ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค.
@raulk
์ฌ๋ฌ ๋ฐฑ์๋ ์ธํฐํ์ด์ค(๋ฌด์์ด๋ ๊ฐ์)๋ฅผ ์ง์ํ ์ ์๋ ํด๋ผ์ด์ธํธ SDK๊ฐ ํ์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋๋ ํ์คํ ๊ทธ๊ฒ์ ์ํ์ง ์์ต๋๋ค. ๋ชจ๋ ํ๋กํ ์ฝ์ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ ๊ฒ์ ๋ช ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค. ์์ค ๋ฐ ๋ฐ์ด๋๋ฆฌ ๋ชจ๋์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌ๊ธฐ๋ฅผ O(N)์ผ๋ก ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ N์ ํ๋กํ ์ฝ ์์ ๋๋ค. ๊ฑฐ์ ํญ์ ๋๋ sdk์ ๋จ์ผ ํ๋กํ ์ฝ ๊ตฌํ๋ง์ ์ํ๊ณ 90%๊ฐ ๋์ ๊ด๋ จ์ด ์์ด ๋ด ์ฑ์ ๋ถํ๋ฆฌ์ง๋ง ์ฝ๊ฒ ์ ๊ฑฐํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๊ณ ์ถ์ง ์์ต๋๋ค. ๋ํ ๋ณด์์ ๊ด์ฌ์ด ์๊ณ ๋ด ์ข ์์ฑ์ ๊ฐ์ฌํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ํ ์ด์ ์์ด ๋ณต์ก์ฑ๊ณผ ๋น์ฉ์ด ํฌ๊ฒ ์ฆ๊ฐํฉ๋๋ค.
๊ทธ๋ฐ ๋ณดํธ์ ์ธ ํด๋ผ์ด์ธํธ๊ฐ ์กด์ฌํด์๋ ์ ๋๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ ์ ์์ง๋ง ์ฌ๋๋ค์๊ฒ ๊ฐ์ํด์๋ ์ ๋ฉ๋๋ค.
@ianopolous ๋๋ ๋น์ ์ด uber-JAR ๋ชจ๋ธ์ ๊ฐ์ ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ๊ทธ ๋ฐ๋์ ๋๋ค. ์ฆ, ์ข ์์ฑ์ด ๋ชจ๋ ๊ฐ์ ๋์ถ๋์ง ์๊ณ ์ต์ข ์ฌ์ฉ์๊ฐ ํด๋น ๋ชจ๋์ ๋น๋์ ์ถ๊ฐํ ๋๋ง ๋์ด์ค๋ ๋ค์ค ๋ชจ๋ ๋น๋์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ํ ๊ธฐ์ ์ ๋ํด 200๊ฐ ์ด์์ ์ด๋ํฐ๋ฅผ ํธ์คํ ํ๋ Apache Camel ํ๋ก์ ํธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ก์ ๋๋ camel-core(๋งค์ฐ ์ฌ๋ฆผํจ) + ์ฌ์ฉํ๋ ค๋ ๊ตฌ์ฑ ์์(camel-mqtt, camel-ftp ๋ฑ)๋ฅผ ์ถ๊ฐํ๊ณ Maven/Gradle์ด ๋๋ฅผ ์ํด ํจ๊ณผ์ ์ธ ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ๊ณ์ฐํ๋๋ก ํฉ๋๋ค.
http-client
๋ก ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๋ฐ๋ํฉ๋๋ค. php-api-client ๊ฐ html ๋์ ์ด๋ ์์ผ๊ณผ ํต์ ํ ์ ์๊ธฐ ์ ์ ๋งํ๋ฏ์ด. ๋ค๋ฅธ ๋๋ผ์ด๋ฒ ์ผ ๋ฟ์ด๊ณ ๋๋จธ์ง ์ฝ๋๋ ์์ ํ ๋์ผํฉ๋๋ค. ๊ทธ๋์ ์ ๋ http-*
๊ฐ ์์๊ฐ ์๋๋ผ๋ ์
์ฅ์
๋๋ค. ํ์ง๋ง LANG-ipfs-client
๋๋ LANG-ipfs-api-client
๋ก ์ด๋ฆ์ ๋ฐ๊ฟ๋ ๊ด์ฐฎ์ต๋๋ค.
@digitalkaoz ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ์ฃผ์ด์ง ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ค๋ฅธ ์ ์ก์ ์ง์ํ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. (์ด ๋ฌธ์ ์ ๋ํ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๋ฏธ ํ๋ฌ๊ทธํ ์ ์ก์ด ์๊ณ ์คํฌ๋ฆฝํ ์ธ์ด์์ ์ ํ์ ์ข ์์ฑ์ ์ฝ๊ฒ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ด ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.)
์๋ฃ๋์์ต๋๋ค. ํ์.
@Kubuxu ๋ค๋ฅธ ๋ชจ๋ ํจํค์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ์ฐ๊ฒฐ๋ ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์๊ฒ ์ต๋๋ค. ์ฃ์กํฉ๋๋ค.
๋ชจ๋ HTTP API ํด๋ผ์ด์ธํธ ๊ตฌํ์ ์ด์ ipfs-http-client๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๊น?
๋ช ๊ฐ์ง ๊ตฌํ์ด ์ ํฉํ์ง ์์ ๊ฒ ๊ฐ์ง๋ง ์ด๊ฒ์ ์ด์ด ๋๋ ๊ฒ๋ ํฐ ๋์์ด ๋์ง ์์ต๋๋ค. ๊ฐ๋ฅํ๋ฉด ์ด๋ฆ์ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
*-ipfs-api
์ ์ด๋ฆ์*-ipfs-http-client
๋ก ๋ณ๊ฒฝํ๋ ๋ฐ ๋์ํ๋ฉด ์ด ๋๊ธ์ ์ข์์๋ฅผ ๋๋ฌ์ฃผ์ธ์.