//tips
//基本情報理解
無線LANのアクセスポイントやIP電話などにLANケーブルを利用して給電を行う仕組みは、PoE power over Ethernetといい、ツイストペアケーブルを利用し、データと一緒に電力を供給するもの。
PLC power line communicationは電力線を使った通信技術で、無線LANの届かない場所やノイズ発生源が多い場所に既存の電力線を使いLANを構築する。
UPS uninterruptive power supply は停電や瞬断によるコンピュータへの障害を防ぐ、一時的に電源を供給する装置。
//pitch deck
Castleはオーナーの資産を自動運用するアプリで、メンテナンスや工事などに関わる不動産管理コストを削減できる。現在選択肢の問題点を明確にし、解決策を提示できている。削減コスト案や成長性を示し、インパクトがある内容にまとまっている。競合部分は口頭で補足する必要があるかもしれない。
//smart contract
今回は送金と条件付けなどについても確認した。
pragma solidity 0.8.4;
contract SimpleBank{
//アドレスからsimplebankという財布に入れるというイメージ
//payableを追加し入出金可能にする
function deposit() public payable{
}
function withdraw()public{
//payable(msg.sender)で外部に送金できるアドレスにできる
//送金額はaddress(this).balanceとなり、address(this)でこのコントラクトのアドレスを記載できる
//msg.senderに対して、このコントラクトの全ての残高を送るというもの
payable(msg.sender).transfer(address(this).balance);
//このままでは財布に他の人のお金がが入っていた場合も引き出した人が総取りしてしま引き出した人が総取りしてしまう
//たまたtransferから最近call関数に送金の役目がシフトしつつある
}
}
contract Bank{
mapping(address=>uint)balance;
function getBalance()public view returns(uint){
return balance[msg.sender];
}
function deposit() public payable {
balance[msg.sender]+=msg.value;
}
function withdraw(uint _amount) public {
//require(条件,エラーの場合の処理)でif文のような制約を作れる
//条件が達成されていなかったらエラー文を表示できる
require(balance[msg.sender]>=_amount,"Insufficient balance");
//もしエラーが表示されたらそこで処理が終了し、下記の残りのgas代も返却される
//引かれる前のバランスを変数に保存
uint beforeWithdraw = balance[msg.sender];
balance[msg.sender]-=_amount;
payable(msg.sender).transfer(_amount);
uint afterWithdraw = balance[msg.sender];
//assert文はプログラムが思い通りに動いているか
//確認するために使う。どちらかというと開発用
assert(afterWithdraw == beforeWithdraw - _amount);
//もし()内と異なるじ内容が検出されたら前の処理はなかったことになる
}
//コントラクト財布内での送金/財布内の別の所持者に送金
function transfer(address _to,uint _amount)public{
require(balance[msg.sender]>=_amount,"Insufficient balance");
//自身には贈らないように制約を付加
require(msg.sender != _to,"Invalid recipiant");
balance[msg.sender]-= _amount;
balance[_to]+=_amount;
}
}