ブロックチェーンSNS開発-2
3.投稿の参照
ホームページには、すべてのユーザーが閲覧できる投稿と、関心のある投稿の2つの分類が開発されています. const postList = await (await axios.get(`${host}/post/${networkType}`)).data.data;
// const tokenContract = await new web3.eth.Contract(erc721Abi, contractAddress);
const tokenContract = await new caver.klay.Contract(kip17Abi, contractAddress);
const totalSupply = await tokenContract.methods.totalSupply().call();
setNFTList([]);
let arr = [];
for (let i = 1; i <= totalSupply; i++) {
arr.push(i);
}
arr = arr.map(el => el).reverse();
for(let postInfo of postList) {
for (let tokenId of arr) {
if(tokenId === postInfo.token_id && !postInfo.isDelete) {
let tokenOwner = await tokenContract.methods.ownerOf(tokenId).call();
let tokenURI = await tokenContract.methods.tokenURI(tokenId).call();
const metadata = await (await axios.get(`${tokenURI}`)).data;
// isAll이 true면 전체 피드 로드
if (isAll) {
setNFTList((prevState) => {
return [...prevState, { postInfo, tokenId, metadata }];
});
} else { // false면 팔로워 피드만 로드
if (String(tokenOwner).toLowerCase() !== account.toLowerCase()) {
for (let follow of followList) {
if (postInfo.user._id === follow.follower._id) {
setNFTList((prevState) => {
return [...prevState, { postInfo, tokenId, metadata }];
});
}
}
}
}
}
}
}
投稿情報をロードする方法は、まずDBにデータを要求して受信することである.
DBのTOKEN IDと、KIP-17が配備されているCONTRAACTのTOKEN LISTとを比較して、一致した情報を読み取る.
これにより、投稿が削除されても、財布にNFTデータが残っているため、DBから削除されます.
常に自分の持っているデータで保存することができます.
4.いいねをもらう
賛美機能は病院予約に利用できるPETO TOKEN(KIP-7)支払い手段であり,ユーザの積極的なサービス利用を期待し設計した.
ユーザーが自分で書いた投稿で他のユーザーに好かれると、管理者アカウントを通じて一定数のPET TOKENが得られます.
支払いのPET TOKENの履歴は私のページで見ることができ、**は医学ページで病院予約サービス**を開発しています. const caver = new Caver('https://api.baobab.klaytn.net:8651/');
const amount = 0x8ac7230489e80000;
// add admin wallet
const adminKeyring = caver.wallet.add(caver.wallet.keyring.createFromPrivateKey(kasSecretKey));
// Create KIP7 Instance with TokenAddr
const kip7 = new caver.kct.kip7(kasTokenAddr);
// Transaction
kip7.options.from = adminKeyring.address;
const result = await kip7.transfer(toAddress, amount);
caver.wallet.remove(kasAccessKey);
return result.status;
上のコードは、[いいね]をクリックしたときにサーバ上で実行されるコードです.
あらかじめ配置したKIP−7トークンを管理者アカウントから投稿者に送信する財布を開発した.
トランザクションを生成するためにCaver-jsを使用します.
詳細については、Caver-js Docsを参照してください.
5.病院の予約
病院予約サービスは、賛美を通じて提供されるPETO TOKENを消費する場所です.
ユーザーは「医療サービス」ページで、病院のリストから必要な病院を選択し、予約可能な時間帯を選択して診察を予約することができます.
予約が完了すると、お財布から病院のお財布の中の指定数のPET TOKENに発送されます.
予約状況はすでに開発されていて、私のページで見ることができます. const sendToken = async (recipient) => {
const sender = JSON.parse(localStorage.getItem('account'));
const amount = 1;
const decimal = 18;
let txResult = false;
const data = caver.klay.abi.encodeFunctionCall(
{
name: 'transfer',
type: 'function',
inputs: [
{
type: 'address',
name: 'recipient'
},
{
type: 'uint256',
name: 'amount'
}
]
},
[
recipient,
caver.utils
.toBN(amount)
.mul(caver.utils.toBN(Number(`1e${decimal}`)))
.toString()
]
)
const txHash = await caver.klay
.sendTransaction({
type: 'SMART_CONTRACT_EXECUTION',
from: sender,
to: kip7CA,
data: data,
gas: '100000'
})
.on('transactionHash', transactionHash => {
console.log('txHash', transactionHash)
})
.on('receipt', receipt => {
console.log('receipt', receipt)
txResult = true;
})
.on('error', error => {
console.log('error', error)
})
return txResult;
予約トークン転送は,フロントでCaver-jsを用いてトランザクションを行う.
詳細については、Caver-js Docsを参照してください.
振り返る
まず、最終プロジェクトの導入に成功して嬉しいです.
実際、これまでの2つのプロジェクトでは、個人的に完成度の面で残念な点が多かった.
もちろん、以前のチームメンバーもよくやっていましたが、私自身は満足していません.
一つのプロジェクトでも、完成度のある成果として、完成したいと思っています.
だから初めてプロジェクトを計画した時、前のプロジェクトを行いたいと思って、残念なことをよく完成したいと思っています.
前のプロジェクトで触れた内容にコインを加えて、高度化の方向に発展するように計画されています.
テーマは少し明らかかもしれませんが、1つ目と2つ目の項目の延長線のような感じがしますが、
すべてのチームメンバーが努力し、完成度のある結果を得たようなので、最終的なプロジェクトは満足できます.
技術的観点から,Caver−jsを用いてクレイトンネットワークAPIを実現する方法を理解した.
サーバ設計、Mongooseの使用、反応中の状態管理など.
この22週間、彼がブットキャンプで育った様子を見ることができます.
この間、キャンプ場で学んだことは、全スタックブロックチェーン開発者になるための基礎となっている.
これからもっと自己開発に励みましょう!
Reference
この問題について(ブロックチェーンSNS開発-2), 我々は、より多くの情報をここで見つけました
https://velog.io/@jcode7472/블록체인-SNS-개발-2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const postList = await (await axios.get(`${host}/post/${networkType}`)).data.data;
// const tokenContract = await new web3.eth.Contract(erc721Abi, contractAddress);
const tokenContract = await new caver.klay.Contract(kip17Abi, contractAddress);
const totalSupply = await tokenContract.methods.totalSupply().call();
setNFTList([]);
let arr = [];
for (let i = 1; i <= totalSupply; i++) {
arr.push(i);
}
arr = arr.map(el => el).reverse();
for(let postInfo of postList) {
for (let tokenId of arr) {
if(tokenId === postInfo.token_id && !postInfo.isDelete) {
let tokenOwner = await tokenContract.methods.ownerOf(tokenId).call();
let tokenURI = await tokenContract.methods.tokenURI(tokenId).call();
const metadata = await (await axios.get(`${tokenURI}`)).data;
// isAll이 true면 전체 피드 로드
if (isAll) {
setNFTList((prevState) => {
return [...prevState, { postInfo, tokenId, metadata }];
});
} else { // false면 팔로워 피드만 로드
if (String(tokenOwner).toLowerCase() !== account.toLowerCase()) {
for (let follow of followList) {
if (postInfo.user._id === follow.follower._id) {
setNFTList((prevState) => {
return [...prevState, { postInfo, tokenId, metadata }];
});
}
}
}
}
}
}
}
賛美機能は病院予約に利用できるPETO TOKEN(KIP-7)支払い手段であり,ユーザの積極的なサービス利用を期待し設計した.
ユーザーが自分で書いた投稿で他のユーザーに好かれると、管理者アカウントを通じて一定数のPET TOKENが得られます.
支払いのPET TOKENの履歴は私のページで見ることができ、**は医学ページで病院予約サービス**を開発しています.
const caver = new Caver('https://api.baobab.klaytn.net:8651/');
const amount = 0x8ac7230489e80000;
// add admin wallet
const adminKeyring = caver.wallet.add(caver.wallet.keyring.createFromPrivateKey(kasSecretKey));
// Create KIP7 Instance with TokenAddr
const kip7 = new caver.kct.kip7(kasTokenAddr);
// Transaction
kip7.options.from = adminKeyring.address;
const result = await kip7.transfer(toAddress, amount);
caver.wallet.remove(kasAccessKey);
return result.status;
上のコードは、[いいね]をクリックしたときにサーバ上で実行されるコードです.あらかじめ配置したKIP−7トークンを管理者アカウントから投稿者に送信する財布を開発した.
トランザクションを生成するためにCaver-jsを使用します.
詳細については、Caver-js Docsを参照してください.
5.病院の予約
病院予約サービスは、賛美を通じて提供されるPETO TOKENを消費する場所です.
ユーザーは「医療サービス」ページで、病院のリストから必要な病院を選択し、予約可能な時間帯を選択して診察を予約することができます.
予約が完了すると、お財布から病院のお財布の中の指定数のPET TOKENに発送されます.
予約状況はすでに開発されていて、私のページで見ることができます. const sendToken = async (recipient) => {
const sender = JSON.parse(localStorage.getItem('account'));
const amount = 1;
const decimal = 18;
let txResult = false;
const data = caver.klay.abi.encodeFunctionCall(
{
name: 'transfer',
type: 'function',
inputs: [
{
type: 'address',
name: 'recipient'
},
{
type: 'uint256',
name: 'amount'
}
]
},
[
recipient,
caver.utils
.toBN(amount)
.mul(caver.utils.toBN(Number(`1e${decimal}`)))
.toString()
]
)
const txHash = await caver.klay
.sendTransaction({
type: 'SMART_CONTRACT_EXECUTION',
from: sender,
to: kip7CA,
data: data,
gas: '100000'
})
.on('transactionHash', transactionHash => {
console.log('txHash', transactionHash)
})
.on('receipt', receipt => {
console.log('receipt', receipt)
txResult = true;
})
.on('error', error => {
console.log('error', error)
})
return txResult;
予約トークン転送は,フロントでCaver-jsを用いてトランザクションを行う.
詳細については、Caver-js Docsを参照してください.
振り返る
まず、最終プロジェクトの導入に成功して嬉しいです.
実際、これまでの2つのプロジェクトでは、個人的に完成度の面で残念な点が多かった.
もちろん、以前のチームメンバーもよくやっていましたが、私自身は満足していません.
一つのプロジェクトでも、完成度のある成果として、完成したいと思っています.
だから初めてプロジェクトを計画した時、前のプロジェクトを行いたいと思って、残念なことをよく完成したいと思っています.
前のプロジェクトで触れた内容にコインを加えて、高度化の方向に発展するように計画されています.
テーマは少し明らかかもしれませんが、1つ目と2つ目の項目の延長線のような感じがしますが、
すべてのチームメンバーが努力し、完成度のある結果を得たようなので、最終的なプロジェクトは満足できます.
技術的観点から,Caver−jsを用いてクレイトンネットワークAPIを実現する方法を理解した.
サーバ設計、Mongooseの使用、反応中の状態管理など.
この22週間、彼がブットキャンプで育った様子を見ることができます.
この間、キャンプ場で学んだことは、全スタックブロックチェーン開発者になるための基礎となっている.
これからもっと自己開発に励みましょう!
Reference
この問題について(ブロックチェーンSNS開発-2), 我々は、より多くの情報をここで見つけました
https://velog.io/@jcode7472/블록체인-SNS-개발-2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const sendToken = async (recipient) => {
const sender = JSON.parse(localStorage.getItem('account'));
const amount = 1;
const decimal = 18;
let txResult = false;
const data = caver.klay.abi.encodeFunctionCall(
{
name: 'transfer',
type: 'function',
inputs: [
{
type: 'address',
name: 'recipient'
},
{
type: 'uint256',
name: 'amount'
}
]
},
[
recipient,
caver.utils
.toBN(amount)
.mul(caver.utils.toBN(Number(`1e${decimal}`)))
.toString()
]
)
const txHash = await caver.klay
.sendTransaction({
type: 'SMART_CONTRACT_EXECUTION',
from: sender,
to: kip7CA,
data: data,
gas: '100000'
})
.on('transactionHash', transactionHash => {
console.log('txHash', transactionHash)
})
.on('receipt', receipt => {
console.log('receipt', receipt)
txResult = true;
})
.on('error', error => {
console.log('error', error)
})
return txResult;
まず、最終プロジェクトの導入に成功して嬉しいです.
実際、これまでの2つのプロジェクトでは、個人的に完成度の面で残念な点が多かった.
もちろん、以前のチームメンバーもよくやっていましたが、私自身は満足していません.
一つのプロジェクトでも、完成度のある成果として、完成したいと思っています.
だから初めてプロジェクトを計画した時、前のプロジェクトを行いたいと思って、残念なことをよく完成したいと思っています.
前のプロジェクトで触れた内容にコインを加えて、高度化の方向に発展するように計画されています.
テーマは少し明らかかもしれませんが、1つ目と2つ目の項目の延長線のような感じがしますが、
すべてのチームメンバーが努力し、完成度のある結果を得たようなので、最終的なプロジェクトは満足できます.
技術的観点から,Caver−jsを用いてクレイトンネットワークAPIを実現する方法を理解した.
サーバ設計、Mongooseの使用、反応中の状態管理など.
この22週間、彼がブットキャンプで育った様子を見ることができます.
この間、キャンプ場で学んだことは、全スタックブロックチェーン開発者になるための基礎となっている.
これからもっと自己開発に励みましょう!
Reference
この問題について(ブロックチェーンSNS開発-2), 我々は、より多くの情報をここで見つけました https://velog.io/@jcode7472/블록체인-SNS-개발-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol